partition.saveContextCsn( partition.beginReadTransaction() ); partition.sync();
String key = partition.getSuffixDn().getNormName(); if ( !partition.isInitialized() ) partition.setCacheService( directoryService.getCacheService() ); partition.initialize(); Dn partitionSuffix = partition.getSuffixDn(); throw new LdapOtherException( I18n.err( I18n.ERR_267, partition.getId() ) ); partitionLookupTree.add( partition.getSuffixDn(), partition );
/** * {@inheritDoc} */ @Override protected void doInit() throws LdapException { if ( !initialized ) { // ----------------------------------------------------------------------- // Load apachemeta schema from within the ldap-schema Jar with all the // schema it depends on. This is a minimal mandatory set of schemas. // ----------------------------------------------------------------------- wrapped.setId( SCHEMA_ID ); wrapped.setSuffixDn( schemaDN ); wrapped.setSchemaManager( schemaManager ); try { wrapped.initialize(); synchronizer = new RegistrySynchronizerAdaptor( schemaManager ); } catch ( Exception e ) { LOG.error( I18n.err( I18n.ERR_90 ), e ); throw new RuntimeException( e ); } schemaModificationDN = new Dn( schemaManager, SchemaConstants.SCHEMA_MODIFICATIONS_DN ); } }
private Partition createPartition(String id, String suffix) throws LdapInvalidDnException { Partition partition = new AvlPartition(service.getSchemaManager()); partition.setId(id); partition.setSuffixDn(new Dn(suffix)); return partition; }
/** * Try to repair the partitions. Precondition is that this service was started before. * * @param instanceLayout the on disk location's layout of the intance to be repaired * @throws Exception If the repair failed */ public void repair( InstanceLayout instanceLayout ) throws Exception { File partitionsDir = instanceLayout.getPartitionsDirectory(); System.out.println( "Repairing partition dir " + partitionsDir.getAbsolutePath() ); Set<? extends Partition> partitions = getDirectoryService().getPartitions(); // Iterate on the partitions to repair them for ( Partition partition : partitions ) { try { partition.repair(); } catch ( Exception e ) { System.out.println( "Failed to repair the partition " + partition.getId() ); e.printStackTrace(); return; } } }
String partitionSuffix = partition.getSuffixDn().getNormName(); partitionLookupTree.remove( partition.getSuffixDn() ); partition.destroy( partition.beginReadTransaction() );
searchOperationContext.setPartition( partition ); try ( PartitionTxn partitionTxn = partition.beginReadTransaction() )
Dn contextDn = partition.getSuffixDn(); PartitionTxn partitionTxn = partition.beginReadTransaction(); HasEntryOperationContext hasEntryContext = new HasEntryOperationContext( searchContext.getSession(), contextDn ); if ( partition.hasEntry( hasEntryContext ) ) cursors.add( partition.search( searchContext ) ); PartitionTxn partitionTxn = partition.beginReadTransaction(); Dn contextDn = partition.getSuffixDn(); HasEntryOperationContext hasEntryContext = new HasEntryOperationContext( searchContext.getSession(), contextDn ); searchContext.setTransaction( partitionTxn ); if ( partition.hasEntry( hasEntryContext ) ) EntryFilteringCursor cursor = partition.search( searchContext );
try ( PartitionTxn partitionTxn = systemPartition.beginReadTransaction() ) entry = systemPartition.lookup( lookupContext ); partitionTxn = systemPartition.beginWriteTransaction(); addContext.setTransaction( partitionTxn ); systemPartition.add( addContext ); partitionTxn.commit();
public void addPartition( Partition partition ) throws Exception { partition.setSchemaManager( schemaManager ); try { // can be null when called before starting up if ( partitionNexus != null ) { partitionNexus.addContextPartition( partition ); } } catch ( LdapException le ) { // We've got an exception, we cannot add the partition to the partitions throw le; } // Now, add the partition to the set of managed partitions partitions.add( partition ); }
Cursor<Entry> cursor = session.search( partition.getSuffixDn(), SearchScope.SUBTREE, filter, AliasDerefMode.NEVER_DEREF_ALIASES, MANDATORY_ENTRY_ATOP_AT ); cursor.beforeFirst(); modifyContext.setDn( entry.getDn() ); modifyContext.setModItems( mods ); partition.modify( modifyContext );
/** * {@inheritDoc} */ @Override public Dn getSuffixDn( Dn dn ) throws LdapException { Partition partition = getPartition( dn ); return partition.getSuffixDn(); }
LookupOperationContext loc = new LookupOperationContext( getAdminSession(), systemPartition.getSuffixDn(), SchemaConstants.ALL_ATTRIBUTES_ARRAY ); Entry entry = systemPartition.lookup( loc );
schemaPartition.initialize(); partitions.add( schemaPartition ); systemPartition.setCacheService( cacheService ); systemPartition.getSuffixDn().apply( schemaManager ); .getSuffixDn().getName(); partitionNexus.getRootDse( null ).add( SchemaConstants.CHANGELOG_CONTEXT_AT, clSuffix );
/** * {@inheritDoc} */ public void modify( ModifyOperationContext modifyContext ) throws LdapException { Entry entry = modifyContext.getEntry(); if ( entry == null ) { LookupOperationContext lookupCtx = new LookupOperationContext( modifyContext.getSession(), modifyContext.getDn() ); lookupCtx.setPartition( this ); lookupCtx.setTransaction( modifyContext.getTransaction() ); entry = wrapped.lookup( lookupCtx ); modifyContext.setEntry( entry ); } Entry targetEntry = SchemaUtils.getTargetEntry( modifyContext.getModItems(), entry ); boolean cascade = modifyContext.hasRequestControl( Cascade.OID ); boolean hasModification = synchronizer.modify( modifyContext, targetEntry, cascade ); if ( hasModification ) { wrapped.modify( modifyContext ); } if ( !modifyContext.getDn().equals( schemaModificationDN ) ) { updateSchemaModificationAttributes( modifyContext ); } }
if (!session.exists(rodaPartition.getSuffixDn())) { rodaPartition.repair();
String contextCsn; try ( PartitionTxn partitionTxn = partition.beginReadTransaction() ) contextCsn = partition.getContextCsn( partitionTxn ); try ( PartitionTxn partitionTxn = partition.beginReadTransaction() )
private void initializeSystemPartition() throws Exception { Partition system = getSystemPartition(); // Add root context entry for system partition Dn systemSuffixDn = getDnFactory().create( ServerDNConstants.SYSTEM_DN ); CoreSession adminSession = getAdminSession(); if ( !system.hasEntry( new HasEntryOperationContext( adminSession, systemSuffixDn ) ) ) { Entry systemEntry = new DefaultEntry( schemaManager, systemSuffixDn ); // Add the ObjectClasses systemEntry.put( SchemaConstants.OBJECT_CLASS_AT, SchemaConstants.TOP_OC, SchemaConstants.ORGANIZATIONAL_UNIT_OC, SchemaConstants.EXTENSIBLE_OBJECT_OC ); // Add some operational attributes systemEntry.put( SchemaConstants.CREATORS_NAME_AT, ServerDNConstants.ADMIN_SYSTEM_DN ); systemEntry.put( SchemaConstants.CREATE_TIMESTAMP_AT, DateUtils.getGeneralizedTime() ); systemEntry.add( SchemaConstants.ENTRY_CSN_AT, getCSN().toString() ); systemEntry.add( SchemaConstants.ENTRY_UUID_AT, UUID.randomUUID().toString() ); systemEntry.put( DnUtils.getRdnAttributeType( ServerDNConstants.SYSTEM_DN ), DnUtils .getRdnValue( ServerDNConstants.SYSTEM_DN ) ); AddOperationContext addOperationContext = new AddOperationContext( adminSession, systemEntry ); system.add( addOperationContext ); } }
File workingDirectory = ...; Partition partition = new JdbmPartition(); partition.setId(...); partition.setSuffix(...); DirectoryService directoryService = new DefaultDirectoryService(); directoryService.setWorkingDirectory(workingDirectory); directoryService.addPartition(partition); LdapService ldapService = new LdapService(); ldapService.setSocketAcceptor(new SocketAcceptor(null)); ldapService.setIpPort(...); ldapService.setDirectoryService(directoryService); directoryService.startup(); ldapService.start();
/** * {@inheritDoc} */ public Entry lookup( LookupOperationContext lookupContext ) throws LdapException { return wrapped.lookup( lookupContext ); }