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 2005/11/29 07:40:30 UTC
svn commit: r349658 - in
/directory/sandbox/ersiner/apacheds-with-storedprocs/core/src/main/java/org/apache/ldap/server/storedprocs:
./ codec/
Author: ersiner
Date: Mon Nov 28 22:40:19 2005
New Revision: 349658
URL: http://svn.apache.org/viewcvs?rev=349658&view=rev
Log:
Added Emmanuels JavaStoredProcedure codec.
And some clean up.
Modified:
directory/sandbox/ersiner/apacheds-with-storedprocs/core/src/main/java/org/apache/ldap/server/storedprocs/JavaStoredProcedure.java
directory/sandbox/ersiner/apacheds-with-storedprocs/core/src/main/java/org/apache/ldap/server/storedprocs/LdapClassLoader.java
directory/sandbox/ersiner/apacheds-with-storedprocs/core/src/main/java/org/apache/ldap/server/storedprocs/ParameterPojo.java
directory/sandbox/ersiner/apacheds-with-storedprocs/core/src/main/java/org/apache/ldap/server/storedprocs/StoredProcedurePojo.java
directory/sandbox/ersiner/apacheds-with-storedprocs/core/src/main/java/org/apache/ldap/server/storedprocs/codec/StoredProcedureContainer.java
directory/sandbox/ersiner/apacheds-with-storedprocs/core/src/main/java/org/apache/ldap/server/storedprocs/codec/StoredProcedureEnum.java
directory/sandbox/ersiner/apacheds-with-storedprocs/core/src/main/java/org/apache/ldap/server/storedprocs/codec/StoredProcedureGrammar.java
Modified: directory/sandbox/ersiner/apacheds-with-storedprocs/core/src/main/java/org/apache/ldap/server/storedprocs/JavaStoredProcedure.java
URL: http://svn.apache.org/viewcvs/directory/sandbox/ersiner/apacheds-with-storedprocs/core/src/main/java/org/apache/ldap/server/storedprocs/JavaStoredProcedure.java?rev=349658&r1=349657&r2=349658&view=diff
==============================================================================
--- directory/sandbox/ersiner/apacheds-with-storedprocs/core/src/main/java/org/apache/ldap/server/storedprocs/JavaStoredProcedure.java (original)
+++ directory/sandbox/ersiner/apacheds-with-storedprocs/core/src/main/java/org/apache/ldap/server/storedprocs/JavaStoredProcedure.java Mon Nov 28 22:40:19 2005
@@ -22,6 +22,8 @@
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
+import javax.naming.NamingException;
+
import org.apache.ldap.server.jndi.ServerLdapContext;
@@ -42,7 +44,7 @@
public JavaStoredProcedure(
ServerLdapContext ctx,
String fullyQualifiedSPName,
- Class[] parameterTypes ) throws ClassNotFoundException, SecurityException, NoSuchMethodException
+ Class[] parameterTypes ) throws ClassNotFoundException, SecurityException, NoSuchMethodException, NamingException
{
this.ctx = ctx;
this.fQSPName = fullyQualifiedSPName;
Modified: directory/sandbox/ersiner/apacheds-with-storedprocs/core/src/main/java/org/apache/ldap/server/storedprocs/LdapClassLoader.java
URL: http://svn.apache.org/viewcvs/directory/sandbox/ersiner/apacheds-with-storedprocs/core/src/main/java/org/apache/ldap/server/storedprocs/LdapClassLoader.java?rev=349658&r1=349657&r2=349658&view=diff
==============================================================================
--- directory/sandbox/ersiner/apacheds-with-storedprocs/core/src/main/java/org/apache/ldap/server/storedprocs/LdapClassLoader.java (original)
+++ directory/sandbox/ersiner/apacheds-with-storedprocs/core/src/main/java/org/apache/ldap/server/storedprocs/LdapClassLoader.java Mon Nov 28 22:40:19 2005
@@ -43,10 +43,9 @@
public class LdapClassLoader extends ClassLoader
{
private static final Logger log = LoggerFactory.getLogger( LdapClassLoader.class );
- private static String defaultSearchContextsConfig="cn=ClassLoaderDefaultSearchContexts,ou=configuration,ou=system";
+ private static String defaultSearchContextsConfig = "cn=ClassLoaderDefaultSearchContexts,ou=configuration,ou=system";
private ServerLdapContext RootDSE;
-
public LdapClassLoader( ServerLdapContext RootDSE ) throws NamingException
{
this.RootDSE = ( ( ServerLdapContext ) RootDSE.lookup( "" ) );
@@ -110,7 +109,7 @@
catch ( NamingException e )
{
log.debug( "No configuration data found for class loader default search contexts." );
- };
+ }
if ( defaultSearchContextsConfigContext != null )
{
Modified: directory/sandbox/ersiner/apacheds-with-storedprocs/core/src/main/java/org/apache/ldap/server/storedprocs/ParameterPojo.java
URL: http://svn.apache.org/viewcvs/directory/sandbox/ersiner/apacheds-with-storedprocs/core/src/main/java/org/apache/ldap/server/storedprocs/ParameterPojo.java?rev=349658&r1=349657&r2=349658&view=diff
==============================================================================
--- directory/sandbox/ersiner/apacheds-with-storedprocs/core/src/main/java/org/apache/ldap/server/storedprocs/ParameterPojo.java (original)
+++ directory/sandbox/ersiner/apacheds-with-storedprocs/core/src/main/java/org/apache/ldap/server/storedprocs/ParameterPojo.java Mon Nov 28 22:40:19 2005
@@ -1,20 +1,21 @@
-package org.apache.ldap.server.storedprocs;
-
-public class ParameterPojo {
- private String type;
-
- private byte[] value;
-
- public String getType() {
- return type;
- }
- public void setType(String type) {
- this.type = type;
- }
- public byte[] getValue() {
- return value;
- }
- public void setValue(byte[] value) {
- this.value = value;
- }
-}
+package org.apache.ldap.server.storedprocs;
+
+public class ParameterPojo {
+ private String type;
+
+ private byte[] value;
+
+ public String getType() {
+ return type;
+ }
+ public void setType(String type) {
+ this.type = type;
+ }
+ public byte[] getValue() {
+ return value;
+ }
+ public void setValue(byte[] value) {
+ this.value = value;
+ }
+}
+
Modified: directory/sandbox/ersiner/apacheds-with-storedprocs/core/src/main/java/org/apache/ldap/server/storedprocs/StoredProcedurePojo.java
URL: http://svn.apache.org/viewcvs/directory/sandbox/ersiner/apacheds-with-storedprocs/core/src/main/java/org/apache/ldap/server/storedprocs/StoredProcedurePojo.java?rev=349658&r1=349657&r2=349658&view=diff
==============================================================================
--- directory/sandbox/ersiner/apacheds-with-storedprocs/core/src/main/java/org/apache/ldap/server/storedprocs/StoredProcedurePojo.java (original)
+++ directory/sandbox/ersiner/apacheds-with-storedprocs/core/src/main/java/org/apache/ldap/server/storedprocs/StoredProcedurePojo.java Mon Nov 28 22:40:19 2005
@@ -1,31 +1,41 @@
-package org.apache.ldap.server.storedprocs;
-
-import java.util.HashSet;
-import java.util.Set;
-
-public class StoredProcedurePojo {
- private String procedure;
- private Set parameters;
-
- public String getProcedure() {
- return procedure;
- }
-
- public void setProcedure(String procedure) {
- this.procedure = procedure;
- }
-
- public Set getParameters() {
- return parameters;
- }
-
- public void addParameter( ParameterPojo parameter )
- {
- if ( parameters == null )
- {
- parameters = new HashSet();
- }
-
- parameters.add( parameter );
- }
-}
+package org.apache.ldap.server.storedprocs;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class StoredProcedurePojo {
+ private String procedure;
+ private ArrayList parameters;
+ private transient ParameterPojo currentParameter;
+
+ public String getProcedure() {
+ return procedure;
+ }
+
+ public void setProcedure(String procedure) {
+ this.procedure = procedure;
+ }
+
+ public List getParameters() {
+ return parameters;
+ }
+
+ public void addParameter( ParameterPojo parameter )
+ {
+ if ( parameters == null )
+ {
+ parameters = new ArrayList();
+ }
+
+ parameters.add( parameter );
+ }
+
+ public ParameterPojo getCurrentParameter() {
+ return currentParameter;
+ }
+
+ public void setCurrentParameter(ParameterPojo currentParameter) {
+ this.currentParameter = currentParameter;
+ }
+}
+
Modified: directory/sandbox/ersiner/apacheds-with-storedprocs/core/src/main/java/org/apache/ldap/server/storedprocs/codec/StoredProcedureContainer.java
URL: http://svn.apache.org/viewcvs/directory/sandbox/ersiner/apacheds-with-storedprocs/core/src/main/java/org/apache/ldap/server/storedprocs/codec/StoredProcedureContainer.java?rev=349658&r1=349657&r2=349658&view=diff
==============================================================================
--- directory/sandbox/ersiner/apacheds-with-storedprocs/core/src/main/java/org/apache/ldap/server/storedprocs/codec/StoredProcedureContainer.java (original)
+++ directory/sandbox/ersiner/apacheds-with-storedprocs/core/src/main/java/org/apache/ldap/server/storedprocs/codec/StoredProcedureContainer.java Mon Nov 28 22:40:19 2005
@@ -1,87 +1,88 @@
-/*
- * Copyright 2005 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 org.apache.ldap.server.storedprocs.codec;
-
-import java.util.HashSet;
-import java.util.Set;
-
-import org.apache.asn1new.ber.AbstractContainer;
-import org.apache.asn1new.ber.containers.IAsn1Container;
-import org.apache.asn1new.ber.grammar.IGrammar;
-import org.apache.asn1.codec.util.StringUtils;
-import org.apache.ldap.server.storedprocs.StoredProcedurePojo;
-
-
-/**
- *
- * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
- */
-public class StoredProcedureContainer extends AbstractContainer implements IAsn1Container
-{
- //~ Instance fields ----------------------------------------------------------------------------
-
- /** The pojo */
- private StoredProcedurePojo storedProcedurePojo;
-
- //~ Constructors -------------------------------------------------------------------------------
-
- /**
- */
- public StoredProcedureContainer()
- {
- super( );
- currentGrammar = 0;
- grammars = new IGrammar[1];
- grammarStack = new IGrammar[1];
- stateStack = new int[1];
- nbGrammars = 0;
-
- grammars[StoredProcedureEnum.STORED_PROCEDURE_GRAMMAR] = StoredProcedureGrammar.getInstance();
-
- grammarStack[currentGrammar] = grammars[StoredProcedureEnum.STORED_PROCEDURE_GRAMMAR];
-
- states = StoredProcedureEnum.getInstance();
- }
-
- //~ Methods ------------------------------------------------------------------------------------
- /**
- * @return Returns the ldapMessage.
- */
- public StoredProcedurePojo getStoredProcedurePojo()
- {
-
- return storedProcedurePojo;
- }
-
- /**
- * Set a ldapMessage Object into the container. It will be completed
- * by the ldapDecoder .
- *
- * @param ldapMessage The ldapMessage to set.
- */
- public void setStoredProcedurePojo( StoredProcedurePojo storedProcedurePojo )
- {
- this.storedProcedurePojo = storedProcedurePojo;
- }
-
- public void clean()
- {
- super.clean();
-
- storedProcedurePojo = null;
- }
-}
+/*
+ * Copyright 2005 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 org.apache.ldap.server.storedprocs.codec;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import org.apache.asn1new.ber.AbstractContainer;
+import org.apache.asn1new.ber.containers.IAsn1Container;
+import org.apache.asn1new.ber.grammar.IGrammar;
+import org.apache.asn1.codec.util.StringUtils;
+import org.apache.ldap.server.storedprocs.StoredProcedurePojo;
+
+
+/**
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class StoredProcedureContainer extends AbstractContainer implements IAsn1Container
+{
+ //~ Instance fields ----------------------------------------------------------------------------
+
+ /** The pojo */
+ private StoredProcedurePojo storedProcedurePojo;
+
+ //~ Constructors -------------------------------------------------------------------------------
+
+ /**
+ */
+ public StoredProcedureContainer()
+ {
+ super( );
+ currentGrammar = 0;
+ grammars = new IGrammar[1];
+ grammarStack = new IGrammar[1];
+ stateStack = new int[1];
+ nbGrammars = 0;
+
+ grammars[StoredProcedureEnum.STORED_PROCEDURE_GRAMMAR] = StoredProcedureGrammar.getInstance();
+
+ grammarStack[currentGrammar] = grammars[StoredProcedureEnum.STORED_PROCEDURE_GRAMMAR];
+
+ states = StoredProcedureEnum.getInstance();
+ }
+
+ //~ Methods ------------------------------------------------------------------------------------
+ /**
+ * @return Returns the ldapMessage.
+ */
+ public StoredProcedurePojo getStoredProcedurePojo()
+ {
+
+ return storedProcedurePojo;
+ }
+
+ /**
+ * Set a ldapMessage Object into the container. It will be completed
+ * by the ldapDecoder .
+ *
+ * @param ldapMessage The ldapMessage to set.
+ */
+ public void setStoredProcedurePojo( StoredProcedurePojo storedProcedurePojo )
+ {
+ this.storedProcedurePojo = storedProcedurePojo;
+ }
+
+ public void clean()
+ {
+ super.clean();
+
+ storedProcedurePojo = null;
+ }
+}
+
Modified: directory/sandbox/ersiner/apacheds-with-storedprocs/core/src/main/java/org/apache/ldap/server/storedprocs/codec/StoredProcedureEnum.java
URL: http://svn.apache.org/viewcvs/directory/sandbox/ersiner/apacheds-with-storedprocs/core/src/main/java/org/apache/ldap/server/storedprocs/codec/StoredProcedureEnum.java?rev=349658&r1=349657&r2=349658&view=diff
==============================================================================
--- directory/sandbox/ersiner/apacheds-with-storedprocs/core/src/main/java/org/apache/ldap/server/storedprocs/codec/StoredProcedureEnum.java (original)
+++ directory/sandbox/ersiner/apacheds-with-storedprocs/core/src/main/java/org/apache/ldap/server/storedprocs/codec/StoredProcedureEnum.java Mon Nov 28 22:40:19 2005
@@ -1,208 +1,209 @@
-/*
- * Copyright 2005 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 org.apache.ldap.server.storedprocs.codec;
-
-import org.apache.asn1new.ber.grammar.IGrammar;
-import org.apache.asn1new.ber.grammar.IStates;
-
-
-/**
- * This class store the Ldap grammar's constants.
- * It is also used for debugging purpose
- *
- *
- * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
- */
-public class StoredProcedureEnum implements IStates
-{
- //~ Static fields/initializers -----------------------------------------------------------------
-
- //=========================================================================
- // StoredProcedure
- //=========================================================================
- /** StoredProcedure Tag */
- public static int STORED_PROCEDURE_TAG = 0;
-
- /** StoredProcedure Value */
- public static int STORED_PROCEDURE_VALUE = 1;
-
- // Language ---------------------------------------------------------------
- /** Language Tag */
- public static int LANGUAGE_TAG = 2;
-
- /** Language Value */
- public static int LANGUAGE_VALUE = 3;
-
- // Procedure --------------------------------------------------------------
- /** Procedure Tag */
- public static int PROCEDURE_TAG = 4;
-
- /** Procedure Value */
- public static int PROCEDURE_VALUE = 5;
-
- // Parameters -------------------------------------------------------------
- /** Parameters Tag */
- public static int PARAMETERS_TAG = 6;
-
- /** Parameters Value */
- public static int PARAMETERS_VALUE = 7;
-
- // Parameter type ---------------------------------------------------------
- /** Parameter type Tag */
- public static int PARAMETER_TYPE_TAG = 8;
-
- /** Parameter type Value */
- public static int PARAMETER_TYPE_VALUE = 9;
-
- // Parameters value -------------------------------------------------------
- /** Parameter value Tag */
- public static int PARAMETER_VALUE_TAG = 10;
-
- /** Parameter value Value */
- public static int PARAMETER_VALUE_VALUE = 11;
-
- public static int LAST_STORED_PROCEDURE_STATE = 12;
-
- //=========================================================================
- // Grammars declaration.
- //=========================================================================
- /** Ldap Message Grammar */
- public static final int STORED_PROCEDURE_GRAMMAR_SWITCH = 0x0100;
-
- /** LdapMessage grammar number */
- public static final int STORED_PROCEDURE_GRAMMAR = 0;
-
- /** The total number of grammars used */
- public static final int NB_GRAMMARS = 1;
-
- //=========================================================================
- // Grammar switches debug strings
- //=========================================================================
- /** A string representation of grammars */
- private static String[] GrammarSwitchString =
- new String[]
- {
- "STORED_PROCEDURE_GRAMMAR_SWITCH",
- };
-
- //=========================================================================
- // States debug strings
- //=========================================================================
- /** A string representation of all the states */
- private static String[] StoredProcedureString =
- new String[]
- {
- "STORED_PROCEDURE_TAG",
- "STORED_PROCEDURE_VALUE",
- "LANGUAGE_TAG",
- "LANGUAGE_VALUE",
- "PROCEDURE_TAG",
- "PROCEDURE_VALUE",
- "PARAMETERS_TAG",
- "PARAMETERS_VALUE",
- "PARAMETER_TYPE_TAG",
- "PARAMETER_TYPE_VALUE",
- "PARAMETER_VALUE_TAG",
- "PARAMETER_VALUE_VALUE"
- };
-
- /** The instance */
- private static StoredProcedureEnum instance = new StoredProcedureEnum();
-
- //~ Constructors -------------------------------------------------------------------------------
-
- /**
- * This is a private constructor. This class is a singleton
- *
- */
- private StoredProcedureEnum()
- {
- }
-
- //~ Methods ------------------------------------------------------------------------------------
-
- /**
- * Get an instance of this class
- * @return An instance on this class
- */
- public static IStates getInstance()
- {
- return instance;
- }
-
- /**
- * Get the grammar name
- * @param The grammar code
- * @return The grammar name
- */
- public String getGrammarName(int grammar)
- {
- switch (grammar)
- {
- case STORED_PROCEDURE_GRAMMAR : return "STORED_PROCEDURE_GRAMMAR";
-
- default : return "UNKNOWN";
- }
- }
-
- /**
- * Get the grammar name
- * @param The grammar class
- * @return The grammar name
- */
- public String getGrammarName(IGrammar grammar)
- {
- if (grammar instanceof StoredProcedureGrammar)
- {
- return "STORED_PROCEDURE_GRAMMAR";
- }
- else
- {
- return "UNKNOWN GRAMMAR";
- }
- }
-
- /**
- * Get the string representing the state
- *
- * @param grammar The current grammar being used
- * @param state The state number
- * @return The String representing the state
- */
- public String getState( int grammar, int state )
- {
-
- if ( ( state & GRAMMAR_SWITCH_MASK ) != 0 )
- {
- return ( state == END_STATE ) ? "END_STATE"
- : GrammarSwitchString[( ( state & GRAMMAR_SWITCH_MASK ) >> 8 ) - 1];
- }
- else
- {
-
- switch ( grammar )
- {
-
- case STORED_PROCEDURE_GRAMMAR :
- return ( ( state == GRAMMAR_END ) ? "STORED_PROCEDURE_END_STATE" : StoredProcedureString[state] );
-
- default :
- return "UNKNOWN";
- }
- }
- }
-}
+/*
+ * Copyright 2005 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 org.apache.ldap.server.storedprocs.codec;
+
+import org.apache.asn1new.ber.grammar.IGrammar;
+import org.apache.asn1new.ber.grammar.IStates;
+
+
+/**
+ * This class store the Ldap grammar's constants.
+ * It is also used for debugging purpose
+ *
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class StoredProcedureEnum implements IStates
+{
+ //~ Static fields/initializers -----------------------------------------------------------------
+
+ //=========================================================================
+ // StoredProcedure
+ //=========================================================================
+ /** StoredProcedure Tag */
+ public static int STORED_PROCEDURE_TAG = 0;
+
+ /** StoredProcedure Value */
+ public static int STORED_PROCEDURE_VALUE = 1;
+
+ // Language ---------------------------------------------------------------
+ /** Language Tag */
+ public static int LANGUAGE_TAG = 2;
+
+ /** Language Value */
+ public static int LANGUAGE_VALUE = 3;
+
+ // Procedure --------------------------------------------------------------
+ /** Procedure Tag */
+ public static int PROCEDURE_TAG = 4;
+
+ /** Procedure Value */
+ public static int PROCEDURE_VALUE = 5;
+
+ // Parameters -------------------------------------------------------------
+ /** Parameters Tag */
+ public static int PARAMETERS_TAG = 6;
+
+ /** Parameters Value */
+ public static int PARAMETERS_VALUE = 7;
+
+ // Parameter type ---------------------------------------------------------
+ /** Parameter type Tag */
+ public static int PARAMETER_TYPE_TAG = 8;
+
+ /** Parameter type Value */
+ public static int PARAMETER_TYPE_VALUE = 9;
+
+ // Parameters value -------------------------------------------------------
+ /** Parameter value Tag */
+ public static int PARAMETER_VALUE_TAG = 10;
+
+ /** Parameter value Value */
+ public static int PARAMETER_VALUE_VALUE = 11;
+
+ public static int LAST_STORED_PROCEDURE_STATE = 12;
+
+ //=========================================================================
+ // Grammars declaration.
+ //=========================================================================
+ /** Ldap Message Grammar */
+ public static final int STORED_PROCEDURE_GRAMMAR_SWITCH = 0x0100;
+
+ /** LdapMessage grammar number */
+ public static final int STORED_PROCEDURE_GRAMMAR = 0;
+
+ /** The total number of grammars used */
+ public static final int NB_GRAMMARS = 1;
+
+ //=========================================================================
+ // Grammar switches debug strings
+ //=========================================================================
+ /** A string representation of grammars */
+ private static String[] GrammarSwitchString =
+ new String[]
+ {
+ "STORED_PROCEDURE_GRAMMAR_SWITCH",
+ };
+
+ //=========================================================================
+ // States debug strings
+ //=========================================================================
+ /** A string representation of all the states */
+ private static String[] StoredProcedureString =
+ new String[]
+ {
+ "STORED_PROCEDURE_TAG",
+ "STORED_PROCEDURE_VALUE",
+ "LANGUAGE_TAG",
+ "LANGUAGE_VALUE",
+ "PROCEDURE_TAG",
+ "PROCEDURE_VALUE",
+ "PARAMETERS_TAG",
+ "PARAMETERS_VALUE",
+ "PARAMETER_TYPE_TAG",
+ "PARAMETER_TYPE_VALUE",
+ "PARAMETER_VALUE_TAG",
+ "PARAMETER_VALUE_VALUE"
+ };
+
+ /** The instance */
+ private static StoredProcedureEnum instance = new StoredProcedureEnum();
+
+ //~ Constructors -------------------------------------------------------------------------------
+
+ /**
+ * This is a private constructor. This class is a singleton
+ *
+ */
+ private StoredProcedureEnum()
+ {
+ }
+
+ //~ Methods ------------------------------------------------------------------------------------
+
+ /**
+ * Get an instance of this class
+ * @return An instance on this class
+ */
+ public static IStates getInstance()
+ {
+ return instance;
+ }
+
+ /**
+ * Get the grammar name
+ * @param The grammar code
+ * @return The grammar name
+ */
+ public String getGrammarName(int grammar)
+ {
+ switch (grammar)
+ {
+ case STORED_PROCEDURE_GRAMMAR : return "STORED_PROCEDURE_GRAMMAR";
+
+ default : return "UNKNOWN";
+ }
+ }
+
+ /**
+ * Get the grammar name
+ * @param The grammar class
+ * @return The grammar name
+ */
+ public String getGrammarName(IGrammar grammar)
+ {
+ if (grammar instanceof StoredProcedureGrammar)
+ {
+ return "STORED_PROCEDURE_GRAMMAR";
+ }
+ else
+ {
+ return "UNKNOWN GRAMMAR";
+ }
+ }
+
+ /**
+ * Get the string representing the state
+ *
+ * @param grammar The current grammar being used
+ * @param state The state number
+ * @return The String representing the state
+ */
+ public String getState( int grammar, int state )
+ {
+
+ if ( ( state & GRAMMAR_SWITCH_MASK ) != 0 )
+ {
+ return ( state == END_STATE ) ? "END_STATE"
+ : GrammarSwitchString[( ( state & GRAMMAR_SWITCH_MASK ) >> 8 ) - 1];
+ }
+ else
+ {
+
+ switch ( grammar )
+ {
+
+ case STORED_PROCEDURE_GRAMMAR :
+ return ( ( state == GRAMMAR_END ) ? "STORED_PROCEDURE_END_STATE" : StoredProcedureString[state] );
+
+ default :
+ return "UNKNOWN";
+ }
+ }
+ }
+}
+
Modified: directory/sandbox/ersiner/apacheds-with-storedprocs/core/src/main/java/org/apache/ldap/server/storedprocs/codec/StoredProcedureGrammar.java
URL: http://svn.apache.org/viewcvs/directory/sandbox/ersiner/apacheds-with-storedprocs/core/src/main/java/org/apache/ldap/server/storedprocs/codec/StoredProcedureGrammar.java?rev=349658&r1=349657&r2=349658&view=diff
==============================================================================
--- directory/sandbox/ersiner/apacheds-with-storedprocs/core/src/main/java/org/apache/ldap/server/storedprocs/codec/StoredProcedureGrammar.java (original)
+++ directory/sandbox/ersiner/apacheds-with-storedprocs/core/src/main/java/org/apache/ldap/server/storedprocs/codec/StoredProcedureGrammar.java Mon Nov 28 22:40:19 2005
@@ -1,370 +1,354 @@
-/*
- * Copyright 2005 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 org.apache.ldap.server.storedprocs.codec;
-
-import javax.naming.InvalidNameException;
-
-import org.apache.asn1.codec.DecoderException;
-import org.apache.asn1new.ber.containers.IAsn1Container;
-import org.apache.asn1new.ber.grammar.AbstractGrammar;
-import org.apache.asn1new.ber.grammar.GrammarAction;
-import org.apache.asn1new.ber.grammar.GrammarTransition;
-import org.apache.asn1new.ber.grammar.IGrammar;
-import org.apache.asn1new.ber.tlv.TLV;
-import org.apache.asn1new.ber.tlv.UniversalTag;
-import org.apache.asn1.codec.util.StringUtils;
-import org.apache.ldap.server.storedprocs.StoredProcedurePojo;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-
-/**
- * This class implements the SearchResultEntry LDAP message. All the actions are declared in this
- * class. As it is a singleton, these declaration are only done once.
- *
- * We have to deal with empty elements, as stated by rfc 2251 :
- *
- * -- implementors should note that the PartialAttributeList may
- * -- have zero elements (if none of the attributes of that entry
- * -- were requested, or could be returned), and that the vals set
- * -- may also have zero elements (if types only was requested, or
- * -- all values were excluded from the result.)
- *
- * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
- */
-public class StoredProcedureGrammar extends AbstractGrammar implements IGrammar
-{
- //~ Static fields/initializers -----------------------------------------------------------------
-
- /** The logger */
- private static final Logger log = LoggerFactory.getLogger( StoredProcedureGrammar.class );
-
- /** The instance of grammar. SearchResultEntryGrammar is a singleton */
- private static IGrammar instance = new StoredProcedureGrammar();
-
- //~ Constructors -------------------------------------------------------------------------------
-
- /**
- * Creates a new SearchResultEntryGrammar object.
- */
- private StoredProcedureGrammar()
- {
- name = StoredProcedureGrammar.class.getName();
- statesEnum = StoredProcedureEnum.getInstance();
-
- // Create the transitions table
- super.transitions = new GrammarTransition[StoredProcedureEnum.LAST_STORED_PROCEDURE_STATE][256];
-
- //============================================================================================
- // StoredProcedure Message
- //============================================================================================
- // StoredProcedure ::= SEQUENCE { (Tag)
- // ...
- // Nothing to do.
- super.transitions[StoredProcedureEnum.STORED_PROCEDURE_TAG][UniversalTag.SEQUENCE_TAG] = new GrammarTransition(
- StoredProcedureEnum.STORED_PROCEDURE_TAG, StoredProcedureEnum.STORED_PROCEDURE_VALUE,
- null );
-
- // StoredProcedure ::= SEQUENCE { (Value)
- // ...
- // Nothing to do.
- super.transitions[StoredProcedureEnum.STORED_PROCEDURE_VALUE][UniversalTag.SEQUENCE_TAG] = new GrammarTransition(
- StoredProcedureEnum.STORED_PROCEDURE_VALUE,
- StoredProcedureEnum.LANGUAGE_TAG, null );
-
- // language OCTETSTRING, (Tag)
- // ...
- // Nothing to do
- super.transitions[StoredProcedureEnum.LANGUAGE_TAG][UniversalTag.OCTET_STRING_TAG] =
- new GrammarTransition(
- StoredProcedureEnum.LANGUAGE_TAG,
- StoredProcedureEnum.LANGUAGE_VALUE, null );
-
- // language OCTETSTRING, (Tag)
- // ...
- // Store the language.
- super.transitions[StoredProcedureEnum.LANGUAGE_VALUE][UniversalTag.OCTET_STRING_TAG] =
- new GrammarTransition(
- StoredProcedureEnum.LANGUAGE_VALUE,
- StoredProcedureEnum.PROCEDURE_TAG,
- new GrammarAction( "Create the pojo" )
- {
- public void action( IAsn1Container container ) throws DecoderException
- {
-
- StoredProcedureContainer storedProcedureContainer = ( StoredProcedureContainer )
- container;
-
- TLV tlv =
- storedProcedureContainer.getCurrentTLV();
-
- // Store the value.
- if ( tlv.getLength().getLength() == 0 )
- {
- // This is supposed to be Java
- StoredProcedurePojo storedProcedurePojo = new StoredProcedurePojo();
- }
- else
- {
- String language = StringUtils.toUtf8( tlv.getValue().getData() );
-
- if ( "java".compareToIgnoreCase( language ) == 0 )
- {
- StoredProcedurePojo storedProcedurePojo = new StoredProcedurePojo();
- }
- else
- {
- log.error( "The language " + StringUtils.dumpBytes( tlv.getValue().getData() ) + " is invalid" );
- throw new DecoderException( "The language " + StringUtils.dumpBytes( tlv.getValue().getData() ) + " is invalid" );
- }
- }
-
- if ( log.isDebugEnabled() )
- {
- log.debug( "Language found : java " );
- }
- }
- } );
-
-/*
- // SearchResultEntry ::= [APPLICATION 4] SEQUENCE {
- // attributes PartialAttributeList }
- // PartialAttributeList ::= *SEQUENCE* OF SEQUENCE { (Tag)
- // ...
- // Nothing to do
- super.transitions[LdapStatesEnum.SEARCH_RESULT_ENTRY_ATTRIBUTES_TAG][UniversalTag.SEQUENCE_TAG] =
- new GrammarTransition(
- LdapStatesEnum.SEARCH_RESULT_ENTRY_ATTRIBUTES_TAG,
- LdapStatesEnum.SEARCH_RESULT_ENTRY_ATTRIBUTES_VALUE, null );
-
- // SearchResultEntry ::= [APPLICATION 4] SEQUENCE {
- // attributes PartialAttributeList }
- // PartialAttributeList ::= *SEQUENCE* OF SEQUENCE { (Tag)
- // ...
- // We may have many attributes. Nothing to do
- super.transitions[LdapStatesEnum.SEARCH_RESULT_ENTRY_ATTRIBUTES_VALUE][UniversalTag.SEQUENCE_TAG] =
- new GrammarTransition(
- LdapStatesEnum.SEARCH_RESULT_ENTRY_ATTRIBUTES_VALUE,
- LdapStatesEnum.SEARCH_RESULT_ENTRY_PARTIAL_ATTRIBUTE_LIST_TAG, null );
-
- // PartialAttributeList ::= SEQUENCE OF *SEQUENCE* { (Tag)
- // ...
- // Nothing to do
- super.transitions[LdapStatesEnum.SEARCH_RESULT_ENTRY_PARTIAL_ATTRIBUTE_LIST_TAG][UniversalTag.SEQUENCE_TAG] =
- new GrammarTransition(
- LdapStatesEnum.SEARCH_RESULT_ENTRY_PARTIAL_ATTRIBUTE_LIST_TAG,
- LdapStatesEnum.SEARCH_RESULT_ENTRY_PARTIAL_ATTRIBUTE_LIST_VALUE, null );
-
- // SearchResultEntry ::= [APPLICATION 4] SEQUENCE {
- // attributes PartialAttributeList }
- // PartialAttributeList ::= SEQUENCE OF *SEQUENCE* { (Tag)
- // ...
- // Loop.
- super.transitions[LdapStatesEnum.SEARCH_RESULT_ENTRY_ATTRIBUTE_VALUE_OR_LIST_TAG][UniversalTag.SEQUENCE_TAG] =
- new GrammarTransition(
- LdapStatesEnum.SEARCH_RESULT_ENTRY_ATTRIBUTE_VALUE_OR_LIST_TAG,
- LdapStatesEnum.SEARCH_RESULT_ENTRY_PARTIAL_ATTRIBUTE_LIST_VALUE, null );
-
- // PartialAttributeList ::= SEQUENCE OF *SEQUENCE* { (Value)
- // ...
- // We may have many attributes. We also have to store a previously decoded AttributeValue
- super.transitions[LdapStatesEnum.SEARCH_RESULT_ENTRY_PARTIAL_ATTRIBUTE_LIST_VALUE][UniversalTag.SEQUENCE_TAG] =
- new GrammarTransition(
- LdapStatesEnum.SEARCH_RESULT_ENTRY_PARTIAL_ATTRIBUTE_LIST_VALUE,
- LdapStatesEnum.SEARCH_RESULT_ENTRY_TYPE_TAG,
- new GrammarAction( "Store attributeValue" )
- {
- public void action( IAsn1Container container ) throws DecoderException
- {
-
- LdapMessageContainer ldapMessageContainer = ( LdapMessageContainer )
- container;
- LdapMessage ldapMessage =
- ldapMessageContainer.getLdapMessage();
- SearchResultEntry searchResultEntry =
- ldapMessage.getSearchResultEntry();
-
- searchResultEntry.addPartialAttributeList();
- }
- } );
-
- // PartialAttributeList ::= SEQUENCE OF SEQUENCE {
- // type AttributeDescription, (Tag)
- // ...
- // Nothing to do.
- super.transitions[LdapStatesEnum.SEARCH_RESULT_ENTRY_TYPE_TAG][UniversalTag.OCTET_STRING_TAG] =
- new GrammarTransition(
- LdapStatesEnum.SEARCH_RESULT_ENTRY_TYPE_TAG,
- LdapStatesEnum.SEARCH_RESULT_ENTRY_TYPE_VALUE, null );
-
- // PartialAttributeList ::= SEQUENCE OF SEQUENCE {
- // type AttributeDescription, (Value)
- // ...
- // Store the attribute's name.
- super.transitions[LdapStatesEnum.SEARCH_RESULT_ENTRY_TYPE_VALUE][UniversalTag.OCTET_STRING_TAG] =
- new GrammarTransition(
- LdapStatesEnum.SEARCH_RESULT_ENTRY_TYPE_VALUE,
- LdapStatesEnum.SEARCH_RESULT_ENTRY_VALS_TAG,
- new GrammarAction( "Store search result entry object name Value" )
- {
- public void action( IAsn1Container container ) throws DecoderException
- {
-
- LdapMessageContainer ldapMessageContainer = ( LdapMessageContainer )
- container;
- LdapMessage ldapMessage =
- ldapMessageContainer.getLdapMessage();
- SearchResultEntry searchResultEntry =
- ldapMessage.getSearchResultEntry();
-
- TLV tlv =
- ldapMessageContainer.getCurrentTLV();
-
- LdapString type = LdapString.EMPTY_STRING;
-
- // Store the name
- if ( tlv.getLength().getLength() == 0 )
- {
- searchResultEntry.addAttributeValues( type );
- }
- else
- {
- try
- {
- type = new LdapString( tlv.getValue().getData() );
- searchResultEntry.addAttributeValues( type );
- }
- catch ( LdapStringEncodingException lsee )
- {
- log.error( "Invalid attribute type : " + StringUtils.dumpBytes( tlv.getValue().getData() ) );
- throw new DecoderException( "The attribute type is invalid : " + lsee.getMessage() );
- }
- }
-
- if ( log.isDebugEnabled() )
- {
- log.debug( "Attribute type : " + type );
- }
- }
- } );
-
- // PartialAttributeList ::= SEQUENCE OF SEQUENCE {
- // ...
- // vals *SET OF* AttributeValue} (Tag)
- // Nothing to do
- super.transitions[LdapStatesEnum.SEARCH_RESULT_ENTRY_VALS_TAG][UniversalTag.SET_TAG] =
- new GrammarTransition(
- LdapStatesEnum.SEARCH_RESULT_ENTRY_VALS_TAG,
- LdapStatesEnum.SEARCH_RESULT_ENTRY_VALS_VALUE, null );
-
- // PartialAttributeList ::= SEQUENCE OF SEQUENCE {
- // ...
- // vals *SET OF* AttributeValue} (Value)
- // We may have many values. Nothing to do
- super.transitions[LdapStatesEnum.SEARCH_RESULT_ENTRY_VALS_VALUE][UniversalTag.SET_TAG] =
- new GrammarTransition(
- LdapStatesEnum.SEARCH_RESULT_ENTRY_VALS_VALUE,
- LdapStatesEnum.SEARCH_RESULT_ENTRY_ATTRIBUTE_VALUE_TAG, null );
-
- // PartialAttributeList ::= SEQUENCE OF SEQUENCE {
- // ...
- // vals SET OF *AttributeValue*} (Tag)
- // Nothing to do
- super.transitions[LdapStatesEnum.SEARCH_RESULT_ENTRY_ATTRIBUTE_VALUE_TAG][UniversalTag.OCTET_STRING_TAG] =
- new GrammarTransition(
- LdapStatesEnum.SEARCH_RESULT_ENTRY_ATTRIBUTE_VALUE_TAG,
- LdapStatesEnum.SEARCH_RESULT_ENTRY_ATTRIBUTE_VALUE_VALUE, null );
-
- // PartialAttributeList ::= SEQUENCE OF SEQUENCE {
- // ...
- // vals SET OF *AttributeValue*} (Tag)
- // The loop.
- super.transitions[LdapStatesEnum.SEARCH_RESULT_ENTRY_ATTRIBUTE_VALUE_OR_LIST_TAG][UniversalTag.OCTET_STRING_TAG] =
- new GrammarTransition(
- LdapStatesEnum.SEARCH_RESULT_ENTRY_ATTRIBUTE_VALUE_OR_LIST_TAG,
- LdapStatesEnum.SEARCH_RESULT_ENTRY_ATTRIBUTE_VALUE_VALUE, null );
-
- // PartialAttributeList ::= SEQUENCE OF SEQUENCE {
- // ...
- // vals SET OF *AttributeValue*} (Value)
- // We may have many values. Store the current one in the current Attribute Value
- super.transitions[LdapStatesEnum.SEARCH_RESULT_ENTRY_ATTRIBUTE_VALUE_VALUE][UniversalTag.OCTET_STRING_TAG] =
- new GrammarTransition(
- LdapStatesEnum.SEARCH_RESULT_ENTRY_ATTRIBUTE_VALUE_VALUE,
- LdapStatesEnum.SEARCH_RESULT_ENTRY_ATTRIBUTE_VALUE_OR_LIST_TAG,
- new GrammarAction( "Store Attribute Value value" )
- {
- public void action( IAsn1Container container ) throws DecoderException
- {
-
- LdapMessageContainer ldapMessageContainer = ( LdapMessageContainer )
- container;
- LdapMessage ldapMessage =
- ldapMessageContainer.getLdapMessage();
- SearchResultEntry searchResultEntry =
- ldapMessage.getSearchResultEntry();
-
- TLV tlv =
- ldapMessageContainer.getCurrentTLV();
-
- // Store the value
- Object value = null;
-
- if ( tlv.getLength().getLength() == 0 )
- {
- searchResultEntry.addAttributeValue( "" );
- }
- else
- {
- if (ldapMessageContainer.isBinary( searchResultEntry.getCurrentAttributeValueType() ) )
- {
- value = tlv.getValue().getData();
-
- if ( log.isDebugEnabled() )
- {
- log.debug( "Attribute value " + StringUtils.dumpBytes( (byte[])value ) );
- }
- }
- else
- {
- value = StringUtils.toUtf8( tlv.getValue().getData() );
-
- if ( log.isDebugEnabled() )
- {
- log.debug( "Attribute value " + value );
- }
- }
-
- searchResultEntry.addAttributeValue( value );
- }
- }
- } );
-*/
- }
-
- //~ Methods ------------------------------------------------------------------------------------
-
- /**
- * Get the instance of this grammar
- *
- * @return An instance on the SearchResultEntry Grammar
- */
- public static IGrammar getInstance()
- {
- return instance;
- }
-}
+/*
+ * Copyright 2005 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 org.apache.ldap.server.storedprocs.codec;
+
+import org.apache.asn1.codec.DecoderException;
+import org.apache.asn1new.ber.containers.IAsn1Container;
+import org.apache.asn1new.ber.grammar.AbstractGrammar;
+import org.apache.asn1new.ber.grammar.GrammarAction;
+import org.apache.asn1new.ber.grammar.GrammarTransition;
+import org.apache.asn1new.ber.grammar.IGrammar;
+import org.apache.asn1new.ber.tlv.TLV;
+import org.apache.asn1new.ber.tlv.UniversalTag;
+import org.apache.asn1.codec.util.StringUtils;
+import org.apache.ldap.server.storedprocs.ParameterPojo;
+import org.apache.ldap.server.storedprocs.StoredProcedurePojo;
+import org.apache.log4j.Logger;
+
+
+/**
+ * This class implements the SearchResultEntry LDAP message. All the actions are declared in this
+ * class. As it is a singleton, these declaration are only done once.
+ *
+ * We have to deal with empty elements, as stated by rfc 2251 :
+ *
+ * -- implementors should note that the PartialAttributeList may
+ * -- have zero elements (if none of the attributes of that entry
+ * -- were requested, or could be returned), and that the vals set
+ * -- may also have zero elements (if types only was requested, or
+ * -- all values were excluded from the result.)
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class StoredProcedureGrammar extends AbstractGrammar implements IGrammar
+{
+ //~ Static fields/initializers -----------------------------------------------------------------
+
+ /** The logger */
+ //private static final Logger log = LoggerFactory.getLogger( StoredProcedureGrammar.class );
+ private static final Logger log = Logger.getLogger( StoredProcedureGrammar.class );
+
+
+ /** The instance of grammar. SearchResultEntryGrammar is a singleton */
+ private static IGrammar instance = new StoredProcedureGrammar();
+
+ //~ Constructors -------------------------------------------------------------------------------
+
+ /**
+ * Creates a new SearchResultEntryGrammar object.
+ */
+ private StoredProcedureGrammar()
+ {
+ name = StoredProcedureGrammar.class.getName();
+ statesEnum = StoredProcedureEnum.getInstance();
+
+ // Create the transitions table
+ super.transitions = new GrammarTransition[StoredProcedureEnum.LAST_STORED_PROCEDURE_STATE][256];
+
+ //============================================================================================
+ // StoredProcedure Message
+ //============================================================================================
+ // StoredProcedure ::= SEQUENCE { (Tag)
+ // ...
+ // Nothing to do.
+ super.transitions[StoredProcedureEnum.STORED_PROCEDURE_TAG][UniversalTag.SEQUENCE_TAG] = new GrammarTransition(
+ StoredProcedureEnum.STORED_PROCEDURE_TAG, StoredProcedureEnum.STORED_PROCEDURE_VALUE,
+ null );
+
+ // StoredProcedure ::= SEQUENCE { (Value)
+ // ...
+ // Nothing to do.
+ super.transitions[StoredProcedureEnum.STORED_PROCEDURE_VALUE][UniversalTag.SEQUENCE_TAG] = new GrammarTransition(
+ StoredProcedureEnum.STORED_PROCEDURE_VALUE,
+ StoredProcedureEnum.LANGUAGE_TAG, null );
+
+ // language OCTETSTRING, (Tag)
+ // ...
+ // Nothing to do
+ super.transitions[StoredProcedureEnum.LANGUAGE_TAG][UniversalTag.OCTET_STRING_TAG] =
+ new GrammarTransition(
+ StoredProcedureEnum.LANGUAGE_TAG,
+ StoredProcedureEnum.LANGUAGE_VALUE, null );
+
+ // language OCTETSTRING, (value)
+ // ...
+ // Store the language.
+ super.transitions[StoredProcedureEnum.LANGUAGE_VALUE][UniversalTag.OCTET_STRING_TAG] =
+ new GrammarTransition(
+ StoredProcedureEnum.LANGUAGE_VALUE,
+ StoredProcedureEnum.PROCEDURE_TAG,
+ new GrammarAction( "Stores the language" )
+ {
+ public void action( IAsn1Container container ) throws DecoderException
+ {
+
+ StoredProcedureContainer storedProcedureContainer = ( StoredProcedureContainer )
+ container;
+
+ TLV tlv = storedProcedureContainer.getCurrentTLV();
+
+ StoredProcedurePojo storedProcedurePojo = null;
+
+ // Store the value.
+ if ( tlv.getLength().getLength() == 0 )
+ {
+ // This is supposed to be Java
+ // We can create the object
+ storedProcedurePojo = new StoredProcedurePojo();
+ }
+ else
+ {
+ String language = StringUtils.toUtf8( tlv.getValue().getData() );
+
+ if ( "java".compareToIgnoreCase( language ) == 0 )
+ {
+ // We can create the object
+ storedProcedurePojo = new StoredProcedurePojo();
+ }
+ else
+ {
+ log.error( "The language " + StringUtils.dumpBytes( tlv.getValue().getData() ) + " is invalid" );
+ throw new DecoderException( "The language " + StringUtils.dumpBytes( tlv.getValue().getData() ) + " is invalid" );
+ }
+ }
+
+ storedProcedureContainer.setStoredProcedurePojo( storedProcedurePojo );
+
+ if ( log.isDebugEnabled() )
+ {
+ log.debug( "Language found : java " );
+ }
+ }
+ } );
+
+ // procedure OCTETSTRING, (Tag)
+ // ...
+ // Nothing to do
+ super.transitions[StoredProcedureEnum.PROCEDURE_TAG][UniversalTag.OCTET_STRING_TAG] =
+ new GrammarTransition(
+ StoredProcedureEnum.PROCEDURE_TAG,
+ StoredProcedureEnum.PROCEDURE_VALUE, null );
+
+ // procedure OCTETSTRING, (Value)
+ // ...
+ // Store the procedure.
+ super.transitions[StoredProcedureEnum.PROCEDURE_VALUE][UniversalTag.OCTET_STRING_TAG] =
+ new GrammarTransition(
+ StoredProcedureEnum.PROCEDURE_VALUE,
+ StoredProcedureEnum.PARAMETERS_TAG,
+ new GrammarAction( "Stores the procedure" )
+ {
+ public void action( IAsn1Container container ) throws DecoderException
+ {
+
+ StoredProcedureContainer storedProcedureContainer = ( StoredProcedureContainer )
+ container;
+
+ TLV tlv = storedProcedureContainer.getCurrentTLV();
+ StoredProcedurePojo storedProcedurePojo = storedProcedureContainer.getStoredProcedurePojo();
+
+ // Store the value.
+ if ( tlv.getLength().getLength() == 0 )
+ {
+ // We can't have a void procedure !
+ log.error( "The procedure can't be null" );
+ throw new DecoderException( "The procedure can't be null" );
+ }
+ else
+ {
+ String procedure = StringUtils.toUtf8( tlv.getValue().getData() );
+
+ if ( procedure.trim().length() != 0 )
+ {
+ storedProcedurePojo.setProcedure( procedure );
+ }
+ else
+ {
+ log.error( "The procedure is empty. This is not allowed." );
+ throw new DecoderException( "The procedure is empty. This is not allowed." );
+ }
+ }
+
+ if ( log.isDebugEnabled() )
+ {
+ log.debug( "Procedure found : " + storedProcedurePojo.getProcedure() );
+ }
+ }
+ } );
+
+ // parameters SEQUENCE OF Parameter { (Tag)
+ // ...
+ // Nothing to do
+ super.transitions[StoredProcedureEnum.PARAMETERS_TAG][UniversalTag.SEQUENCE_TAG] =
+ new GrammarTransition(
+ StoredProcedureEnum.PARAMETERS_TAG,
+ StoredProcedureEnum.PARAMETERS_VALUE, null );
+
+ // parameters SEQUENCE OF Parameter { (Value)
+ // ...
+ // Nothing to do. The list of parameters will be created with the first parameter.
+ super.transitions[StoredProcedureEnum.PARAMETERS_VALUE][UniversalTag.SEQUENCE_TAG] =
+ new GrammarTransition(
+ StoredProcedureEnum.PARAMETERS_VALUE,
+ StoredProcedureEnum.PARAMETER_TYPE_TAG, null );
+
+ // Parameter ::= {
+ // type OCTETSTRING, (Tag)
+ // ...
+ // Nothing to do
+ super.transitions[StoredProcedureEnum.PARAMETER_TYPE_TAG][UniversalTag.OCTET_STRING_TAG] =
+ new GrammarTransition(
+ StoredProcedureEnum.PARAMETER_TYPE_TAG,
+ StoredProcedureEnum.PARAMETER_TYPE_VALUE, null );
+
+ // Parameter ::= {
+ // type OCTETSTRING, (Value)
+ // ...
+ // Nothing to do
+ super.transitions[StoredProcedureEnum.PARAMETER_TYPE_VALUE][UniversalTag.OCTET_STRING_TAG] =
+ new GrammarTransition(
+ StoredProcedureEnum.PARAMETER_TYPE_VALUE,
+ StoredProcedureEnum.PARAMETER_VALUE_TAG,
+ new GrammarAction( "Store parameter type" )
+ {
+ public void action( IAsn1Container container ) throws DecoderException
+ {
+ StoredProcedureContainer storedProcedureContainer = ( StoredProcedureContainer )
+ container;
+
+ TLV tlv = storedProcedureContainer.getCurrentTLV();
+ StoredProcedurePojo storedProcedurePojo = storedProcedureContainer.getStoredProcedurePojo();
+
+ // Store the value.
+ if ( tlv.getLength().getLength() == 0 )
+ {
+ // We can't have a void parameter type !
+ log.error( "The parameter type can't be null" );
+ throw new DecoderException( "The parameter type can't be null" );
+ }
+ else
+ {
+ String parameterType = StringUtils.toUtf8( tlv.getValue().getData() );
+
+ if ( parameterType.trim().length() != 0 )
+ {
+ ParameterPojo parameterPojo = new ParameterPojo();
+ parameterPojo.setType( parameterType );
+
+ // We stores the type in the current parameter.
+ storedProcedurePojo.setCurrentParameter( parameterPojo );
+
+ if ( log.isDebugEnabled() )
+ {
+ log.debug( "Parameter type found : " + parameterType );
+ }
+ }
+ else
+ {
+ log.error( "The parameter type is empty. This is not allowed." );
+ throw new DecoderException( "The parameter type is empty. This is not allowed." );
+ }
+ }
+ }
+ } );
+
+ // Parameter ::= {
+ // ...
+ // value OCTETSTRING (Tag)
+ // }
+ // Nothing to do
+ super.transitions[StoredProcedureEnum.PARAMETER_VALUE_TAG][UniversalTag.OCTET_STRING_TAG] =
+ new GrammarTransition(
+ StoredProcedureEnum.PARAMETER_VALUE_TAG,
+ StoredProcedureEnum.PARAMETER_VALUE_VALUE, null );
+
+ // Parameter ::= {
+ // ...
+ // value OCTETSTRING (Tag)
+ // }
+ // Stores the parameter value
+ super.transitions[StoredProcedureEnum.PARAMETER_VALUE_VALUE][UniversalTag.OCTET_STRING_TAG] =
+ new GrammarTransition(
+ StoredProcedureEnum.PARAMETER_VALUE_VALUE,
+ StoredProcedureEnum.PARAMETER_TYPE_TAG,
+ new GrammarAction( "Store parameter value" )
+ {
+ public void action( IAsn1Container container ) throws DecoderException
+ {
+ StoredProcedureContainer storedProcedureContainer = ( StoredProcedureContainer )
+ container;
+
+ TLV tlv = storedProcedureContainer.getCurrentTLV();
+ StoredProcedurePojo storedProcedurePojo = storedProcedureContainer.getStoredProcedurePojo();
+
+ // Store the value.
+ if ( tlv.getLength().getLength() == 0 )
+ {
+ // We can't have a void parameter value !
+ log.error( "The parameter value can't be null" );
+ throw new DecoderException( "The parameter value can't be null" );
+ }
+ else
+ {
+ byte[] parameterValue = tlv.getValue().getData();
+
+ if ( parameterValue.length != 0 )
+ {
+ ParameterPojo parameterPojo = storedProcedurePojo.getCurrentParameter();
+ parameterPojo.setValue( parameterValue );
+
+ // We can now add a new Parameter to the pojo
+ storedProcedurePojo.addParameter( parameterPojo );
+
+ if ( log.isDebugEnabled() )
+ {
+ log.debug( "Parameter value found : " + StringUtils.dumpBytes( parameterValue ) );
+ }
+ }
+ else
+ {
+ log.error( "The parameter value is empty. This is not allowed." );
+ throw new DecoderException( "The parameter value is empty. This is not allowed." );
+ }
+ }
+ }
+ } );
+ }
+
+ //~ Methods ------------------------------------------------------------------------------------
+
+ /**
+ * Get the instance of this grammar
+ *
+ * @return An instance on the SearchResultEntry Grammar
+ */
+ public static IGrammar getInstance()
+ {
+ return instance;
+ }
+}
+