You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by el...@apache.org on 2016/06/15 12:30:01 UTC
svn commit: r1748572 [17/23] - in
/directory/apacheds/branches/apacheds-value: ./
benchmarks/installers-maven-plugin/
benchmarks/installers-maven-plugin/.settings/
benchmarks/installers-maven-plugin/target/
benchmarks/installers-maven-plugin/target/cla...
Modified: directory/apacheds/branches/apacheds-value/interceptors/trigger/src/main/java/org/apache/directory/server/core/trigger/AddStoredProcedureParameterInjector.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/apacheds-value/interceptors/trigger/src/main/java/org/apache/directory/server/core/trigger/AddStoredProcedureParameterInjector.java?rev=1748572&r1=1748571&r2=1748572&view=diff
==============================================================================
--- directory/apacheds/branches/apacheds-value/interceptors/trigger/src/main/java/org/apache/directory/server/core/trigger/AddStoredProcedureParameterInjector.java (original)
+++ directory/apacheds/branches/apacheds-value/interceptors/trigger/src/main/java/org/apache/directory/server/core/trigger/AddStoredProcedureParameterInjector.java Wed Jun 15 12:29:57 2016
@@ -49,6 +49,7 @@ public class AddStoredProcedureParameter
MicroInjector entryInjector = new MicroInjector()
{
+ @Override
public Object inject( OperationContext opContext, StoredProcedureParameter param )
throws LdapInvalidDnException
{
Modified: directory/apacheds/branches/apacheds-value/interceptors/trigger/src/main/java/org/apache/directory/server/core/trigger/ModifyDNStoredProcedureParameterInjector.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/apacheds-value/interceptors/trigger/src/main/java/org/apache/directory/server/core/trigger/ModifyDNStoredProcedureParameterInjector.java?rev=1748572&r1=1748571&r2=1748572&view=diff
==============================================================================
--- directory/apacheds/branches/apacheds-value/interceptors/trigger/src/main/java/org/apache/directory/server/core/trigger/ModifyDNStoredProcedureParameterInjector.java (original)
+++ directory/apacheds/branches/apacheds-value/interceptors/trigger/src/main/java/org/apache/directory/server/core/trigger/ModifyDNStoredProcedureParameterInjector.java Wed Jun 15 12:29:57 2016
@@ -45,8 +45,8 @@ public class ModifyDNStoredProcedurePara
{
super( opContext );
this.deleteOldRn = deleteOldRn;
- this.oldRdn = ( Rdn ) oldRDN.clone();
- this.newRdn = ( Rdn ) newRdn.clone();
+ this.oldRdn = oldRDN.clone();
+ this.newRdn = newRdn.clone();
this.oldSuperiorDn = oldSuperiorDn;
this.newSuperiorDn = newSuperiorDn;
this.oldDn = oldDn;
Modified: directory/apacheds/branches/apacheds-value/interceptors/trigger/src/main/java/org/apache/directory/server/core/trigger/StoredProcedureParameterInjector.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/apacheds-value/interceptors/trigger/src/main/java/org/apache/directory/server/core/trigger/StoredProcedureParameterInjector.java?rev=1748572&r1=1748571&r2=1748572&view=diff
==============================================================================
--- directory/apacheds/branches/apacheds-value/interceptors/trigger/src/main/java/org/apache/directory/server/core/trigger/StoredProcedureParameterInjector.java (original)
+++ directory/apacheds/branches/apacheds-value/interceptors/trigger/src/main/java/org/apache/directory/server/core/trigger/StoredProcedureParameterInjector.java Wed Jun 15 12:29:57 2016
@@ -28,7 +28,7 @@ import org.apache.directory.server.core.
/**
- * TODO - can we get some documentation on this?
+ * An interface defining the way STored Procedure parameter get injected
*
* @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
*/
Modified: directory/apacheds/branches/apacheds-value/interceptors/trigger/src/main/java/org/apache/directory/server/core/trigger/TriggerInterceptor.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/apacheds-value/interceptors/trigger/src/main/java/org/apache/directory/server/core/trigger/TriggerInterceptor.java?rev=1748572&r1=1748571&r2=1748572&view=diff
==============================================================================
--- directory/apacheds/branches/apacheds-value/interceptors/trigger/src/main/java/org/apache/directory/server/core/trigger/TriggerInterceptor.java (original)
+++ directory/apacheds/branches/apacheds-value/interceptors/trigger/src/main/java/org/apache/directory/server/core/trigger/TriggerInterceptor.java Wed Jun 15 12:29:57 2016
@@ -153,9 +153,9 @@ public class TriggerInterceptor extends
return;
}
- for ( Value<?> value : subentries )
+ for ( Value value : subentries )
{
- String subentryDn = value.getString();
+ Dn subentryDn = new Dn( directoryService.getSchemaManager(), value.getValue() );
triggerSpecs.addAll( triggerSpecCache.getSubentryTriggerSpecs( subentryDn ) );
}
}
@@ -179,9 +179,9 @@ public class TriggerInterceptor extends
return;
}
- for ( Value<?> value : entryTrigger )
+ for ( Value value : entryTrigger )
{
- String triggerString = value.getString();
+ String triggerString = value.getValue();
TriggerSpecification item;
try
@@ -212,17 +212,15 @@ public class TriggerInterceptor extends
public Map<ActionTime, List<TriggerSpecification>> getActionTimeMappedTriggerSpecsForOperation(
List<TriggerSpecification> triggerSpecs, LdapOperation ldapOperation )
{
- List<TriggerSpecification> afterTriggerSpecs = new ArrayList<TriggerSpecification>();
- Map<ActionTime, List<TriggerSpecification>> triggerSpecMap = new HashMap<ActionTime, List<TriggerSpecification>>();
+ List<TriggerSpecification> afterTriggerSpecs = new ArrayList<>();
+ Map<ActionTime, List<TriggerSpecification>> triggerSpecMap = new HashMap<>();
for ( TriggerSpecification triggerSpec : triggerSpecs )
{
- if ( triggerSpec.getLdapOperation().equals( ldapOperation ) )
+ if ( triggerSpec.getLdapOperation().equals( ldapOperation )
+ && triggerSpec.getActionTime().equals( ActionTime.AFTER ) )
{
- if ( triggerSpec.getActionTime().equals( ActionTime.AFTER ) )
- {
- afterTriggerSpecs.add( triggerSpec );
- }
+ afterTriggerSpecs.add( triggerSpec );
}
}
@@ -236,6 +234,7 @@ public class TriggerInterceptor extends
// Interceptor Overrides
////////////////////////////////////////////////////////////////////////////
+ @Override
public void init( DirectoryService directoryService ) throws LdapException
{
super.init( directoryService );
@@ -244,16 +243,15 @@ public class TriggerInterceptor extends
triggerParser = new TriggerSpecificationParser( new NormalizerMappingResolver()
{
+ @Override
public Map<String, OidNormalizer> getNormalizerMapping() throws Exception
{
return schemaManager.getNormalizerMapping();
}
} );
- //StoredProcEngineConfig javaxScriptSPEngineConfig = new JavaxStoredProcEngineConfig();
StoredProcEngineConfig javaSPEngineConfig = new JavaStoredProcEngineConfig();
- List<StoredProcEngineConfig> spEngineConfigs = new ArrayList<StoredProcEngineConfig>();
- //spEngineConfigs.add( javaxScriptSPEngineConfig );
+ List<StoredProcEngineConfig> spEngineConfigs = new ArrayList<>();
spEngineConfigs.add( javaSPEngineConfig );
String spContainer = "ou=Stored Procedures,ou=system";
manager = new StoredProcExecutionManager( spContainer, spEngineConfigs );
@@ -268,6 +266,7 @@ public class TriggerInterceptor extends
/**
* {@inheritDoc}
*/
+ @Override
public void add( AddOperationContext addContext ) throws LdapException
{
Dn name = addContext.getDn();
@@ -284,7 +283,7 @@ public class TriggerInterceptor extends
StoredProcedureParameterInjector injector = new AddStoredProcedureParameterInjector( addContext, name, entry );
// Gather Trigger Specifications which apply to the entry being added.
- List<TriggerSpecification> triggerSpecs = new ArrayList<TriggerSpecification>();
+ List<TriggerSpecification> triggerSpecs = new ArrayList<>();
addPrescriptiveTriggerSpecs( addContext, triggerSpecs, name, entry );
/**
@@ -306,6 +305,7 @@ public class TriggerInterceptor extends
/**
* {@inheritDoc}
*/
+ @Override
public void delete( DeleteOperationContext deleteContext ) throws LdapException
{
Dn name = deleteContext.getDn();
@@ -323,7 +323,7 @@ public class TriggerInterceptor extends
StoredProcedureParameterInjector injector = new DeleteStoredProcedureParameterInjector( deleteContext, name );
// Gather Trigger Specifications which apply to the entry being deleted.
- List<TriggerSpecification> triggerSpecs = new ArrayList<TriggerSpecification>();
+ List<TriggerSpecification> triggerSpecs = new ArrayList<>();
addPrescriptiveTriggerSpecs( deleteContext, triggerSpecs, name, deletedEntry );
addEntryTriggerSpecs( triggerSpecs, deletedEntry );
@@ -343,6 +343,7 @@ public class TriggerInterceptor extends
/**
* {@inheritDoc}
*/
+ @Override
public void modify( ModifyOperationContext modifyContext ) throws LdapException
{
// Bypass trigger handling if the service is disabled.
@@ -360,7 +361,7 @@ public class TriggerInterceptor extends
StoredProcedureParameterInjector injector = new ModifyStoredProcedureParameterInjector( modifyContext );
// Gather Trigger Specifications which apply to the entry being modified.
- List<TriggerSpecification> triggerSpecs = new ArrayList<TriggerSpecification>();
+ List<TriggerSpecification> triggerSpecs = new ArrayList<>();
addPrescriptiveTriggerSpecs( modifyContext, triggerSpecs, normName, originalEntry );
addEntryTriggerSpecs( triggerSpecs, originalEntry );
@@ -380,6 +381,7 @@ public class TriggerInterceptor extends
/**
* {@inheritDoc}
*/
+ @Override
public void move( MoveOperationContext moveContext ) throws LdapException
{
// Bypass trigger handling if the service is disabled.
@@ -398,13 +400,11 @@ public class TriggerInterceptor extends
// Gather supplementary data.
Entry movedEntry = moveContext.getOriginalEntry();
- //Rdn newRDN = dn.getRdn();
-
StoredProcedureParameterInjector injector = new ModifyDNStoredProcedureParameterInjector( moveContext, false,
rdn, rdn, oldSuperior, newSuperior, dn, newDn );
// Gather Trigger Specifications which apply to the entry being exported.
- List<TriggerSpecification> exportTriggerSpecs = new ArrayList<TriggerSpecification>();
+ List<TriggerSpecification> exportTriggerSpecs = new ArrayList<>();
addPrescriptiveTriggerSpecs( moveContext, exportTriggerSpecs, dn, movedEntry );
addEntryTriggerSpecs( exportTriggerSpecs, movedEntry );
@@ -433,7 +433,7 @@ public class TriggerInterceptor extends
// Gather Trigger Specifications which apply to the entry being imported.
// Note: Entry Trigger Specifications are not valid for Import.
- List<TriggerSpecification> importTriggerSpecs = new ArrayList<TriggerSpecification>();
+ List<TriggerSpecification> importTriggerSpecs = new ArrayList<>();
addPrescriptiveTriggerSpecs( moveContext, importTriggerSpecs, newDn, fakeImportedEntry );
Map<ActionTime, List<TriggerSpecification>> exportTriggerMap = getActionTimeMappedTriggerSpecsForOperation(
@@ -456,6 +456,7 @@ public class TriggerInterceptor extends
/**
* {@inheritDoc}
*/
+ @Override
public void moveAndRename( MoveAndRenameOperationContext moveAndRenameContext ) throws LdapException
{
Dn oldDn = moveAndRenameContext.getDn();
@@ -482,7 +483,7 @@ public class TriggerInterceptor extends
deleteOldRn, oldRdn, newRdn, oldSuperiorDn, newSuperiorDn, oldDN, newDn );
// Gather Trigger Specifications which apply to the entry being exported.
- List<TriggerSpecification> exportTriggerSpecs = new ArrayList<TriggerSpecification>();
+ List<TriggerSpecification> exportTriggerSpecs = new ArrayList<>();
addPrescriptiveTriggerSpecs( moveAndRenameContext, exportTriggerSpecs, oldDn, movedEntry );
addEntryTriggerSpecs( exportTriggerSpecs, movedEntry );
@@ -511,7 +512,7 @@ public class TriggerInterceptor extends
// Gather Trigger Specifications which apply to the entry being imported.
// Note: Entry Trigger Specifications are not valid for Import.
- List<TriggerSpecification> importTriggerSpecs = new ArrayList<TriggerSpecification>();
+ List<TriggerSpecification> importTriggerSpecs = new ArrayList<>();
addPrescriptiveTriggerSpecs( moveAndRenameContext, importTriggerSpecs, newDn, fakeImportedEntry );
Map<ActionTime, List<TriggerSpecification>> exportTriggerMap = getActionTimeMappedTriggerSpecsForOperation(
@@ -534,6 +535,7 @@ public class TriggerInterceptor extends
/**
* {@inheritDoc}
*/
+ @Override
public void rename( RenameOperationContext renameContext ) throws LdapException
{
Dn name = renameContext.getDn();
@@ -562,7 +564,7 @@ public class TriggerInterceptor extends
deleteOldRn, oldRdn, newRdn, oldSuperiorDn, newSuperiorDn, oldDn, newDn );
// Gather Trigger Specifications which apply to the entry being renamed.
- List<TriggerSpecification> triggerSpecs = new ArrayList<TriggerSpecification>();
+ List<TriggerSpecification> triggerSpecs = new ArrayList<>();
addPrescriptiveTriggerSpecs( renameContext, triggerSpecs, name, renamedEntry );
addEntryTriggerSpecs( triggerSpecs, renamedEntry );
@@ -611,12 +613,12 @@ public class TriggerInterceptor extends
private Object executeTrigger( OperationContext opContext, TriggerSpecification tsec,
StoredProcedureParameterInjector injector ) throws LdapException
{
- List<Object> returnValues = new ArrayList<Object>();
+ List<Object> returnValues = new ArrayList<>();
List<SPSpec> spSpecs = tsec.getSPSpecs();
for ( SPSpec spSpec : spSpecs )
{
- List<Object> arguments = new ArrayList<Object>();
+ List<Object> arguments = new ArrayList<>();
arguments.addAll( injector.getArgumentsToInject( opContext, spSpec.getParameters() ) );
Object[] values = arguments.toArray();
Object returnValue = executeProcedure( opContext, spSpec.getName(), values );
Modified: directory/apacheds/branches/apacheds-value/interceptors/trigger/src/main/java/org/apache/directory/server/core/trigger/TriggerSpecCache.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/apacheds-value/interceptors/trigger/src/main/java/org/apache/directory/server/core/trigger/TriggerSpecCache.java?rev=1748572&r1=1748571&r2=1748572&view=diff
==============================================================================
--- directory/apacheds/branches/apacheds-value/interceptors/trigger/src/main/java/org/apache/directory/server/core/trigger/TriggerSpecCache.java (original)
+++ directory/apacheds/branches/apacheds-value/interceptors/trigger/src/main/java/org/apache/directory/server/core/trigger/TriggerSpecCache.java Wed Jun 15 12:29:57 2016
@@ -34,7 +34,6 @@ import org.apache.directory.api.ldap.mod
import org.apache.directory.api.ldap.model.entry.Attribute;
import org.apache.directory.api.ldap.model.entry.Entry;
import org.apache.directory.api.ldap.model.entry.Modification;
-import org.apache.directory.api.ldap.model.entry.StringValue;
import org.apache.directory.api.ldap.model.entry.Value;
import org.apache.directory.api.ldap.model.exception.LdapException;
import org.apache.directory.api.ldap.model.exception.LdapOperationException;
@@ -76,7 +75,7 @@ public class TriggerSpecCache
private static final Logger LOG = LoggerFactory.getLogger( TriggerSpecCache.class );
/** a map of strings to TriggerSpecification collections */
- private final Map<String, List<TriggerSpecification>> triggerSpecs = new HashMap<String, List<TriggerSpecification>>();
+ private final Map<Dn, List<TriggerSpecification>> triggerSpecs = new HashMap<>();
/** a handle on the partition nexus */
private final PartitionNexus nexus;
@@ -98,6 +97,7 @@ public class TriggerSpecCache
triggerSpecParser = new TriggerSpecificationParser( new NormalizerMappingResolver()
{
+ @Override
public Map<String, OidNormalizer> getNormalizerMapping() throws Exception
{
return schemaManager.getNormalizerMapping();
@@ -122,7 +122,7 @@ public class TriggerSpecCache
{
Dn baseDn = directoryService.getDnFactory().create( suffix );
ExprNode filter = new EqualityNode<String>( objectClassAt,
- new StringValue( ApacheSchemaConstants.TRIGGER_EXECUTION_SUBENTRY_OC ) );
+ new Value( objectClassAt, ApacheSchemaConstants.TRIGGER_EXECUTION_SUBENTRY_OC ) );
SearchControls ctls = new SearchControls();
ctls.setSearchScope( SearchControls.SUBTREE_SCOPE );
@@ -149,8 +149,14 @@ public class TriggerSpecCache
continue;
}
- Dn normSubentryName = subentryDn.apply( directoryService.getSchemaManager() );
- subentryAdded( normSubentryName, resultEntry );
+ Dn normSubentryDn = subentryDn;
+
+ if ( !subentryDn.isSchemaAware() )
+ {
+ normSubentryDn = new Dn( directoryService.getSchemaManager(), subentryDn );
+ }
+
+ subentryAdded( normSubentryDn, resultEntry );
}
results.close();
@@ -182,15 +188,15 @@ public class TriggerSpecCache
return;
}
- List<TriggerSpecification> subentryTriggerSpecs = new ArrayList<TriggerSpecification>();
+ List<TriggerSpecification> subentryTriggerSpecs = new ArrayList<>();
- for ( Value<?> value : triggerSpec )
+ for ( Value value : triggerSpec )
{
TriggerSpecification item = null;
try
{
- item = triggerSpecParser.parse( value.getString() );
+ item = triggerSpecParser.parse( value.getValue() );
subentryTriggerSpecs.add( item );
}
catch ( ParseException e )
@@ -201,7 +207,7 @@ public class TriggerSpecCache
}
- triggerSpecs.put( normName.getNormName(), subentryTriggerSpecs );
+ triggerSpecs.put( normName, subentryTriggerSpecs );
}
@@ -212,7 +218,7 @@ public class TriggerSpecCache
return;
}
- triggerSpecs.remove( normName.toString() );
+ triggerSpecs.remove( normName );
}
@@ -241,19 +247,21 @@ public class TriggerSpecCache
}
- public List<TriggerSpecification> getSubentryTriggerSpecs( String subentryDn )
+ public List<TriggerSpecification> getSubentryTriggerSpecs( Dn subentryDn )
{
List<TriggerSpecification> subentryTriggerSpecs = triggerSpecs.get( subentryDn );
+
if ( subentryTriggerSpecs == null )
{
return Collections.emptyList();
}
+
return Collections.unmodifiableList( subentryTriggerSpecs );
}
public void subentryRenamed( Dn oldName, Dn newName )
{
- triggerSpecs.put( newName.getNormName(), triggerSpecs.remove( oldName.getNormName() ) );
+ triggerSpecs.put( newName, triggerSpecs.remove( oldName ) );
}
}
Modified: directory/apacheds/branches/apacheds-value/jdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/DnSerializerComparator.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/apacheds-value/jdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/DnSerializerComparator.java?rev=1748572&r1=1748571&r2=1748572&view=diff
==============================================================================
--- directory/apacheds/branches/apacheds-value/jdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/DnSerializerComparator.java (original)
+++ directory/apacheds/branches/apacheds-value/jdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/DnSerializerComparator.java Wed Jun 15 12:29:57 2016
@@ -21,6 +21,7 @@ package org.apache.directory.server.core
import org.apache.directory.api.ldap.model.name.Dn;
+import org.apache.directory.api.ldap.model.schema.comparators.DnComparator;
import org.apache.directory.api.ldap.model.schema.comparators.SerializableComparator;
@@ -33,6 +34,9 @@ public class DnSerializerComparator exte
{
/** The serialVersionUID */
private static final long serialVersionUID = 1L;
+
+ /** The DN comparator */
+ private static DnComparator dnComparator = new DnComparator( null );
/**
@@ -52,21 +56,6 @@ public class DnSerializerComparator exte
@Override
public int compare( Dn dn1, Dn dn2 )
{
- if ( dn1 == null )
- {
- if ( dn2 == null )
- {
- return 0;
- }
-
- return -1;
- }
-
- if ( dn2 == null )
- {
- return 1;
- }
-
- return dn1.getNormName().compareTo( dn2.getNormName() );
+ return dnComparator.compare( dn1, dn2 );
}
}
Modified: directory/apacheds/branches/apacheds-value/jdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/JdbmPartition.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/apacheds-value/jdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/JdbmPartition.java?rev=1748572&r1=1748571&r2=1748572&view=diff
==============================================================================
--- directory/apacheds/branches/apacheds-value/jdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/JdbmPartition.java (original)
+++ directory/apacheds/branches/apacheds-value/jdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/JdbmPartition.java Wed Jun 15 12:29:57 2016
@@ -92,11 +92,11 @@ public class JdbmPartition extends Abstr
private static final FilenameFilter DB_FILTER = new FilenameFilter()
{
-
+ @Override
public boolean accept( File dir, String name )
{
// really important to filter master.db and master.lg files
- return ( name.endsWith( JDBM_DB_FILE_EXTN ) && !name.startsWith( "master." ) );
+ return name.endsWith( JDBM_DB_FILE_EXTN ) && !name.startsWith( "master." );
}
};
@@ -182,14 +182,12 @@ public class JdbmPartition extends Abstr
{
String msg = I18n.err( I18n.ERR_217, dn, entry );
ResultCodeEnum rc = ResultCodeEnum.OBJECT_CLASS_VIOLATION;
- LdapSchemaViolationException e = new LdapSchemaViolationException( rc, msg );
- //e.setResolvedName( entryDn );
- throw e;
+ throw new LdapSchemaViolationException( rc, msg );
}
- for ( Value<?> value : objectClass )
+ for ( Value value : objectClass )
{
- String valueStr = ( String ) value.getNormValue();
+ String valueStr = value.getValue();
if ( valueStr.equals( SchemaConstants.TOP_OC ) )
{
@@ -225,9 +223,9 @@ public class JdbmPartition extends Abstr
// We may have more than one role
Attribute adminRoles = entry.get( administrativeRoleAT );
- for ( Value<?> value : adminRoles )
+ for ( Value value : adminRoles )
{
- adminRoleIdx.add( ( String ) value.getNormValue(), id );
+ adminRoleIdx.add( value.getValue(), id );
}
// Adds only those attributes that are indexed
@@ -248,9 +246,9 @@ public class JdbmPartition extends Abstr
// here lookup by attributeId is OK since we got attributeId from
// the entry via the enumeration - it's in there as is for sure
- for ( Value<?> value : attribute )
+ for ( Value value : attribute )
{
- idx.add( value.getNormValue(), id );
+ idx.add( value.getValue(), id );
}
// Adds only those attributes that are indexed
@@ -328,7 +326,7 @@ public class JdbmPartition extends Abstr
List<String> indexDbFileNameList = Arrays.asList( partitionDir.list( DB_FILTER ) );
// then add all index objects to a list
- List<String> allIndices = new ArrayList<String>();
+ List<String> allIndices = new ArrayList<>();
// Iterate on the declared indexes, deleting the old ones
for ( Index<?, String> index : getIndexedAttributes() )
@@ -370,6 +368,7 @@ public class JdbmPartition extends Abstr
}
+ @Override
protected void doInit() throws Exception
{
if ( !initialized )
@@ -403,9 +402,9 @@ public class JdbmPartition extends Abstr
List<String> indexDbFileNameList = Arrays.asList( partitionDir.list( DB_FILTER ) );
// then add all index objects to a list
- List<String> allIndices = new ArrayList<String>();
+ List<String> allIndices = new ArrayList<>();
- List<Index<?, String>> indexToBuild = new ArrayList<Index<?, String>>();
+ List<Index<?, String>> indexToBuild = new ArrayList<>();
// Iterate on the declared indexes
for ( Index<?, String> index : getIndexedAttributes() )
@@ -458,7 +457,7 @@ public class JdbmPartition extends Abstr
// Create the master table (the table containing all the entries)
master = new JdbmMasterTable( recMan, schemaManager );
- if ( indexToBuild.size() > 0 )
+ if ( !indexToBuild.isEmpty() )
{
buildUserIndex( indexToBuild );
}
@@ -485,7 +484,7 @@ public class JdbmPartition extends Abstr
// Checking if the context entry DN is schema aware
if ( !contextEntryDn.isSchemaAware() )
{
- contextEntryDn.apply( schemaManager );
+ contextEntryDn = new Dn( schemaManager, contextEntryDn );
}
// We're only adding the entry if the two DNs are equal
@@ -554,6 +553,7 @@ public class JdbmPartition extends Abstr
*
* @throws Exception on failures to sync database files to disk
*/
+ @Override
public synchronized void sync() throws Exception
{
if ( !initialized )
@@ -618,9 +618,9 @@ public class JdbmPartition extends Abstr
if ( entryAttr != null )
{
- for ( Value<?> value : entryAttr )
+ for ( Value value : entryAttr )
{
- index.add( value.getNormValue(), id );
+ index.add( value.getValue(), id );
}
// Adds only those attributes that are indexed
@@ -690,6 +690,7 @@ public class JdbmPartition extends Abstr
/**
* {@inheritDoc}
*/
+ @Override
protected Index<?, String> convertAndInit( Index<?, String> index ) throws Exception
{
JdbmIndex<?> jdbmIndex;
@@ -730,6 +731,7 @@ public class JdbmPartition extends Abstr
/**
* {@inheritDoc}
*/
+ @Override
protected synchronized void doDestroy() throws Exception
{
MultiException errors = new MultiException( I18n.err( I18n.ERR_577 ) );
@@ -754,7 +756,7 @@ public class JdbmPartition extends Abstr
recMan.close();
LOG.debug( "Closed record manager for {} partition.", suffixDn );
}
- catch ( Throwable t )
+ catch ( IOException t )
{
LOG.error( I18n.err( I18n.ERR_127 ), t );
errors.addThrowable( t );
@@ -777,6 +779,7 @@ public class JdbmPartition extends Abstr
/**
* {@inheritDoc}
*/
+ @Override
protected final Index createSystemIndex( String oid, URI path, boolean withReverse ) throws Exception
{
LOG.debug( "Supplied index {} is not a JdbmIndex. "
@@ -864,7 +867,7 @@ public class JdbmPartition extends Abstr
if ( el != null )
{
- return ( Entry ) el.getValue();
+ return ( Entry ) el.getObjectValue();
}
return null;
@@ -879,12 +882,14 @@ public class JdbmPartition extends Abstr
return;
}
+ Entry addedEntry = entry;
+
if ( entry instanceof ClonedServerEntry )
{
- entry = ( ( ClonedServerEntry ) entry ).getOriginalEntry();
+ addedEntry = ( ( ClonedServerEntry ) entry ).getOriginalEntry();
}
- entryCache.put( new Element( id, entry ) );
+ entryCache.put( new Element( id, addedEntry ) );
}
}
Modified: directory/apacheds/branches/apacheds-value/jdbm-partition/src/test/java/org/apache/directory/server/core/partition/impl/btree/jdbm/JdbmIndexTest.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/apacheds-value/jdbm-partition/src/test/java/org/apache/directory/server/core/partition/impl/btree/jdbm/JdbmIndexTest.java?rev=1748572&r1=1748571&r2=1748572&view=diff
==============================================================================
--- directory/apacheds/branches/apacheds-value/jdbm-partition/src/test/java/org/apache/directory/server/core/partition/impl/btree/jdbm/JdbmIndexTest.java (original)
+++ directory/apacheds/branches/apacheds-value/jdbm-partition/src/test/java/org/apache/directory/server/core/partition/impl/btree/jdbm/JdbmIndexTest.java Wed Jun 15 12:29:57 2016
@@ -311,16 +311,16 @@ public class JdbmIndexTest
public void testCountOneArg() throws Exception
{
initIndex();
- assertEquals( 0, idx.count( "foo" ) );
+ assertEquals( 0, idx.count( " foo " ) );
idx.add( "bar", Strings.getUUID( 1234L ) );
- assertEquals( 0, idx.count( "foo" ) );
+ assertEquals( 0, idx.count( " foo " ) );
- idx.add( "foo", Strings.getUUID( 1234L ) );
- assertEquals( 1, idx.count( "foo" ) );
+ idx.add( " foo ", Strings.getUUID( 1234L ) );
+ assertEquals( 1, idx.count( " foo " ) );
- idx.add( "foo", Strings.getUUID( 333L ) );
- assertEquals( 2, idx.count( "foo" ) );
+ idx.add( " foo ", Strings.getUUID( 333L ) );
+ assertEquals( 2, idx.count( " foo " ) );
}
@@ -387,23 +387,23 @@ public class JdbmIndexTest
public void testLookups() throws Exception
{
initIndex();
- assertNull( idx.forwardLookup( "foo" ) );
- assertNull( idx.forwardLookup( "bar" ) );
+ assertNull( idx.forwardLookup( " foo " ) );
+ assertNull( idx.forwardLookup( " bar " ) );
- idx.add( "foo", Strings.getUUID( 0L ) );
- assertEquals( Strings.getUUID( 0L ), idx.forwardLookup( "foo" ) );
- assertTrue( idx.forward( "foo", Strings.getUUID( 0L ) ) );
-
- idx.add( "foo", Strings.getUUID( 1L ) );
- assertEquals( Strings.getUUID( 0L ), idx.forwardLookup( "foo" ) );
- assertTrue( idx.forward( "foo", Strings.getUUID( 0L ) ) );
- assertTrue( idx.forward( "foo", Strings.getUUID( 1L ) ) );
+ idx.add( " foo ", Strings.getUUID( 0L ) );
+ assertEquals( Strings.getUUID( 0L ), idx.forwardLookup( " foo " ) );
+ assertTrue( idx.forward( " foo ", Strings.getUUID( 0L ) ) );
+
+ idx.add( " foo ", Strings.getUUID( 1L ) );
+ assertEquals( Strings.getUUID( 0L ), idx.forwardLookup( " foo " ) );
+ assertTrue( idx.forward( " foo ", Strings.getUUID( 0L ) ) );
+ assertTrue( idx.forward( " foo ", Strings.getUUID( 1L ) ) );
idx.add( "bar", Strings.getUUID( 0L ) );
- assertEquals( Strings.getUUID( 0L ), idx.forwardLookup( "bar" ) );
- assertTrue( idx.forward( "bar", Strings.getUUID( 0L ) ) );
- assertTrue( idx.forward( "foo", Strings.getUUID( 0L ) ) );
- assertTrue( idx.forward( "foo", Strings.getUUID( 1L ) ) );
+ assertEquals( Strings.getUUID( 0L ), idx.forwardLookup( " bar " ) );
+ assertTrue( idx.forward( " bar ", Strings.getUUID( 0L ) ) );
+ assertTrue( idx.forward( " foo ", Strings.getUUID( 0L ) ) );
+ assertTrue( idx.forward( " foo ", Strings.getUUID( 1L ) ) );
}
@@ -411,32 +411,32 @@ public class JdbmIndexTest
public void testAddDropById() throws Exception
{
initIndex();
- assertNull( idx.forwardLookup( "foo" ) );
- assertNull( idx.forwardLookup( "bar" ) );
+ assertNull( idx.forwardLookup( " foo " ) );
+ assertNull( idx.forwardLookup( " bar " ) );
// test add/drop without adding any duplicates
- idx.add( "foo", Strings.getUUID( 0L ) );
- assertEquals( Strings.getUUID( 0L ), idx.forwardLookup( "foo" ) );
+ idx.add( " foo ", Strings.getUUID( 0L ) );
+ assertEquals( Strings.getUUID( 0L ), idx.forwardLookup( " foo " ) );
- idx.drop( "foo", Strings.getUUID( 0L ) );
- assertNull( idx.forwardLookup( "foo" ) );
+ idx.drop( " foo ", Strings.getUUID( 0L ) );
+ assertNull( idx.forwardLookup( " foo " ) );
// test add/drop with duplicates in bulk
- idx.add( "foo", Strings.getUUID( 0L ) );
- idx.add( "foo", Strings.getUUID( 1L ) );
- idx.add( "bar", Strings.getUUID( 0L ) );
- assertEquals( Strings.getUUID( 0L ), idx.forwardLookup( "foo" ) );
- assertEquals( Strings.getUUID( 0L ), idx.forwardLookup( "bar" ) );
-
- idx.drop( "foo", Strings.getUUID( 0L ) );
- idx.drop( "bar", Strings.getUUID( 0L ) );
- assertFalse( idx.forward( "bar", Strings.getUUID( 0L ) ) );
- assertFalse( idx.forward( "foo", Strings.getUUID( 0L ) ) );
-
- idx.drop( "bar", Strings.getUUID( 1L ) );
- idx.drop( "foo", Strings.getUUID( 1L ) );
- assertNull( idx.forwardLookup( "foo" ) );
- assertNull( idx.forwardLookup( "bar" ) );
+ idx.add( " foo ", Strings.getUUID( 0L ) );
+ idx.add( " foo ", Strings.getUUID( 1L ) );
+ idx.add( " bar ", Strings.getUUID( 0L ) );
+ assertEquals( Strings.getUUID( 0L ), idx.forwardLookup( " foo " ) );
+ assertEquals( Strings.getUUID( 0L ), idx.forwardLookup( " bar " ) );
+
+ idx.drop( " foo ", Strings.getUUID( 0L ) );
+ idx.drop( " bar ", Strings.getUUID( 0L ) );
+ assertFalse( idx.forward( " bar ", Strings.getUUID( 0L ) ) );
+ assertFalse( idx.forward( " foo ", Strings.getUUID( 0L ) ) );
+
+ idx.drop( " bar ", Strings.getUUID( 1L ) );
+ idx.drop( " foo ", Strings.getUUID( 1L ) );
+ assertNull( idx.forwardLookup( " foo " ) );
+ assertNull( idx.forwardLookup( " bar " ) );
assertEquals( 0, idx.count() );
}
@@ -445,34 +445,34 @@ public class JdbmIndexTest
public void testAddDropOneByOne() throws Exception
{
initIndex();
- assertNull( idx.forwardLookup( "foo" ) );
- assertNull( idx.forwardLookup( "bar" ) );
+ assertNull( idx.forwardLookup( " foo " ) );
+ assertNull( idx.forwardLookup( " bar " ) );
// test add/drop without adding any duplicates
- idx.add( "foo", Strings.getUUID( 0L ) );
- assertEquals( Strings.getUUID( 0L ), idx.forwardLookup( "foo" ) );
+ idx.add( " foo ", Strings.getUUID( 0L ) );
+ assertEquals( Strings.getUUID( 0L ), idx.forwardLookup( " foo " ) );
- idx.drop( "foo", Strings.getUUID( 0L ) );
- assertNull( idx.forwardLookup( "foo" ) );
+ idx.drop( " foo ", Strings.getUUID( 0L ) );
+ assertNull( idx.forwardLookup( " foo " ) );
// test add/drop with duplicates but one at a time
- idx.add( "foo", Strings.getUUID( 0L ) );
- idx.add( "foo", Strings.getUUID( 1L ) );
- idx.add( "bar", Strings.getUUID( 0L ) );
- assertEquals( Strings.getUUID( 0L ), idx.forwardLookup( "foo" ) );
- assertEquals( Strings.getUUID( 0L ), idx.forwardLookup( "bar" ) );
-
- idx.drop( "bar", Strings.getUUID( 0L ) );
- assertEquals( Strings.getUUID( 0L ), idx.forwardLookup( "foo" ) );
- assertFalse( idx.forward( "bar", Strings.getUUID( 0L ) ) );
-
- idx.drop( "foo", Strings.getUUID( 0L ) );
- assertEquals( Strings.getUUID( 1L ), idx.forwardLookup( "foo" ) );
- assertFalse( idx.forward( "foo", Strings.getUUID( 0L ) ) );
-
- idx.drop( "foo", Strings.getUUID( 1L ) );
- assertNull( idx.forwardLookup( "foo" ) );
- assertNull( idx.forwardLookup( "bar" ) );
+ idx.add( " foo ", Strings.getUUID( 0L ) );
+ idx.add( " foo ", Strings.getUUID( 1L ) );
+ idx.add( " bar ", Strings.getUUID( 0L ) );
+ assertEquals( Strings.getUUID( 0L ), idx.forwardLookup( " foo " ) );
+ assertEquals( Strings.getUUID( 0L ), idx.forwardLookup( " bar " ) );
+
+ idx.drop( " bar ", Strings.getUUID( 0L ) );
+ assertEquals( Strings.getUUID( 0L ), idx.forwardLookup( " foo " ) );
+ assertFalse( idx.forward( " bar ", Strings.getUUID( 0L ) ) );
+
+ idx.drop( " foo ", Strings.getUUID( 0L ) );
+ assertEquals( Strings.getUUID( 1L ), idx.forwardLookup( " foo " ) );
+ assertFalse( idx.forward( " foo ", Strings.getUUID( 0L ) ) );
+
+ idx.drop( " foo ", Strings.getUUID( 1L ) );
+ assertNull( idx.forwardLookup( " foo " ) );
+ assertNull( idx.forwardLookup( " bar " ) );
assertEquals( 0, idx.count() );
}
@@ -487,10 +487,10 @@ public class JdbmIndexTest
initIndex();
assertEquals( 0, idx.count() );
- idx.add( "foo", Strings.getUUID( 1234L ) );
+ idx.add( " foo ", Strings.getUUID( 1234L ) );
assertEquals( 1, idx.count() );
- idx.add( "foo", Strings.getUUID( 333L ) );
+ idx.add( " foo ", Strings.getUUID( 333L ) );
assertEquals( 2, idx.count() );
idx.add( "bar", Strings.getUUID( 555L ) );
@@ -510,12 +510,12 @@ public class JdbmIndexTest
cursor.next();
IndexEntry<String, String> e2 = cursor.get();
assertEquals( Strings.getUUID( 333L ), e2.getId() );
- assertEquals( "foo", e2.getKey() );
+ assertEquals( " foo ", e2.getKey() );
cursor.next();
IndexEntry<String, String> e3 = cursor.get();
assertEquals( Strings.getUUID( 1234L ), e3.getId() );
- assertEquals( "foo", e3.getKey() );
+ assertEquals( " foo ", e3.getKey() );
cursor.close();
}
Modified: directory/apacheds/branches/apacheds-value/jdbm-partition/src/test/java/org/apache/directory/server/core/partition/impl/btree/jdbm/JdbmStoreTest.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/apacheds-value/jdbm-partition/src/test/java/org/apache/directory/server/core/partition/impl/btree/jdbm/JdbmStoreTest.java?rev=1748572&r1=1748571&r2=1748572&view=diff
==============================================================================
--- directory/apacheds/branches/apacheds-value/jdbm-partition/src/test/java/org/apache/directory/server/core/partition/impl/btree/jdbm/JdbmStoreTest.java (original)
+++ directory/apacheds/branches/apacheds-value/jdbm-partition/src/test/java/org/apache/directory/server/core/partition/impl/btree/jdbm/JdbmStoreTest.java Wed Jun 15 12:29:57 2016
@@ -28,7 +28,11 @@ import static org.junit.Assert.assertTru
import static org.junit.Assert.fail;
import java.io.File;
+import java.util.ArrayList;
+import java.util.HashMap;
import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
import java.util.UUID;
import org.apache.directory.api.util.FileUtils;
@@ -63,6 +67,7 @@ import org.apache.directory.server.core.
import org.apache.directory.server.core.api.MockDirectoryService;
import org.apache.directory.server.core.api.interceptor.context.AddOperationContext;
import org.apache.directory.server.core.api.interceptor.context.LookupOperationContext;
+import org.apache.directory.server.core.api.interceptor.context.ModDnAva;
import org.apache.directory.server.core.shared.DefaultDnFactory;
import org.apache.directory.server.xdbm.Index;
import org.apache.directory.server.xdbm.IndexNotFoundException;
@@ -156,6 +161,8 @@ public class JdbmStoreTest
wkdir.delete();
wkdir = new File( wkdir.getParentFile(), getClass().getSimpleName() );
+ StoreUtils.createdExtraAttributes( schemaManager );
+
// initialize the store
store = new JdbmPartition( schemaManager, dnFactory );
store.setId( "example" );
@@ -489,7 +496,7 @@ public class JdbmStoreTest
assertEquals( Strings.getUUID( 1L ), store.getEntryId( dn ) );
assertEquals( 11, store.count() );
assertEquals( "o=Good Times Co.", store.getEntryDn( Strings.getUUID( 1L ) ).getName() );
- assertEquals( dn.getNormName(), store.getEntryDn( Strings.getUUID( 1L ) ).getNormName() );
+ assertEquals( dn.getName(), store.getEntryDn( Strings.getUUID( 1L ) ).getName() );
assertEquals( dn.getName(), store.getEntryDn( Strings.getUUID( 1L ) ).getName() );
// note that the suffix entry returns 0 for it's parent which does not exist
@@ -602,7 +609,7 @@ public class JdbmStoreTest
AddOperationContext addContext = new AddOperationContext( null, entry );
store.add( addContext );
- Rdn rdn = new Rdn( "sn=James" );
+ Rdn rdn = new Rdn( schemaManager, "sn=James" );
store.rename( dn, rdn, true, null );
@@ -629,7 +636,7 @@ public class JdbmStoreTest
AddOperationContext addContext = new AddOperationContext( null, entry );
store.add( addContext );
- Rdn rdn = new Rdn( "sn=Ja\\+es" );
+ Rdn rdn = new Rdn( schemaManager, "sn=Ja\\+es" );
store.rename( dn, rdn, true, null );
@@ -637,7 +644,7 @@ public class JdbmStoreTest
String id = store.getEntryId( dn2 );
assertNotNull( id );
Entry entry2 = store.fetch( id, dn2 );
- assertEquals( "ja+es", entry2.get( "sn" ).getString() );
+ assertEquals( "Ja+es", entry2.get( "sn" ).getString() );
}
@@ -659,9 +666,17 @@ public class JdbmStoreTest
Dn parentDn = new Dn( schemaManager, "ou=Sales,o=Good Times Co." );
- Rdn rdn = new Rdn( "cn=Ryan" );
+ Rdn rdn = new Rdn( schemaManager, "cn=Ryan" );
+
+ // The cn=Ryan RDN that will be added. The cn=Private Ryan RDN will be removed
+ Map<String, List<ModDnAva>> modDnAvas = new HashMap<>();
+
+ List<ModDnAva> modAvas = new ArrayList<>();
+ modAvas.add( new ModDnAva( ModDnAva.ModDnType.ADD, rdn.getAva()) );
+ modAvas.add( new ModDnAva( ModDnAva.ModDnType.DELETE, childDn.getRdn().getAva()) );
+ modDnAvas.put( SchemaConstants.CN_AT_OID, modAvas );
- store.moveAndRename( childDn, parentDn, rdn, childEntry, true );
+ store.moveAndRename( childDn, parentDn, rdn, modDnAvas, childEntry );
// to drop the alias indices
childDn = new Dn( schemaManager, "commonName=Jim Bean,ou=Apache,ou=Board of Directors,o=Good Times Co." );
@@ -711,16 +726,16 @@ public class JdbmStoreTest
Entry lookedup = store.fetch( store.getEntryId( dn ), dn );
- assertEquals( "WAlkeR", lookedup.get( "sn" ).get().getString() ); // before replacing
+ assertEquals( "WAlkeR", lookedup.get( "sn" ).get().getValue() ); // before replacing
lookedup = store.modify( dn, add );
- assertEquals( attribVal, lookedup.get( "sn" ).get().getString() );
+ assertEquals( attribVal, lookedup.get( "sn" ).get().getValue() );
// testing the store.modify( dn, mod, entry ) API
Modification replace = new DefaultModification( ModificationOperation.REPLACE_ATTRIBUTE, SN_AT, "JWalker" );
lookedup = store.modify( dn, replace );
- assertEquals( "JWalker", lookedup.get( "sn" ).get().getString() );
+ assertEquals( "JWalker", lookedup.get( "sn" ).get().getValue() );
assertEquals( 1, lookedup.get( "sn" ).size() );
}
@@ -779,7 +794,7 @@ public class JdbmStoreTest
assertNull( lookedup.get( "ou" ) ); // before replacing
lookedup = store.modify( dn, add );
- assertEquals( attribVal, lookedup.get( "ou" ).get().getString() );
+ assertEquals( attribVal, lookedup.get( "ou" ).get().getValue() );
}
Modified: directory/apacheds/branches/apacheds-value/kerberos-codec/src/main/java/org/apache/directory/server/kerberos/shared/keytab/Keytab.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/apacheds-value/kerberos-codec/src/main/java/org/apache/directory/server/kerberos/shared/keytab/Keytab.java?rev=1748572&r1=1748571&r2=1748572&view=diff
==============================================================================
--- directory/apacheds/branches/apacheds-value/kerberos-codec/src/main/java/org/apache/directory/server/kerberos/shared/keytab/Keytab.java (original)
+++ directory/apacheds/branches/apacheds-value/kerberos-codec/src/main/java/org/apache/directory/server/kerberos/shared/keytab/Keytab.java Wed Jun 15 12:29:57 2016
@@ -176,7 +176,7 @@ public class Keytab
* @param bytes
* @return The keytab.
*/
- static Keytab read( byte[] bytes )
+ static Keytab read( byte[] bytes ) throws IOException
{
ByteBuffer buffer = ByteBuffer.wrap( bytes );
return readKeytab( buffer );
@@ -200,7 +200,7 @@ public class Keytab
* @param buffer
* @return The keytab.
*/
- private static Keytab readKeytab( ByteBuffer buffer )
+ private static Keytab readKeytab( ByteBuffer buffer ) throws IOException
{
KeytabDecoder reader = new KeytabDecoder();
byte[] keytabVersion = reader.getKeytabVersion( buffer );
Modified: directory/apacheds/branches/apacheds-value/kerberos-codec/src/main/java/org/apache/directory/server/kerberos/shared/keytab/KeytabDecoder.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/apacheds-value/kerberos-codec/src/main/java/org/apache/directory/server/kerberos/shared/keytab/KeytabDecoder.java?rev=1748572&r1=1748571&r2=1748572&view=diff
==============================================================================
--- directory/apacheds/branches/apacheds-value/kerberos-codec/src/main/java/org/apache/directory/server/kerberos/shared/keytab/KeytabDecoder.java (original)
+++ directory/apacheds/branches/apacheds-value/kerberos-codec/src/main/java/org/apache/directory/server/kerberos/shared/keytab/KeytabDecoder.java Wed Jun 15 12:29:57 2016
@@ -20,6 +20,7 @@
package org.apache.directory.server.kerberos.shared.keytab;
+import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.nio.ByteBuffer;
import java.util.ArrayList;
@@ -57,13 +58,19 @@ class KeytabDecoder
* @param buffer
* @return The keytab entries.
*/
- List<KeytabEntry> getKeytabEntries( ByteBuffer buffer )
+ List<KeytabEntry> getKeytabEntries( ByteBuffer buffer ) throws IOException
{
List<KeytabEntry> entries = new ArrayList<KeytabEntry>();
while ( buffer.remaining() > 0 )
{
int size = buffer.getInt();
+
+ if ( ( size < 0 ) || ( size > buffer.capacity() ) )
+ {
+ throw new IOException( "Invalid size for the keytab entry" );
+ }
+
byte[] entry = new byte[size];
buffer.get( entry );
@@ -78,7 +85,7 @@ class KeytabDecoder
* Reads off a "keytab entry," which consists of a principal name,
* principal type, key version number, and key material.
*/
- private KeytabEntry getKeytabEntry( ByteBuffer buffer )
+ private KeytabEntry getKeytabEntry( ByteBuffer buffer ) throws IOException
{
String principalName = getPrincipalName( buffer );
@@ -101,7 +108,7 @@ class KeytabDecoder
* @param buffer
* @return The principal name.
*/
- private String getPrincipalName( ByteBuffer buffer )
+ private String getPrincipalName( ByteBuffer buffer ) throws IOException
{
int count = buffer.getShort();
@@ -131,7 +138,7 @@ class KeytabDecoder
/**
* Read off a 16-bit encryption type and symmetric key material.
*/
- private EncryptionKey getKeyBlock( ByteBuffer buffer )
+ private EncryptionKey getKeyBlock( ByteBuffer buffer ) throws IOException
{
int type = buffer.getShort();
byte[] keyblock = getCountedBytes( buffer );
@@ -147,9 +154,15 @@ class KeytabDecoder
* Use a prefixed 16-bit length to read off a String. Realm and name
* components are ASCII encoded text with no zero terminator.
*/
- private String getCountedString( ByteBuffer buffer )
+ private String getCountedString( ByteBuffer buffer ) throws IOException
{
int length = buffer.getShort();
+
+ if ( ( length < 0 ) || ( length > buffer.capacity() ) )
+ {
+ throw new IOException( "Invalid size for the keytab entry" );
+ }
+
byte[] data = new byte[length];
buffer.get( data );
@@ -168,9 +181,15 @@ class KeytabDecoder
/**
* Use a prefixed 16-bit length to read off raw bytes.
*/
- private byte[] getCountedBytes( ByteBuffer buffer )
+ private byte[] getCountedBytes( ByteBuffer buffer ) throws IOException
{
int length = buffer.getShort();
+
+ if ( ( length < 0 ) || ( length > buffer.capacity() ) )
+ {
+ throw new IOException( "Invalid size for the keytab entry" );
+ }
+
byte[] data = new byte[length];
buffer.get( data );
Modified: directory/apacheds/branches/apacheds-value/kerberos-codec/src/main/java/org/apache/directory/server/kerberos/shared/store/PrincipalStoreEntryModifier.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/apacheds-value/kerberos-codec/src/main/java/org/apache/directory/server/kerberos/shared/store/PrincipalStoreEntryModifier.java?rev=1748572&r1=1748571&r2=1748572&view=diff
==============================================================================
--- directory/apacheds/branches/apacheds-value/kerberos-codec/src/main/java/org/apache/directory/server/kerberos/shared/store/PrincipalStoreEntryModifier.java (original)
+++ directory/apacheds/branches/apacheds-value/kerberos-codec/src/main/java/org/apache/directory/server/kerberos/shared/store/PrincipalStoreEntryModifier.java Wed Jun 15 12:29:57 2016
@@ -27,7 +27,6 @@ import java.util.Map;
import javax.security.auth.kerberos.KerberosPrincipal;
import org.apache.directory.api.ldap.model.entry.Attribute;
-import org.apache.directory.api.ldap.model.entry.StringValue;
import org.apache.directory.api.ldap.model.entry.Value;
import org.apache.directory.api.ldap.model.exception.LdapException;
import org.apache.directory.server.i18n.I18n;
@@ -284,9 +283,9 @@ public class PrincipalStoreEntryModifier
{
Map<EncryptionType, EncryptionKey> map = new HashMap<EncryptionType, EncryptionKey>();
- for ( Value<?> val : krb5key )
+ for ( Value val : krb5key )
{
- if ( val instanceof StringValue )
+ if ( val.isHumanReadable() )
{
throw new IllegalStateException( I18n.err( I18n.ERR_626 ) );
}
Modified: directory/apacheds/branches/apacheds-value/kerberos-codec/src/main/java/org/apache/directory/shared/kerberos/components/HostAddress.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/apacheds-value/kerberos-codec/src/main/java/org/apache/directory/shared/kerberos/components/HostAddress.java?rev=1748572&r1=1748571&r2=1748572&view=diff
==============================================================================
--- directory/apacheds/branches/apacheds-value/kerberos-codec/src/main/java/org/apache/directory/shared/kerberos/components/HostAddress.java (original)
+++ directory/apacheds/branches/apacheds-value/kerberos-codec/src/main/java/org/apache/directory/shared/kerberos/components/HostAddress.java Wed Jun 15 12:29:57 2016
@@ -20,6 +20,7 @@
package org.apache.directory.shared.kerberos.components;
+import java.net.Inet6Address;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.nio.BufferOverflowException;
@@ -111,7 +112,7 @@ public class HostAddress implements Asn1
*/
public HostAddress( InetAddress internetAddress )
{
- addrType = HostAddrType.ADDRTYPE_INET;
+ addrType = ( internetAddress instanceof Inet6Address ) ? HostAddrType.ADDRTYPE_INET6 : HostAddrType.ADDRTYPE_INET;
byte[] newAddress = internetAddress.getAddress();
address = new byte[newAddress.length];
System.arraycopy( newAddress, 0, address, 0, newAddress.length );
Modified: directory/apacheds/branches/apacheds-value/ldap-client-test/src/test/java/org/apache/directory/shared/client/api/LdapConnectionTest.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/apacheds-value/ldap-client-test/src/test/java/org/apache/directory/shared/client/api/LdapConnectionTest.java?rev=1748572&r1=1748571&r2=1748572&view=diff
==============================================================================
--- directory/apacheds/branches/apacheds-value/ldap-client-test/src/test/java/org/apache/directory/shared/client/api/LdapConnectionTest.java (original)
+++ directory/apacheds/branches/apacheds-value/ldap-client-test/src/test/java/org/apache/directory/shared/client/api/LdapConnectionTest.java Wed Jun 15 12:29:57 2016
@@ -35,7 +35,7 @@ import org.apache.directory.api.ldap.cod
import org.apache.directory.api.ldap.model.constants.SchemaConstants;
import org.apache.directory.api.ldap.model.cursor.EntryCursor;
import org.apache.directory.api.ldap.model.entry.Entry;
-import org.apache.directory.api.ldap.model.entry.StringValue;
+import org.apache.directory.api.ldap.model.entry.Value;
import org.apache.directory.api.ldap.model.exception.LdapException;
import org.apache.directory.api.ldap.model.filter.EqualityNode;
import org.apache.directory.api.ldap.model.message.SearchScope;
@@ -207,7 +207,7 @@ public void testLookup() throws Exceptio
String uuid = entry.get( SchemaConstants.ENTRY_UUID_AT ).getString();
- EqualityNode<String> filter = new EqualityNode<String>( SchemaConstants.ENTRY_UUID_AT, new StringValue( uuid ) );
+ EqualityNode<String> filter = new EqualityNode<String>( SchemaConstants.ENTRY_UUID_AT, new Value( uuid ) );
EntryCursor cursor = connection.search( ADMIN_DN, filter.toString(), SearchScope.SUBTREE, "+" );
cursor.next();
Modified: directory/apacheds/branches/apacheds-value/ldap-client-test/src/test/java/org/apache/directory/shared/client/api/operations/ClientAddRequestTest.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/apacheds-value/ldap-client-test/src/test/java/org/apache/directory/shared/client/api/operations/ClientAddRequestTest.java?rev=1748572&r1=1748571&r2=1748572&view=diff
==============================================================================
--- directory/apacheds/branches/apacheds-value/ldap-client-test/src/test/java/org/apache/directory/shared/client/api/operations/ClientAddRequestTest.java (original)
+++ directory/apacheds/branches/apacheds-value/ldap-client-test/src/test/java/org/apache/directory/shared/client/api/operations/ClientAddRequestTest.java Wed Jun 15 12:29:57 2016
@@ -296,7 +296,7 @@ public class ClientAddRequestTest extend
assertNotNull( loadedEntry );
assertTrue( loadedEntry.containsAttribute( "cn" ) );
- String cn = loadedEntry.get( "cn" ).get().getString();
+ String cn = loadedEntry.get( "cn" ).get().getValue();
assertEquals( "a\\+B", cn );
}
@@ -322,7 +322,7 @@ public class ClientAddRequestTest extend
assertNotNull( loadedEntry );
assertTrue( loadedEntry.containsAttribute( "cn" ) );
- String cn = loadedEntry.get( "cn" ).get().getString();
+ String cn = loadedEntry.get( "cn" ).get().getValue();
assertEquals( "a+b", cn );
}
@@ -354,9 +354,9 @@ public class ClientAddRequestTest extend
expected.add( "c" );
int count = 0;
- for ( Value<?> value : attribute )
+ for ( Value value : attribute )
{
- String val = value.getString();
+ String val = value.getValue();
assertTrue( expected.contains( val ) );
count++;
Modified: directory/apacheds/branches/apacheds-value/ldif-partition/src/main/java/org/apache/directory/server/core/partition/ldif/LdifPartition.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/apacheds-value/ldif-partition/src/main/java/org/apache/directory/server/core/partition/ldif/LdifPartition.java?rev=1748572&r1=1748571&r2=1748572&view=diff
==============================================================================
--- directory/apacheds/branches/apacheds-value/ldif-partition/src/main/java/org/apache/directory/server/core/partition/ldif/LdifPartition.java (original)
+++ directory/apacheds/branches/apacheds-value/ldif-partition/src/main/java/org/apache/directory/server/core/partition/ldif/LdifPartition.java Wed Jun 15 12:29:57 2016
@@ -151,7 +151,10 @@ public class LdifPartition extends Abstr
throw new LdapInvalidDnException( msg );
}
- suffixDn.apply( schemaManager );
+ if ( !suffixDn.isSchemaAware() )
+ {
+ suffixDn = new Dn( schemaManager, suffixDn );
+ }
String suffixDirName = getFileName( suffixDn );
suffixDirectory = new File( partitionDir, suffixDirName );
@@ -207,7 +210,7 @@ public class LdifPartition extends Abstr
// Checking if the context entry DN is schema aware
if ( !contextEntryDn.isSchemaAware() )
{
- contextEntryDn.apply( schemaManager );
+ contextEntryDn = new Dn( schemaManager, contextEntryDn );
}
// We're only adding the entry if the two DNs are equal
@@ -501,7 +504,7 @@ public class LdifPartition extends Abstr
if ( ( entries != null ) && ( entries.length != 0 ) )
{
- LdifReader ldifReader = new LdifReader();
+ LdifReader ldifReader = new LdifReader( schemaManager );
for ( File entry : entries )
{
@@ -529,6 +532,7 @@ public class LdifPartition extends Abstr
// call add on the wrapped partition not on the self
AddOperationContext addContext = new AddOperationContext( null, serverEntry );
+
super.add( addContext );
}
}
@@ -635,11 +639,11 @@ public class LdifPartition extends Abstr
if ( at.getSyntax().isHumanReadable() )
{
- normValue = ava.getValue().getNormValue().toString();
+ normValue = ava.getValue().getValue();
}
else
{
- normValue = Strings.utf8ToString( ( byte[] ) ava.getValue().getNormValue() );
+ normValue = Strings.utf8ToString( ava.getValue().getBytes() );
}
fileName.append( atName ).append( "=" ).append( normValue );
@@ -674,7 +678,7 @@ public class LdifPartition extends Abstr
String atName = at.getName();
// Now, get the normalized value
- String normValue = rdn.getNormValue();
+ String normValue = rdn.getAva().getValue().getValue();
if ( isFirst )
{
Modified: directory/apacheds/branches/apacheds-value/ldif-partition/src/main/java/org/apache/directory/server/core/partition/ldif/SingleFileLdifPartition.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/apacheds-value/ldif-partition/src/main/java/org/apache/directory/server/core/partition/ldif/SingleFileLdifPartition.java?rev=1748572&r1=1748571&r2=1748572&view=diff
==============================================================================
--- directory/apacheds/branches/apacheds-value/ldif-partition/src/main/java/org/apache/directory/server/core/partition/ldif/SingleFileLdifPartition.java (original)
+++ directory/apacheds/branches/apacheds-value/ldif-partition/src/main/java/org/apache/directory/server/core/partition/ldif/SingleFileLdifPartition.java Wed Jun 15 12:29:57 2016
@@ -40,6 +40,7 @@ import org.apache.directory.api.ldap.mod
import org.apache.directory.api.ldap.model.ldif.LdifEntry;
import org.apache.directory.api.ldap.model.ldif.LdifReader;
import org.apache.directory.api.ldap.model.ldif.LdifUtils;
+import org.apache.directory.api.ldap.model.name.Dn;
import org.apache.directory.api.ldap.model.name.Rdn;
import org.apache.directory.api.ldap.model.schema.SchemaManager;
import org.apache.directory.api.util.Strings;
@@ -117,7 +118,10 @@ public class SingleFileLdifPartition ext
throw new LdapInvalidDnException( msg );
}
- suffixDn.apply( schemaManager );
+ if ( !suffixDn.isSchemaAware() )
+ {
+ suffixDn = new Dn( schemaManager, suffixDn );
+ }
super.doInit();
@@ -132,7 +136,7 @@ public class SingleFileLdifPartition ext
*/
private void loadEntries() throws Exception
{
- RandomAccessLdifReader parser = new RandomAccessLdifReader();
+ RandomAccessLdifReader parser = new RandomAccessLdifReader( schemaManager );
Iterator<LdifEntry> itr = parser.iterator();
@@ -182,6 +186,7 @@ public class SingleFileLdifPartition ext
/**
* {@inheritDoc}
*/
+ @Override
public void add( AddOperationContext addContext ) throws LdapException
{
synchronized ( lock )
@@ -207,6 +212,7 @@ public class SingleFileLdifPartition ext
/**
* {@inheritDoc}
*/
+ @Override
public void modify( ModifyOperationContext modifyContext ) throws LdapException
{
synchronized ( lock )
@@ -236,6 +242,7 @@ public class SingleFileLdifPartition ext
/**
* {@inheritDoc}
*/
+ @Override
public void rename( RenameOperationContext renameContext ) throws LdapException
{
synchronized ( lock )
@@ -250,6 +257,7 @@ public class SingleFileLdifPartition ext
/**
* {@inheritDoc}
*/
+ @Override
public void move( MoveOperationContext moveContext ) throws LdapException
{
synchronized ( lock )
@@ -264,6 +272,7 @@ public class SingleFileLdifPartition ext
/**
* {@inheritDoc}
*/
+ @Override
public void moveAndRename( MoveAndRenameOperationContext opContext ) throws LdapException
{
synchronized ( lock )
@@ -351,7 +360,7 @@ public class SingleFileLdifPartition ext
// Start with the root
Cursor<IndexEntry<ParentIdAndRdn, String>> cursor = rdnIdx.forwardCursor();
- IndexEntry<ParentIdAndRdn, String> startingPos = new IndexEntry<ParentIdAndRdn, String>();
+ IndexEntry<ParentIdAndRdn, String> startingPos = new IndexEntry<>();
startingPos.setKey( new ParentIdAndRdn( id, ( Rdn[] ) null ) );
cursor.before( startingPos );
int countChildren = 0;
@@ -412,6 +421,24 @@ public class SingleFileLdifPartition ext
len = ldifFile.length();
super.init();
}
+ catch ( IOException e )
+ {
+ LdapException le = new LdapException( e.getMessage(), e );
+ le.initCause( e );
+
+ throw le;
+ }
+ }
+
+
+ public RandomAccessLdifReader( SchemaManager schemaManager ) throws LdapException
+ {
+ try
+ {
+ this.schemaManager = schemaManager;
+ len = ldifFile.length();
+ super.init();
+ }
catch ( IOException e )
{
LdapException le = new LdapException( e.getMessage(), e );
Modified: directory/apacheds/branches/apacheds-value/ldif-partition/src/test/java/org/apache/directory/server/core/partition/ldif/LdifPartitionTest.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/apacheds-value/ldif-partition/src/test/java/org/apache/directory/server/core/partition/ldif/LdifPartitionTest.java?rev=1748572&r1=1748571&r2=1748572&view=diff
==============================================================================
--- directory/apacheds/branches/apacheds-value/ldif-partition/src/test/java/org/apache/directory/server/core/partition/ldif/LdifPartitionTest.java (original)
+++ directory/apacheds/branches/apacheds-value/ldif-partition/src/test/java/org/apache/directory/server/core/partition/ldif/LdifPartitionTest.java Wed Jun 15 12:29:57 2016
@@ -28,7 +28,11 @@ import static org.junit.Assert.assertTru
import static org.junit.Assert.fail;
import java.io.File;
+import java.util.ArrayList;
+import java.util.HashMap;
import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
import java.util.Set;
import java.util.UUID;
@@ -63,6 +67,8 @@ import org.apache.directory.server.core.
import org.apache.directory.server.core.api.filtering.EntryFilteringCursor;
import org.apache.directory.server.core.api.interceptor.context.AddOperationContext;
import org.apache.directory.server.core.api.interceptor.context.DeleteOperationContext;
+import org.apache.directory.server.core.api.interceptor.context.LookupOperationContext;
+import org.apache.directory.server.core.api.interceptor.context.ModDnAva;
import org.apache.directory.server.core.api.interceptor.context.MoveAndRenameOperationContext;
import org.apache.directory.server.core.api.interceptor.context.MoveOperationContext;
import org.apache.directory.server.core.api.interceptor.context.RenameOperationContext;
@@ -142,7 +148,7 @@ public class LdifPartitionTest
// initialize the partition
partition = new LdifPartition( schemaManager, dnFactory );
partition.setId( "test-ldif" );
- partition.setSuffixDn( new Dn( "ou=test,ou=system" ) );
+ partition.setSuffixDn( new Dn( schemaManager, "ou=test,ou=system" ) );
partition.setSchemaManager( schemaManager );
partition.setPartitionPath( wkdir.toURI() );
@@ -409,8 +415,7 @@ public class LdifPartitionTest
SearchOperationContext searchCtx = new SearchOperationContext( session );
- Dn dn = new Dn( "dc=test,ou=test,ou=system" );
- dn.apply( schemaManager );
+ Dn dn = new Dn( schemaManager, "dc=test,ou=test,ou=system" );
searchCtx.setDn( dn );
ExprNode filter = FilterParser.parse( schemaManager, "(ObjectClass=domain)" );
NameComponentNormalizer ncn = new ConcreteNameComponentNormalizer( schemaManager );
@@ -423,10 +428,10 @@ public class LdifPartitionTest
assertNotNull( cursor );
- Set<String> expectedDns = new HashSet<String>();
- expectedDns.add( entry1.getDn().getNormName() );
- expectedDns.add( entry2.getDn().getNormName() );
- expectedDns.add( entry3.getDn().getNormName() );
+ Set<Dn> expectedDns = new HashSet<>();
+ expectedDns.add( entry1.getDn() );
+ expectedDns.add( entry2.getDn() );
+ expectedDns.add( entry3.getDn() );
cursor.beforeFirst();
int nbRes = 0;
@@ -437,7 +442,7 @@ public class LdifPartitionTest
assertNotNull( entry );
nbRes++;
- expectedDns.remove( entry.getDn().getNormName() );
+ expectedDns.remove( entry.getDn() );
}
assertEquals( 3, nbRes );
@@ -484,7 +489,7 @@ public class LdifPartitionTest
Dn childDn1 = new Dn( schemaManager, "dc=child1,ou=test,ou=system" );
- Rdn newRdn = new Rdn( SchemaConstants.DC_AT + "=" + "renamedChild1" );
+ Rdn newRdn = new Rdn( schemaManager, SchemaConstants.DC_AT + "=" + "renamedChild1" );
RenameOperationContext renameOpCtx = new RenameOperationContext( session, childDn1, newRdn, true );
partition.rename( renameOpCtx );
@@ -511,7 +516,7 @@ public class LdifPartitionTest
Dn childDn1 = new Dn( schemaManager, "dc=child1,ou=test,ou=system" );
- Rdn newRdn = new Rdn( "dc=renamedChild1" );
+ Rdn newRdn = new Rdn( schemaManager, "dc=renamedChild1" );
RenameOperationContext renameOpCtx = new RenameOperationContext( session, childDn1, newRdn, false );
partition.rename( renameOpCtx );
@@ -532,7 +537,7 @@ public class LdifPartitionTest
// the renamed LDIF must contain the old an new Rdn attribute
String content = FileUtils.readFileToString( new File( wkdir, "ou=test,ou=system/dc=renamedchild1.ldif" ) );
assertFalse( content.contains( "dc: child1" ) );
- assertTrue( content.contains( "dc: renamedchild1" ) );
+ assertTrue( content.contains( "dc: renamedChild1" ) );
}
@@ -545,9 +550,28 @@ public class LdifPartitionTest
Dn childDn2 = new Dn( schemaManager, "dc=child2,ou=test,ou=system" );
- Rdn newRdn = new Rdn( SchemaConstants.DC_AT + "=" + "movedChild1" );
+ Rdn newRdn = new Rdn( schemaManager, "dc=movedChild1" );
MoveAndRenameOperationContext moveAndRenameOpCtx = new MoveAndRenameOperationContext( session, childDn1,
childDn2, newRdn, true );
+
+ Entry originalEntry = partition.lookup( new LookupOperationContext( session, childDn1 ) );
+ Entry modifiedEntry = originalEntry.clone();
+ modifiedEntry.remove( "dc", "child1" );
+ modifiedEntry.add( "dc", "movedChild1" );
+
+ moveAndRenameOpCtx.setEntry( originalEntry );
+ moveAndRenameOpCtx.setModifiedEntry( modifiedEntry );
+
+ // The dc=movedChild1 RDN that will be added. The dc=child1 Ryan RDN will be removed
+ Map<String, List<ModDnAva>> modDnAvas = new HashMap<>();
+
+ List<ModDnAva> modAvas = new ArrayList<>();
+ modAvas.add( new ModDnAva( ModDnAva.ModDnType.ADD, newRdn.getAva() ) );
+ modAvas.add( new ModDnAva( ModDnAva.ModDnType.DELETE, childDn1.getRdn().getAva()) );
+ modDnAvas.put( SchemaConstants.DOMAIN_COMPONENT_AT_OID, modAvas );
+
+ moveAndRenameOpCtx.setModifiedAvas( modDnAvas );
+
partition.moveAndRename( moveAndRenameOpCtx );
assertFalse( new File( wkdir, "ou=test,ou=system/dc=child1" ).exists() );
@@ -575,9 +599,29 @@ public class LdifPartitionTest
Dn childDn2 = new Dn( schemaManager, "dc=child2,ou=test,ou=system" );
- Rdn newRdn = new Rdn( "dc=movedChild1" );
+ Rdn newRdn = new Rdn( schemaManager, "dc=movedChild1" );
+
MoveAndRenameOperationContext moveAndRenameOpCtx = new MoveAndRenameOperationContext( session, childDn1,
- childDn2, newRdn, false );
+ childDn2, newRdn, true );
+
+ Entry originalEntry = partition.lookup( new LookupOperationContext( session, childDn1 ) );
+ Entry modifiedEntry = originalEntry.clone();
+ modifiedEntry.remove( "dc", "child1" );
+ modifiedEntry.add( "dc", "movedChild1" );
+
+ moveAndRenameOpCtx.setEntry( originalEntry );
+ moveAndRenameOpCtx.setModifiedEntry( modifiedEntry );
+
+ // The dc=movedChild1 RDN that will be added. The dc=child1 Ryan RDN will be removed
+ Map<String, List<ModDnAva>> modDnAvas = new HashMap<>();
+
+ List<ModDnAva> modAvas = new ArrayList<>();
+ modAvas.add( new ModDnAva( ModDnAva.ModDnType.ADD, newRdn.getAva() ) );
+ modAvas.add( new ModDnAva( ModDnAva.ModDnType.DELETE, childDn1.getRdn().getAva() ) );
+ modDnAvas.put( SchemaConstants.DOMAIN_COMPONENT_AT_OID, modAvas );
+
+ moveAndRenameOpCtx.setModifiedAvas( modDnAvas );
+
partition.moveAndRename( moveAndRenameOpCtx );
assertFalse( new File( wkdir, "ou=test,ou=system/dc=child1" ).exists() );
@@ -594,11 +638,11 @@ public class LdifPartitionTest
assertTrue( new File( wkdir,
"ou=test,ou=system/dc=child2/dc=movedchild1/dc=grandchild11/dc=greatgrandchild111.ldif" ).exists() );
- // the renamed LDIF must contain the old an new Rdn attribute
+ // the renamed LDIF must not contain the old an new Rdn attribute, because DC is single value
String content = FileUtils
.readFileToString( new File( wkdir, "ou=test,ou=system/dc=child2/dc=movedchild1.ldif" ) );
assertFalse( content.contains( "dc: child1" ) );
- assertTrue( content.contains( "dc: movedchild1" ) );
+ assertTrue( content.contains( "dc: movedChild1" ) );
}
Modified: directory/apacheds/branches/apacheds-value/ldif-partition/src/test/java/org/apache/directory/server/core/partition/ldif/SingleFileLdifPartitionSingeValueAttribute.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/apacheds-value/ldif-partition/src/test/java/org/apache/directory/server/core/partition/ldif/SingleFileLdifPartitionSingeValueAttribute.java?rev=1748572&r1=1748571&r2=1748572&view=diff
==============================================================================
--- directory/apacheds/branches/apacheds-value/ldif-partition/src/test/java/org/apache/directory/server/core/partition/ldif/SingleFileLdifPartitionSingeValueAttribute.java (original)
+++ directory/apacheds/branches/apacheds-value/ldif-partition/src/test/java/org/apache/directory/server/core/partition/ldif/SingleFileLdifPartitionSingeValueAttribute.java Wed Jun 15 12:29:57 2016
@@ -31,8 +31,10 @@ import static org.junit.Assert.fail;
import java.io.File;
import java.io.RandomAccessFile;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
+import java.util.Map;
import java.util.Set;
import java.util.UUID;
@@ -76,6 +78,7 @@ import org.apache.directory.server.core.
import org.apache.directory.server.core.api.interceptor.context.AddOperationContext;
import org.apache.directory.server.core.api.interceptor.context.DeleteOperationContext;
import org.apache.directory.server.core.api.interceptor.context.LookupOperationContext;
+import org.apache.directory.server.core.api.interceptor.context.ModDnAva;
import org.apache.directory.server.core.api.interceptor.context.ModifyOperationContext;
import org.apache.directory.server.core.api.interceptor.context.MoveAndRenameOperationContext;
import org.apache.directory.server.core.api.interceptor.context.MoveOperationContext;
@@ -111,7 +114,7 @@ public class SingleFileLdifPartitionSing
private static Entry contextEntry;
- private static LdifReader reader = new LdifReader();
+ private static LdifReader reader;
/** the file in use during the current test method's execution */
private File ldifFileInUse;
@@ -147,6 +150,8 @@ public class SingleFileLdifPartitionSing
fail( "Schema load failed : " + Exceptions.printErrors( schemaManager.getErrors() ) );
}
+ reader = new LdifReader( schemaManager );
+
defaultCSNFactory = new CsnFactory( 0 );
Dn adminDn = new Dn( schemaManager, "uid=admin,ou=system" );
@@ -238,7 +243,7 @@ public class SingleFileLdifPartitionSing
SingleFileLdifPartition partition = new SingleFileLdifPartition( schemaManager, dnFactory );
partition.setId( "test-ldif" );
partition.setPartitionPath( new File( fileName ).toURI() );
- partition.setSuffixDn( new Dn( "ou=test,ou=system" ) );
+ partition.setSuffixDn( new Dn( schemaManager, "ou=test,ou=system" ) );
partition.setSchemaManager( schemaManager );
partition.setCacheService( cacheService );
partition.initialize();
@@ -703,8 +708,7 @@ public class SingleFileLdifPartitionSing
SearchOperationContext searchCtx = new SearchOperationContext( mockSession );
- Dn dn = new Dn( "dc=test,ou=test,ou=system" );
- dn.apply( schemaManager );
+ Dn dn = new Dn( schemaManager, "dc=test,ou=test,ou=system" );
searchCtx.setDn( dn );
ExprNode filter = FilterParser.parse( schemaManager, "(ObjectClass=domain)" );
NameComponentNormalizer ncn = new ConcreteNameComponentNormalizer( schemaManager );
@@ -717,10 +721,10 @@ public class SingleFileLdifPartitionSing
assertNotNull( cursor );
- Set<String> expectedDns = new HashSet<String>();
- expectedDns.add( entry1.getDn().getNormName() );
- expectedDns.add( entry2.getDn().getNormName() );
- expectedDns.add( entry3.getDn().getNormName() );
+ Set<Dn> expectedDns = new HashSet<>();
+ expectedDns.add( entry1.getDn() );
+ expectedDns.add( entry2.getDn() );
+ expectedDns.add( entry3.getDn() );
cursor.beforeFirst();
int nbRes = 0;
@@ -731,7 +735,7 @@ public class SingleFileLdifPartitionSing
assertNotNull( entry );
nbRes++;
- expectedDns.remove( entry.getDn().getNormName() );
+ expectedDns.remove( entry.getDn() );
}
assertEquals( 3, nbRes );
@@ -846,9 +850,32 @@ public class SingleFileLdifPartitionSing
Dn childDn2 = new Dn( schemaManager, "dc=child2,ou=test,ou=system" );
- Rdn newRdn = new Rdn( SchemaConstants.DC_AT + "=" + "movedChild1" );
+ Rdn newRdn = new Rdn( schemaManager, "dc=movedChild1" );
+
MoveAndRenameOperationContext moveAndRenameOpCtx = new MoveAndRenameOperationContext( mockSession, childDn1,
childDn2, newRdn, true );
+
+ Entry originalEntry = partition.lookup( new LookupOperationContext( mockSession, childDn1 ) );
+ Entry modifiedEntry = originalEntry.clone();
+ modifiedEntry.setDn( childDn2.add( newRdn ) );
+ modifiedEntry.remove( "dc", "child1" );
+ modifiedEntry.add( "dc", "movedChild1" );
+ modifiedEntry.removeAttributes( "entryDn" );
+ modifiedEntry.removeAttributes( "entryParentId" );
+
+ moveAndRenameOpCtx.setEntry( originalEntry );
+ moveAndRenameOpCtx.setModifiedEntry( modifiedEntry );
+
+ // The dc=movedChild1 RDN that will be added. The dc=child1 Ryan RDN will be removed
+ Map<String, List<ModDnAva>> modDnAvas = new HashMap<>();
+
+ List<ModDnAva> modAvas = new ArrayList<>();
+ modAvas.add( new ModDnAva( ModDnAva.ModDnType.ADD, newRdn.getAva() ) );
+ modAvas.add( new ModDnAva( ModDnAva.ModDnType.DELETE, childDn1.getRdn().getAva() ) );
+ modDnAvas.put( SchemaConstants.DOMAIN_COMPONENT_AT_OID, modAvas );
+
+ moveAndRenameOpCtx.setModifiedAvas( modDnAvas );
+
partition.moveAndRename( moveAndRenameOpCtx );
partition = reloadPartition();
@@ -873,11 +900,34 @@ public class SingleFileLdifPartitionSing
Dn childDn2 = new Dn( schemaManager, "dc=child2,ou=test,ou=system" );
- Rdn newRdn = new Rdn( SchemaConstants.DC_AT + "=" + "movedChild1" );
+ Rdn newRdn = new Rdn( schemaManager, "dc=movedChild1" );
+
MoveAndRenameOperationContext moveAndRenameOpCtx = new MoveAndRenameOperationContext( mockSession, childDn1,
- childDn2, newRdn, false );
- partition.moveAndRename( moveAndRenameOpCtx );
+ childDn2, newRdn, true );
+
+ Entry originalEntry = partition.lookup( new LookupOperationContext( mockSession, childDn1 ) );
+ Entry modifiedEntry = originalEntry.clone();
+ modifiedEntry.setDn( childDn2.add( newRdn ) );
+ modifiedEntry.remove( "dc", "child1" );
+ modifiedEntry.add( "dc", "movedChild1" );
+ modifiedEntry.removeAttributes( "entryDn" );
+ modifiedEntry.removeAttributes( "entryParentId" );
+
+ moveAndRenameOpCtx.setEntry( originalEntry );
+ moveAndRenameOpCtx.setModifiedEntry( modifiedEntry );
+
+ // The dc=movedChild1 RDN that will be added. The dc=child1 Ryan RDN will be removed
+ Map<String, List<ModDnAva>> modDnAvas = new HashMap<>();
+
+ List<ModDnAva> modAvas = new ArrayList<>();
+ modAvas.add( new ModDnAva( ModDnAva.ModDnType.ADD, newRdn.getAva() ) );
+ modAvas.add( new ModDnAva( ModDnAva.ModDnType.DELETE, childDn1.getRdn().getAva() ) );
+ modDnAvas.put( SchemaConstants.DOMAIN_COMPONENT_AT_OID, modAvas );
+
+ moveAndRenameOpCtx.setModifiedAvas( modDnAvas );
+ partition.moveAndRename( moveAndRenameOpCtx );
+
partition = reloadPartition();
childDn1 = new Dn( schemaManager, "dc=movedChild1,dc=child2,ou=test,ou=system" );
Modified: directory/apacheds/branches/apacheds-value/ldif-partition/src/test/java/org/apache/directory/server/core/partition/ldif/SingleFileLdifPartitionTest.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/apacheds-value/ldif-partition/src/test/java/org/apache/directory/server/core/partition/ldif/SingleFileLdifPartitionTest.java?rev=1748572&r1=1748571&r2=1748572&view=diff
==============================================================================
--- directory/apacheds/branches/apacheds-value/ldif-partition/src/test/java/org/apache/directory/server/core/partition/ldif/SingleFileLdifPartitionTest.java (original)
+++ directory/apacheds/branches/apacheds-value/ldif-partition/src/test/java/org/apache/directory/server/core/partition/ldif/SingleFileLdifPartitionTest.java Wed Jun 15 12:29:57 2016
@@ -31,8 +31,10 @@ import static org.junit.Assert.fail;
import java.io.File;
import java.io.RandomAccessFile;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
+import java.util.Map;
import java.util.Set;
import java.util.UUID;
@@ -76,6 +78,7 @@ import org.apache.directory.server.core.
import org.apache.directory.server.core.api.interceptor.context.AddOperationContext;
import org.apache.directory.server.core.api.interceptor.context.DeleteOperationContext;
import org.apache.directory.server.core.api.interceptor.context.LookupOperationContext;
+import org.apache.directory.server.core.api.interceptor.context.ModDnAva;
import org.apache.directory.server.core.api.interceptor.context.ModifyOperationContext;
import org.apache.directory.server.core.api.interceptor.context.MoveAndRenameOperationContext;
import org.apache.directory.server.core.api.interceptor.context.MoveOperationContext;
@@ -109,7 +112,7 @@ public class SingleFileLdifPartitionTest
private static Entry contextEntry;
- private static LdifReader reader = new LdifReader();
+ private static LdifReader reader;
/** the file in use during the current test method's execution */
private File ldifFileInUse;
@@ -145,6 +148,8 @@ public class SingleFileLdifPartitionTest
fail( "Schema load failed : " + Exceptions.printErrors( schemaManager.getErrors() ) );
}
+ reader = new LdifReader( schemaManager );
+
defaultCSNFactory = new CsnFactory( 0 );
Dn adminDn = new Dn( schemaManager, "uid=admin,ou=system" );
@@ -236,7 +241,7 @@ public class SingleFileLdifPartitionTest
SingleFileLdifPartition partition = new SingleFileLdifPartition( schemaManager, dnFactory );
partition.setId( "test-ldif" );
partition.setPartitionPath( new File( fileName ).toURI() );
- partition.setSuffixDn( new Dn( "ou=test,ou=system" ) );
+ partition.setSuffixDn( new Dn( schemaManager, "ou=test,ou=system" ) );
partition.setSchemaManager( schemaManager );
partition.setCacheService( cacheService );
partition.initialize();
@@ -701,8 +706,7 @@ public class SingleFileLdifPartitionTest
SearchOperationContext searchCtx = new SearchOperationContext( mockSession );
- Dn dn = new Dn( "cn=test,ou=test,ou=system" );
- dn.apply( schemaManager );
+ Dn dn = new Dn( schemaManager, "cn=test,ou=test,ou=system" );
searchCtx.setDn( dn );
ExprNode filter = FilterParser.parse( schemaManager, "(ObjectClass=person)" );
NameComponentNormalizer ncn = new ConcreteNameComponentNormalizer( schemaManager );
@@ -715,10 +719,10 @@ public class SingleFileLdifPartitionTest
assertNotNull( cursor );
- Set<String> expectedDns = new HashSet<String>();
- expectedDns.add( entry1.getDn().getNormName() );
- expectedDns.add( entry2.getDn().getNormName() );
- expectedDns.add( entry3.getDn().getNormName() );
+ Set<Dn> expectedDns = new HashSet<>();
+ expectedDns.add( entry1.getDn() );
+ expectedDns.add( entry2.getDn() );
+ expectedDns.add( entry3.getDn() );
cursor.beforeFirst();
int nbRes = 0;
@@ -729,7 +733,7 @@ public class SingleFileLdifPartitionTest
assertNotNull( entry );
nbRes++;
- expectedDns.remove( entry.getDn().getNormName() );
+ expectedDns.remove( entry.getDn() );
}
assertEquals( 3, nbRes );
@@ -843,9 +847,28 @@ public class SingleFileLdifPartitionTest
Dn childDn2 = new Dn( schemaManager, "cn=child2,ou=test,ou=system" );
- Rdn newRdn = new Rdn( SchemaConstants.CN_AT + "=" + "movedChild1" );
+ Rdn newRdn = new Rdn( schemaManager, "cn=movedChild1" );
MoveAndRenameOperationContext moveAndRenameOpCtx = new MoveAndRenameOperationContext( mockSession, childDn1,
childDn2, newRdn, true );
+
+ Entry originalEntry = partition.lookup( new LookupOperationContext( mockSession, childDn1 ) );
+ Entry modifiedEntry = originalEntry.clone();
+ modifiedEntry.remove( "cn", "child1" );
+ modifiedEntry.add( "cn", "movedChild1" );
+
+ moveAndRenameOpCtx.setEntry( originalEntry );
+ moveAndRenameOpCtx.setModifiedEntry( modifiedEntry );
+
+ // The dc=movedChild1 RDN that will be added. The dc=child1 Ryan RDN will be removed
+ Map<String, List<ModDnAva>> modDnAvas = new HashMap<>();
+
+ List<ModDnAva> modAvas = new ArrayList<>();
+ modAvas.add( new ModDnAva( ModDnAva.ModDnType.ADD, newRdn.getAva() ) );
+ modAvas.add( new ModDnAva( ModDnAva.ModDnType.DELETE, childDn1.getRdn().getAva()) );
+ modDnAvas.put( SchemaConstants.CN_AT_OID, modAvas );
+
+ moveAndRenameOpCtx.setModifiedAvas( modDnAvas );
+
partition.moveAndRename( moveAndRenameOpCtx );
partition = reloadPartition();
@@ -870,9 +893,27 @@ public class SingleFileLdifPartitionTest
Dn childDn2 = new Dn( schemaManager, "cn=child2,ou=test,ou=system" );
- Rdn newRdn = new Rdn( SchemaConstants.CN_AT + "=" + "movedChild1" );
+ Rdn newRdn = new Rdn( schemaManager, "cn=movedChild1" );
+
MoveAndRenameOperationContext moveAndRenameOpCtx = new MoveAndRenameOperationContext( mockSession, childDn1,
- childDn2, newRdn, false );
+ childDn2, newRdn, true );
+
+ Entry originalEntry = partition.lookup( new LookupOperationContext( mockSession, childDn1 ) );
+ Entry modifiedEntry = originalEntry.clone();
+ modifiedEntry.add( "cn", "movedChild1" );
+
+ moveAndRenameOpCtx.setEntry( originalEntry );
+ moveAndRenameOpCtx.setModifiedEntry( modifiedEntry );
+
+ // The dc=movedChild1 RDN that will be added. The dc=child1 Ryan RDN will be removed
+ Map<String, List<ModDnAva>> modDnAvas = new HashMap<>();
+
+ List<ModDnAva> modAvas = new ArrayList<>();
+ modAvas.add( new ModDnAva( ModDnAva.ModDnType.ADD, newRdn.getAva() ) );
+ modDnAvas.put( SchemaConstants.CN_AT_OID, modAvas );
+
+ moveAndRenameOpCtx.setModifiedAvas( modDnAvas );
+
partition.moveAndRename( moveAndRenameOpCtx );
partition = reloadPartition();