You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by er...@apache.org on 2006/10/14 20:54:41 UTC
svn commit: r463988 - in
/directory/sandbox/ersiner/sptriggerdemo/src/main/java/sptriggerdemo:
TriggerDemo01.java TriggerDemo02.java
Author: ersiner
Date: Sat Oct 14 11:54:40 2006
New Revision: 463988
URL: http://svn.apache.org/viewvc?view=rev&rev=463988
Log:
Updating Trigger Demo used for ApacheCon.
Added:
directory/sandbox/ersiner/sptriggerdemo/src/main/java/sptriggerdemo/TriggerDemo01.java
directory/sandbox/ersiner/sptriggerdemo/src/main/java/sptriggerdemo/TriggerDemo02.java
Added: directory/sandbox/ersiner/sptriggerdemo/src/main/java/sptriggerdemo/TriggerDemo01.java
URL: http://svn.apache.org/viewvc/directory/sandbox/ersiner/sptriggerdemo/src/main/java/sptriggerdemo/TriggerDemo01.java?view=auto&rev=463988
==============================================================================
--- directory/sandbox/ersiner/sptriggerdemo/src/main/java/sptriggerdemo/TriggerDemo01.java (added)
+++ directory/sandbox/ersiner/sptriggerdemo/src/main/java/sptriggerdemo/TriggerDemo01.java Sat Oct 14 11:54:40 2006
@@ -0,0 +1,77 @@
+/*
+ * Copyright 2006 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package sptriggerdemo;
+
+
+import java.util.Hashtable;
+
+import javax.naming.NamingException;
+import javax.naming.ldap.InitialLdapContext;
+import javax.naming.ldap.LdapContext;
+
+import org.apache.directory.shared.ldap.sp.JavaStoredProcedureUtils;
+import org.apache.directory.shared.ldap.trigger.TriggerUtils;
+
+import sptriggerdemo.common.BackupUtilities;
+
+
+/**
+ * Demo utility for Stored Procedures and Triggers.
+ *
+ * @author <a href="mailto:ersiner@apache.org">Ersin Er</a>
+ */
+public class TriggerDemo01
+{
+ private static String host = "localhost";
+ private static int port = 1024;
+
+
+ private static LdapContext connectToServer() throws NamingException
+ {
+ Hashtable env = new Hashtable();
+ env.put( "java.naming.factory.initial", "com.sun.jndi.ldap.LdapCtxFactory" );
+ env.put( "java.naming.provider.url", "ldap://" + host + ":" + port + "/ou=system" );
+ env.put( "java.naming.security.principal", "uid=admin,ou=system" );
+ env.put( "java.naming.security.credentials", "secret" );
+ env.put( "java.naming.security.authentication", "simple" );
+ return new InitialLdapContext( env, null );
+ }
+
+
+ public static void main( String[] args ) throws NamingException
+ {
+ LdapContext ctx = connectToServer();
+
+ TriggerUtils.defineTriggerExecutionSpecificPoint( ctx );
+
+ // Load the stored procedure unit which has the stored procedure to be triggered.
+ JavaStoredProcedureUtils.loadStoredProcedureClass( ctx, BackupUtilities.class );
+
+ LdapContext entry = ( LdapContext ) ctx.lookup( "ou=Test Entry 01" );
+
+ /**
+ * AFTER Delete CALL "<package>.BackupUtilities.backupDeleted"
+ * ( $ldapContext "", $name, $operationPrincipal, $deletedEntry );
+ */
+ String triggerSpec = "AFTER Delete CALL \"" + BackupUtilities.class.getName() +
+ ".backupDeleted\" ( $ldapContext \"\", $name, $operationPrincipal, $deletedEntry )";
+
+ TriggerUtils.loadEntryTriggerSpecification( entry, triggerSpec );
+ }
+
+}
Added: directory/sandbox/ersiner/sptriggerdemo/src/main/java/sptriggerdemo/TriggerDemo02.java
URL: http://svn.apache.org/viewvc/directory/sandbox/ersiner/sptriggerdemo/src/main/java/sptriggerdemo/TriggerDemo02.java?view=auto&rev=463988
==============================================================================
--- directory/sandbox/ersiner/sptriggerdemo/src/main/java/sptriggerdemo/TriggerDemo02.java (added)
+++ directory/sandbox/ersiner/sptriggerdemo/src/main/java/sptriggerdemo/TriggerDemo02.java Sat Oct 14 11:54:40 2006
@@ -0,0 +1,119 @@
+/*
+ * Copyright 2006 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package sptriggerdemo;
+
+
+import java.util.Hashtable;
+
+import javax.naming.NamingException;
+import javax.naming.directory.Attribute;
+import javax.naming.directory.Attributes;
+import javax.naming.directory.BasicAttribute;
+import javax.naming.directory.BasicAttributes;
+import javax.naming.directory.DirContext;
+import javax.naming.ldap.InitialLdapContext;
+import javax.naming.ldap.LdapContext;
+
+import org.apache.directory.shared.ldap.sp.JavaStoredProcedureUtils;
+import org.apache.directory.shared.ldap.trigger.TriggerUtils;
+
+import sptriggerdemo.common.BackupUtilities;
+
+
+/**
+ * Demo utility for Stored Procedures and Triggers.
+ *
+ * @author <a href="mailto:ersiner@apache.org">Ersin Er</a>
+ */
+public class TriggerDemo02
+{
+ private static String host = "localhost";
+ private static int port = 1024;
+
+
+ private static LdapContext connectToServer() throws NamingException
+ {
+ Hashtable env = new Hashtable();
+ env.put( "java.naming.factory.initial", "com.sun.jndi.ldap.LdapCtxFactory" );
+ env.put( "java.naming.provider.url", "ldap://" + host + ":" + port + "/ou=system" );
+ env.put( "java.naming.security.principal", "uid=admin,ou=system" );
+ env.put( "java.naming.security.credentials", "secret" );
+ env.put( "java.naming.security.authentication", "simple" );
+ return new InitialLdapContext( env, null );
+ }
+
+
+ public static void main( String[] args ) throws NamingException
+ {
+ LdapContext ctx = connectToServer();
+
+ TriggerUtils.defineTriggerExecutionSpecificPoint( ctx );
+
+ // Load the stored procedure unit which has the stored procedure to be triggered.
+
+ //JavaStoredProcedureUtils.loadStoredProcedureClass( ctx, BackupUtilities.class );
+
+ // Specify the subtree refinement for the set of entries
+ // which will be handled by the mailing list manager.
+
+ String subtreeSpec = "{ base \"ou=People\", minimum 1, specificationFilter item:person }";
+
+ // Form the Trigger Specification to be called after each person entry add.
+ // This trigger will provide automatic subscription to Everybody mailing list.
+
+ String triggerSpec = "AFTER Delete CALL \"" + BackupUtilities.class.getName() +
+ ".backupDeleted\" ( $ldapContext \"\", $name, $operationPrincipal, $deletedEntry )";
+
+ //TriggerUtils.createTriggerExecutionSubentry( ctx, "triggerSubentry1", subtreeSpec );
+
+ // Load the Trigger Specification within the Trigger Subentry.
+ //TriggerUtils.loadPrescriptiveTriggerSpecification( ctx, "triggerSubentry1", triggerSpec );
+
+ createTiggerSubentry( ctx, "triggerSubentry1", subtreeSpec, triggerSpec );
+ }
+
+
+
+
+
+ public static void createTiggerSubentry( LdapContext adminCtx, String cn, String subtree, String triggerSpec ) throws NamingException
+ {
+ // modify ou=system to be an AP for an Trigger AA if it is not already
+ Attributes ap = adminCtx.getAttributes( "", new String[]
+ { "administrativeRole" } );
+ Attribute administrativeRole = ap.get( "administrativeRole" );
+ if ( administrativeRole == null || !administrativeRole.contains( "triggerExecutionSpecificArea" ) )
+ {
+ Attributes changes = new BasicAttributes( "administrativeRole", "triggerExecutionSpecificArea", true );
+ adminCtx.modifyAttributes( "", DirContext.ADD_ATTRIBUTE, changes );
+ }
+
+ // now add the Trigger subentry below ou=system
+ Attributes subentry = new BasicAttributes( "cn", cn, true );
+ Attribute objectClass = new BasicAttribute( "objectClass" );
+ subentry.put( objectClass );
+ objectClass.add( "top" );
+ objectClass.add( "subentry" );
+ objectClass.add( "triggerExecutionSubentry" );
+ subentry.put( "subtreeSpecification", subtree );
+ subentry.put( "prescriptiveTriggerSpecification", triggerSpec );
+ adminCtx.createSubcontext( "cn=" + cn, subentry );
+ }
+
+
+}