Added: directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/api/sp/StoredProcExecutionManager.java URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/api/sp/StoredProcExecutionManager.java?rev=1185571&view=auto ============================================================================== --- directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/api/sp/StoredProcExecutionManager.java (added) +++ directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/api/sp/StoredProcExecutionManager.java Tue Oct 18 11:14:40 2011 @@ -0,0 +1,153 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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.directory.server.core.api.sp; + + +import java.util.Collections; +import java.util.List; +import java.util.Set; + +import javax.naming.directory.SearchControls; + +import org.apache.directory.server.core.api.CoreSession; +import org.apache.directory.server.core.api.entry.ClonedServerEntry; +import org.apache.directory.server.core.api.filtering.EntryFilteringCursor; +import org.apache.directory.server.i18n.I18n; +import org.apache.directory.shared.ldap.model.constants.SchemaConstants; +import org.apache.directory.shared.ldap.model.entry.Entry; +import org.apache.directory.shared.ldap.model.entry.StringValue; +import org.apache.directory.shared.ldap.model.exception.LdapException; +import org.apache.directory.shared.ldap.model.filter.EqualityNode; +import org.apache.directory.shared.ldap.model.filter.ExprNode; +import org.apache.directory.shared.ldap.model.message.AliasDerefMode; +import org.apache.directory.shared.ldap.model.message.SearchScope; +import org.apache.directory.shared.ldap.model.name.Dn; +import org.apache.directory.shared.ldap.model.schema.AttributeType; +import org.apache.directory.shared.ldap.model.schema.AttributeTypeOptions; + + +/** + * A Factory type class which holds a registry of supported {@link StoredProcEngineConfig}s. A container reference + * as the base for Stored Procedure storage on the DIT is also handled by this class. + * + * @author Apache Directory Project + */ +public class StoredProcExecutionManager +{ + private final static Set EMPTY_ATTRIBS = Collections.emptySet(); + + private final String storedProcContainer; + + private final List storedProcEngineConfigs; + + + /** + * Creates a {@link StoredProcExecutionManager} instance. + * + * @param storedProcContainer The base of the DIT subtree used for storing stored procedure units. + * @param storedProcEngineConfigs A list of {@link StoredProcEngineConfig}s to register different {@link StoredProcEngine}s with this manager. + */ + public StoredProcExecutionManager( final String storedProcContainer, final List storedProcEngineConfigs ) + { + this.storedProcContainer = storedProcContainer; + this.storedProcEngineConfigs = storedProcEngineConfigs; + } + + /** + * Finds and returns a stored procedure unit entry whose identifier name + * is extracted from fullSPName. + * + * @param session the session with a core directory service + * @param fullSPName Full name of the Stored Procedure including the unit name. + * @return The entry associated with the SP Unit. + * @throws Exception If the unit cannot be located or any other error occurs. + */ + public Entry findStoredProcUnit( CoreSession session, String fullSPName ) throws Exception + { + SearchControls controls = new SearchControls(); + controls.setReturningAttributes( SchemaConstants.ALL_USER_ATTRIBUTES_ARRAY ); + controls.setSearchScope( SearchControls.SUBTREE_SCOPE ); + String spUnitName = StoredProcUtils.extractStoredProcUnitName( fullSPName ); + + AttributeType storeProcUnitNamAT = session.getDirectoryService() + .getSchemaManager().lookupAttributeTypeRegistry( "storedProcUnitName" ); + ExprNode filter = new EqualityNode( storeProcUnitNamAT, new StringValue( storeProcUnitNamAT, spUnitName ) ); + Dn dn = session.getDirectoryService().getDnFactory().create( storedProcContainer ); + EntryFilteringCursor results = session.search( dn, SearchScope.SUBTREE, filter, + AliasDerefMode.DEREF_ALWAYS, EMPTY_ATTRIBS ); + if ( results.first() ) + { + Entry entry = results.get(); + results.close(); + + return entry; + } + + return null; + } + + + /** + * Initializes and returns a {@link StoredProcEngine} instance which can operate on spUnitEntry + * considering its specific stored procedure language. + * + * @param spUnitEntry The entry which a {@link StoredProcEngine} type will be mathched with respect to the language identifier. + * @return A {@link StoredProcEngine} associated with spUnitEntry. + * @throws org.apache.directory.shared.ldap.model.exception.LdapException If no {@link StoredProcEngine} that can be associated with the language identifier in spUnitEntry can be found. + */ + public StoredProcEngine getStoredProcEngineInstance( Entry spUnitEntry ) throws LdapException + { + String spLangId = ( String ) ((ClonedServerEntry)spUnitEntry).getOriginalEntry().get( "storedProcLangId" ).getString(); + + for ( StoredProcEngineConfig engineConfig : storedProcEngineConfigs ) + { + if ( engineConfig.getStoredProcLangId().equalsIgnoreCase( spLangId ) ) + { + Class engineType = engineConfig.getStoredProcEngineType(); + StoredProcEngine engine; + + try + { + engine = engineType.newInstance(); + } + catch ( InstantiationException e ) + { + LdapException ne = new LdapException( e.getMessage(), e ); + ne.initCause( e ); + throw ne; + } + catch ( IllegalAccessException e ) + { + LdapException ne = new LdapException( e.getMessage(), e ); + ne.initCause( e ); + throw ne; + } + + engine.setSPUnitEntry( (Entry)((ClonedServerEntry)spUnitEntry).getOriginalEntry() ); + return engine; + } + + } + + throw new LdapException( I18n.err( I18n.ERR_294, spLangId ) ); + + } + +} Added: directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/api/sp/StoredProcUtils.java URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/api/sp/StoredProcUtils.java?rev=1185571&view=auto ============================================================================== --- directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/api/sp/StoredProcUtils.java (added) +++ directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/api/sp/StoredProcUtils.java Tue Oct 18 11:14:40 2011 @@ -0,0 +1,50 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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.directory.server.core.api.sp; + + +/** + * A utility class for working with Stored Procedures. + * + * @author Apache Directory Project + */ +public class StoredProcUtils +{ + + /** The delimiter used to tokenize a full SP name into the unit and SP name */ + public static final String SPUnitDelimiter = ":"; + + public static String extractStoredProcName( String fullSPName ) + { + int delimiter = fullSPName.lastIndexOf( SPUnitDelimiter ); + String spName = fullSPName.substring( delimiter + SPUnitDelimiter.length() ); + return spName; + } + + public static String extractStoredProcUnitName( String fullSPName ) + { + int delimiter = fullSPName.lastIndexOf( SPUnitDelimiter ); + String className = fullSPName.substring( 0, delimiter ); + return className; + } + +} Added: directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/api/sp/java/JavaStoredProcEngine.java URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/api/sp/java/JavaStoredProcEngine.java?rev=1185571&view=auto ============================================================================== --- directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/api/sp/java/JavaStoredProcEngine.java (added) +++ directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/api/sp/java/JavaStoredProcEngine.java Tue Oct 18 11:14:40 2011 @@ -0,0 +1,135 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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.directory.server.core.api.sp.java; + + +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.util.ArrayList; +import java.util.List; + +import org.apache.directory.server.core.api.CoreSession; +import org.apache.directory.server.core.api.sp.StoredProcEngine; +import org.apache.directory.server.core.api.sp.StoredProcUtils; +import org.apache.directory.shared.ldap.model.entry.Attribute; +import org.apache.directory.shared.ldap.model.entry.Entry; +import org.apache.directory.shared.ldap.model.exception.LdapException; +import org.apache.directory.shared.util.MethodUtils; + + +/** + * A {@link StoredProcEngine} implementation specific to Java stored procedures. + * + * @author Apache Directory Project + */ +public class JavaStoredProcEngine implements StoredProcEngine +{ + + public static final String STORED_PROC_LANG_ID = "Java"; + + private Entry spUnit; + + + /* (non-Javadoc) + * @see org.apache.directory.server.core.sp.StoredProcEngine#invokeProcedure(OperationContext, String, Object[]) + */ + public Object invokeProcedure( CoreSession session, String fullSPName, Object[] spArgs ) throws LdapException + { + Attribute javaByteCode = spUnit.get( "javaByteCode" ); + String spName = StoredProcUtils.extractStoredProcName( fullSPName ); + String className = StoredProcUtils.extractStoredProcUnitName( fullSPName ); + + ClassLoader loader = new LdapJavaStoredProcClassLoader( javaByteCode ); + Class clazz; + + try + { + clazz = loader.loadClass( className ); + } + catch ( ClassNotFoundException e ) + { + throw new LdapException( e ); + } + + Class[] types = getTypesFromValues( spArgs ); + + Method proc; + try + { + proc = MethodUtils.getAssignmentCompatibleMethod(clazz, spName, types); + } + catch ( NoSuchMethodException e ) + { + throw new LdapException( e ); + } + try + { + return proc.invoke( null, spArgs ); + } + catch ( IllegalArgumentException e ) + { + throw new LdapException( e ); + } + catch ( IllegalAccessException e ) + { + throw new LdapException( e ); + } + catch ( InvocationTargetException e ) + { + throw new LdapException( e ); + } + } + + + /* (non-Javadoc) + * @see org.apache.directory.server.core.sp.StoredProcEngine#getSPLangId() + */ + public String getSPLangId() + { + return STORED_PROC_LANG_ID; + } + + + /* (non-Javadoc) + * @see org.apache.directory.server.core.sp.StoredProcEngine#setSPUnitEntry(javax.naming.directory.Attributes) + */ + public void setSPUnitEntry( Entry spUnit ) + { + this.spUnit = spUnit; + } + + + private Class[] getTypesFromValues( Object[] values ) + { + List> types = new ArrayList>(); + + for ( Object obj : values ) + { + types.add( obj.getClass() ); + } + + return types.toArray( EMPTY_CLASS_ARRAY ); + } + + private static Class[] EMPTY_CLASS_ARRAY = new Class[ 0 ]; + +} Added: directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/api/sp/java/JavaStoredProcEngineConfig.java URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/api/sp/java/JavaStoredProcEngineConfig.java?rev=1185571&view=auto ============================================================================== --- directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/api/sp/java/JavaStoredProcEngineConfig.java (added) +++ directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/api/sp/java/JavaStoredProcEngineConfig.java Tue Oct 18 11:14:40 2011 @@ -0,0 +1,53 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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.directory.server.core.api.sp.java; + +import org.apache.directory.server.core.api.sp.StoredProcEngine; +import org.apache.directory.server.core.api.sp.StoredProcEngineConfig; + + +/** + * A {@link StoredProcEngineConfig} implementation specific to Java stored procedures. + * + * @author Apache Directory Project + */ +public class JavaStoredProcEngineConfig implements StoredProcEngineConfig +{ + + /* (non-Javadoc) + * @see org.apache.directory.server.core.sp.StoredProcEngineConfig#getStoredProcEngineType() + */ + public Class getStoredProcEngineType() + { + return JavaStoredProcEngine.class; + } + + + /* (non-Javadoc) + * @see org.apache.directory.server.core.sp.StoredProcEngineConfig#getStoredProcLangId() + */ + public String getStoredProcLangId() + { + return JavaStoredProcEngine.STORED_PROC_LANG_ID; + } + +} Added: directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/api/sp/java/LdapJavaStoredProcClassLoader.java URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/api/sp/java/LdapJavaStoredProcClassLoader.java?rev=1185571&view=auto ============================================================================== --- directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/api/sp/java/LdapJavaStoredProcClassLoader.java (added) +++ directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/api/sp/java/LdapJavaStoredProcClassLoader.java Tue Oct 18 11:14:40 2011 @@ -0,0 +1,62 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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.directory.server.core.api.sp.java; + + +import org.apache.directory.shared.ldap.model.entry.Attribute; +import org.apache.directory.shared.ldap.model.exception.LdapException; + + +/** + * A class loader that loads a class from an attribute. + * + * @author Apache Directory Project + */ +public class LdapJavaStoredProcClassLoader extends ClassLoader +{ + private Attribute javaByteCodeAttr; + + + public LdapJavaStoredProcClassLoader( Attribute javaByteCodeAttr ) + { + // Critical call to super class constructor. Required for true plumbing of class loaders. + super( LdapJavaStoredProcClassLoader.class.getClassLoader() ); + + this.javaByteCodeAttr = javaByteCodeAttr; + } + + + public Class findClass( String name ) throws ClassNotFoundException + { + byte[] classBytes; + + try + { + classBytes = javaByteCodeAttr.getBytes(); + } + catch ( LdapException e ) + { + throw new ClassNotFoundException(); + } + + return defineClass( name, classBytes, 0, classBytes.length ); + } +} Added: directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/api/subtree/RefinementEvaluator.java URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/api/subtree/RefinementEvaluator.java?rev=1185571&view=auto ============================================================================== --- directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/api/subtree/RefinementEvaluator.java (added) +++ directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/api/subtree/RefinementEvaluator.java Tue Oct 18 11:14:40 2011 @@ -0,0 +1,120 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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.directory.server.core.api.subtree; + + +import org.apache.directory.server.i18n.I18n; +import org.apache.directory.shared.ldap.model.constants.SchemaConstants; +import org.apache.directory.shared.ldap.model.entry.Attribute; +import org.apache.directory.shared.ldap.model.exception.LdapException; +import org.apache.directory.shared.ldap.model.filter.AndNode; +import org.apache.directory.shared.ldap.model.filter.BranchNode; +import org.apache.directory.shared.ldap.model.filter.ExprNode; +import org.apache.directory.shared.ldap.model.filter.NotNode; +import org.apache.directory.shared.ldap.model.filter.OrNode; +import org.apache.directory.shared.ldap.model.filter.SimpleNode; + + +/** + * The top level evaluation node for a refinement. + * + * @author Apache Directory Project + */ +public class RefinementEvaluator +{ + /** Leaf Evaluator flyweight use for leaf filter assertions */ + private RefinementLeafEvaluator leafEvaluator; + + + // ------------------------------------------------------------------------ + // C O N S T R U C T O R S + // ------------------------------------------------------------------------ + + public RefinementEvaluator(RefinementLeafEvaluator leafEvaluator) + { + this.leafEvaluator = leafEvaluator; + } + + + public boolean evaluate( ExprNode node, Attribute objectClasses ) throws LdapException + { + if ( node == null ) + { + throw new IllegalArgumentException( I18n.err( I18n.ERR_295 ) ); + } + + if ( objectClasses == null ) + { + throw new IllegalArgumentException( I18n.err( I18n.ERR_296 ) ); + } + + if ( !( SchemaConstants.OBJECT_CLASS_AT_OID.equals( objectClasses.getAttributeType().getOid() ) ) ) + { + throw new IllegalArgumentException( I18n.err( I18n.ERR_297 ) ); + } + + if ( node.isLeaf() ) + { + return leafEvaluator.evaluate( ( SimpleNode ) node, objectClasses ); + } + + BranchNode bnode = (BranchNode) node; + + if ( node instanceof OrNode ) + { + for ( ExprNode child:bnode.getChildren() ) + { + if ( evaluate( child, objectClasses ) ) + { + return true; + } + } + + return false; + } + else if ( node instanceof AndNode ) + { + for ( ExprNode child:bnode.getChildren() ) + { + if ( !evaluate( child, objectClasses ) ) + { + return false; + } + } + + return true; + + } + else if ( node instanceof NotNode ) + { + if ( null != bnode.getFirstChild() ) + { + return !evaluate( bnode.getFirstChild(), objectClasses ); + } + + throw new IllegalArgumentException( I18n.err( I18n.ERR_243, node ) ); + + } + else + { + throw new IllegalArgumentException( I18n.err( I18n.ERR_244, bnode ) ); + } + } +} Added: directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/api/subtree/RefinementLeafEvaluator.java URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/api/subtree/RefinementLeafEvaluator.java?rev=1185571&view=auto ============================================================================== --- directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/api/subtree/RefinementLeafEvaluator.java (added) +++ directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/api/subtree/RefinementLeafEvaluator.java Tue Oct 18 11:14:40 2011 @@ -0,0 +1,136 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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.directory.server.core.api.subtree; + + +import java.util.Iterator; + +import org.apache.directory.server.i18n.I18n; +import org.apache.directory.shared.ldap.model.constants.SchemaConstants; +import org.apache.directory.shared.ldap.model.entry.Attribute; +import org.apache.directory.shared.ldap.model.exception.LdapException; +import org.apache.directory.shared.ldap.model.filter.EqualityNode; +import org.apache.directory.shared.ldap.model.filter.SimpleNode; +import org.apache.directory.shared.ldap.model.schema.AttributeType; +import org.apache.directory.shared.ldap.model.schema.SchemaManager; + + +/** + * A refinement leaf node evaluator. This evaluator checks to see if the + * objectClass attribute of a candidate entry is matched by a leaf node in + * a refinement filter expression tree. + * + * @author Apache Directory Project + */ +public class RefinementLeafEvaluator +{ + /** A SchemaManager instance */ + private final SchemaManager schemaManager; + + /** A storage for the ObjectClass attributeType */ + private AttributeType OBJECT_CLASS_AT; + + + /** + * Creates a refinement filter's leaf node evaluator. + * + * @param schemaManager The server schemaManager + */ + public RefinementLeafEvaluator( SchemaManager schemaManager) + { + this.schemaManager = schemaManager; + OBJECT_CLASS_AT = schemaManager.getAttributeType( SchemaConstants.OBJECT_CLASS_AT ); + } + + + /** + * Evaluates whether or not a simple leaf node of a refinement filter selects an + * entry based on the entry's objectClass attribute values. + * + * @param node the leaf node of the refinement filter + * @param objectClasses the objectClass attribute's values + * @return true if the leaf node selects the entry based on objectClass values, false + * if it rejects the entry + * @throws LdapException + */ + public boolean evaluate( SimpleNode node, Attribute objectClasses ) throws LdapException + { + if ( node == null ) + { + throw new IllegalArgumentException( I18n.err( I18n.ERR_295 ) ); + } + + if ( !( node instanceof EqualityNode) ) + { + throw new LdapException( I18n.err( I18n.ERR_301, node ) ); + } + + if ( node.isSchemaAware() ) + { + if ( !node.getAttributeType().equals( OBJECT_CLASS_AT ) ) + { + throw new IllegalArgumentException( I18n.err( I18n.ERR_302, node.getAttribute() ) ); + } + } + else if ( !node.getAttribute().equalsIgnoreCase( SchemaConstants.OBJECT_CLASS_AT ) && + !node.getAttribute().equalsIgnoreCase( SchemaConstants.OBJECT_CLASS_AT_OID ) ) + { + throw new IllegalArgumentException( I18n.err( I18n.ERR_302, node.getAttribute() ) ); + } + + + if ( null == objectClasses ) + { + throw new IllegalArgumentException( I18n.err( I18n.ERR_303 ) ); + } + + if ( !( objectClasses.isInstanceOf( OBJECT_CLASS_AT ) ) ) + { + throw new IllegalArgumentException( I18n.err( I18n.ERR_304 ) ); + } + + // check if Ava value exists in attribute + // If the filter value for the objectClass is an OID we need to resolve a name + String value = node.getValue().getString(); + + if ( objectClasses.contains( value ) ) + { + return true; + } + + if ( Character.isDigit( value.charAt( 0 ) ) ) + { + Iterator list = schemaManager.getGlobalOidRegistry().getNameSet( value ).iterator(); + + while ( list.hasNext() ) + { + String objectClass = list.next(); + + if ( objectClasses.contains( objectClass ) ) + { + return true; + } + } + } + + // no match so return false + return false; + } +} Added: directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/api/subtree/SubentryUtils.java URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/api/subtree/SubentryUtils.java?rev=1185571&view=auto ============================================================================== --- directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/api/subtree/SubentryUtils.java (added) +++ directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/api/subtree/SubentryUtils.java Tue Oct 18 11:14:40 2011 @@ -0,0 +1,144 @@ +package org.apache.directory.server.core.api.subtree; + +import org.apache.directory.server.core.api.DirectoryService; +import org.apache.directory.server.core.api.subtree.Subentry; +import org.apache.directory.server.core.api.subtree.SubentryCache; +import org.apache.directory.server.core.api.subtree.SubtreeEvaluator; +import org.apache.directory.shared.ldap.model.constants.SchemaConstants; +import org.apache.directory.shared.ldap.model.entry.Attribute; +import org.apache.directory.shared.ldap.model.entry.DefaultAttribute; +import org.apache.directory.shared.ldap.model.entry.DefaultEntry; +import org.apache.directory.shared.ldap.model.entry.Entry; +import org.apache.directory.shared.ldap.model.exception.LdapException; +import org.apache.directory.shared.ldap.model.name.Dn; +import org.apache.directory.shared.ldap.model.schema.AttributeType; +import org.apache.directory.shared.ldap.model.schema.SchemaManager; +import org.apache.directory.shared.ldap.model.subtree.SubtreeSpecification; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class SubentryUtils +{ + /** The logger for this class */ + private static final Logger LOG = LoggerFactory.getLogger( SubentryUtils.class ); + + /** A reference to the DirectoryService instance */ + protected DirectoryService directoryService; + + /** A reference to the SchemaManager instance */ + protected SchemaManager schemaManager; + + /** The AccessControlSubentries AttributeType */ + protected static AttributeType ACCESS_CONTROL_SUBENTRIES_AT; + + /** The CollectiveAttributeSubentries AttributeType */ + protected static AttributeType COLLECTIVE_ATTRIBUTE_SUBENTRIES_AT; + + /** A reference to the AccessControlSubentries AT */ + protected static AttributeType SUBSCHEMA_SUBENTRY_AT; + + /** A reference to the TriggerExecutionSubentries AT */ + protected static AttributeType TRIGGER_EXECUTION_SUBENTRIES_AT; + + public SubentryUtils( DirectoryService directoryService ) + { + this.directoryService = directoryService; + this.schemaManager = directoryService.getSchemaManager(); + + // Init the At we use locally + ACCESS_CONTROL_SUBENTRIES_AT = schemaManager.getAttributeType( SchemaConstants.ACCESS_CONTROL_SUBENTRIES_AT ); + COLLECTIVE_ATTRIBUTE_SUBENTRIES_AT = schemaManager + .getAttributeType( SchemaConstants.COLLECTIVE_ATTRIBUTE_SUBENTRIES_AT ); + SUBSCHEMA_SUBENTRY_AT = schemaManager.getAttributeType( SchemaConstants.SUBSCHEMA_SUBENTRY_AT ); + TRIGGER_EXECUTION_SUBENTRIES_AT = schemaManager + .getAttributeType( SchemaConstants.TRIGGER_EXECUTION_SUBENTRIES_AT ); + } + + + //------------------------------------------------------------------------------------------- + // Shared method + //------------------------------------------------------------------------------------------- + /** + * Evaluates the set of subentry subtrees upon an entry and returns the + * operational subentry attributes that will be added to the entry if + * added at the dn specified. + * + * @param dn the normalized distinguished name of the entry + * @param entryAttrs the entry attributes are generated for + * @return the set of subentry op attrs for an entry + * @throws Exception if there are problems accessing entry information + */ + public Entry getSubentryAttributes( Dn dn, Entry entryAttrs ) throws LdapException + { + Entry subentryAttrs = new DefaultEntry( schemaManager, dn ); + + SubentryCache subentryCache = directoryService.getSubentryCache(); + SubtreeEvaluator evaluator = directoryService.getEvaluator(); + + for ( Dn subentryDn : subentryCache ) + { + Dn apDn = subentryDn.getParent(); + Subentry subentry = subentryCache.getSubentry( subentryDn ); + SubtreeSpecification ss = subentry.getSubtreeSpecification(); + + if ( evaluator.evaluate( ss, apDn, dn, entryAttrs ) ) + { + Attribute operational; + + if ( subentry.isAccessControlAdminRole() ) + { + operational = subentryAttrs.get( ACCESS_CONTROL_SUBENTRIES_AT ); + + if ( operational == null ) + { + operational = new DefaultAttribute( ACCESS_CONTROL_SUBENTRIES_AT ); + subentryAttrs.put( operational ); + } + + operational.add( subentryDn.getNormName() ); + } + + if ( subentry.isSchemaAdminRole() ) + { + operational = subentryAttrs.get( SUBSCHEMA_SUBENTRY_AT ); + + if ( operational == null ) + { + operational = new DefaultAttribute( SUBSCHEMA_SUBENTRY_AT ); + subentryAttrs.put( operational ); + } + + operational.add( subentryDn.getNormName() ); + } + + if ( subentry.isCollectiveAdminRole() ) + { + operational = subentryAttrs.get( COLLECTIVE_ATTRIBUTE_SUBENTRIES_AT ); + + if ( operational == null ) + { + operational = new DefaultAttribute( COLLECTIVE_ATTRIBUTE_SUBENTRIES_AT ); + subentryAttrs.put( operational ); + } + + operational.add( subentryDn.getNormName() ); + } + + if ( subentry.isTriggersAdminRole() ) + { + operational = subentryAttrs.get( TRIGGER_EXECUTION_SUBENTRIES_AT ); + + if ( operational == null ) + { + operational = new DefaultAttribute( TRIGGER_EXECUTION_SUBENTRIES_AT ); + subentryAttrs.put( operational ); + } + + operational.add( subentryDn.getNormName() ); + } + } + } + + return subentryAttrs; + } +} Added: directory/apacheds/trunk/core-api/src/test/java/org/apache/directory/server/core/api/sp/StoredProcUtilsTest.java URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core-api/src/test/java/org/apache/directory/server/core/api/sp/StoredProcUtilsTest.java?rev=1185571&view=auto ============================================================================== --- directory/apacheds/trunk/core-api/src/test/java/org/apache/directory/server/core/api/sp/StoredProcUtilsTest.java (added) +++ directory/apacheds/trunk/core-api/src/test/java/org/apache/directory/server/core/api/sp/StoredProcUtilsTest.java Tue Oct 18 11:14:40 2011 @@ -0,0 +1,49 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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.directory.server.core.api.sp; + +import com.mycila.junit.concurrent.Concurrency; +import com.mycila.junit.concurrent.ConcurrentJunitRunner; +import org.junit.Test; +import org.junit.runner.RunWith; + +import static org.junit.Assert.assertEquals; + +@RunWith(ConcurrentJunitRunner.class) +@Concurrency() +public class StoredProcUtilsTest +{ + @Test + public void testSPNameTokenization() + { + String fullSPName = "Greeter:seyHello"; + String expectedSPUnitName = "Greeter"; + String expectedSPName = "seyHello"; + + String actualSPUnitName = StoredProcUtils.extractStoredProcUnitName( fullSPName ); + String actualSPName = StoredProcUtils.extractStoredProcName( fullSPName ); + + assertEquals( expectedSPUnitName, actualSPUnitName ); + assertEquals( expectedSPName, actualSPName ); + } + +} Modified: directory/apacheds/trunk/core-integ/src/test/java/org/apache/directory/server/core/authn/ppolicy/PasswordPolicyTest.java URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core-integ/src/test/java/org/apache/directory/server/core/authn/ppolicy/PasswordPolicyTest.java?rev=1185571&r1=1185570&r2=1185571&view=diff ============================================================================== --- directory/apacheds/trunk/core-integ/src/test/java/org/apache/directory/server/core/authn/ppolicy/PasswordPolicyTest.java (original) +++ directory/apacheds/trunk/core-integ/src/test/java/org/apache/directory/server/core/authn/ppolicy/PasswordPolicyTest.java Tue Oct 18 11:14:40 2011 @@ -43,7 +43,7 @@ import org.apache.directory.server.core. import org.apache.directory.server.core.integ.AbstractLdapTestUnit; import org.apache.directory.server.core.integ.FrameworkRunner; import org.apache.directory.server.core.integ.IntegrationUtils; -import org.apache.directory.server.core.shared.authn.ppolicy.PasswordPolicyConfiguration; +import org.apache.directory.server.core.api.authn.ppolicy.PasswordPolicyConfiguration; import org.apache.directory.shared.ldap.codec.api.LdapApiService; import org.apache.directory.shared.ldap.codec.api.LdapApiServiceFactory; import org.apache.directory.shared.ldap.extras.controls.ppolicy.PasswordPolicy; Modified: directory/apacheds/trunk/core-integ/src/test/java/org/apache/directory/server/core/operations/lookup/LookupPerfIT.java URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core-integ/src/test/java/org/apache/directory/server/core/operations/lookup/LookupPerfIT.java?rev=1185571&r1=1185570&r2=1185571&view=diff ============================================================================== --- directory/apacheds/trunk/core-integ/src/test/java/org/apache/directory/server/core/operations/lookup/LookupPerfIT.java (original) +++ directory/apacheds/trunk/core-integ/src/test/java/org/apache/directory/server/core/operations/lookup/LookupPerfIT.java Tue Oct 18 11:14:40 2011 @@ -32,7 +32,6 @@ import org.apache.directory.server.core. import org.apache.directory.shared.ldap.model.entry.Entry; import org.apache.directory.shared.ldap.model.name.Dn; import org.junit.Before; -import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; Modified: directory/apacheds/trunk/core-integ/src/test/java/org/apache/directory/server/core/sp/LdapClassLoaderIT.java URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core-integ/src/test/java/org/apache/directory/server/core/sp/LdapClassLoaderIT.java?rev=1185571&r1=1185570&r2=1185571&view=diff ============================================================================== --- directory/apacheds/trunk/core-integ/src/test/java/org/apache/directory/server/core/sp/LdapClassLoaderIT.java (original) +++ directory/apacheds/trunk/core-integ/src/test/java/org/apache/directory/server/core/sp/LdapClassLoaderIT.java Tue Oct 18 11:14:40 2011 @@ -36,7 +36,7 @@ import org.apache.directory.server.core. import org.apache.directory.server.core.integ.AbstractLdapTestUnit; import org.apache.directory.server.core.integ.FrameworkRunner; import org.apache.directory.server.core.jndi.ServerLdapContext; -import org.apache.directory.server.core.shared.sp.LdapClassLoader; +import org.apache.directory.server.core.api.sp.LdapClassLoader; import org.apache.directory.shared.util.Base64; import org.junit.Test; import org.junit.runner.RunWith; Modified: directory/apacheds/trunk/core-jndi/src/main/java/org/apache/directory/server/core/jndi/ServerContext.java URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core-jndi/src/main/java/org/apache/directory/server/core/jndi/ServerContext.java?rev=1185571&r1=1185570&r2=1185571&view=diff ============================================================================== --- directory/apacheds/trunk/core-jndi/src/main/java/org/apache/directory/server/core/jndi/ServerContext.java (original) +++ directory/apacheds/trunk/core-jndi/src/main/java/org/apache/directory/server/core/jndi/ServerContext.java Tue Oct 18 11:14:40 2011 @@ -46,7 +46,6 @@ import javax.naming.ldap.LdapName; import javax.naming.spi.DirStateFactory; import javax.naming.spi.DirectoryManager; -import org.apache.directory.server.core.DefaultCoreSession; import org.apache.directory.server.core.api.CoreSession; import org.apache.directory.server.core.api.DirectoryService; import org.apache.directory.server.core.api.LdapPrincipal; @@ -70,6 +69,7 @@ import org.apache.directory.server.core. import org.apache.directory.server.core.api.interceptor.context.OperationContext; import org.apache.directory.server.core.api.interceptor.context.RenameOperationContext; import org.apache.directory.server.core.api.interceptor.context.SearchOperationContext; +import org.apache.directory.server.core.shared.DefaultCoreSession; import org.apache.directory.server.i18n.I18n; import org.apache.directory.shared.asn1.DecoderException; import org.apache.directory.shared.ldap.codec.api.CodecControl; Modified: directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/DefaultDirectoryService.java URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/DefaultDirectoryService.java?rev=1185571&r1=1185570&r2=1185571&view=diff ============================================================================== --- directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/DefaultDirectoryService.java (original) +++ directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/DefaultDirectoryService.java Tue Oct 18 11:14:40 2011 @@ -84,6 +84,7 @@ import org.apache.directory.server.core. import org.apache.directory.server.core.referral.ReferralInterceptor; import org.apache.directory.server.core.schema.SchemaInterceptor; import org.apache.directory.server.core.security.TlsKeyGenerator; +import org.apache.directory.server.core.shared.DefaultCoreSession; import org.apache.directory.server.core.shared.DefaultDnFactory; import org.apache.directory.server.core.shared.partition.DefaultPartitionNexus; import org.apache.directory.server.core.subtree.SubentryInterceptor; Modified: directory/apacheds/trunk/core/src/test/java/org/apache/directory/server/core/interceptor/InterceptorChainTest.java URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core/src/test/java/org/apache/directory/server/core/interceptor/InterceptorChainTest.java?rev=1185571&r1=1185570&r2=1185571&view=diff ============================================================================== --- directory/apacheds/trunk/core/src/test/java/org/apache/directory/server/core/interceptor/InterceptorChainTest.java (original) +++ directory/apacheds/trunk/core/src/test/java/org/apache/directory/server/core/interceptor/InterceptorChainTest.java Tue Oct 18 11:14:40 2011 @@ -28,7 +28,6 @@ import java.util.HashSet; import java.util.List; import java.util.Set; -import org.apache.directory.server.core.DefaultCoreSession; import org.apache.directory.server.core.api.DirectoryService; import org.apache.directory.server.core.api.LdapPrincipal; import org.apache.directory.server.core.api.MockDirectoryService; @@ -37,6 +36,7 @@ import org.apache.directory.server.core. import org.apache.directory.server.core.api.interceptor.context.LookupOperationContext; import org.apache.directory.server.core.api.invocation.InvocationStack; import org.apache.directory.server.core.api.partition.ByPassConstants; +import org.apache.directory.server.core.shared.DefaultCoreSession; import org.apache.directory.shared.ldap.model.constants.AuthenticationLevel; import org.apache.directory.shared.ldap.model.name.Dn; import org.apache.directory.shared.ldap.model.schema.SchemaManager; Modified: directory/apacheds/trunk/interceptors/authn/src/main/java/org/apache/directory/server/core/authn/AbstractAuthenticator.java URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/interceptors/authn/src/main/java/org/apache/directory/server/core/authn/AbstractAuthenticator.java?rev=1185571&r1=1185570&r2=1185571&view=diff ============================================================================== --- directory/apacheds/trunk/interceptors/authn/src/main/java/org/apache/directory/server/core/authn/AbstractAuthenticator.java (original) +++ directory/apacheds/trunk/interceptors/authn/src/main/java/org/apache/directory/server/core/authn/AbstractAuthenticator.java Tue Oct 18 11:14:40 2011 @@ -32,8 +32,8 @@ import static org.apache.directory.share import java.util.Date; import org.apache.directory.server.core.api.DirectoryService; -import org.apache.directory.server.core.shared.authn.ppolicy.PasswordPolicyConfiguration; -import org.apache.directory.server.core.shared.authn.ppolicy.PasswordPolicyException; +import org.apache.directory.server.core.api.authn.ppolicy.PasswordPolicyConfiguration; +import org.apache.directory.server.core.api.authn.ppolicy.PasswordPolicyException; import org.apache.directory.shared.ldap.model.constants.AuthenticationLevel; import org.apache.directory.shared.ldap.model.entry.Attribute; import org.apache.directory.shared.ldap.model.entry.DefaultModification; Modified: directory/apacheds/trunk/interceptors/authn/src/main/java/org/apache/directory/server/core/authn/AuthenticationInterceptor.java URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/interceptors/authn/src/main/java/org/apache/directory/server/core/authn/AuthenticationInterceptor.java?rev=1185571&r1=1185570&r2=1185571&view=diff ============================================================================== --- directory/apacheds/trunk/interceptors/authn/src/main/java/org/apache/directory/server/core/authn/AuthenticationInterceptor.java (original) +++ directory/apacheds/trunk/interceptors/authn/src/main/java/org/apache/directory/server/core/authn/AuthenticationInterceptor.java Tue Oct 18 11:14:40 2011 @@ -66,8 +66,8 @@ import org.apache.directory.server.core. import org.apache.directory.server.core.api.interceptor.context.RenameOperationContext; import org.apache.directory.server.core.api.interceptor.context.SearchOperationContext; import org.apache.directory.server.core.api.interceptor.context.UnbindOperationContext; -import org.apache.directory.server.core.shared.authn.ppolicy.PasswordPolicyConfiguration; -import org.apache.directory.server.core.shared.authn.ppolicy.PasswordPolicyException; +import org.apache.directory.server.core.api.authn.ppolicy.PasswordPolicyConfiguration; +import org.apache.directory.server.core.api.authn.ppolicy.PasswordPolicyException; import org.apache.directory.server.core.authn.ppolicy.PpolicyConfigContainer; import org.apache.directory.server.i18n.I18n; import org.apache.directory.shared.ldap.extras.controls.ppolicy.PasswordPolicy; Modified: directory/apacheds/trunk/interceptors/authn/src/main/java/org/apache/directory/server/core/authn/Authenticator.java URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/interceptors/authn/src/main/java/org/apache/directory/server/core/authn/Authenticator.java?rev=1185571&r1=1185570&r2=1185571&view=diff ============================================================================== --- directory/apacheds/trunk/interceptors/authn/src/main/java/org/apache/directory/server/core/authn/Authenticator.java (original) +++ directory/apacheds/trunk/interceptors/authn/src/main/java/org/apache/directory/server/core/authn/Authenticator.java Tue Oct 18 11:14:40 2011 @@ -25,7 +25,7 @@ import javax.naming.Context; import org.apache.directory.server.core.api.DirectoryService; import org.apache.directory.server.core.api.LdapPrincipal; import org.apache.directory.server.core.api.interceptor.context.BindOperationContext; -import org.apache.directory.server.core.shared.authn.ppolicy.PasswordPolicyException; +import org.apache.directory.server.core.api.authn.ppolicy.PasswordPolicyException; import org.apache.directory.server.core.shared.partition.DefaultPartitionNexus; import org.apache.directory.shared.ldap.model.constants.AuthenticationLevel; import org.apache.directory.shared.ldap.model.entry.Entry; Modified: directory/apacheds/trunk/interceptors/authn/src/main/java/org/apache/directory/server/core/authn/PasswordUtil.java URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/interceptors/authn/src/main/java/org/apache/directory/server/core/authn/PasswordUtil.java?rev=1185571&r1=1185570&r2=1185571&view=diff ============================================================================== --- directory/apacheds/trunk/interceptors/authn/src/main/java/org/apache/directory/server/core/authn/PasswordUtil.java (original) +++ directory/apacheds/trunk/interceptors/authn/src/main/java/org/apache/directory/server/core/authn/PasswordUtil.java Tue Oct 18 11:14:40 2011 @@ -30,7 +30,7 @@ import java.util.Arrays; import java.util.Date; import java.util.List; -import org.apache.directory.server.core.shared.authn.ppolicy.PasswordPolicyConfiguration; +import org.apache.directory.server.core.api.authn.ppolicy.PasswordPolicyConfiguration; import org.apache.directory.shared.ldap.model.constants.LdapSecurityConstants; import org.apache.directory.shared.ldap.model.entry.Attribute; import org.apache.directory.shared.ldap.model.entry.Value; Modified: directory/apacheds/trunk/interceptors/authn/src/main/java/org/apache/directory/server/core/authn/ppolicy/PpolicyConfigContainer.java URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/interceptors/authn/src/main/java/org/apache/directory/server/core/authn/ppolicy/PpolicyConfigContainer.java?rev=1185571&r1=1185570&r2=1185571&view=diff ============================================================================== --- directory/apacheds/trunk/interceptors/authn/src/main/java/org/apache/directory/server/core/authn/ppolicy/PpolicyConfigContainer.java (original) +++ directory/apacheds/trunk/interceptors/authn/src/main/java/org/apache/directory/server/core/authn/ppolicy/PpolicyConfigContainer.java Tue Oct 18 11:14:40 2011 @@ -24,7 +24,7 @@ package org.apache.directory.server.core import java.util.HashMap; import java.util.Map; -import org.apache.directory.server.core.shared.authn.ppolicy.PasswordPolicyConfiguration; +import org.apache.directory.server.core.api.authn.ppolicy.PasswordPolicyConfiguration; import org.apache.directory.shared.ldap.model.name.Dn; Modified: directory/apacheds/trunk/interceptors/authz/src/main/java/org/apache/directory/server/core/authz/AciAuthorizationInterceptor.java URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/interceptors/authz/src/main/java/org/apache/directory/server/core/authz/AciAuthorizationInterceptor.java?rev=1185571&r1=1185570&r2=1185571&view=diff ============================================================================== --- directory/apacheds/trunk/interceptors/authz/src/main/java/org/apache/directory/server/core/authz/AciAuthorizationInterceptor.java (original) +++ directory/apacheds/trunk/interceptors/authz/src/main/java/org/apache/directory/server/core/authz/AciAuthorizationInterceptor.java Tue Oct 18 11:14:40 2011 @@ -32,7 +32,7 @@ import javax.naming.directory.SearchCont import org.apache.directory.server.constants.ServerDNConstants; import org.apache.directory.server.core.shared.DefaultCoreSession; -import org.apache.directory.server.core.shared.subtree.SubentryUtils; +import org.apache.directory.server.core.api.subtree.SubentryUtils; import org.apache.directory.server.core.api.CoreSession; import org.apache.directory.server.core.api.DirectoryService; import org.apache.directory.server.core.api.LdapPrincipal; Modified: directory/apacheds/trunk/interceptors/authz/src/main/java/org/apache/directory/server/core/authz/support/ACDFEngine.java URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/interceptors/authz/src/main/java/org/apache/directory/server/core/authz/support/ACDFEngine.java?rev=1185571&r1=1185570&r2=1185571&view=diff ============================================================================== --- directory/apacheds/trunk/interceptors/authz/src/main/java/org/apache/directory/server/core/authz/support/ACDFEngine.java (original) +++ directory/apacheds/trunk/interceptors/authz/src/main/java/org/apache/directory/server/core/authz/support/ACDFEngine.java Tue Oct 18 11:14:40 2011 @@ -28,8 +28,8 @@ import java.util.HashSet; import org.apache.directory.server.core.api.event.Evaluator; import org.apache.directory.server.core.api.event.ExpressionEvaluator; import org.apache.directory.server.core.api.subtree.SubtreeEvaluator; -import org.apache.directory.server.core.shared.subtree.RefinementEvaluator; -import org.apache.directory.server.core.shared.subtree.RefinementLeafEvaluator; +import org.apache.directory.server.core.api.subtree.RefinementEvaluator; +import org.apache.directory.server.core.api.subtree.RefinementLeafEvaluator; import org.apache.directory.shared.ldap.aci.ACITuple; import org.apache.directory.shared.ldap.model.constants.SchemaConstants; import org.apache.directory.shared.ldap.model.entry.Entry; Modified: directory/apacheds/trunk/interceptors/authz/src/main/java/org/apache/directory/server/core/authz/support/RelatedProtectedItemFilter.java URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/interceptors/authz/src/main/java/org/apache/directory/server/core/authz/support/RelatedProtectedItemFilter.java?rev=1185571&r1=1185570&r2=1185571&view=diff ============================================================================== --- directory/apacheds/trunk/interceptors/authz/src/main/java/org/apache/directory/server/core/authz/support/RelatedProtectedItemFilter.java (original) +++ directory/apacheds/trunk/interceptors/authz/src/main/java/org/apache/directory/server/core/authz/support/RelatedProtectedItemFilter.java Tue Oct 18 11:14:40 2011 @@ -24,7 +24,7 @@ import java.util.Collection; import java.util.Iterator; import org.apache.directory.server.core.api.event.Evaluator; -import org.apache.directory.server.core.shared.subtree.RefinementEvaluator; +import org.apache.directory.server.core.api.subtree.RefinementEvaluator; import org.apache.directory.server.i18n.I18n; import org.apache.directory.shared.ldap.aci.ACITuple; import org.apache.directory.shared.ldap.aci.ProtectedItem; Modified: directory/apacheds/trunk/interceptors/authz/src/test/java/org/apache/directory/server/core/authz/support/RelatedProtectedItemFilterTest.java URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/interceptors/authz/src/test/java/org/apache/directory/server/core/authz/support/RelatedProtectedItemFilterTest.java?rev=1185571&r1=1185570&r2=1185571&view=diff ============================================================================== --- directory/apacheds/trunk/interceptors/authz/src/test/java/org/apache/directory/server/core/authz/support/RelatedProtectedItemFilterTest.java (original) +++ directory/apacheds/trunk/interceptors/authz/src/test/java/org/apache/directory/server/core/authz/support/RelatedProtectedItemFilterTest.java Tue Oct 18 11:14:40 2011 @@ -29,8 +29,8 @@ import java.util.HashSet; import java.util.Set; import org.apache.directory.server.core.api.event.ExpressionEvaluator; -import org.apache.directory.server.core.shared.subtree.RefinementEvaluator; -import org.apache.directory.server.core.shared.subtree.RefinementLeafEvaluator; +import org.apache.directory.server.core.api.subtree.RefinementEvaluator; +import org.apache.directory.server.core.api.subtree.RefinementLeafEvaluator; import org.apache.directory.shared.ldap.aci.ACITuple; import org.apache.directory.shared.ldap.aci.MicroOperation; import org.apache.directory.shared.ldap.aci.ProtectedItem; Modified: directory/apacheds/trunk/interceptors/event/src/main/java/org/apache/directory/server/core/event/DefaultEventService.java URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/interceptors/event/src/main/java/org/apache/directory/server/core/event/DefaultEventService.java?rev=1185571&r1=1185570&r2=1185571&view=diff ============================================================================== --- directory/apacheds/trunk/interceptors/event/src/main/java/org/apache/directory/server/core/event/DefaultEventService.java (original) +++ directory/apacheds/trunk/interceptors/event/src/main/java/org/apache/directory/server/core/event/DefaultEventService.java Tue Oct 18 11:14:40 2011 @@ -28,7 +28,7 @@ import org.apache.directory.server.core. import org.apache.directory.server.core.api.event.EventService; import org.apache.directory.server.core.api.event.NotificationCriteria; import org.apache.directory.server.core.api.event.RegistrationEntry; -import org.apache.directory.server.core.shared.normalization.FilterNormalizingVisitor; +import org.apache.directory.server.core.api.normalization.FilterNormalizingVisitor; import org.apache.directory.shared.ldap.model.filter.ExprNode; import org.apache.directory.shared.ldap.model.schema.SchemaManager; import org.apache.directory.shared.ldap.model.schema.normalizers.ConcreteNameComponentNormalizer; Modified: directory/apacheds/trunk/interceptors/hash/src/main/java/org/apache/directory/server/core/hash/PasswordHashingInterceptor.java URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/interceptors/hash/src/main/java/org/apache/directory/server/core/hash/PasswordHashingInterceptor.java?rev=1185571&r1=1185570&r2=1185571&view=diff ============================================================================== --- directory/apacheds/trunk/interceptors/hash/src/main/java/org/apache/directory/server/core/hash/PasswordHashingInterceptor.java (original) +++ directory/apacheds/trunk/interceptors/hash/src/main/java/org/apache/directory/server/core/hash/PasswordHashingInterceptor.java Tue Oct 18 11:14:40 2011 @@ -27,7 +27,7 @@ import org.apache.directory.server.core. import org.apache.directory.server.core.api.interceptor.NextInterceptor; import org.apache.directory.server.core.api.interceptor.context.AddOperationContext; import org.apache.directory.server.core.api.interceptor.context.ModifyOperationContext; -import org.apache.directory.server.core.shared.authn.PasswordUtil; +import org.apache.directory.server.core.api.authn.PasswordUtil; import org.apache.directory.shared.ldap.model.constants.LdapSecurityConstants; import org.apache.directory.shared.ldap.model.constants.SchemaConstants; import org.apache.directory.shared.ldap.model.entry.BinaryValue; Modified: directory/apacheds/trunk/interceptors/normalization/src/main/java/org/apache/directory/server/core/normalization/NormalizationInterceptor.java URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/interceptors/normalization/src/main/java/org/apache/directory/server/core/normalization/NormalizationInterceptor.java?rev=1185571&r1=1185570&r2=1185571&view=diff ============================================================================== --- directory/apacheds/trunk/interceptors/normalization/src/main/java/org/apache/directory/server/core/normalization/NormalizationInterceptor.java (original) +++ directory/apacheds/trunk/interceptors/normalization/src/main/java/org/apache/directory/server/core/normalization/NormalizationInterceptor.java Tue Oct 18 11:14:40 2011 @@ -39,7 +39,7 @@ import org.apache.directory.server.core. import org.apache.directory.server.core.api.interceptor.context.MoveOperationContext; import org.apache.directory.server.core.api.interceptor.context.RenameOperationContext; import org.apache.directory.server.core.api.interceptor.context.SearchOperationContext; -import org.apache.directory.server.core.shared.normalization.FilterNormalizingVisitor; +import org.apache.directory.server.core.api.normalization.FilterNormalizingVisitor; import org.apache.directory.server.i18n.I18n; import org.apache.directory.shared.ldap.model.cursor.EmptyCursor; import org.apache.directory.shared.ldap.model.entry.Entry; Modified: directory/apacheds/trunk/interceptors/normalization/src/test/java/org/apache/directory/server/core/normalization/NormalizationVisitorTest.java URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/interceptors/normalization/src/test/java/org/apache/directory/server/core/normalization/NormalizationVisitorTest.java?rev=1185571&r1=1185570&r2=1185571&view=diff ============================================================================== --- directory/apacheds/trunk/interceptors/normalization/src/test/java/org/apache/directory/server/core/normalization/NormalizationVisitorTest.java (original) +++ directory/apacheds/trunk/interceptors/normalization/src/test/java/org/apache/directory/server/core/normalization/NormalizationVisitorTest.java Tue Oct 18 11:14:40 2011 @@ -27,7 +27,7 @@ import static org.junit.Assert.fail; import java.text.ParseException; -import org.apache.directory.server.core.shared.normalization.FilterNormalizingVisitor; +import org.apache.directory.server.core.api.normalization.FilterNormalizingVisitor; import org.apache.directory.shared.ldap.model.filter.EqualityNode; import org.apache.directory.shared.ldap.model.filter.ExprNode; import org.apache.directory.shared.ldap.model.filter.FilterParser; Modified: directory/apacheds/trunk/interceptors/schema/src/main/java/org/apache/directory/server/core/schema/PartitionSchemaLoader.java URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/interceptors/schema/src/main/java/org/apache/directory/server/core/schema/PartitionSchemaLoader.java?rev=1185571&r1=1185570&r2=1185571&view=diff ============================================================================== --- directory/apacheds/trunk/interceptors/schema/src/main/java/org/apache/directory/server/core/schema/PartitionSchemaLoader.java (original) +++ directory/apacheds/trunk/interceptors/schema/src/main/java/org/apache/directory/server/core/schema/PartitionSchemaLoader.java Tue Oct 18 11:14:40 2011 @@ -33,7 +33,7 @@ import org.apache.directory.server.core. import org.apache.directory.server.core.api.partition.Partition; import org.apache.directory.server.core.api.schema.SchemaPartitionDao; import org.apache.directory.server.core.api.schema.SchemaPartitionDaoImpl; -import org.apache.directory.server.core.shared.normalization.FilterNormalizingVisitor; +import org.apache.directory.server.core.api.normalization.FilterNormalizingVisitor; import org.apache.directory.server.i18n.I18n; import org.apache.directory.shared.ldap.model.constants.SchemaConstants; import org.apache.directory.shared.ldap.model.entry.Attribute; Modified: directory/apacheds/trunk/interceptors/subtree/src/test/java/org/apache/directory/server/core/subtree/RefinementEvaluatorTest.java URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/interceptors/subtree/src/test/java/org/apache/directory/server/core/subtree/RefinementEvaluatorTest.java?rev=1185571&r1=1185570&r2=1185571&view=diff ============================================================================== --- directory/apacheds/trunk/interceptors/subtree/src/test/java/org/apache/directory/server/core/subtree/RefinementEvaluatorTest.java (original) +++ directory/apacheds/trunk/interceptors/subtree/src/test/java/org/apache/directory/server/core/subtree/RefinementEvaluatorTest.java Tue Oct 18 11:14:40 2011 @@ -23,8 +23,8 @@ import static org.junit.Assert.assertFal import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; -import org.apache.directory.server.core.shared.subtree.RefinementEvaluator; -import org.apache.directory.server.core.shared.subtree.RefinementLeafEvaluator; +import org.apache.directory.server.core.api.subtree.RefinementEvaluator; +import org.apache.directory.server.core.api.subtree.RefinementLeafEvaluator; import org.apache.directory.shared.ldap.model.entry.Attribute; import org.apache.directory.shared.ldap.model.entry.DefaultAttribute; import org.apache.directory.shared.ldap.model.entry.StringValue; Modified: directory/apacheds/trunk/interceptors/subtree/src/test/java/org/apache/directory/server/core/subtree/RefinementLeafEvaluatorTest.java URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/interceptors/subtree/src/test/java/org/apache/directory/server/core/subtree/RefinementLeafEvaluatorTest.java?rev=1185571&r1=1185570&r2=1185571&view=diff ============================================================================== --- directory/apacheds/trunk/interceptors/subtree/src/test/java/org/apache/directory/server/core/subtree/RefinementLeafEvaluatorTest.java (original) +++ directory/apacheds/trunk/interceptors/subtree/src/test/java/org/apache/directory/server/core/subtree/RefinementLeafEvaluatorTest.java Tue Oct 18 11:14:40 2011 @@ -27,7 +27,7 @@ import static org.junit.Assert.fail; import com.mycila.junit.concurrent.Concurrency; import com.mycila.junit.concurrent.ConcurrentJunitRunner; -import org.apache.directory.server.core.shared.subtree.RefinementLeafEvaluator; +import org.apache.directory.server.core.api.subtree.RefinementLeafEvaluator; import org.apache.directory.shared.ldap.model.constants.SchemaConstants; import org.apache.directory.shared.ldap.model.entry.DefaultAttribute; import org.apache.directory.shared.ldap.model.entry.Attribute; Modified: directory/apacheds/trunk/interceptors/subtree/src/test/java/org/apache/directory/server/core/subtree/SubtreeEvaluatorTest.java URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/interceptors/subtree/src/test/java/org/apache/directory/server/core/subtree/SubtreeEvaluatorTest.java?rev=1185571&r1=1185570&r2=1185571&view=diff ============================================================================== --- directory/apacheds/trunk/interceptors/subtree/src/test/java/org/apache/directory/server/core/subtree/SubtreeEvaluatorTest.java (original) +++ directory/apacheds/trunk/interceptors/subtree/src/test/java/org/apache/directory/server/core/subtree/SubtreeEvaluatorTest.java Tue Oct 18 11:14:40 2011 @@ -34,7 +34,7 @@ import net.sf.ehcache.CacheManager; import org.apache.directory.server.core.shared.DefaultDnFactory; import org.apache.directory.server.core.api.DnFactory; import org.apache.directory.server.core.api.subtree.SubtreeEvaluator; -import org.apache.directory.server.core.shared.normalization.FilterNormalizingVisitor; +import org.apache.directory.server.core.api.normalization.FilterNormalizingVisitor; import org.apache.directory.shared.ldap.model.entry.DefaultEntry; import org.apache.directory.shared.ldap.model.entry.Entry; import org.apache.directory.shared.ldap.model.filter.ExprNode; Modified: directory/apacheds/trunk/interceptors/trigger/src/main/java/org/apache/directory/server/core/trigger/TriggerInterceptor.java URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/interceptors/trigger/src/main/java/org/apache/directory/server/core/trigger/TriggerInterceptor.java?rev=1185571&r1=1185570&r2=1185571&view=diff ============================================================================== --- directory/apacheds/trunk/interceptors/trigger/src/main/java/org/apache/directory/server/core/trigger/TriggerInterceptor.java (original) +++ directory/apacheds/trunk/interceptors/trigger/src/main/java/org/apache/directory/server/core/trigger/TriggerInterceptor.java Tue Oct 18 11:14:40 2011 @@ -40,11 +40,11 @@ import org.apache.directory.server.core. import org.apache.directory.server.core.api.interceptor.context.OperationContext; import org.apache.directory.server.core.api.interceptor.context.RenameOperationContext; import org.apache.directory.server.core.api.partition.ByPassConstants; -import org.apache.directory.server.core.shared.sp.StoredProcEngine; -import org.apache.directory.server.core.shared.sp.StoredProcEngineConfig; -import org.apache.directory.server.core.shared.sp.StoredProcExecutionManager; -import org.apache.directory.server.core.shared.sp.java.JavaStoredProcEngineConfig; -import org.apache.directory.server.core.shared.subtree.SubentryUtils; +import org.apache.directory.server.core.api.sp.StoredProcEngine; +import org.apache.directory.server.core.api.sp.StoredProcEngineConfig; +import org.apache.directory.server.core.api.sp.StoredProcExecutionManager; +import org.apache.directory.server.core.api.sp.java.JavaStoredProcEngineConfig; +import org.apache.directory.server.core.api.subtree.SubentryUtils; import org.apache.directory.server.i18n.I18n; import org.apache.directory.shared.ldap.model.constants.SchemaConstants; import org.apache.directory.shared.ldap.model.entry.Attribute; Modified: directory/apacheds/trunk/ldif-partition/src/test/java/org/apache/directory/server/core/partition/ldif/LdifPartitionTest.java URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/ldif-partition/src/test/java/org/apache/directory/server/core/partition/ldif/LdifPartitionTest.java?rev=1185571&r1=1185570&r2=1185571&view=diff ============================================================================== --- directory/apacheds/trunk/ldif-partition/src/test/java/org/apache/directory/server/core/partition/ldif/LdifPartitionTest.java (original) +++ directory/apacheds/trunk/ldif-partition/src/test/java/org/apache/directory/server/core/partition/ldif/LdifPartitionTest.java Tue Oct 18 11:14:40 2011 @@ -45,7 +45,7 @@ import org.apache.directory.server.core. import org.apache.directory.server.core.api.interceptor.context.MoveOperationContext; import org.apache.directory.server.core.api.interceptor.context.RenameOperationContext; import org.apache.directory.server.core.api.interceptor.context.SearchOperationContext; -import org.apache.directory.server.core.shared.normalization.FilterNormalizingVisitor; +import org.apache.directory.server.core.api.normalization.FilterNormalizingVisitor; import org.apache.directory.server.core.partition.ldif.LdifPartition; import org.apache.directory.shared.ldap.model.constants.AuthenticationLevel; import org.apache.directory.shared.ldap.model.constants.SchemaConstants; Modified: directory/apacheds/trunk/ldif-partition/src/test/java/org/apache/directory/server/core/partition/ldif/SingleFileLdifPartitionTest.java URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/ldif-partition/src/test/java/org/apache/directory/server/core/partition/ldif/SingleFileLdifPartitionTest.java?rev=1185571&r1=1185570&r2=1185571&view=diff ============================================================================== --- directory/apacheds/trunk/ldif-partition/src/test/java/org/apache/directory/server/core/partition/ldif/SingleFileLdifPartitionTest.java (original) +++ directory/apacheds/trunk/ldif-partition/src/test/java/org/apache/directory/server/core/partition/ldif/SingleFileLdifPartitionTest.java Tue Oct 18 11:14:40 2011 @@ -50,7 +50,7 @@ import org.apache.directory.server.core. import org.apache.directory.server.core.api.interceptor.context.MoveOperationContext; import org.apache.directory.server.core.api.interceptor.context.RenameOperationContext; import org.apache.directory.server.core.api.interceptor.context.SearchOperationContext; -import org.apache.directory.server.core.shared.normalization.FilterNormalizingVisitor; +import org.apache.directory.server.core.api.normalization.FilterNormalizingVisitor; import org.apache.directory.server.core.partition.ldif.SingleFileLdifPartition; import org.apache.directory.shared.ldap.model.constants.AuthenticationLevel; import org.apache.directory.shared.ldap.model.constants.SchemaConstants; Modified: directory/apacheds/trunk/protocol-ldap/src/main/java/org/apache/directory/server/ldap/handlers/extended/StoredProcedureExtendedOperationHandler.java URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/protocol-ldap/src/main/java/org/apache/directory/server/ldap/handlers/extended/StoredProcedureExtendedOperationHandler.java?rev=1185571&r1=1185570&r2=1185571&view=diff ============================================================================== --- directory/apacheds/trunk/protocol-ldap/src/main/java/org/apache/directory/server/ldap/handlers/extended/StoredProcedureExtendedOperationHandler.java (original) +++ directory/apacheds/trunk/protocol-ldap/src/main/java/org/apache/directory/server/ldap/handlers/extended/StoredProcedureExtendedOperationHandler.java Tue Oct 18 11:14:40 2011 @@ -28,10 +28,10 @@ import java.util.List; import java.util.Set; import org.apache.commons.lang.SerializationUtils; -import org.apache.directory.server.core.shared.sp.StoredProcEngine; -import org.apache.directory.server.core.shared.sp.StoredProcEngineConfig; -import org.apache.directory.server.core.shared.sp.StoredProcExecutionManager; -import org.apache.directory.server.core.shared.sp.java.JavaStoredProcEngineConfig; +import org.apache.directory.server.core.api.sp.StoredProcEngine; +import org.apache.directory.server.core.api.sp.StoredProcEngineConfig; +import org.apache.directory.server.core.api.sp.StoredProcExecutionManager; +import org.apache.directory.server.core.api.sp.java.JavaStoredProcEngineConfig; import org.apache.directory.server.ldap.ExtendedOperationHandler; import org.apache.directory.server.ldap.LdapServer; import org.apache.directory.server.ldap.LdapSession; Modified: directory/apacheds/trunk/service-builder/src/main/java/org/apache/directory/server/config/builder/ServiceBuilder.java URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/service-builder/src/main/java/org/apache/directory/server/config/builder/ServiceBuilder.java?rev=1185571&r1=1185570&r2=1185571&view=diff ============================================================================== --- directory/apacheds/trunk/service-builder/src/main/java/org/apache/directory/server/config/builder/ServiceBuilder.java (original) +++ directory/apacheds/trunk/service-builder/src/main/java/org/apache/directory/server/config/builder/ServiceBuilder.java Tue Oct 18 11:14:40 2011 @@ -69,7 +69,7 @@ import org.apache.directory.server.core. import org.apache.directory.server.core.authn.AuthenticationInterceptor; import org.apache.directory.server.core.authn.Authenticator; import org.apache.directory.server.core.authn.DelegatingAuthenticator; -import org.apache.directory.server.core.shared.authn.ppolicy.PasswordPolicyConfiguration; +import org.apache.directory.server.core.api.authn.ppolicy.PasswordPolicyConfiguration; import org.apache.directory.server.core.authn.ppolicy.PpolicyConfigContainer; import org.apache.directory.server.core.changelog.DefaultChangeLog; import org.apache.directory.server.core.journal.DefaultJournal;