From 6ebb6894e70d090ca3729c5c5adf1ecb85e8eec1 Mon Sep 17 00:00:00 2001
From: smaguin <smaguin@localhost>
Date: Tue, 24 Jun 2008 11:00:06 +0000
Subject: [PATCH] Java code to add and modify an entry
---
opendj-sdk/opends/tests/system-tests/phases/shared/java/addAnEntry.java | 184 ++++++++++++++++++++++++++
opendj-sdk/opends/tests/system-tests/phases/shared/java/modifyAnAttribute.java | 214 ++++++++++++++++++++++++++++++
2 files changed, 398 insertions(+), 0 deletions(-)
diff --git a/opendj-sdk/opends/tests/system-tests/phases/shared/java/addAnEntry.java b/opendj-sdk/opends/tests/system-tests/phases/shared/java/addAnEntry.java
new file mode 100644
index 0000000..d82603f
--- /dev/null
+++ b/opendj-sdk/opends/tests/system-tests/phases/shared/java/addAnEntry.java
@@ -0,0 +1,184 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License, Version 1.0 only
+ * (the "License"). You may not use this file except in compliance
+ * with the License.
+ *
+ * You can obtain a copy of the license at
+ * trunk/opends/resource/legal-notices/OpenDS.LICENSE
+ * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at
+ * trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable,
+ * add the following below this CDDL HEADER, with the fields enclosed
+ * by brackets "[]" replaced with your own identifying information:
+ * Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ *
+ *
+ * Copyright 2008 Sun Microsystems, Inc.
+ */
+/*
+ * Copyright (c) 1998. Sun Microsystems, Inc. All Rights Reserved.
+ *
+ * "@(#)addAnewEntry.java 1.2 98/04/22 SMI"
+ */
+
+import java.util.Properties;
+import java.lang.*;
+import java.util.Hashtable;
+import javax.naming.Context;
+import javax.naming.NamingException;
+import javax.naming.directory.Attribute;
+import javax.naming.directory.Attributes;
+import javax.naming.ldap.LdapContext;
+import javax.naming.ldap.InitialLdapContext;
+import javax.naming.CompositeName;
+import javax.naming.directory.BasicAttribute;
+import javax.naming.directory.BasicAttributes;
+import javax.naming.*;
+import javax.naming.directory.ModificationItem;
+import java.util.HashSet;
+import java.util.StringTokenizer;
+import java.util.Iterator;
+
+/**
+ * add a new entry
+ * input :
+ * -D : principal
+ * -w : credential
+ * -p : ldapport
+ * -h : ldaphost
+ * -d : dn to add
+ * -v : attribut name:attribut value
+ * : this option is multi valued
+ */
+
+public class addAnEntry {
+
+ public static void main(String[] args) {
+
+ String hostname=null;
+ String ldapPort=null;
+ String principal=null;
+ String credential=null;
+ String dnToAdd=null;
+ String attributeToAdd=null;
+ String errorCode=null;
+ String errorMessage=null;
+
+ int ind1;
+ String attributeName;
+ String attributeValue;
+
+ Attributes attributes = new BasicAttributes();
+ HashSet attributeSet = new HashSet();
+
+ for (int k=0; k< args.length; k++) {
+ String opt1 = args[k];
+ String val1 = args[k+1];
+
+ if (opt1.equals("-h")) {
+ hostname = val1;
+ }
+ if (opt1.equals("-p")) {
+ ldapPort = val1;
+ }
+ if (opt1.equals("-D")) {
+ principal = val1;
+ }
+ if (opt1.equals("-w")) {
+ credential = val1;
+ }
+ if (opt1.equals("-d")) {
+ dnToAdd = val1;
+ }
+ if (opt1.equals("-v")) {
+ attributeToAdd = val1;
+
+ ind1= val1.indexOf (":");
+
+ attributeName=val1.substring (0,ind1);
+ attributeValue=val1.substring (ind1+1);
+
+ BasicAttribute attrToComplete = null;
+
+ Iterator it = attributeSet.iterator();
+ while (attrToComplete == null && it.hasNext()) {
+ BasicAttribute attr = (BasicAttribute) it.next();
+ if ((attr.getID()).equalsIgnoreCase(attributeName)) {
+ attrToComplete = attr;
+ }
+ }
+
+ if (attrToComplete == null) {
+ attrToComplete = new BasicAttribute(attributeName);
+ attributeSet.add(attrToComplete);
+ }
+ attrToComplete.add(attributeValue);
+ }
+ k++;
+ }
+
+
+ Iterator it2 = attributeSet.iterator();
+ while (it2.hasNext()) {
+ BasicAttribute attr = (BasicAttribute)it2.next();
+ attributes.put(attr);
+ }
+
+ String provider = "ldap://" + hostname + ":" + ldapPort + "/";
+
+ Hashtable envLdap = new Hashtable();
+
+ envLdap.put("java.naming.factory.initial", "com.sun.jndi.ldap.LdapCtxFactory");
+ envLdap.put(Context.SECURITY_AUTHENTICATION, "simple");
+ envLdap.put(Context.SECURITY_PRINCIPAL, principal);
+ envLdap.put(Context.SECURITY_CREDENTIALS, credential);
+ envLdap.put(Context.PROVIDER_URL, provider);
+
+ LdapContext ctx;
+
+ try {
+
+ CompositeName entryDN = new CompositeName (dnToAdd);
+ System.out.println("Add a new entry " + entryDN);
+
+ // connect to server
+ ctx = new InitialLdapContext(envLdap, null);
+ ctx.createSubcontext(entryDN, attributes);
+ ctx.close();
+
+ } catch (CommunicationException e1) {
+ errorMessage = e1.getMessage();
+
+ } catch (NamingException e2) {
+ errorMessage = e2.getMessage();
+
+ } catch (Exception e3) {
+ errorMessage= e3.getMessage();
+ }
+ // No error, the modify is success
+ if ( errorMessage == null ) {
+ errorCode="0";
+ }
+ else {
+ System.out.println (errorMessage);
+ int ind=errorMessage.indexOf("-");
+ if ( ind > 0 ) {
+ errorCode=errorMessage.substring(18, ind-1);
+ }
+ else errorCode="0";
+ }
+
+ int RC = Integer.parseInt(errorCode);
+ System.exit(RC);
+ }
+
+}
\ No newline at end of file
diff --git a/opendj-sdk/opends/tests/system-tests/phases/shared/java/modifyAnAttribute.java b/opendj-sdk/opends/tests/system-tests/phases/shared/java/modifyAnAttribute.java
new file mode 100644
index 0000000..0216cc2
--- /dev/null
+++ b/opendj-sdk/opends/tests/system-tests/phases/shared/java/modifyAnAttribute.java
@@ -0,0 +1,214 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License, Version 1.0 only
+ * (the "License"). You may not use this file except in compliance
+ * with the License.
+ *
+ * You can obtain a copy of the license at
+ * trunk/opends/resource/legal-notices/OpenDS.LICENSE
+ * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at
+ * trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable,
+ * add the following below this CDDL HEADER, with the fields enclosed
+ * by brackets "[]" replaced with your own identifying information:
+ * Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ *
+ *
+ * Copyright 2008 Sun Microsystems, Inc.
+ */
+
+
+import java.util.Properties;
+import java.lang.*;
+import java.util.Hashtable;
+import javax.naming.Context;
+import javax.naming.NamingException;
+import javax.naming.directory.Attribute;
+import javax.naming.directory.Attributes;
+import javax.naming.ldap.LdapContext;
+import javax.naming.ldap.InitialLdapContext;
+import javax.naming.CompositeName;
+import javax.naming.directory.BasicAttribute;
+import javax.naming.directory.BasicAttributes;
+import javax.naming.*;
+import javax.naming.directory.ModificationItem;
+import java.util.HashSet;
+import java.util.StringTokenizer;
+import java.util.Iterator;
+
+
+
+/**
+ * modify an entry with an attribute
+ * the operation can be a replace, delete or a add new attribute
+ * the function returns the ldap error code
+ */
+
+public class modifyAnAttribute {
+
+ public static void main(String[] args) {
+
+ String hostname=null;
+ String ldapPort=null;
+ String principal=null;
+ String credential=null;
+ String attributeToModify=null;
+ String dnToModify=null;
+ String newAttributeValue=null;
+ String changetype=null;
+ String errorCode=null;
+ String errorMessage=null;
+ String listAttributesToModify=null;
+
+
+ int ind1;
+ String attributeName;
+ String attributeValue;
+ Hashtable envLdap = new Hashtable();
+ LdapContext ctx;
+
+ Attributes attributes = new BasicAttributes();
+ HashSet attributeSet = new HashSet();
+
+
+ for (int k=0; k< args.length; k++) {
+ String opt1 = args[k];
+ String val1 = args[k+1];
+
+ if (opt1.equals("-h")) {
+ hostname = val1;
+ }
+ if (opt1.equals("-p")) {
+ ldapPort = val1;
+ }
+ if (opt1.equals("-D")) {
+ principal = val1;
+ }
+ if (opt1.equals("-w")) {
+ credential = val1;
+ }
+ if (opt1.equals("-d")) {
+ dnToModify = val1;
+ }
+ if (opt1.equals("-v")) {
+ newAttributeValue = val1;
+ }
+ if (opt1.equals("-a")) {
+ attributeToModify = val1;
+ }
+ if (opt1.equals("-t")) {
+ changetype = val1;
+ }
+ if (opt1.equals("-l")) {
+ listAttributesToModify = val1;
+
+ ind1= val1.indexOf (":");
+
+ attributeName=val1.substring (0,ind1);
+ attributeValue=val1.substring (ind1+1);
+
+ BasicAttribute attrToComplete = null;
+
+ Iterator it = attributeSet.iterator();
+ while (attrToComplete == null && it.hasNext()) {
+ BasicAttribute attr = (BasicAttribute) it.next();
+ if ((attr.getID()).equalsIgnoreCase(attributeName)) {
+ attrToComplete = attr;
+ }
+ }
+
+ if (attrToComplete == null) {
+ attrToComplete = new BasicAttribute(attributeName);
+ attributeSet.add(attrToComplete);
+ }
+ attributeValue=attributeValue.replaceAll("QUOT","\\\"");
+ attrToComplete.add(attributeValue);
+ }
+ k++;
+ }
+
+ if ( attributeToModify != null && newAttributeValue != null ) {
+
+ BasicAttribute attrToComplete = null;
+
+ attrToComplete = new BasicAttribute(attributeToModify);
+ attributeSet.add(attrToComplete);
+ newAttributeValue=newAttributeValue.replaceAll("QUOT","\\\"");
+ attrToComplete.add(newAttributeValue);
+ }
+
+
+ Iterator it2 = attributeSet.iterator();
+ while (it2.hasNext()) {
+ BasicAttribute attr = (BasicAttribute)it2.next();
+ attributes.put(attr);
+ }
+
+ String provider = "ldap://" + hostname + ":" + ldapPort + "/";
+
+
+ envLdap.put("java.naming.factory.initial", "com.sun.jndi.ldap.LdapCtxFactory");
+ envLdap.put(Context.SECURITY_AUTHENTICATION, "simple");
+ envLdap.put(Context.SECURITY_PRINCIPAL, principal);
+ envLdap.put(Context.SECURITY_CREDENTIALS, credential);
+ envLdap.put(Context.PROVIDER_URL, provider);
+
+
+ try {
+
+
+ CompositeName entryDN = new CompositeName (dnToModify);
+ System.out.println("Modify the entry " + dnToModify);
+
+ // connect to server
+ ctx = new InitialLdapContext(envLdap, null);
+
+ // replace attribute
+ if (changetype.equals("replace")) {
+ ctx.modifyAttributes(entryDN, LdapContext.REPLACE_ATTRIBUTE , attributes);
+ }
+ else if (changetype.equals("add")) {
+ // add attribute
+ ctx.modifyAttributes(entryDN, LdapContext.ADD_ATTRIBUTE , attributes);
+ }
+ else if (changetype.equals("delete")) {
+ // add attribute
+ ctx.modifyAttributes(entryDN, LdapContext.REMOVE_ATTRIBUTE , attributes);
+ }
+
+ ctx.close();
+
+ } catch (CommunicationException e1) {
+ errorMessage = e1.getMessage();
+
+ } catch (NamingException e2) {
+ errorMessage = e2.getMessage();
+
+ } catch (Exception e3) {
+ errorMessage= e3.getMessage();
+ }
+ // No error, the modify is success
+ if ( errorMessage == null ) {
+ errorCode="0";
+ }
+ else {
+ System.out.println (errorMessage);
+ int ind=errorMessage.indexOf("-");
+ if ( ind > 0 ) {
+ errorCode=errorMessage.substring(18, ind-1);
+ }
+ else errorCode="0";
+ }
+
+ int RC = Integer.parseInt(errorCode);
+ System.exit(RC);
+ }
+}
--
Gitblit v1.10.0