| | |
| | | import java.util.*; |
| | | import java.util.concurrent.atomic.AtomicLong; |
| | | |
| | | import org.opends.messages.Message; |
| | | import org.opends.messages.MessageBuilder; |
| | | import org.forgerock.i18n.LocalizableMessage; |
| | | import org.forgerock.i18n.LocalizableMessageBuilder; |
| | | import org.opends.server.api.plugin.PluginResult; |
| | | import org.opends.server.backends.jeb.EntryID; |
| | | import org.opends.server.backends.jeb.RootContainer; |
| | |
| | | "exclude branches.", entryDN); |
| | | } |
| | | entriesRead.incrementAndGet(); |
| | | Message message = ERR_LDIF_SKIP.get(String.valueOf(entryDN)); |
| | | LocalizableMessage message = ERR_LDIF_SKIP.get(String.valueOf(entryDN)); |
| | | logToSkipWriter(lines, message); |
| | | continue; |
| | | } |
| | |
| | | "check." ,entryDN); |
| | | } |
| | | entriesRead.incrementAndGet(); |
| | | Message message = ERR_LDIF_SKIP.get(String.valueOf(entryDN)); |
| | | LocalizableMessage message = ERR_LDIF_SKIP.get(String.valueOf(entryDN)); |
| | | logToSkipWriter(lines, message); |
| | | continue; |
| | | } |
| | |
| | | TRACER.debugInfo("Skipping entry %s because reading" + |
| | | "its attributes failed.", entryDN); |
| | | } |
| | | Message message = ERR_LDIF_READ_ATTR_SKIP.get(String.valueOf(entryDN), |
| | | LocalizableMessage message = ERR_LDIF_READ_ATTR_SKIP.get(String.valueOf(entryDN), |
| | | e.getMessage()); |
| | | logToSkipWriter(lines, message); |
| | | suffix.removePending(entryDN); |
| | |
| | | "that should be included based on the include and exclude " + |
| | | "filters.", entryDN); |
| | | } |
| | | Message message = ERR_LDIF_SKIP.get(String.valueOf(entryDN)); |
| | | LocalizableMessage message = ERR_LDIF_SKIP.get(String.valueOf(entryDN)); |
| | | logToSkipWriter(lines, message); |
| | | suffix.removePending(entryDN); |
| | | continue; |
| | |
| | | TRACER.debugCaught(DebugLogLevel.ERROR, e); |
| | | } |
| | | suffix.removePending(entryDN); |
| | | Message message = ERR_LDIF_COULD_NOT_EVALUATE_FILTERS_FOR_IMPORT. |
| | | LocalizableMessage message = ERR_LDIF_COULD_NOT_EVALUATE_FILTERS_FOR_IMPORT. |
| | | get(String.valueOf(entry.getName()), lastEntryLineNumber, |
| | | String.valueOf(e)); |
| | | logToSkipWriter(lines, message); |
| | |
| | | pluginConfigManager.invokeLDIFImportPlugins(importConfig, entry); |
| | | if (! pluginResult.continueProcessing()) |
| | | { |
| | | Message m; |
| | | Message rejectMessage = pluginResult.getErrorMessage(); |
| | | LocalizableMessage m; |
| | | LocalizableMessage rejectMessage = pluginResult.getErrorMessage(); |
| | | if (rejectMessage == null) |
| | | { |
| | | m = ERR_LDIF_REJECTED_BY_PLUGIN_NOMESSAGE.get( |
| | |
| | | //Add any superior objectclass(s) missing in the objectclass map. |
| | | addSuperiorObjectClasses(objectClasses); |
| | | |
| | | MessageBuilder invalidReason = new MessageBuilder(); |
| | | LocalizableMessageBuilder invalidReason = new LocalizableMessageBuilder(); |
| | | if (! entry.conformsToSchema(null, false, true, false, invalidReason)) |
| | | { |
| | | Message message = ERR_LDIF_SCHEMA_VIOLATION.get( |
| | | LocalizableMessage message = ERR_LDIF_SCHEMA_VIOLATION.get( |
| | | String.valueOf(entryDN), |
| | | lastEntryLineNumber, |
| | | invalidReason.toString()); |
| | |
| | | entryDN); |
| | | } |
| | | entriesRead.incrementAndGet(); |
| | | Message message = ERR_LDIF_SKIP.get(String.valueOf(entryDN)); |
| | | LocalizableMessage message = ERR_LDIF_SKIP.get(String.valueOf(entryDN)); |
| | | logToSkipWriter(lines, message); |
| | | continue; |
| | | } |
| | |
| | | "that should be included based on the include and exclude " + |
| | | "filters.", entryDN); |
| | | } |
| | | Message message = ERR_LDIF_SKIP.get(String.valueOf(entryDN)); |
| | | LocalizableMessage message = ERR_LDIF_SKIP.get(String.valueOf(entryDN)); |
| | | logToSkipWriter(lines, message); |
| | | continue; |
| | | } |
| | |
| | | TRACER.debugCaught(DebugLogLevel.ERROR, e); |
| | | } |
| | | |
| | | Message message = ERR_LDIF_COULD_NOT_EVALUATE_FILTERS_FOR_IMPORT. |
| | | LocalizableMessage message = ERR_LDIF_COULD_NOT_EVALUATE_FILTERS_FOR_IMPORT. |
| | | get(String.valueOf(entry.getName()), lastEntryLineNumber, |
| | | String.valueOf(e)); |
| | | throw new LDIFException(message, lastEntryLineNumber, true, e); |
| | |
| | | pluginConfigManager.invokeLDIFImportPlugins(importConfig, entry); |
| | | if (! pluginResult.continueProcessing()) |
| | | { |
| | | Message m; |
| | | Message rejectMessage = pluginResult.getErrorMessage(); |
| | | LocalizableMessage m; |
| | | LocalizableMessage rejectMessage = pluginResult.getErrorMessage(); |
| | | if (rejectMessage == null) |
| | | { |
| | | m = ERR_LDIF_REJECTED_BY_PLUGIN_NOMESSAGE.get( |
| | |
| | | // appropriate to do so. |
| | | if (checkSchema) |
| | | { |
| | | MessageBuilder invalidReason = new MessageBuilder(); |
| | | LocalizableMessageBuilder invalidReason = new LocalizableMessageBuilder(); |
| | | if (! entry.conformsToSchema(null, false, true, false, invalidReason)) |
| | | { |
| | | Message message = ERR_LDIF_SCHEMA_VIOLATION.get( |
| | | LocalizableMessage message = ERR_LDIF_SCHEMA_VIOLATION.get( |
| | | String.valueOf(entryDN), |
| | | lastEntryLineNumber, |
| | | invalidReason.toString()); |
| | |
| | | entry = parseModifyDNChangeRecordEntry(entryDN, lines); |
| | | } else |
| | | { |
| | | Message message = ERR_LDIF_INVALID_CHANGETYPE_ATTRIBUTE.get( |
| | | LocalizableMessage message = ERR_LDIF_INVALID_CHANGETYPE_ATTRIBUTE.get( |
| | | changeType, "add, delete, modify, moddn, modrdn"); |
| | | throw new LDIFException(message, lastEntryLineNumber, false); |
| | | } |
| | |
| | | entry = parseAddChangeRecordEntry(entryDN, lines); |
| | | } else |
| | | { |
| | | Message message = ERR_LDIF_INVALID_CHANGETYPE_ATTRIBUTE.get( |
| | | LocalizableMessage message = ERR_LDIF_INVALID_CHANGETYPE_ATTRIBUTE.get( |
| | | null, "add, delete, modify, moddn, modrdn"); |
| | | throw new LDIFException(message, lastEntryLineNumber, false); |
| | | } |
| | |
| | | } |
| | | else |
| | | { |
| | | Message message = |
| | | LocalizableMessage message = |
| | | ERR_LDIF_INVALID_LEADING_SPACE.get(lineNumber, line); |
| | | logToRejectWriter(lines, message); |
| | | throw new LDIFException(message, lineNumber, false); |
| | |
| | | int colonPos = line.indexOf(":"); |
| | | if (colonPos <= 0) |
| | | { |
| | | Message message = |
| | | LocalizableMessage message = |
| | | ERR_LDIF_NO_ATTR_NAME.get(lastEntryLineNumber, line.toString()); |
| | | |
| | | logToRejectWriter(lines, message); |
| | |
| | | } |
| | | else if (! attrName.equals("dn")) |
| | | { |
| | | Message message = |
| | | LocalizableMessage message = |
| | | ERR_LDIF_NO_DN.get(lastEntryLineNumber, line.toString()); |
| | | |
| | | logToRejectWriter(lines, message); |
| | |
| | | encodedStr, stackTrace); |
| | | } |
| | | |
| | | Message message = ERR_LDIF_COULD_NOT_BASE64_DECODE_DN.get( |
| | | LocalizableMessage message = ERR_LDIF_COULD_NOT_BASE64_DECODE_DN.get( |
| | | lastEntryLineNumber, line, stackTrace); |
| | | logToRejectWriter(lines, message); |
| | | throw new LDIFException(message, lastEntryLineNumber, true, e); |
| | |
| | | TRACER.debugInfo("DN decode failed for: ", dnString); |
| | | } |
| | | |
| | | Message message = ERR_LDIF_INVALID_DN.get( |
| | | LocalizableMessage message = ERR_LDIF_INVALID_DN.get( |
| | | lastEntryLineNumber, line.toString(), |
| | | de.getMessageObject()); |
| | | |
| | |
| | | { |
| | | TRACER.debugInfo("DN decode failed for: ", dnString); |
| | | } |
| | | Message message = ERR_LDIF_INVALID_DN.get( |
| | | LocalizableMessage message = ERR_LDIF_INVALID_DN.get( |
| | | lastEntryLineNumber, line.toString(), |
| | | String.valueOf(e)); |
| | | |
| | |
| | | int colonPos = line.indexOf(":"); |
| | | if (colonPos <= 0) |
| | | { |
| | | Message message = ERR_LDIF_NO_ATTR_NAME.get( |
| | | LocalizableMessage message = ERR_LDIF_NO_ATTR_NAME.get( |
| | | lastEntryLineNumber, line.toString()); |
| | | logToRejectWriter(lines, message); |
| | | throw new LDIFException(message, lastEntryLineNumber, true); |
| | |
| | | int length = line.length(); |
| | | if (colonPos == (length-1)) |
| | | { |
| | | Message message = ERR_LDIF_INVALID_CHANGETYPE_ATTRIBUTE.get( |
| | | LocalizableMessage message = ERR_LDIF_INVALID_CHANGETYPE_ATTRIBUTE.get( |
| | | null, "add, delete, modify, moddn, modrdn"); |
| | | throw new LDIFException(message, lastEntryLineNumber, false ); |
| | | } |
| | |
| | | { |
| | | if(attribute.hasOption("binary")) |
| | | { |
| | | Message message = ERR_LDIF_INVALID_ATTR_OPTION.get( |
| | | LocalizableMessage message = ERR_LDIF_INVALID_ATTR_OPTION.get( |
| | | String.valueOf(entryDN),lastEntryLineNumber, attrName); |
| | | logToRejectWriter(lines, message); |
| | | throw new LDIFException(message, lastEntryLineNumber,true); |
| | |
| | | (DirectoryServer.getSyntaxEnforcementPolicy() != |
| | | AcceptRejectWarn.ACCEPT)) |
| | | { |
| | | MessageBuilder invalidReason = new MessageBuilder(); |
| | | LocalizableMessageBuilder invalidReason = new LocalizableMessageBuilder(); |
| | | if (! attrType.getSyntax().valueIsAcceptable(value, invalidReason)) |
| | | { |
| | | Message message = WARN_LDIF_VALUE_VIOLATES_SYNTAX.get( |
| | | LocalizableMessage message = WARN_LDIF_VALUE_VIOLATES_SYNTAX.get( |
| | | String.valueOf(entryDN), |
| | | lastEntryLineNumber, value.toString(), |
| | | attrName, invalidReason.toString()); |
| | |
| | | { |
| | | if (!a.add(attributeValue) && checkSchema) |
| | | { |
| | | Message message = WARN_LDIF_DUPLICATE_ATTR.get( |
| | | LocalizableMessage message = WARN_LDIF_DUPLICATE_ATTR.get( |
| | | String.valueOf(entryDN), |
| | | lastEntryLineNumber, attrName, |
| | | value.toString()); |
| | |
| | | } |
| | | if (attrType.isSingleValue() && (a.size() > 1) && checkSchema) |
| | | { |
| | | Message message = ERR_LDIF_MULTIPLE_VALUES_FOR_SINGLE_VALUED_ATTR |
| | | LocalizableMessage message = ERR_LDIF_MULTIPLE_VALUES_FOR_SINGLE_VALUED_ATTR |
| | | .get(String.valueOf(entryDN), |
| | | lastEntryLineNumber, attrName); |
| | | logToRejectWriter(lines, message); |
| | |
| | | |
| | | if (!attribute.equals(expectedAttr)) |
| | | { |
| | | Message message = ERR_LDIF_INVALID_CHANGERECORD_ATTRIBUTE.get( |
| | | LocalizableMessage message = ERR_LDIF_INVALID_CHANGERECORD_ATTRIBUTE.get( |
| | | attrDescr, attributeName); |
| | | throw new LDIFException(message, lastEntryLineNumber, false); |
| | | } |
| | |
| | | * @param message A human-readable message providing the reason that the |
| | | * last entry read was not acceptable. |
| | | */ |
| | | public void rejectLastEntry(Message message) |
| | | public void rejectLastEntry(LocalizableMessage message) |
| | | { |
| | | entriesRejected.incrementAndGet(); |
| | | |
| | |
| | | * @param e The entry to log. |
| | | * @param message The message to log. |
| | | */ |
| | | public synchronized void rejectEntry(Entry e, Message message) { |
| | | public synchronized void rejectEntry(Entry e, LocalizableMessage message) { |
| | | BufferedWriter rejectWriter = importConfig.getRejectWriter(); |
| | | entriesRejected.incrementAndGet(); |
| | | if (rejectWriter != null) { |
| | |
| | | |
| | | if(lines.isEmpty()) |
| | | { |
| | | Message message = ERR_LDIF_NO_MOD_DN_ATTRIBUTES.get(); |
| | | LocalizableMessage message = ERR_LDIF_NO_MOD_DN_ATTRIBUTES.get(); |
| | | throw new LDIFException(message, lineNumber, true); |
| | | } |
| | | |
| | |
| | | { |
| | | TRACER.debugCaught(DebugLogLevel.ERROR, de); |
| | | } |
| | | Message message = ERR_LDIF_INVALID_DN.get( |
| | | LocalizableMessage message = ERR_LDIF_INVALID_DN.get( |
| | | lineNumber, line.toString(), de.getMessageObject()); |
| | | throw new LDIFException(message, lineNumber, true); |
| | | } catch (Exception e) |
| | |
| | | { |
| | | TRACER.debugCaught(DebugLogLevel.ERROR, e); |
| | | } |
| | | Message message = |
| | | LocalizableMessage message = |
| | | ERR_LDIF_INVALID_DN.get(lineNumber, line.toString(), e.getMessage()); |
| | | throw new LDIFException(message, lineNumber, true); |
| | | } |
| | | |
| | | if(lines.isEmpty()) |
| | | { |
| | | Message message = ERR_LDIF_NO_DELETE_OLDRDN_ATTRIBUTE.get(); |
| | | LocalizableMessage message = ERR_LDIF_NO_DELETE_OLDRDN_ATTRIBUTE.get(); |
| | | throw new LDIFException(message, lineNumber, true); |
| | | } |
| | | lineNumber++; |
| | |
| | | deleteOldRDN = true; |
| | | } else |
| | | { |
| | | Message message = ERR_LDIF_INVALID_DELETE_OLDRDN_ATTRIBUTE.get(delStr); |
| | | LocalizableMessage message = ERR_LDIF_INVALID_DELETE_OLDRDN_ATTRIBUTE.get(delStr); |
| | | throw new LDIFException(message, lineNumber, true); |
| | | } |
| | | |
| | |
| | | { |
| | | TRACER.debugCaught(DebugLogLevel.ERROR, de); |
| | | } |
| | | Message message = ERR_LDIF_INVALID_DN.get( |
| | | LocalizableMessage message = ERR_LDIF_INVALID_DN.get( |
| | | lineNumber, line.toString(), de.getMessageObject()); |
| | | throw new LDIFException(message, lineNumber, true); |
| | | } catch (Exception e) |
| | |
| | | { |
| | | TRACER.debugCaught(DebugLogLevel.ERROR, e); |
| | | } |
| | | Message message = ERR_LDIF_INVALID_DN.get( |
| | | LocalizableMessage message = ERR_LDIF_INVALID_DN.get( |
| | | lineNumber, line.toString(), e.getMessage()); |
| | | throw new LDIFException(message, lineNumber, true); |
| | | } |
| | |
| | | else |
| | | { |
| | | // Invalid attribute name. |
| | | Message message = ERR_LDIF_INVALID_MODIFY_ATTRIBUTE.get(name, |
| | | LocalizableMessage message = ERR_LDIF_INVALID_MODIFY_ATTRIBUTE.get(name, |
| | | "add, delete, replace, increment"); |
| | | throw new LDIFException(message, lineNumber, true); |
| | | } |
| | |
| | | { |
| | | if (!lines.isEmpty()) |
| | | { |
| | | Message message = ERR_LDIF_INVALID_DELETE_ATTRIBUTES.get(); |
| | | LocalizableMessage message = ERR_LDIF_INVALID_DELETE_ATTRIBUTES.get(); |
| | | throw new LDIFException(message, lineNumber, true); |
| | | } |
| | | return new DeleteChangeRecordEntry(entryDN); |
| | |
| | | int colonPos = line.indexOf(":"); |
| | | if (colonPos <= 0) |
| | | { |
| | | Message message = ERR_LDIF_NO_ATTR_NAME.get( |
| | | LocalizableMessage message = ERR_LDIF_NO_ATTR_NAME.get( |
| | | lastEntryLineNumber, line.toString()); |
| | | logToRejectWriter(lines, message); |
| | | throw new LDIFException(message, lastEntryLineNumber, true); |
| | |
| | | TRACER.debugCaught(DebugLogLevel.ERROR, e); |
| | | } |
| | | |
| | | Message message = ERR_LDIF_COULD_NOT_BASE64_DECODE_ATTR.get( |
| | | LocalizableMessage message = ERR_LDIF_COULD_NOT_BASE64_DECODE_ATTR.get( |
| | | String.valueOf(entryDN), |
| | | lastEntryLineNumber, line, |
| | | String.valueOf(e)); |
| | |
| | | TRACER.debugCaught(DebugLogLevel.ERROR, e); |
| | | } |
| | | |
| | | Message message = ERR_LDIF_INVALID_URL.get(String.valueOf(entryDN), |
| | | LocalizableMessage message = ERR_LDIF_INVALID_URL.get(String.valueOf(entryDN), |
| | | lastEntryLineNumber, |
| | | String.valueOf(attrName), |
| | | String.valueOf(e)); |
| | |
| | | TRACER.debugCaught(DebugLogLevel.ERROR, e); |
| | | } |
| | | |
| | | Message message = ERR_LDIF_URL_IO_ERROR.get(String.valueOf(entryDN), |
| | | LocalizableMessage message = ERR_LDIF_URL_IO_ERROR.get(String.valueOf(entryDN), |
| | | lastEntryLineNumber, |
| | | String.valueOf(attrName), |
| | | String.valueOf(contentURL), |
| | |
| | | * @param message |
| | | * The associated error message. |
| | | */ |
| | | private void logToRejectWriter(List<StringBuilder> lines, Message message) |
| | | private void logToRejectWriter(List<StringBuilder> lines, LocalizableMessage message) |
| | | { |
| | | entriesRejected.incrementAndGet(); |
| | | BufferedWriter rejectWriter = importConfig.getRejectWriter(); |
| | |
| | | * @param message |
| | | * The associated error message. |
| | | */ |
| | | private void logToSkipWriter(List<StringBuilder> lines, Message message) |
| | | private void logToSkipWriter(List<StringBuilder> lines, LocalizableMessage message) |
| | | { |
| | | entriesIgnored.incrementAndGet(); |
| | | BufferedWriter skipWriter = importConfig.getSkipWriter(); |
| | |
| | | * The associated error message. |
| | | */ |
| | | private void logToWriter(BufferedWriter writer, List<StringBuilder> lines, |
| | | Message message) |
| | | LocalizableMessage message) |
| | | { |
| | | if (writer != null) |
| | | { |