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