opendj3-server-dev/src/guitools/org/opends/guitools/controlpanel/util/ReadOnlyConfigFileHandler.java
@@ -441,28 +441,7 @@ /** {@inheritDoc} */ @Override public boolean supportsBackup() { return false; } /** {@inheritDoc} */ @Override public boolean supportsLDIFExport() { return false; } /** {@inheritDoc} */ @Override public boolean supportsLDIFImport() { return false; } /** {@inheritDoc} */ @Override public boolean supportsRestore() public boolean supports(BackendOperation backendOperation) { return false; } opendj3-server-dev/src/server/org/opends/server/api/Backend.java
@@ -604,14 +604,36 @@ return supportedFeatures != null && supportedFeatures.contains(featureOID); } /** Enumeration of optional backend operations. */ public static enum BackendOperation { /** Indicates whether this backend supports indexing attributes to speed up searches. */ INDEXING, /** Indicates whether this backend supports exporting the data it contains to an LDIF file. */ LDIF_EXPORT, /** Indicates whether this backend supports importing its data from an LDIF file. */ LDIF_IMPORT, /** * Indicates whether this backend provides a mechanism to export the * data it contains to an LDIF file. * * @return {@code true} if this backend provides an LDIF export * mechanism, or {@code false} if not. * Indicates whether this backend provides a backup mechanism of any kind. This method is used * by the backup process when backing up all backends to determine whether this backend is one * that should be skipped. It should only return {@code true} for backends that it is not * possible to archive directly (e.g., those that don't store their data locally, but rather * pass through requests to some other repository). */ public abstract boolean supportsLDIFExport(); BACKUP, /** Indicates whether this backend can restore a backup. */ RESTORE; } /** * Indicates whether this backend supports the provided backend operation. * * @param backendOperation * the backend operation * @return {@code true} if this backend supports the provided backend operation, {@code false} * otherwise. */ public abstract boolean supports(BackendOperation backendOperation); /** * Exports the contents of this backend to LDIF. This method should @@ -628,15 +650,6 @@ public abstract void exportLDIF(LDIFExportConfig exportConfig) throws DirectoryException; /** * Indicates whether this backend provides a mechanism to import its * data from an LDIF file. * * @return {@code true} if this backend provides an LDIF import * mechanism, or {@code false} if not. */ public abstract boolean supportsLDIFImport(); /** * Imports information from an LDIF file into this backend. This * method should only be called if {@code supportsLDIFImport} * returns {@code true}. Note that the server will not explicitly @@ -654,16 +667,6 @@ throws DirectoryException; /** * Indicates whether this backend supports indexing attributes to speed up searches. * * @return {@code true} if this backend supports indexing attributes, {@code false} otherwise */ public boolean supportsIndexing() { return false; } /** * Verify the integrity of the backend instance. * * @param verifyConfig @@ -706,20 +709,6 @@ } /** * Indicates whether this backend provides a backup mechanism of any * kind. This method is used by the backup process when backing up * all backends to determine whether this backend is one that should * be skipped. It should only return {@code true} for backends that * it is not possible to archive directly (e.g., those that don't * store their data locally, but rather pass through requests to * some other repository). * * @return {@code true} if this backend provides any kind of backup * mechanism, or {@code false} if it does not. */ public abstract boolean supportsBackup(); /** * Creates a backup of the contents of this backend in a form that * may be restored at a later date if necessary. This method should * only be called if {@code supportsBackup} returns {@code true}. @@ -754,15 +743,6 @@ throws DirectoryException; /** * Indicates whether this backend provides a mechanism to restore a * backup. * * @return {@code true} if this backend provides a mechanism for * restoring backups, or {@code false} if not. */ public abstract boolean supportsRestore(); /** * Restores a backup of the contents of this backend. This method * should only be called if {@code supportsRestore} returns * {@code true}. Note that the server will not explicitly opendj3-server-dev/src/server/org/opends/server/backends/BackupBackend.java
@@ -28,6 +28,7 @@ import static org.opends.messages.BackendMessages.*; import static org.opends.server.config.ConfigConstants.*; import static org.opends.server.schema.BooleanSyntax.*; import static org.opends.server.util.ServerConstants.*; import static org.opends.server.util.StaticUtils.*; @@ -52,7 +53,6 @@ import org.opends.server.core.ModifyDNOperation; import org.opends.server.core.ModifyOperation; import org.opends.server.core.SearchOperation; import org.opends.server.schema.BooleanSyntax; import org.opends.server.schema.GeneralizedTimeSyntax; import org.opends.server.types.*; @@ -558,14 +558,10 @@ LinkedHashMap<AttributeType,List<Attribute>> userAttrs = new LinkedHashMap<AttributeType,List<Attribute>>(3); ArrayList<Attribute> attrList = new ArrayList<Attribute>(1); attrList.add(Attributes.create(t, v)); userAttrs.put(t, attrList); userAttrs.put(t, asList(t, v)); t = DirectoryServer.getAttributeType(ATTR_BACKUP_BACKEND_DN, true); attrList = new ArrayList<Attribute>(1); attrList.add(Attributes.create(t, ByteString.valueOf(backupDirectory.getConfigEntryDN().toString()))); userAttrs.put(t, attrList); userAttrs.put(t, asList(t, ByteString.valueOf(backupDirectory.getConfigEntryDN().toString()))); Entry e = new Entry(entryDN, ocMap, userAttrs, opAttrs); e.processVirtualAttributes(); @@ -590,28 +586,24 @@ throws DirectoryException { // First, get the backup ID from the entry DN. AttributeType idType = DirectoryServer.getAttributeType(ATTR_BACKUP_ID, true); AttributeType idType = DirectoryServer.getAttributeType(ATTR_BACKUP_ID, true); ByteString idValue = entryDN.rdn().getAttributeValue(idType); if (idValue == null) { LocalizableMessage message = ERR_BACKUP_NO_BACKUP_ID_IN_DN.get(entryDN); throw new DirectoryException(ResultCode.CONSTRAINT_VIOLATION, message); throw newConstraintViolation(ERR_BACKUP_NO_BACKUP_ID_IN_DN.get(entryDN)); } String backupID = idValue.toString(); // Next, get the backup directory from the parent DN. DN parentDN = entryDN.getParentDNInSuffix(); if (parentDN == null) { LocalizableMessage message = ERR_BACKUP_NO_BACKUP_PARENT_DN.get(entryDN); throw new DirectoryException(ResultCode.CONSTRAINT_VIOLATION, message); throw newConstraintViolation(ERR_BACKUP_NO_BACKUP_PARENT_DN.get(entryDN)); } AttributeType t = DirectoryServer.getAttributeType( ATTR_BACKUP_DIRECTORY_PATH, true); ByteString v = parentDN.rdn().getAttributeValue(t); if (v == null) { LocalizableMessage message = ERR_BACKUP_NO_BACKUP_DIR_IN_DN.get(entryDN); throw new DirectoryException(ResultCode.CONSTRAINT_VIOLATION, message); throw newConstraintViolation(ERR_BACKUP_NO_BACKUP_DIR_IN_DN.get(entryDN)); } BackupDirectory backupDirectory; @@ -620,8 +612,7 @@ } catch (ConfigException ce) { logger.traceException(ce); LocalizableMessage message = ERR_BACKUP_INVALID_BACKUP_DIRECTORY.get(entryDN, ce.getMessageObject()); throw new DirectoryException(ResultCode.CONSTRAINT_VIOLATION, message); throw newConstraintViolation(ERR_BACKUP_INVALID_BACKUP_DIRECTORY.get(entryDN, ce.getMessageObject())); } catch (Exception e) { logger.traceException(e); @@ -655,40 +646,21 @@ LinkedHashMap<AttributeType, List<Attribute>> userAttrs = new LinkedHashMap<AttributeType, List<Attribute>>(); ArrayList<Attribute> attrList = new ArrayList<Attribute>(1); attrList.add(Attributes.create(idType, idValue)); userAttrs.put(idType, attrList); userAttrs.put(idType, asList(idType, idValue)); backupInfo.getBackupDirectory(); attrList = new ArrayList<Attribute>(1); attrList.add(Attributes.create(t, v)); userAttrs.put(t, attrList); userAttrs.put(t, asList(t, v)); Date backupDate = backupInfo.getBackupDate(); if (backupDate != null) { t = DirectoryServer.getAttributeType(ATTR_BACKUP_DATE, true); attrList = new ArrayList<Attribute>(1); attrList.add(Attributes.create(t, ByteString.valueOf(GeneralizedTimeSyntax.format(backupDate)))); userAttrs.put(t, attrList); userAttrs.put(t, asList(t, ByteString.valueOf(GeneralizedTimeSyntax.format(backupDate)))); } t = DirectoryServer.getAttributeType(ATTR_BACKUP_COMPRESSED, true); attrList = new ArrayList<Attribute>(1); attrList.add(Attributes.create(t, BooleanSyntax .createBooleanValue(backupInfo.isCompressed()))); userAttrs.put(t, attrList); t = DirectoryServer.getAttributeType(ATTR_BACKUP_ENCRYPTED, true); attrList = new ArrayList<Attribute>(1); attrList.add(Attributes.create(t, BooleanSyntax .createBooleanValue(backupInfo.isEncrypted()))); userAttrs.put(t, attrList); t = DirectoryServer.getAttributeType(ATTR_BACKUP_INCREMENTAL, true); attrList = new ArrayList<Attribute>(1); attrList.add(Attributes.create(t, BooleanSyntax .createBooleanValue(backupInfo.isIncremental()))); userAttrs.put(t, attrList); putBoolean(userAttrs, ATTR_BACKUP_COMPRESSED, backupInfo.isCompressed()); putBoolean(userAttrs, ATTR_BACKUP_ENCRYPTED, backupInfo.isEncrypted()); putBoolean(userAttrs, ATTR_BACKUP_INCREMENTAL, backupInfo.isIncremental()); HashSet<String> dependencies = backupInfo.getDependencies(); if (dependencies != null && !dependencies.isEmpty()) { @@ -697,34 +669,26 @@ for (String s : dependencies) { builder.add(s); } attrList = new ArrayList<Attribute>(1); ArrayList<Attribute> attrList = new ArrayList<Attribute>(1); attrList.add(builder.toAttribute()); userAttrs.put(t, attrList); } byte[] signedHash = backupInfo.getSignedHash(); if (signedHash != null) { t = DirectoryServer.getAttributeType(ATTR_BACKUP_SIGNED_HASH, true); attrList = new ArrayList<Attribute>(1); attrList.add(Attributes.create(t, ByteString.wrap(signedHash))); userAttrs.put(t, attrList); putByteString(userAttrs, ATTR_BACKUP_SIGNED_HASH, signedHash); } byte[] unsignedHash = backupInfo.getUnsignedHash(); if (unsignedHash != null) { t = DirectoryServer.getAttributeType(ATTR_BACKUP_UNSIGNED_HASH, true); attrList = new ArrayList<Attribute>(1); attrList.add(Attributes.create(t, ByteString.wrap(unsignedHash))); userAttrs.put(t, attrList); putByteString(userAttrs, ATTR_BACKUP_UNSIGNED_HASH, unsignedHash); } HashMap<String, String> properties = backupInfo.getBackupProperties(); if (properties != null && !properties.isEmpty()) { for (Map.Entry<String, String> e : properties.entrySet()) { t = DirectoryServer.getAttributeType(toLowerCase(e.getKey()), true); attrList = new ArrayList<Attribute>(1); attrList.add(Attributes.create(t, ByteString.valueOf(e.getValue()))); userAttrs.put(t, attrList); userAttrs.put(t, asList(t, ByteString.valueOf(e.getValue()))); } } @@ -733,7 +697,30 @@ return e; } private void putByteString(LinkedHashMap<AttributeType, List<Attribute>> userAttrs, String attrName, byte[] value) { AttributeType t; t = DirectoryServer.getAttributeType(attrName, true); userAttrs.put(t, asList(t, ByteString.wrap(value))); } private void putBoolean(LinkedHashMap<AttributeType, List<Attribute>> attrsMap, String attrName, boolean value) { AttributeType t = DirectoryServer.getAttributeType(attrName, true); attrsMap.put(t, asList(t, createBooleanValue(value))); } private ArrayList<Attribute> asList(AttributeType attrType, ByteString value) { final ArrayList<Attribute> attrList = new ArrayList<Attribute>(1); attrList.add(Attributes.create(attrType, value)); return attrList; } private DirectoryException newConstraintViolation(LocalizableMessage message) { return new DirectoryException(ResultCode.CONSTRAINT_VIOLATION, message); } /** {@inheritDoc} */ @Override @@ -841,38 +828,8 @@ if (scope != SearchScope.SINGLE_LEVEL) { List<Attribute> attrList = backupDirEntry.getAttribute(backupPathType); if (attrList != null && !attrList.isEmpty()) { for (ByteString v : attrList.get(0)) { try { File subtreeDir = new File(v.toString()); BackupDirectory backupDirectory = backupDirectories.get(subtreeDir).getBackupDirectory(); AttributeType idType = DirectoryServer.getAttributeType(ATTR_BACKUP_ID, true); for (String backupID : backupDirectory.getBackups().keySet()) { DN backupEntryDN = makeChildDN(backupDirDN, idType, backupID); Entry backupEntry = getBackupEntry(backupEntryDN); if (filter.matchesEntry(backupEntry)) { searchOperation.returnEntry(backupEntry, null); } } } catch (Exception e) { logger.traceException(e); continue; } } } List<Attribute> attrList = backupDirEntry.getAttribute(backupPathType); returnEntries(searchOperation, backupDirDN, filter, attrList); } } } @@ -893,36 +850,7 @@ AttributeType t = DirectoryServer.getAttributeType(ATTR_BACKUP_DIRECTORY_PATH, true); List<Attribute> attrList = backupDirEntry.getAttribute(t); if (attrList != null && !attrList.isEmpty()) { for (ByteString v : attrList.get(0)) { try { File dir = new File(v.toString()); BackupDirectory backupDirectory = backupDirectories.get(dir).getBackupDirectory(); AttributeType idType = DirectoryServer.getAttributeType(ATTR_BACKUP_ID, true); for (String backupID : backupDirectory.getBackups().keySet()) { DN backupEntryDN = makeChildDN(baseDN, idType, backupID); Entry backupEntry = getBackupEntry(backupEntryDN); if (filter.matchesEntry(backupEntry)) { searchOperation.returnEntry(backupEntry, null); } } } catch (Exception e) { logger.traceException(e); continue; } } } returnEntries(searchOperation, baseDN, filter, attrList); } } else @@ -952,7 +880,37 @@ } } private void returnEntries(SearchOperation searchOperation, DN baseDN, SearchFilter filter, List<Attribute> attrList) { if (attrList != null && !attrList.isEmpty()) { for (ByteString v : attrList.get(0)) { try { File dir = new File(v.toString()); BackupDirectory backupDirectory = backupDirectories.get(dir).getBackupDirectory(); AttributeType idType = DirectoryServer.getAttributeType(ATTR_BACKUP_ID, true); for (String backupID : backupDirectory.getBackups().keySet()) { DN backupEntryDN = makeChildDN(baseDN, idType, backupID); Entry backupEntry = getBackupEntry(backupEntryDN); if (filter.matchesEntry(backupEntry)) { searchOperation.returnEntry(backupEntry, null); } } } catch (Exception e) { logger.traceException(e); continue; } } } } /** {@inheritDoc} */ @Override @@ -970,14 +928,11 @@ /** {@inheritDoc} */ @Override public boolean supportsLDIFExport() public boolean supports(BackendOperation backendOperation) { // We do not support LDIF exports. return false; } /** {@inheritDoc} */ @Override public void exportLDIF(LDIFExportConfig exportConfig) @@ -987,17 +942,6 @@ ERR_BACKEND_IMPORT_AND_EXPORT_NOT_SUPPORTED.get(getBackendID())); } /** {@inheritDoc} */ @Override public boolean supportsLDIFImport() { return false; } /** {@inheritDoc} */ @Override public LDIFImportResult importLDIF(LDIFImportConfig importConfig) @@ -1007,15 +951,6 @@ ERR_BACKEND_IMPORT_AND_EXPORT_NOT_SUPPORTED.get(getBackendID())); } /** {@inheritDoc} */ @Override public boolean supportsBackup() { return false; } /** {@inheritDoc} */ @Override public void createBackup(BackupConfig backupConfig) @@ -1025,8 +960,6 @@ ERR_BACKEND_BACKUP_AND_RESTORE_NOT_SUPPORTED.get(getBackendID())); } /** {@inheritDoc} */ @Override public void removeBackup(BackupDirectory backupDirectory, @@ -1037,17 +970,6 @@ ERR_BACKEND_BACKUP_AND_RESTORE_NOT_SUPPORTED.get(getBackendID())); } /** {@inheritDoc} */ @Override public boolean supportsRestore() { return false; } /** {@inheritDoc} */ @Override public void restoreBackup(RestoreConfig restoreConfig) @@ -1057,8 +979,6 @@ ERR_BACKEND_BACKUP_AND_RESTORE_NOT_SUPPORTED.get(getBackendID())); } /** {@inheritDoc} */ @Override public boolean isConfigurationChangeAcceptable( @@ -1070,8 +990,6 @@ return true; } /** {@inheritDoc} */ @Override public ConfigChangeResult applyConfigurationChange(BackupBackendCfg cfg) @@ -1090,8 +1008,6 @@ return ccr; } /** * Create a new child DN from a given parent DN. The child RDN is formed * from a given attribute type and string value. @@ -1107,12 +1023,9 @@ return parentDN.child(RDN.create(rdnAttrType, attrValue)); } /** {@inheritDoc} */ @Override public void preloadEntryCache() throws UnsupportedOperationException { throw new UnsupportedOperationException("Operation not supported."); } } opendj3-server-dev/src/server/org/opends/server/backends/ChangelogBackend.java
@@ -614,7 +614,7 @@ /** {@inheritDoc} */ @Override public boolean supportsLDIFExport() public boolean supports(BackendOperation backendOperation) { return false; } @@ -630,13 +630,6 @@ /** {@inheritDoc} */ @Override public boolean supportsLDIFImport() { return false; } /** {@inheritDoc} */ @Override public LDIFImportResult importLDIF(LDIFImportConfig importConfig) throws DirectoryException { @@ -646,13 +639,6 @@ /** {@inheritDoc} */ @Override public boolean supportsBackup() { return false; } /** {@inheritDoc} */ @Override public void createBackup(BackupConfig backupConfig) throws DirectoryException { throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, @@ -669,13 +655,6 @@ /** {@inheritDoc} */ @Override public boolean supportsRestore() { return false; } /** {@inheritDoc} */ @Override public void restoreBackup(RestoreConfig restoreConfig) throws DirectoryException { throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, opendj3-server-dev/src/server/org/opends/server/backends/LDIFBackend.java
@@ -947,9 +947,17 @@ /** {@inheritDoc} */ @Override public boolean supportsLDIFExport() public boolean supports(BackendOperation backendOperation) { switch (backendOperation) { case LDIF_EXPORT: case LDIF_IMPORT: return true; default: return false; } } /** {@inheritDoc} */ @@ -1008,13 +1016,6 @@ /** {@inheritDoc} */ @Override public boolean supportsLDIFImport() { return true; } /** {@inheritDoc} */ @Override public LDIFImportResult importLDIF(LDIFImportConfig importConfig) throws DirectoryException { @@ -1186,13 +1187,6 @@ /** {@inheritDoc} */ @Override public boolean supportsBackup() { return false; } /** {@inheritDoc} */ @Override public void createBackup(BackupConfig backupConfig) throws DirectoryException { @@ -1211,13 +1205,6 @@ /** {@inheritDoc} */ @Override public boolean supportsRestore() { return false; } /** {@inheritDoc} */ @Override public void restoreBackup(RestoreConfig restoreConfig) throws DirectoryException { opendj3-server-dev/src/server/org/opends/server/backends/MemoryBackend.java
@@ -619,9 +619,17 @@ /** {@inheritDoc} */ @Override public boolean supportsLDIFExport() public boolean supports(BackendOperation backendOperation) { switch (backendOperation) { case LDIF_EXPORT: case LDIF_IMPORT: return true; default: return false; } } /** {@inheritDoc} */ @@ -667,13 +675,6 @@ /** {@inheritDoc} */ @Override public boolean supportsLDIFImport() { return true; } /** {@inheritDoc} */ @Override public synchronized LDIFImportResult importLDIF(LDIFImportConfig importConfig) throws DirectoryException { @@ -748,13 +749,6 @@ /** {@inheritDoc} */ @Override public boolean supportsBackup() { return false; } /** {@inheritDoc} */ @Override public void createBackup(BackupConfig backupConfig) throws DirectoryException { @@ -774,13 +768,6 @@ /** {@inheritDoc} */ @Override public boolean supportsRestore() { return false; } /** {@inheritDoc} */ @Override public void restoreBackup(RestoreConfig restoreConfig) throws DirectoryException { @@ -794,4 +781,3 @@ throw new UnsupportedOperationException("Operation not supported."); } } opendj3-server-dev/src/server/org/opends/server/backends/MonitorBackend.java
@@ -589,14 +589,7 @@ /** {@inheritDoc} */ @Override public boolean supportsBackup() { return false; } /** {@inheritDoc} */ @Override public boolean supportsLDIFExport() public boolean supports(BackendOperation backendOperation) { // We can export all the monitor entries as a point-in-time snapshot. // TODO implementation of export is incomplete @@ -604,20 +597,6 @@ return false; } /** {@inheritDoc} */ @Override public boolean supportsLDIFImport() { return false; } /** {@inheritDoc} */ @Override public boolean supportsRestore() { return false; } /** * Retrieves the base monitor entry for the Directory Server. * opendj3-server-dev/src/server/org/opends/server/backends/NullBackend.java
@@ -361,9 +361,17 @@ /** {@inheritDoc} */ @Override public boolean supportsLDIFExport() public boolean supports(BackendOperation backendOperation) { switch (backendOperation) { case LDIF_EXPORT: case LDIF_IMPORT: return true; default: return false; } } /** {@inheritDoc} */ @@ -388,13 +396,6 @@ /** {@inheritDoc} */ @Override public boolean supportsLDIFImport() { return true; } /** {@inheritDoc} */ @Override public LDIFImportResult importLDIF(LDIFImportConfig importConfig) throws DirectoryException { @@ -469,13 +470,6 @@ /** {@inheritDoc} */ @Override public boolean supportsBackup() { return false; } /** {@inheritDoc} */ @Override public void createBackup(BackupConfig backupConfig) throws DirectoryException { @@ -495,13 +489,6 @@ /** {@inheritDoc} */ @Override public boolean supportsRestore() { return false; } /** {@inheritDoc} */ @Override public void restoreBackup(RestoreConfig restoreConfig) throws DirectoryException { opendj3-server-dev/src/server/org/opends/server/backends/RootDSEBackend.java
@@ -919,10 +919,10 @@ /** {@inheritDoc} */ @Override public boolean supportsLDIFExport() public boolean supports(BackendOperation backendOperation) { // We will only export the DSE entry itself. return true; return backendOperation.equals(BackendOperation.LDIF_EXPORT); } /** {@inheritDoc} */ @@ -970,13 +970,6 @@ /** {@inheritDoc} */ @Override public boolean supportsLDIFImport() { return false; } /** {@inheritDoc} */ @Override public LDIFImportResult importLDIF(LDIFImportConfig importConfig) throws DirectoryException { @@ -986,13 +979,6 @@ /** {@inheritDoc} */ @Override public boolean supportsBackup() { return false; } /** {@inheritDoc} */ @Override public void createBackup(BackupConfig backupConfig) throws DirectoryException { @@ -1012,13 +998,6 @@ /** {@inheritDoc} */ @Override public boolean supportsRestore() { return false; } /** {@inheritDoc} */ @Override public void restoreBackup(RestoreConfig restoreConfig) throws DirectoryException { opendj3-server-dev/src/server/org/opends/server/backends/SchemaBackend.java
@@ -3618,14 +3618,6 @@ /** {@inheritDoc} */ @Override public boolean supportsLDIFExport() { // We will only export the DSE entry itself. return true; } /** {@inheritDoc} */ @Override public void exportLDIF(LDIFExportConfig exportConfig) throws DirectoryException { @@ -3669,9 +3661,21 @@ /** {@inheritDoc} */ @Override public boolean supportsLDIFImport() public boolean supports(BackendOperation backendOperation) { switch (backendOperation) { case LDIF_EXPORT: case LDIF_IMPORT: case RESTORE: // We will provide a restore, but only for offline operations. case BACKUP: // We do support an online backup mechanism for the schema. return true; default: return false; } } /** {@inheritDoc} */ @@ -3987,14 +3991,6 @@ /** {@inheritDoc} */ @Override public boolean supportsBackup() { // We do support an online backup mechanism for the schema. return true; } /** {@inheritDoc} */ @Override public void createBackup(BackupConfig backupConfig) throws DirectoryException { @@ -4395,14 +4391,6 @@ /** {@inheritDoc} */ @Override public boolean supportsRestore() { // We will provide a restore, but only for offline operations. return true; } /** {@inheritDoc} */ @Override public void restoreBackup(RestoreConfig restoreConfig) throws DirectoryException { opendj3-server-dev/src/server/org/opends/server/backends/TrustStoreBackend.java
@@ -692,7 +692,7 @@ /** {@inheritDoc} */ @Override public boolean supportsLDIFExport() public boolean supports(BackendOperation backendOperation) { return false; } @@ -708,13 +708,6 @@ /** {@inheritDoc} */ @Override public boolean supportsLDIFImport() { return false; } /** {@inheritDoc} */ @Override public LDIFImportResult importLDIF(LDIFImportConfig importConfig) throws DirectoryException { @@ -724,13 +717,6 @@ /** {@inheritDoc} */ @Override public boolean supportsBackup() { return false; } /** {@inheritDoc} */ @Override public void createBackup(BackupConfig backupConfig) throws DirectoryException { @@ -750,13 +736,6 @@ /** {@inheritDoc} */ @Override public boolean supportsRestore() { return false; } /** {@inheritDoc} */ @Override public void restoreBackup(RestoreConfig restoreConfig) throws DirectoryException { opendj3-server-dev/src/server/org/opends/server/backends/jeb/BackendImpl.java
@@ -330,29 +330,9 @@ /** {@inheritDoc} */ @Override public boolean supportsLDIFExport() public boolean supports(BackendOperation backendOperation) { return true; } /** {@inheritDoc} */ @Override public boolean supportsLDIFImport() { return true; } /** {@inheritDoc} */ @Override public boolean supportsBackup() { return true; } /** {@inheritDoc} */ @Override public boolean supportsRestore() { // it supports all the operations so far return true; } @@ -811,13 +791,6 @@ /** {@inheritDoc} */ @Override public boolean supportsIndexing() { return true; } /** {@inheritDoc} */ @Override public long verifyBackend(VerifyConfig verifyConfig) throws InitializationException, ConfigException, DirectoryException { opendj3-server-dev/src/server/org/opends/server/backends/pluggable/BackendImpl.java
@@ -302,29 +302,9 @@ /** {@inheritDoc} */ @Override public boolean supportsLDIFExport() public boolean supports(BackendOperation backendOperation) { return true; } /** {@inheritDoc} */ @Override public boolean supportsLDIFImport() { return true; } /** {@inheritDoc} */ @Override public boolean supportsBackup() { return true; } /** {@inheritDoc} */ @Override public boolean supportsRestore() { // it supports all the operations so far return true; } @@ -689,13 +669,6 @@ /** {@inheritDoc} */ @Override public boolean supportsIndexing() { return true; } /** {@inheritDoc} */ @Override public long verifyBackend(VerifyConfig verifyConfig) throws InitializationException, ConfigException, DirectoryException { opendj3-server-dev/src/server/org/opends/server/backends/task/TaskBackend.java
@@ -992,8 +992,6 @@ return Collections.emptySet(); } /** {@inheritDoc} */ @Override public Set<String> getSupportedFeatures() @@ -1001,17 +999,21 @@ return Collections.emptySet(); } /** {@inheritDoc} */ @Override public boolean supportsLDIFExport() public boolean supports(BackendOperation backendOperation) { // LDIF exports are supported. switch (backendOperation) { case LDIF_EXPORT: case BACKUP: case RESTORE: return true; default: return false; } } /** {@inheritDoc} */ @Override @@ -1089,13 +1091,6 @@ /** {@inheritDoc} */ @Override public boolean supportsLDIFImport() { return false; } /** {@inheritDoc} */ @Override public LDIFImportResult importLDIF(LDIFImportConfig importConfig) throws DirectoryException { @@ -1105,13 +1100,6 @@ /** {@inheritDoc} */ @Override public boolean supportsBackup() { return true; } /** {@inheritDoc} */ @Override public void createBackup(BackupConfig backupConfig) throws DirectoryException { @@ -1426,18 +1414,6 @@ archiveFile.delete(); } /** {@inheritDoc} */ @Override public boolean supportsRestore() { // This backend does provide a backup/restore mechanism. return true; } /** {@inheritDoc} */ @Override public void restoreBackup(RestoreConfig restoreConfig) opendj3-server-dev/src/server/org/opends/server/extensions/ConfigFileHandler.java
@@ -1850,11 +1850,18 @@ /** {@inheritDoc} */ @Override public boolean supportsLDIFExport() public boolean supports(BackendOperation backendOperation) { // TODO We would need export-ldif to initialize this backend. switch (backendOperation) { case BACKUP: case RESTORE: return true; default: return false; } } /** {@inheritDoc} */ @Override @@ -1865,8 +1872,6 @@ writeLDIF(exportConfig); } /** * Writes the current configuration to LDIF with the provided export * configuration. @@ -1952,13 +1957,6 @@ /** {@inheritDoc} */ @Override public boolean supportsLDIFImport() { return false; } /** {@inheritDoc} */ @Override public LDIFImportResult importLDIF(LDIFImportConfig importConfig) throws DirectoryException { @@ -1968,14 +1966,6 @@ /** {@inheritDoc} */ @Override public boolean supportsBackup() { // We do support an online backup mechanism for the configuration. return true; } /** {@inheritDoc} */ @Override public void createBackup(BackupConfig backupConfig) throws DirectoryException { @@ -2332,14 +2322,6 @@ /** {@inheritDoc} */ @Override public boolean supportsRestore() { // We will provide a restore, but only for offline operations. return true; } /** {@inheritDoc} */ @Override public void restoreBackup(RestoreConfig restoreConfig) throws DirectoryException { opendj3-server-dev/src/server/org/opends/server/replication/plugin/LDAPReplicationDomain.java
@@ -67,6 +67,7 @@ import org.opends.server.api.Backend; import org.opends.server.api.DirectoryThread; import org.opends.server.api.SynchronizationProvider; import org.opends.server.api.Backend.BackendOperation; import org.opends.server.backends.task.Task; import org.opends.server.core.*; import org.opends.server.protocols.internal.InternalClientConnection; @@ -3567,7 +3568,7 @@ ImportExportContext ieCtx = getImportExportContext(); try { if (!backend.supportsLDIFImport()) if (!backend.supports(BackendOperation.LDIF_IMPORT)) { ieCtx.setExceptionIfNoneSet(new DirectoryException(OTHER, ERR_INIT_IMPORT_NOT_SUPPORTED.get(backend.getBackendID()))); @@ -4250,7 +4251,7 @@ public long countEntries() throws DirectoryException { Backend<?> backend = getBackend(); if (!backend.supportsLDIFExport()) if (!backend.supports(BackendOperation.LDIF_EXPORT)) { LocalizableMessage msg = ERR_INIT_EXPORT_NOT_SUPPORTED.get(backend.getBackendID()); logger.error(msg); opendj3-server-dev/src/server/org/opends/server/tasks/BackupTask.java
@@ -22,31 +22,41 @@ * * * Copyright 2006-2008 Sun Microsystems, Inc. * Portions Copyright 2014 ForgeRock AS * Portions Copyright 2014-2015 ForgeRock AS */ package org.opends.server.tasks; import org.forgerock.i18n.LocalizableMessage; import org.forgerock.i18n.slf4j.LocalizedLogger; import org.opends.messages.Severity; import org.opends.messages.TaskMessages; import static org.opends.server.config.ConfigConstants.*; import static org.opends.server.core.DirectoryServer.getAttributeType; import static org.opends.messages.TaskMessages.*; import static org.opends.messages.ToolMessages.*; import static org.opends.server.util.ServerConstants.DATE_FORMAT_GMT_TIME; import static org.opends.server.config.ConfigConstants.*; import static org.opends.server.core.DirectoryServer.*; import static org.opends.server.util.ServerConstants.*; import static org.opends.server.util.StaticUtils.*; import static org.opends.server.util.ServerConstants. BACKUP_DIRECTORY_DESCRIPTOR_FILE; import java.io.File; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.TimeZone; import org.forgerock.i18n.LocalizableMessage; import org.forgerock.i18n.slf4j.LocalizedLogger; import org.forgerock.opendj.config.server.ConfigException; import org.forgerock.opendj.ldap.ResultCode; import org.opends.messages.Severity; import org.opends.messages.TaskMessages; import org.opends.server.admin.std.server.BackendCfg; import org.opends.server.api.Backend; import org.opends.server.api.Backend.BackendOperation; import org.opends.server.api.ClientConnection; import org.opends.server.backends.task.Task; import org.opends.server.backends.task.TaskState; import org.opends.server.config.ConfigEntry; import org.opends.server.core.DirectoryServer; import org.opends.server.core.LockFileManager; import org.opends.server.api.Backend; import org.opends.server.api.ClientConnection; import org.opends.server.config.ConfigEntry; import org.forgerock.opendj.config.server.ConfigException; import org.opends.server.types.Attribute; import org.opends.server.types.AttributeType; import org.opends.server.types.BackupConfig; @@ -55,17 +65,6 @@ import org.opends.server.types.Entry; import org.opends.server.types.Operation; import org.opends.server.types.Privilege; import org.forgerock.opendj.ldap.ResultCode; import org.opends.server.admin.std.server.BackendCfg; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; import java.util.TimeZone; import java.util.HashMap; import java.text.SimpleDateFormat; import java.io.File; /** * This class provides an implementation of a Directory Server task that may be @@ -147,7 +146,7 @@ */ private Map<String,ConfigEntry> configEntries; private ArrayList<Backend> backendsToArchive; private ArrayList<Backend<?>> backendsToArchive; /** * {@inheritDoc} @@ -345,14 +344,14 @@ int numBackends = configEntries.size(); backendsToArchive = new ArrayList<Backend>(numBackends); backendsToArchive = new ArrayList<Backend<?>>(numBackends); if (backUpAll) { for (Map.Entry<String,ConfigEntry> mapEntry : configEntries.entrySet()) { Backend b = DirectoryServer.getBackend(mapEntry.getKey()); if (b != null && b.supportsBackup()) Backend<?> b = DirectoryServer.getBackend(mapEntry.getKey()); if (b != null && b.supports(BackendOperation.BACKUP)) { backendsToArchive.add(b); } @@ -364,12 +363,12 @@ // be used. for (String id : backendIDList) { Backend b = DirectoryServer.getBackend(id); Backend<?> b = DirectoryServer.getBackend(id); if (b == null || configEntries.get(id) == null) { logger.error(ERR_BACKUPDB_NO_BACKENDS_FOR_ID, id); } else if (! b.supportsBackup()) else if (!b.supports(BackendOperation.BACKUP)) { logger.warn(WARN_BACKUPDB_BACKUP_NOT_SUPPORTED, b.getBackendID()); } @@ -405,7 +404,7 @@ * @param backupLocation The backup directory. * @return true if the backend was successfully archived. */ private boolean backupBackend(Backend b, File backupLocation) private boolean backupBackend(Backend<?> b, File backupLocation) { // Get the config entry for this backend. BackendCfg cfg = TaskUtils.getConfigEntry(b); @@ -506,7 +505,7 @@ * @param b The backend on which the lock is to be acquired. * @return true if the lock was successfully acquired. */ private boolean lockBackend(Backend b) private boolean lockBackend(Backend<?> b) { try { @@ -532,7 +531,7 @@ * @param b The backend on which the lock is held. * @return true if the lock was successfully released. */ private boolean unlockBackend(Backend b) private boolean unlockBackend(Backend<?> b) { try { @@ -607,7 +606,7 @@ // Iterate through the backends to archive and back them up individually. boolean errorsEncountered = false; for (Backend b : backendsToArchive) for (Backend<?> b : backendsToArchive) { if (isCancelled()) { opendj3-server-dev/src/server/org/opends/server/tasks/ExportTask.java
@@ -22,45 +22,46 @@ * * * Copyright 2006-2009 Sun Microsystems, Inc. * Portions Copyright 2014 ForgeRock AS * Portions Copyright 2014-2015 ForgeRock AS */ package org.opends.server.tasks; import org.forgerock.i18n.LocalizableMessage; import org.forgerock.i18n.slf4j.LocalizedLogger; import org.opends.messages.Severity; import org.opends.messages.TaskMessages; import static org.opends.server.core.DirectoryServer.getAttributeType; import static org.opends.server.config.ConfigConstants.*; import static org.opends.messages.TaskMessages.*; import static org.opends.messages.ToolMessages.*; import static org.opends.server.config.ConfigConstants.*; import static org.opends.server.core.DirectoryServer.*; import static org.opends.server.util.StaticUtils.*; 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 org.forgerock.i18n.LocalizableMessage; import org.forgerock.i18n.slf4j.LocalizedLogger; import org.forgerock.opendj.ldap.ResultCode; import org.opends.messages.Severity; import org.opends.messages.TaskMessages; import org.opends.server.api.Backend; import org.opends.server.api.Backend.BackendOperation; import org.opends.server.api.ClientConnection; import org.opends.server.backends.task.Task; import org.opends.server.backends.task.TaskState; import org.opends.server.core.DirectoryServer; import org.opends.server.core.LockFileManager; import org.opends.server.api.Backend; import org.opends.server.api.ClientConnection; import org.opends.server.types.Attribute; import org.opends.server.types.AttributeType; import org.opends.server.types.DirectoryException; import org.opends.server.types.DN; import org.opends.server.types.DirectoryException; import org.opends.server.types.Entry; import org.opends.server.types.ExistingFileBehavior; import org.opends.server.types.LDIFExportConfig; import org.opends.server.types.Operation; import org.opends.server.types.Privilege; import org.forgerock.opendj.ldap.ResultCode; import org.opends.server.types.SearchFilter; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.HashMap; import java.io.File; /** * This class provides an implementation of a Directory Server task that can * be used to export the contents of a Directory Server backend to an LDIF file. @@ -147,24 +148,21 @@ private LDIFExportConfig exportConfig; /** * {@inheritDoc} */ /** {@inheritDoc} */ @Override public LocalizableMessage getDisplayName() { return INFO_TASK_EXPORT_NAME.get(); } /** * {@inheritDoc} */ /** {@inheritDoc} */ @Override public LocalizableMessage getAttributeDisplayName(String name) { return argDisplayMap.get(name); } /** * {@inheritDoc} */ @Override public void initializeTask() throws DirectoryException /** {@inheritDoc} */ @Override public void initializeTask() throws DirectoryException { // If the client connection is available, then make sure the associated // client has the LDIF_EXPORT privilege. @@ -182,57 +180,9 @@ Entry taskEntry = getTaskEntry(); AttributeType typeWrapColumn = getAttributeType(ATTR_TASK_EXPORT_WRAP_COLUMN, true); AttributeType typeLdifFile; AttributeType typeBackendID; AttributeType typeAppendToLDIF; AttributeType typeCompressLDIF; AttributeType typeEncryptLDIF; AttributeType typeSignHash; AttributeType typeIncludeAttribute; AttributeType typeExcludeAttribute; AttributeType typeIncludeFilter; AttributeType typeExcludeFilter; AttributeType typeIncludeBranch; AttributeType typeExcludeBranch; AttributeType typeWrapColumn; AttributeType typeIncludeOperationalAttributes; typeLdifFile = getAttributeType(ATTR_TASK_EXPORT_LDIF_FILE, true); typeBackendID = getAttributeType(ATTR_TASK_EXPORT_BACKEND_ID, true); typeAppendToLDIF = getAttributeType(ATTR_TASK_EXPORT_APPEND_TO_LDIF, true); typeCompressLDIF = getAttributeType(ATTR_TASK_EXPORT_COMPRESS_LDIF, true); typeEncryptLDIF = getAttributeType(ATTR_TASK_EXPORT_ENCRYPT_LDIF, true); typeSignHash = getAttributeType(ATTR_TASK_EXPORT_SIGN_HASH, true); typeIncludeAttribute = getAttributeType(ATTR_TASK_EXPORT_INCLUDE_ATTRIBUTE, true); typeExcludeAttribute = getAttributeType(ATTR_TASK_EXPORT_EXCLUDE_ATTRIBUTE, true); typeIncludeFilter = getAttributeType(ATTR_TASK_EXPORT_INCLUDE_FILTER, true); typeExcludeFilter = getAttributeType(ATTR_TASK_EXPORT_EXCLUDE_FILTER, true); typeIncludeBranch = getAttributeType(ATTR_TASK_EXPORT_INCLUDE_BRANCH, true); typeExcludeBranch = getAttributeType(ATTR_TASK_EXPORT_EXCLUDE_BRANCH, true); typeWrapColumn = getAttributeType(ATTR_TASK_EXPORT_WRAP_COLUMN, true); typeIncludeOperationalAttributes = getAttributeType(ATTR_TASK_EXPORT_INCLUDE_OPERATIONAL_ATTRIBUTES, true); List<Attribute> attrList; attrList = taskEntry.getAttribute(typeLdifFile); ldifFile = TaskUtils.getSingleValueString(attrList); ldifFile = toString(taskEntry, ATTR_TASK_EXPORT_LDIF_FILE); File f = new File (ldifFile); if (! f.isAbsolute()) { @@ -247,51 +197,47 @@ } } attrList = taskEntry.getAttribute(typeBackendID); backendID = TaskUtils.getSingleValueString(attrList); backendID = toString(taskEntry, ATTR_TASK_EXPORT_BACKEND_ID); appendToLDIF = toBoolean(taskEntry, false, ATTR_TASK_EXPORT_APPEND_TO_LDIF); compressLDIF = toBoolean(taskEntry, false, ATTR_TASK_EXPORT_COMPRESS_LDIF); encryptLDIF = toBoolean(taskEntry, false, ATTR_TASK_EXPORT_ENCRYPT_LDIF); signHash = toBoolean(taskEntry, false, ATTR_TASK_EXPORT_SIGN_HASH); includeAttributeStrings = toListOfString(taskEntry, ATTR_TASK_EXPORT_INCLUDE_ATTRIBUTE); excludeAttributeStrings = toListOfString(taskEntry, ATTR_TASK_EXPORT_EXCLUDE_ATTRIBUTE); includeFilterStrings = toListOfString(taskEntry, ATTR_TASK_EXPORT_INCLUDE_FILTER); excludeFilterStrings = toListOfString(taskEntry, ATTR_TASK_EXPORT_EXCLUDE_FILTER); includeBranchStrings = toListOfString(taskEntry, ATTR_TASK_EXPORT_INCLUDE_BRANCH); excludeBranchStrings = toListOfString(taskEntry, ATTR_TASK_EXPORT_EXCLUDE_BRANCH); attrList = taskEntry.getAttribute(typeAppendToLDIF); appendToLDIF = TaskUtils.getBoolean(attrList, false); attrList = taskEntry.getAttribute(typeCompressLDIF); compressLDIF = TaskUtils.getBoolean(attrList, false); attrList = taskEntry.getAttribute(typeEncryptLDIF); encryptLDIF = TaskUtils.getBoolean(attrList, false); attrList = taskEntry.getAttribute(typeSignHash); signHash = TaskUtils.getBoolean(attrList, false); attrList = taskEntry.getAttribute(typeIncludeAttribute); includeAttributeStrings = TaskUtils.getMultiValueString(attrList); attrList = taskEntry.getAttribute(typeExcludeAttribute); excludeAttributeStrings = TaskUtils.getMultiValueString(attrList); attrList = taskEntry.getAttribute(typeIncludeFilter); includeFilterStrings = TaskUtils.getMultiValueString(attrList); attrList = taskEntry.getAttribute(typeExcludeFilter); excludeFilterStrings = TaskUtils.getMultiValueString(attrList); attrList = taskEntry.getAttribute(typeIncludeBranch); includeBranchStrings = TaskUtils.getMultiValueString(attrList); attrList = taskEntry.getAttribute(typeExcludeBranch); excludeBranchStrings = TaskUtils.getMultiValueString(attrList); attrList = taskEntry.getAttribute(typeWrapColumn); List<Attribute> attrList = taskEntry.getAttribute(typeWrapColumn); wrapColumn = TaskUtils.getSingleValueInteger(attrList, 0); attrList = taskEntry.getAttribute(typeIncludeOperationalAttributes); includeOperationalAttributes = TaskUtils.getBoolean(attrList, true); includeOperationalAttributes = toBoolean(taskEntry, true, ATTR_TASK_EXPORT_INCLUDE_OPERATIONAL_ATTRIBUTES); } private boolean toBoolean(Entry entry, boolean defaultValue, String attrName) { final AttributeType attrType = getAttributeType(attrName, true); final List<Attribute> attrs = entry.getAttribute(attrType); return TaskUtils.getBoolean(attrs, defaultValue); } /** * {@inheritDoc} */ private ArrayList<String> toListOfString(Entry entry, String attrName) { final AttributeType attrType = getAttributeType(attrName, true); final List<Attribute> attrs = entry.getAttribute(attrType); return TaskUtils.getMultiValueString(attrs); } private String toString(Entry entry, String attrName) { final AttributeType attrType = getAttributeType(attrName, true); final List<Attribute> attrs = entry.getAttribute(attrType); return TaskUtils.getSingleValueString(attrs); } /** {@inheritDoc} */ @Override public void interruptTask(TaskState interruptState, LocalizableMessage interruptReason) { if (TaskState.STOPPED_BY_ADMINISTRATOR.equals(interruptState) && @@ -304,63 +250,20 @@ } } /** * {@inheritDoc} */ /** {@inheritDoc} */ @Override public boolean isInterruptable() { return true; } /** * {@inheritDoc} */ /** {@inheritDoc} */ @Override protected TaskState runTask() { // See if there were any user-defined sets of include/exclude attributes or // filters. If so, then process them. HashSet<AttributeType> excludeAttributes; if (excludeAttributeStrings == null) { excludeAttributes = null; } else { excludeAttributes = new HashSet<AttributeType>(); for (String attrName : excludeAttributeStrings) { String lowerName = attrName.toLowerCase(); AttributeType attrType = DirectoryServer.getAttributeType(lowerName); if (attrType == null) { attrType = DirectoryServer.getDefaultAttributeType(attrName); } excludeAttributes.add(attrType); } } HashSet<AttributeType> includeAttributes; if (includeAttributeStrings == null) { includeAttributes = null; } else { includeAttributes = new HashSet<AttributeType>(); for (String attrName : includeAttributeStrings) { String lowerName = attrName.toLowerCase(); AttributeType attrType = DirectoryServer.getAttributeType(lowerName); if (attrType == null) { attrType = DirectoryServer.getDefaultAttributeType(attrName); } includeAttributes.add(attrType); } } HashSet<AttributeType> excludeAttributes = toAttributeTypes(excludeAttributeStrings); HashSet<AttributeType> includeAttributes = toAttributeTypes(includeAttributeStrings); ArrayList<SearchFilter> excludeFilters; if (excludeFilterStrings == null) @@ -417,23 +320,21 @@ } // Get the backend into which the LDIF should be imported. Backend backend; ArrayList<DN> defaultIncludeBranches; backend = DirectoryServer.getBackend(backendID); Backend<?> backend = DirectoryServer.getBackend(backendID); if (backend == null) { logger.error(ERR_LDIFEXPORT_NO_BACKENDS_FOR_ID, backendID); return TaskState.STOPPED_BY_ERROR; } else if (! backend.supportsLDIFExport()) else if (!backend.supports(BackendOperation.LDIF_EXPORT)) { logger.error(ERR_LDIFEXPORT_CANNOT_EXPORT_BACKEND, backendID); return TaskState.STOPPED_BY_ERROR; } defaultIncludeBranches = new ArrayList<DN>(backend.getBaseDNs().length); ArrayList<DN> defaultIncludeBranches = new ArrayList<DN>(backend.getBaseDNs().length); for (DN dn : backend.getBaseDNs()) { defaultIncludeBranches.add(dn); @@ -625,4 +526,25 @@ // was interrupted return getFinalTaskState(); } private HashSet<AttributeType> toAttributeTypes(ArrayList<String> attributeStrings) { if (attributeStrings == null) { return null; } HashSet<AttributeType> attributes = new HashSet<AttributeType>(); for (String attrName : attributeStrings) { String lowerName = attrName.toLowerCase(); AttributeType attrType = DirectoryServer.getAttributeType(lowerName); if (attrType == null) { attrType = DirectoryServer.getDefaultAttributeType(attrName); } attributes.add(attrType); } return attributes; } } opendj3-server-dev/src/server/org/opends/server/tasks/ImportTask.java
@@ -46,6 +46,7 @@ import org.opends.messages.Severity; import org.opends.messages.TaskMessages; import org.opends.server.api.Backend; import org.opends.server.api.Backend.BackendOperation; import org.opends.server.api.ClientConnection; import org.opends.server.backends.task.Task; import org.opends.server.backends.task.TaskState; @@ -323,7 +324,7 @@ LocalizableMessage message = ERR_LDIFIMPORT_NO_BACKENDS_FOR_ID.get(); throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message); } else if (! backend.supportsLDIFImport()) else if (!backend.supports(BackendOperation.LDIF_IMPORT)) { LocalizableMessage message = ERR_LDIFIMPORT_CANNOT_IMPORT.get(backendID); throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message); @@ -513,7 +514,7 @@ logger.error(ERR_LDIFIMPORT_NO_BACKENDS_FOR_ID); return TaskState.STOPPED_BY_ERROR; } else if (! backend.supportsLDIFImport()) else if (!backend.supports(BackendOperation.LDIF_IMPORT)) { logger.error(ERR_LDIFIMPORT_CANNOT_IMPORT, backendID); return TaskState.STOPPED_BY_ERROR; opendj3-server-dev/src/server/org/opends/server/tasks/RebuildTask.java
@@ -40,6 +40,7 @@ import org.forgerock.opendj.ldap.ResultCode; import org.opends.messages.TaskMessages; import org.opends.server.api.Backend; import org.opends.server.api.Backend.BackendOperation; import org.opends.server.api.ClientConnection; import org.opends.server.backends.RebuildConfig; import org.opends.server.backends.RebuildConfig.RebuildMode; @@ -181,7 +182,7 @@ logger.error(ERR_NO_BACKENDS_FOR_BASE, baseDN); return TaskState.STOPPED_BY_ERROR; } if (!backend.supportsIndexing()) if (!backend.supports(BackendOperation.INDEXING)) { logger.error(ERR_REBUILDINDEX_WRONG_BACKEND_TYPE); return TaskState.STOPPED_BY_ERROR; opendj3-server-dev/src/server/org/opends/server/tasks/RestoreTask.java
@@ -22,44 +22,45 @@ * * * Copyright 2006-2008 Sun Microsystems, Inc. * Portions Copyright 2014 ForgeRock AS * Portions Copyright 2014-2015 ForgeRock AS */ package org.opends.server.tasks; import org.forgerock.i18n.LocalizableMessage; import org.opends.messages.Severity; import org.opends.messages.TaskMessages; import static org.opends.server.core.DirectoryServer.getAttributeType; import static org.opends.server.config.ConfigConstants.*; import static org.opends.messages.TaskMessages.*; import static org.opends.messages.ToolMessages.*; import static org.opends.server.config.ConfigConstants.*; import static org.opends.server.core.DirectoryServer.*; import static org.opends.server.util.StaticUtils.*; import java.io.File; import java.util.HashMap; import java.util.List; import java.util.Map; import org.forgerock.i18n.LocalizableMessage; import org.forgerock.i18n.slf4j.LocalizedLogger; import org.forgerock.opendj.config.server.ConfigException; import org.forgerock.opendj.ldap.ResultCode; import org.opends.messages.Severity; import org.opends.messages.TaskMessages; import org.opends.server.api.Backend; import org.opends.server.api.Backend.BackendOperation; import org.opends.server.api.ClientConnection; import org.opends.server.backends.task.Task; import org.opends.server.backends.task.TaskState; import org.opends.server.config.ConfigEntry; import org.opends.server.core.DirectoryServer; import org.opends.server.core.LockFileManager; import org.opends.server.api.Backend; import org.opends.server.api.ClientConnection; import org.opends.server.config.ConfigEntry; import org.forgerock.opendj.config.server.ConfigException; import org.opends.server.types.Attribute; import org.opends.server.types.AttributeType; import org.opends.server.types.BackupDirectory; import org.opends.server.types.BackupInfo; import org.opends.server.types.DirectoryException; import org.opends.server.types.DN; import org.opends.server.types.DirectoryException; import org.opends.server.types.Entry; import org.opends.server.types.Operation; import org.opends.server.types.Privilege; import org.opends.server.types.RestoreConfig; import org.forgerock.opendj.ldap.ResultCode; import java.util.List; import java.util.Map; import java.util.HashMap; import java.io.File; /** * This class provides an implementation of a Directory Server task that can @@ -90,31 +91,28 @@ } // The task arguments. /** The task arguments. */ private File backupDirectory; private String backupID; private boolean verifyOnly; private RestoreConfig restoreConfig; /** * {@inheritDoc} */ /** {@inheritDoc} */ @Override public LocalizableMessage getDisplayName() { return INFO_TASK_RESTORE_NAME.get(); } /** * {@inheritDoc} */ /** {@inheritDoc} */ @Override public LocalizableMessage getAttributeDisplayName(String name) { return argDisplayMap.get(name); } /** * {@inheritDoc} */ @Override public void initializeTask() throws DirectoryException /** {@inheritDoc} */ @Override public void initializeTask() throws DirectoryException { // If the client connection is available, then make sure the associated // client has the BACKEND_RESTORE privilege. @@ -166,7 +164,7 @@ * @param backend The backend on which the lock is to be acquired. * @return true if the lock was successfully acquired. */ private boolean lockBackend(Backend backend) private boolean lockBackend(Backend<?> backend) { try { @@ -191,7 +189,7 @@ * @param backend The backend on which the lock is held. * @return true if the lock was successfully released. */ private boolean unlockBackend(Backend backend) private boolean unlockBackend(Backend<?> backend) { try { @@ -211,10 +209,8 @@ return true; } /** * {@inheritDoc} */ /** {@inheritDoc} */ @Override public void interruptTask(TaskState interruptState, LocalizableMessage interruptReason) { if (TaskState.STOPPED_BY_ADMINISTRATOR.equals(interruptState) && @@ -227,18 +223,14 @@ } } /** * {@inheritDoc} */ /** {@inheritDoc} */ @Override public boolean isInterruptable() { return true; } /** * {@inheritDoc} */ /** {@inheritDoc} */ @Override protected TaskState runTask() { // Open the backup directory and make sure it is valid. @@ -300,9 +292,8 @@ String backendID = TaskUtils.getBackendID(configEntry); // Get the backend. Backend backend = DirectoryServer.getBackend(backendID); if (! backend.supportsRestore()) Backend<?> backend = DirectoryServer.getBackend(backendID); if (!backend.supports(BackendOperation.RESTORE)) { logger.error(ERR_RESTOREDB_CANNOT_RESTORE, backend.getBackendID()); return TaskState.STOPPED_BY_ERROR; opendj3-server-dev/src/server/org/opends/server/tools/BackUpDB.java
@@ -51,6 +51,7 @@ import org.forgerock.opendj.ldap.ByteString; import org.opends.server.admin.std.server.BackendCfg; import org.opends.server.api.Backend; import org.opends.server.api.Backend.BackendOperation; import org.opends.server.core.CoreConfigManager; import org.opends.server.core.DirectoryServer; import org.opends.server.core.LockFileManager; @@ -140,20 +141,20 @@ return tool.process(args, initializeServer, outStream, errStream); } // Define the command-line arguments that may be used with this program. private BooleanArgument backUpAll = null; private BooleanArgument compress = null; private BooleanArgument displayUsage = null; private BooleanArgument encrypt = null; private BooleanArgument hash = null; private BooleanArgument incremental = null; private BooleanArgument signHash = null; private StringArgument backendID = null; private StringArgument backupIDString = null; private StringArgument configClass = null; private StringArgument configFile = null; private StringArgument backupDirectory = null; private StringArgument incrementalBaseID = null; /** Define the command-line arguments that may be used with this program. */ private BooleanArgument backUpAll; private BooleanArgument compress; private BooleanArgument displayUsage; private BooleanArgument encrypt; private BooleanArgument hash; private BooleanArgument incremental; private BooleanArgument signHash; private StringArgument backendID; private StringArgument backupIDString; private StringArgument configClass; private StringArgument configFile; private StringArgument backupDirectory; private StringArgument incrementalBaseID; private int process(String[] args, boolean initializeServer, OutputStream outStream, OutputStream errStream) @@ -431,9 +432,7 @@ } /** * {@inheritDoc} */ /** {@inheritDoc} */ @Override public void addTaskAttributes(List<RawAttribute> attributes) { @@ -531,25 +530,19 @@ } /** * {@inheritDoc} */ /** {@inheritDoc} */ @Override public String getTaskObjectclass() { return "ds-task-backup"; } /** * {@inheritDoc} */ /** {@inheritDoc} */ @Override public Class<?> getTaskClass() { return BackupTask.class; } /** * {@inheritDoc} */ /** {@inheritDoc} */ @Override protected int processLocal(boolean initializeServer, PrintStream out, @@ -742,15 +735,15 @@ int numBackends = backendList.size(); boolean multiple; ArrayList<Backend> backendsToArchive = new ArrayList<Backend>(numBackends); ArrayList<Backend<?>> backendsToArchive = new ArrayList<Backend<?>>(numBackends); HashMap<String,BackendCfg> configEntries = new HashMap<String,BackendCfg>(numBackends); if (backUpAll.isPresent()) { for (int i=0; i < numBackends; i++) { Backend b = backendList.get(i); if (b.supportsBackup()) Backend<?> b = backendList.get(i); if (b.supports(BackendOperation.BACKUP)) { backendsToArchive.add(b); configEntries.put(b.getBackendID(), entryList.get(i)); @@ -771,10 +764,10 @@ for (int i=0; i < numBackends; i++) { Backend b = backendList.get(i); Backend<?> b = backendList.get(i); if (requestedBackends.contains(b.getBackendID())) { if (! b.supportsBackup()) if (!b.supports(BackendOperation.BACKUP)) { logger.warn(WARN_BACKUPDB_BACKUP_NOT_SUPPORTED, b.getBackendID()); } @@ -813,7 +806,7 @@ // Iterate through the backends to archive and back them up individually. boolean errorsEncountered = false; for (Backend b : backendsToArchive) for (Backend<?> b : backendsToArchive) { // Acquire a shared lock for this backend. try @@ -964,7 +957,7 @@ backupConfig.setSignHash(signHash.isPresent()); backupConfig.setIncrementalBaseID(incrementalBase); if (!b.supportsBackup()) if (!b.supports(BackendOperation.BACKUP)) { logger.error(ERR_BACKUPDB_CANNOT_BACKUP, b.getBackendID()); errorsEncountered = true; @@ -1070,16 +1063,9 @@ return ret; } /** * {@inheritDoc} */ /** {@inheritDoc} */ @Override public String getTaskId() { if (backupIDString != null) { return backupIDString.getValue(); } else { return null; return backupIDString != null ? backupIDString.getValue() : null; } } } opendj3-server-dev/src/server/org/opends/server/tools/ExportLDIF.java
@@ -45,6 +45,7 @@ import org.forgerock.opendj.ldap.ByteString; import org.opends.server.admin.std.server.BackendCfg; import org.opends.server.api.Backend; import org.opends.server.api.Backend.BackendOperation; import org.opends.server.api.plugin.PluginType; import org.opends.server.core.CoreConfigManager; import org.opends.server.core.DirectoryServer; @@ -754,7 +755,7 @@ logger.error(ERR_LDIFEXPORT_NO_BACKENDS_FOR_ID, backendID.getValue()); return 1; } else if (! backend.supportsLDIFExport()) else if (!backend.supports(BackendOperation.RESTORE)) { logger.error(ERR_LDIFEXPORT_CANNOT_EXPORT_BACKEND, backendID.getValue()); return 1; opendj3-server-dev/src/server/org/opends/server/tools/ImportLDIF.java
@@ -49,6 +49,7 @@ import org.forgerock.opendj.ldap.ResultCode; import org.opends.server.admin.std.server.BackendCfg; import org.opends.server.api.Backend; import org.opends.server.api.Backend.BackendOperation; import org.opends.server.api.plugin.PluginType; import org.opends.server.core.CoreConfigManager; import org.opends.server.core.DirectoryServer; @@ -965,7 +966,7 @@ logger.error(ERR_LDIFIMPORT_NO_BACKENDS_FOR_ID); return 1; } else if (! backend.supportsLDIFImport()) else if (!backend.supports(BackendOperation.LDIF_IMPORT)) { logger.error(ERR_LDIFIMPORT_CANNOT_IMPORT, backendID.getValue()); return 1; opendj3-server-dev/src/server/org/opends/server/tools/RebuildIndex.java
@@ -45,6 +45,7 @@ import org.forgerock.opendj.ldap.ByteString; import org.opends.server.admin.std.server.BackendCfg; import org.opends.server.api.Backend; import org.opends.server.api.Backend.BackendOperation; import org.opends.server.backends.RebuildConfig; import org.opends.server.backends.RebuildConfig.RebuildMode; import org.opends.server.core.CoreConfigManager; @@ -662,7 +663,7 @@ { throw new ConfigException(ERR_NO_BACKENDS_FOR_BASE.get(baseDNString.getValue())); } if (!backend.supportsIndexing()) if (!backend.supports(BackendOperation.INDEXING)) { throw new ConfigException(ERR_BACKEND_NO_INDEXING_SUPPORT.get()); } opendj3-server-dev/src/server/org/opends/server/tools/RestoreDB.java
@@ -48,6 +48,7 @@ import org.forgerock.opendj.ldap.ByteString; import org.opends.server.admin.std.server.BackendCfg; import org.opends.server.api.Backend; import org.opends.server.api.Backend.BackendOperation; import org.opends.server.core.CoreConfigManager; import org.opends.server.core.DirectoryServer; import org.opends.server.core.LockFileManager; @@ -594,7 +595,7 @@ logger.error(ERR_RESTOREDB_NO_BACKENDS_FOR_DN, backupDirectory.getValue(), configEntryDN); return 1; } else if (! backend.supportsRestore()) else if (!backend.supports(BackendOperation.RESTORE)) { logger.error(ERR_RESTOREDB_CANNOT_RESTORE, backend.getBackendID()); return 1; opendj3-server-dev/src/server/org/opends/server/tools/VerifyIndex.java
@@ -42,11 +42,12 @@ import org.forgerock.opendj.config.server.ConfigException; import org.opends.server.admin.std.server.BackendCfg; import org.opends.server.api.Backend; import org.opends.server.api.Backend.BackendOperation; import org.opends.server.backends.VerifyConfig; import org.opends.server.core.CoreConfigManager; import org.opends.server.core.DirectoryServer; import org.opends.server.core.LockFileManager; import org.opends.server.core.DirectoryServer.DirectoryServerVersionHandler; import org.opends.server.core.LockFileManager; import org.opends.server.extensions.ConfigFileHandler; import org.opends.server.loggers.JDKLogging; import org.opends.server.types.DN; @@ -416,7 +417,7 @@ return 1; } if (!backend.supportsIndexing()) if (!backend.supports(BackendOperation.INDEXING)) { err.println(wrapText(ERR_BACKEND_NO_INDEXING_SUPPORT.get(), MAX_LINE_WIDTH)); return 1; opendj3-server-dev/tests/unit-tests-testng/src/server/org/opends/server/backends/GenericBackendTestCase.java
@@ -22,26 +22,23 @@ * * * Copyright 2006-2008 Sun Microsystems, Inc. * Portions Copyright 2014 ForgeRock AS * Portions Copyright 2014-2015 ForgeRock AS */ package org.opends.server.backends; import static org.testng.Assert.*; import java.util.ArrayList; import org.opends.server.TestCaseUtils; import org.opends.server.api.Backend; import org.opends.server.api.Backend.BackendOperation; import org.opends.server.core.DirectoryServer; import org.opends.server.types.DN; import org.testng.annotations.BeforeClass; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; import org.opends.server.TestCaseUtils; import org.opends.server.api.Backend; import org.opends.server.core.DirectoryServer; import org.opends.server.types.DN; import static org.testng.Assert.*; /** * A set of generic test cases that apply to all Directory Server backends. */ @@ -53,9 +50,8 @@ * * @throws Exception If an unexpected problem occurs. */ @BeforeClass() public void startServer() throws Exception @BeforeClass public void startServer() throws Exception { TestCaseUtils.startServer(); TestCaseUtils.initializeTestBackend(true); @@ -71,9 +67,7 @@ @DataProvider(name = "backends") public Object[][] getBackends() { ArrayList<Backend> backendList = new ArrayList<Backend>(); backendList.addAll(DirectoryServer.getBackends().values()); ArrayList<Backend> backendList = new ArrayList<Backend>(DirectoryServer.getBackends().values()); Object[][] objectArray = new Object[backendList.size()][1]; for (int i=0; i < objectArray.length; i++) { @@ -91,7 +85,7 @@ * @param b The backend to test. */ @Test(dataProvider = "backends") public void testGetBaseDNs(Backend b) public void testGetBaseDNs(Backend<?> b) { DN[] baseDNs = b.getBaseDNs(); assertNotNull(baseDNs); @@ -106,7 +100,7 @@ * @param b The backend to test. */ @Test(dataProvider = "backends") public void testIsLocal(Backend b) public void testIsLocal(Backend<?> b) { b.isLocal(); } @@ -119,7 +113,7 @@ * @param b The backend to test. */ @Test(dataProvider = "backends") public void testGetSupportedControls(Backend b) public void testGetSupportedControls(Backend<?> b) { assertNotNull(b.getSupportedControls()); } @@ -132,7 +126,7 @@ * @param b The backend to test. */ @Test(dataProvider = "backends") public void testSupportsControl(Backend b) public void testSupportsControl(Backend<?> b) { assertFalse(b.supportsControl("1.2.3.4")); } @@ -145,7 +139,7 @@ * @param b The backend to test. */ @Test(dataProvider = "backends") public void testGetSupportedFeatures(Backend b) public void testGetSupportedFeatures(Backend<?> b) { assertNotNull(b.getSupportedFeatures()); b.getSupportedFeatures(); @@ -159,7 +153,7 @@ * @param b The backend to test. */ @Test(dataProvider = "backends") public void testSupportsFeature(Backend b) public void testSupportsFeature(Backend<?> b) { assertFalse(b.supportsFeature("1.2.3.4")); } @@ -172,9 +166,9 @@ * @param b The backend to test. */ @Test(dataProvider = "backends") public void testSupportsLDIFExport(Backend b) public void testSupportsLDIFExport(Backend<?> b) { b.supportsLDIFExport(); b.supports(BackendOperation.LDIF_EXPORT); } @@ -185,9 +179,9 @@ * @param b The backend to test. */ @Test(dataProvider = "backends") public void testSupportsLDIFImport(Backend b) public void testSupportsLDIFImport(Backend<?> b) { b.supportsLDIFImport(); b.supports(BackendOperation.LDIF_IMPORT); } @@ -198,9 +192,9 @@ * @param b The backend to test. */ @Test(dataProvider = "backends") public void testSupportsBackup(Backend b) public void testSupportsBackup(Backend<?> b) { b.supportsBackup(); b.supports(BackendOperation.BACKUP); } @@ -211,9 +205,9 @@ * @param b The backend to test. */ @Test(dataProvider = "backends") public void testSupportsRestore(Backend b) public void testSupportsRestore(Backend<?> b) { b.supportsRestore(); b.supports(BackendOperation.RESTORE); } @@ -224,7 +218,7 @@ * @param b The backend to test. */ @Test(dataProvider = "backends") public void testGetBackendID(Backend b) public void testGetBackendID(Backend<?> b) { assertNotNull(b.getBackendID()); assertTrue(b.getBackendID().length() > 0); @@ -238,7 +232,7 @@ * @param b The backend to test. */ @Test(dataProvider = "backends") public void testIsPrivateBackend(Backend b) public void testIsPrivateBackend(Backend<?> b) { b.isPrivateBackend(); } @@ -251,7 +245,7 @@ * @param b The backend to test. */ @Test(dataProvider = "backends") public void testGetWritabilityMode(Backend b) public void testGetWritabilityMode(Backend<?> b) { assertNotNull(b.getWritabilityMode()); } @@ -264,7 +258,7 @@ * @param b The backend to test. */ @Test(dataProvider = "backends") public void testGetBackendMonitor(Backend b) public void testGetBackendMonitor(Backend<?> b) { assertNotNull(b.getBackendMonitor()); } @@ -277,7 +271,7 @@ * @param b The backend to test. */ @Test(dataProvider = "backends") public void testGetEntryCount(Backend b) public void testGetEntryCount(Backend<?> b) { b.getEntryCount(); } @@ -290,7 +284,7 @@ * @param b The backend to test. */ @Test(dataProvider = "backends") public void testGetParentBackend(Backend b) public void testGetParentBackend(Backend<?> b) { b.getParentBackend(); } @@ -303,7 +297,7 @@ * @param b The backend to test. */ @Test(dataProvider = "backends") public void testGetSubordinateBackends(Backend b) public void testGetSubordinateBackends(Backend<?> b) { assertNotNull(b.getSubordinateBackends()); } @@ -319,14 +313,12 @@ * @throws Exception If an unexpected problem occurs. */ @Test(dataProvider = "backends") public void testHandlesEntry(Backend b) throws Exception public void testHandlesEntry(Backend<?> b) throws Exception { for (DN baseDN : b.getBaseDNs()) { assertTrue(b.handlesEntry(baseDN)); assertTrue(b.handlesEntry(DN.valueOf("cn=child," + baseDN.toString()))); assertTrue(b.handlesEntry(DN.valueOf("cn=child," + baseDN))); } } } opendj3-server-dev/tests/unit-tests-testng/src/server/org/opends/server/backends/LDIFBackendTestCase.java
@@ -38,6 +38,7 @@ import org.forgerock.opendj.ldap.SearchScope; import org.opends.server.TestCaseUtils; import org.opends.server.api.Backend; import org.opends.server.api.Backend.BackendOperation; import org.opends.server.backends.task.Task; import org.opends.server.backends.task.TaskState; import org.opends.server.core.AddOperation; @@ -70,9 +71,8 @@ * * @throws Exception If an unexpected problem occurs. */ @BeforeClass() public void setUp() throws Exception @BeforeClass public void setUp() throws Exception { TestCaseUtils.startServer(); @@ -687,11 +687,10 @@ * @throws Exception If an unexpected problem occurs. */ @Test public void testLDIFExport() throws Exception public void testLDIFExport() throws Exception { Backend<?> b = getLDIFBackend(); assertTrue(b.supportsLDIFExport()); assertTrue(b.supports(BackendOperation.LDIF_EXPORT)); String tempFilePath = TestCaseUtils.createTempFile(); @@ -725,7 +724,7 @@ LDIFBackend b = getLDIFBackend(); assertTrue(b.getEntryCount() > 0); assertTrue(b.isLocal()); assertFalse(b.supportsBackup()); assertFalse(b.supports(BackendOperation.BACKUP)); try { @@ -739,7 +738,7 @@ fail("Expected an exception when calling removeBackup"); } catch (DirectoryException de) {} assertFalse(b.supportsRestore()); assertFalse(b.supports(BackendOperation.RESTORE)); try { opendj3-server-dev/tests/unit-tests-testng/src/server/org/opends/server/backends/pluggable/PluggableBackendImplTestCase.java
@@ -23,18 +23,13 @@ * * Copyright 2015 ForgeRock AS */ package org.opends.server.backends.pluggable; import static org.forgerock.opendj.ldap.ModificationType.ADD; import static org.opends.server.protocols.internal.InternalClientConnection.getRootConnection; import static org.opends.server.protocols.internal.Requests.newSearchRequest; import static org.opends.server.types.Attributes.create; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertFalse; import static org.testng.Assert.assertNotNull; import static org.testng.Assert.assertNull; import static org.testng.Assert.assertTrue; import static org.forgerock.opendj.ldap.ModificationType.*; import static org.opends.server.protocols.internal.InternalClientConnection.*; import static org.opends.server.protocols.internal.Requests.*; import static org.opends.server.types.Attributes.*; import static org.testng.Assert.*; import java.io.ByteArrayOutputStream; import java.io.File; @@ -49,6 +44,7 @@ import org.forgerock.opendj.ldap.SearchScope; import org.opends.server.DirectoryServerTestCase; import org.opends.server.TestCaseUtils; import org.opends.server.api.Backend.BackendOperation; import org.opends.server.core.DirectoryServer; import org.opends.server.protocols.internal.InternalClientConnection; import org.opends.server.protocols.internal.InternalSearchOperation; @@ -768,7 +764,7 @@ @Test(dependsOnMethods = { "testBaseSearch", "testOneLevelSearch", "testSubTreeSearch", "testUserEntrySearch" }) public void testImportLDIF() throws Exception { assertTrue(backend.supportsLDIFImport(), "Import not supported"); assertTrue(backend.supports(BackendOperation.LDIF_IMPORT), "Import not supported"); // Import wants the backend to be configured but not initialized. Finalizing resets the status. backend.finalizeBackend(); @@ -816,7 +812,7 @@ @Test(dependsOnMethods = "testPreloadEntryCache") public void testBackup() throws Exception { assertEquals(backend.supportsBackup(), true, "Skip Backup"); assertEquals(backend.supports(BackendOperation.BACKUP), true, "Skip Backup"); assertNotNull(backupID, "Need to setup a backupID"); backupPath = TestCaseUtils.createTemporaryDirectory("backup").getAbsolutePath(); @@ -830,7 +826,7 @@ @Test(dependsOnMethods = "testBackup") public void testRestore() throws Exception { assertTrue(backend.supportsRestore(), "Skip Restore"); assertTrue(backend.supports(BackendOperation.RESTORE), "Skip Restore"); backend.restoreBackup(new RestoreConfig(backupDirectory, backupID, true)); } @@ -838,7 +834,7 @@ @Test(dependsOnMethods = "testRestore") public void testExportLDIF() throws Exception { assertTrue(backend.supportsLDIFExport(), "Export not supported"); assertTrue(backend.supports(BackendOperation.LDIF_EXPORT), "Export not supported"); ByteArrayOutputStream ldifData = new ByteArrayOutputStream(); LDIFExportConfig exportConfig = new LDIFExportConfig(ldifData);