From 5d8dba35b0c44d205b5448747ed0a7f8f86ce563 Mon Sep 17 00:00:00 2001
From: Jean-Noël Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Tue, 03 May 2016 08:40:47 +0000
Subject: [PATCH] code cleanup
---
opendj-server-legacy/src/main/java/org/opends/server/protocols/http/AllowDenyFilter.java | 5
opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/ReplLDIFOutputStream.java | 82 ++++-----
opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/SimplifiedViewEntryPanel.java | 241 ++++++++++++++---------------
opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/ViewEntryPanel.java | 63 -------
opendj-server-legacy/src/main/java/org/opends/server/protocols/ldap/LDAPRequestHandler.java | 42 ----
5 files changed, 162 insertions(+), 271 deletions(-)
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/SimplifiedViewEntryPanel.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/SimplifiedViewEntryPanel.java
index a54f5fb..d260a7d 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/SimplifiedViewEntryPanel.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/SimplifiedViewEntryPanel.java
@@ -76,6 +76,7 @@
import org.forgerock.opendj.ldap.DN;
import org.forgerock.opendj.ldap.RDN;
import org.forgerock.opendj.ldap.schema.AttributeType;
+import org.forgerock.opendj.ldap.schema.Syntax;
import org.opends.guitools.controlpanel.datamodel.BinaryValue;
import org.opends.guitools.controlpanel.datamodel.CheckEntrySyntaxException;
import org.opends.guitools.controlpanel.datamodel.CustomSearchResult;
@@ -134,7 +135,7 @@
private final String CONFIRM_PASSWORD = "opendj-confirm-password";
/** Map containing as key the attribute name and as value a localizable message. */
- private final static Map<String, LocalizableMessage> hmFriendlyAttrNames = new HashMap<>();
+ private static final Map<String, LocalizableMessage> hmFriendlyAttrNames = new HashMap<>();
/**
* Map containing as key an object class and as value the preferred naming
* attribute for the objectclass.
@@ -460,11 +461,12 @@
{
for (final String attr : sortedAttributes)
{
+ String lcAttr = attr.toLowerCase();
JLabel label = getLabelForAttribute(attr, sr);
if (isRequired(attr, sr))
{
Utilities.setRequiredIcon(label);
- requiredAttrs.add(attr.toLowerCase());
+ requiredAttrs.add(lcAttr);
}
List<Object> values = sr.getAttributeValues(attr);
if (values.isEmpty())
@@ -488,7 +490,7 @@
{
pwds.add(getPasswordStringValue(o));
}
- lastUserPasswords.put(attr.toLowerCase(), pwds);
+ lastUserPasswords.put(lcAttr, pwds);
}
JComponent comp = getReadWriteComponent(attr, values);
@@ -502,8 +504,8 @@
gbc.gridwidth = GridBagConstraints.REMAINDER;
attributesPanel.add(comp, gbc);
gbc.insets.top = 10;
- hmLabels.put(attr.toLowerCase(), label);
- hmComponents.put(attr.toLowerCase(), comp);
+ hmLabels.put(lcAttr, label);
+ hmComponents.put(lcAttr, comp);
if (isPasswordAttr)
{
@@ -588,11 +590,12 @@
private int anchor1(List<Object> values)
{
- if (values.size() > 1)
+ int size = values.size();
+ if (size > 1)
{
return GridBagConstraints.NORTHWEST;
}
- if (values.size() == 1)
+ else if (size == 1)
{
Object v = values.get(0);
if (v instanceof String && ((String) v).contains("\n"))
@@ -605,7 +608,6 @@
private JLabel getLabelForAttribute(String attrName, CustomSearchResult sr)
{
- LocalizableMessageBuilder l = new LocalizableMessageBuilder();
int index = attrName.indexOf(";");
String basicAttrName;
String subType;
@@ -624,26 +626,21 @@
// TODO: use message
subType = "binary";
}
+
+ LocalizableMessageBuilder l = new LocalizableMessageBuilder();
boolean isNameAttribute = isAttrName(basicAttrName, sr);
if (isNameAttribute)
{
+ l.append(NAME);
if (subType != null)
{
- l.append(NAME).append(" (").append(subType).append(")");
- }
- else
- {
- l.append(NAME);
+ l.append(" (").append(subType).append(")");
}
}
else
{
LocalizableMessage friendly = hmFriendlyAttrNames.get(basicAttrName.toLowerCase());
- if (friendly == null)
- {
- l.append(attrName);
- }
- else
+ if (friendly != null)
{
l.append(friendly);
if (subType != null)
@@ -651,32 +648,31 @@
l.append(" (").append(subType).append(")");
}
}
+ else
+ {
+ l.append(attrName);
+ }
}
hmDisplayedNames.put(attrName.toLowerCase(), l.toString());
l.append(":");
return Utilities.createPrimaryLabel(l.toMessage());
}
- private Collection<String> getSortedAttributes(CustomSearchResult sr,
- boolean isReadOnly)
+ private Collection<String> getSortedAttributes(CustomSearchResult sr, boolean isReadOnly)
{
- LinkedHashSet<String> attrNames = new LinkedHashSet<>();
-
-// Get all attributes that the entry can have
+ // Get all attributes that the entry can have
Set<String> attributes = new LinkedHashSet<>();
- ArrayList<String> entryAttrs = new ArrayList<>(sr.getAttributeNames());
- ArrayList<String> attrsWithNoOptions = new ArrayList<>();
+ List<String> entryAttrs = new ArrayList<>(sr.getAttributeNames());
+ List<String> attrsWithNoOptions = new ArrayList<>();
for (String attr : entryAttrs)
{
AttributeDescription attrDesc = AttributeDescription.valueOf(attr);
attrsWithNoOptions.add(attrDesc.getNameOrOID().toLowerCase());
}
- List<Object> values =
- sr.getAttributeValues(ServerConstants.OBJECTCLASS_ATTRIBUTE_TYPE_NAME);
-
- // Put first the attributes associated with the objectclass in
- // hmOrderedAttrNames
+ // Put first the attributes associated with the objectclass in hmOrderedAttrNames
+ LinkedHashSet<String> attrNames = new LinkedHashSet<>();
+ List<Object> values = sr.getAttributeValues(ServerConstants.OBJECTCLASS_ATTRIBUTE_TYPE_NAME);
for (Object o : values)
{
String ocName = (String)o;
@@ -686,14 +682,7 @@
for (String attr : attrs)
{
int index = attrsWithNoOptions.indexOf(attr.toLowerCase());
- if (index != -1)
- {
- attrNames.add(entryAttrs.get(index));
- }
- else
- {
- attrNames.add(attr);
- }
+ attrNames.add(index != -1 ? entryAttrs.get(index) : attr);
}
}
}
@@ -744,12 +733,11 @@
}
}
}
+
// Now try to put first the attributes for which we have a friendly
// name (the most common ones).
- updateAttributes(attributes, requiredAttributes, entryAttrs, attrsWithNoOptions, true);
- updateAttributes(attributes, requiredAttributes, entryAttrs, attrsWithNoOptions, false);
- updateAttributes(attributes, allowedAttributes, entryAttrs, attrsWithNoOptions, true);
- updateAttributes(attributes, allowedAttributes, entryAttrs, attrsWithNoOptions, false);
+ updateAttributes(attributes, requiredAttributes, entryAttrs, attrsWithNoOptions);
+ updateAttributes(attributes, allowedAttributes, entryAttrs, attrsWithNoOptions);
attributes.addAll(entryAttrs);
attributes.add("aci");
@@ -787,35 +775,49 @@
private void updateAttributes(
Collection<String> attributes,
Set<String> newAttributes,
- ArrayList<String> entryAttrs,
- ArrayList<String> attrsWithNoOptions,
- boolean addIfFriendlyName)
+ List<String> entryAttrs,
+ List<String> attrsWithNoOptions)
{
for (String attr : newAttributes)
{
- String attrLc = attr.toLowerCase();
- boolean hasFriendlyName = hmFriendlyAttrNames.get(attrLc) != null;
- if (hasFriendlyName == addIfFriendlyName)
+ int index = attrsWithNoOptions.indexOf(attr.toLowerCase());
+ if (index != -1)
{
- int index = attrsWithNoOptions.indexOf(attrLc);
- if (index != -1)
- {
- attributes.add(entryAttrs.get(index));
- }
- else if (hasCertificateSyntax(attr, getInfo().getServerDescriptor().getSchema()))
- {
- attributes.add(attr + ";binary");
- }
- else
- {
- attributes.add(attr);
- }
+ attributes.add(entryAttrs.get(index));
+ }
+ else if (hasCertificateSyntax(attr))
+ {
+ attributes.add(attr + ";binary");
+ }
+ else
+ {
+ attributes.add(attr);
}
}
}
- private JComponent getReadOnlyComponent(final String attrName,
- List<Object> values)
+ private boolean hasCertificateSyntax(String attrName)
+ {
+ Schema schema = getInfo().getServerDescriptor().getSchema();
+ boolean isCertificate = false;
+ // Check all the attributes that we consider binaries.
+ if (schema != null)
+ {
+ String attributeName = AttributeDescription.valueOf(attrName).getNameOrOID().toLowerCase();
+ if (schema.hasAttributeType(attributeName))
+ {
+ AttributeType attr = schema.getAttributeType(attributeName);
+ Syntax syntax = attr.getSyntax();
+ if (syntax != null)
+ {
+ isCertificate = SchemaConstants.SYNTAX_CERTIFICATE_OID.equals(syntax.getOID());
+ }
+ }
+ }
+ return isCertificate;
+ }
+
+ private JComponent getReadOnlyComponent(final String attrName, List<Object> values)
{
// GridLayout is used to avoid the 512 limit of GridBagLayout
JPanel panel = new JPanel(new GridBagLayout());
@@ -962,7 +964,7 @@
Utilities.centerGoldenMean(editOcDlg,
Utilities.getParentDialog(SimplifiedViewEntryPanel.this));
}
- if (newValue == null && ocDescriptor != null)
+ if (ocDescriptor != null)
{
editOcPanel.setValue(ocDescriptor);
}
@@ -1143,7 +1145,6 @@
private boolean isRequired(String attrName, CustomSearchResult sr)
{
-
Schema schema = getInfo().getServerDescriptor().getSchema();
if (schema != null)
{
@@ -1209,11 +1210,10 @@
}
for (String attrName : requiredAttrs)
{
- if (!!getValues(attrName).isEmpty())
+ if (getValues(attrName).isEmpty())
{
setPrimaryInvalid(hmLabels.get(attrName));
- errors.add(ERR_CTRL_PANEL_ATTRIBUTE_REQUIRED.get(
- hmDisplayedNames.get(attrName)));
+ errors.add(ERR_CTRL_PANEL_ATTRIBUTE_REQUIRED.get(hmDisplayedNames.get(attrName)));
}
}
@@ -1376,11 +1376,7 @@
{
AttributeType attr = schema.getAttributeType(attrName);
// There is no name for a regex syntax.
- String syntaxName = attr.getSyntax().getName();
- if (syntaxName != null)
- {
- return SchemaConstants.SYNTAX_DN_NAME.equalsIgnoreCase(syntaxName);
- }
+ return SchemaConstants.SYNTAX_DN_NAME.equalsIgnoreCase(attr.getSyntax().getName());
}
return false;
}
@@ -1409,10 +1405,16 @@
private void appendLDIFLines(StringBuilder sb, String attrName)
{
- List<Object> values = getValues(attrName);
- if (!values.isEmpty())
{
- appendLDIFLines(sb, attrName, values);
+ appendLDIFLines(sb, attrName, getValues(attrName));
+ }
+ }
+
+ private void appendLDIFLines(StringBuilder sb, String attrName, List<Object> values)
+ {
+ for (Object value : values)
+ {
+ appendLDIFLine(sb, attrName, value);
}
}
@@ -1425,42 +1427,16 @@
DN oldDN = DN.valueOf(searchResult.getDN());
if (oldDN.size() > 0)
{
- RDN rdn = oldDN.rdn();
- List<AVA> avas = new ArrayList<>();
- for (AVA ava : rdn)
- {
- AttributeType attrType = ava.getAttributeType();
- String attrName = ava.getAttributeName();
- ByteString value = ava.getAttributeValue();
-
- List<String> values = getDisplayedStringValues(attrName);
- if (!values.contains(value.toString()))
- {
- if (!values.isEmpty())
- {
- String firstNonEmpty = getFirstNonEmpty(values);
- if (firstNonEmpty != null)
- {
- avas.add(new AVA(attrType, attrName, ByteString.valueOfUtf8(firstNonEmpty)));
- }
- }
- }
- else
- {
- avas.add(new AVA(attrType, attrName, value));
- }
- }
+ List<AVA> avas = toAvas(oldDN.rdn());
if (avas.isEmpty())
{
- // Check the attributes in the order that we display them and use
- // the first one.
+ // Check the attributes in the order that we display them and use the first one.
Schema schema = getInfo().getServerDescriptor().getSchema();
if (schema != null)
{
for (String attrName : hmEditors.keySet())
{
- if (isPassword(attrName) ||
- isConfirmPassword(attrName))
+ if (isPassword(attrName) || isConfirmPassword(attrName))
{
continue;
}
@@ -1502,12 +1478,41 @@
return sb.toString();
}
+ private List<AVA> toAvas(RDN rdn)
+ {
+ List<AVA> avas = new ArrayList<>();
+ for (AVA ava : rdn)
+ {
+ AttributeType attrType = ava.getAttributeType();
+ String attrName = ava.getAttributeName();
+ ByteString value = ava.getAttributeValue();
+
+ List<String> values = getDisplayedStringValues(attrName);
+ if (!values.contains(value.toString()))
+ {
+ if (!values.isEmpty())
+ {
+ String firstNonEmpty = getFirstNonEmpty(values);
+ if (firstNonEmpty != null)
+ {
+ avas.add(new AVA(attrType, attrName, ByteString.valueOfUtf8(firstNonEmpty)));
+ }
+ }
+ }
+ else
+ {
+ avas.add(new AVA(attrType, attrName, value));
+ }
+ }
+ return avas;
+ }
+
private String getFirstNonEmpty(List<String> values)
{
for (String v : values)
{
v = v.trim();
- if (v.length() > 0)
+ if (!v.isEmpty())
{
return v;
}
@@ -1684,20 +1689,9 @@
{
for (String attrName : hmLabels.keySet())
{
- Component label = hmLabels.get(attrName);
- Component comp = hmComponents.get(attrName);
-
- if (showAll || requiredAttrs.contains(attrName))
- {
- label.setVisible(true);
- comp.setVisible(true);
- }
- else
- {
- boolean hasValue = hasValue(hmEditors.get(attrName));
- label.setVisible(hasValue);
- comp.setVisible(hasValue);
- }
+ final boolean visible = showAll || requiredAttrs.contains(attrName) || hasValue(hmEditors.get(attrName));
+ hmLabels .get(attrName).setVisible(visible);
+ hmComponents.get(attrName).setVisible(visible);
}
repaint();
}
@@ -1845,7 +1839,7 @@
for (String line : lines)
{
line = line.trim();
- if (line.length() > 0)
+ if (!line.isEmpty())
{
values.add(line);
}
@@ -1870,10 +1864,7 @@
throw new RuntimeException("Unexpected error: "+pe);
}
}
- else
- {
- return o;
- }
+ return o;
}
}
}
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/ViewEntryPanel.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/ViewEntryPanel.java
index 54d8ef4..0356e9c 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/ViewEntryPanel.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/ViewEntryPanel.java
@@ -39,7 +39,6 @@
import org.forgerock.opendj.ldap.ByteString;
import org.forgerock.opendj.ldap.schema.AttributeType;
import org.forgerock.opendj.ldap.schema.ObjectClassType;
-import org.forgerock.opendj.ldap.schema.Syntax;
import org.opends.guitools.controlpanel.datamodel.BinaryValue;
import org.opends.guitools.controlpanel.datamodel.CustomSearchResult;
import org.opends.guitools.controlpanel.datamodel.ObjectClassValue;
@@ -100,8 +99,7 @@
* @param isReadOnly whether the entry is read-only or not.
* @param path the tree path associated with the entry in the tree.
*/
- public abstract void update(CustomSearchResult sr, boolean isReadOnly,
- TreePath path);
+ public abstract void update(CustomSearchResult sr, boolean isReadOnly, TreePath path);
/**
* Adds a title panel to the container.
@@ -163,13 +161,12 @@
}
// TODO: With big entries this is pretty slow. Until there is a fix, try
// simply to update the dn
- Entry entry = null;
String dn = getDisplayedDN();
if (dn != null && !dn.equals(title.getText()))
{
title.setText(dn);
}
- LDAPEntryChangedEvent ev = new LDAPEntryChangedEvent(this, entry);
+ LDAPEntryChangedEvent ev = new LDAPEntryChangedEvent(this, null);
for (LDAPEntryChangedListener listener : listeners)
{
listener.entryChanged(ev);
@@ -255,11 +252,7 @@
{
if (objectClass.getObjectClassType() == ObjectClassType.STRUCTURAL)
{
- if (structuralObjectClass == null)
- {
- structuralObjectClass = objectClass;
- }
- else if (objectClass.isDescendantOf(structuralObjectClass))
+ if (structuralObjectClass == null || objectClass.isDescendantOf(structuralObjectClass))
{
structuralObjectClass = objectClass;
}
@@ -350,22 +343,6 @@
}
/**
- * Appends the LDIF lines corresponding to the different values of an
- * attribute to the provided StringBuilder.
- * @param sb the StringBuilder that must be updated.
- * @param attrName the attribute name.
- * @param values the attribute values.
- */
- protected void appendLDIFLines(StringBuilder sb, String attrName,
- List<Object> values)
- {
- for (Object value : values)
- {
- appendLDIFLine(sb, attrName, value);
- }
- }
-
- /**
* Appends the LDIF line corresponding to the value of an
* attribute to the provided StringBuilder.
* @param sb the StringBuilder that must be updated.
@@ -450,34 +427,6 @@
}
/**
- * Returns <CODE>true</CODE> if the provided attribute name has certificate
- * syntax and <CODE>false</CODE> otherwise.
- * @param attrName the attribute name.
- * @param schema the schema.
- * @return <CODE>true</CODE> if the provided attribute name has certificate
- * syntax and <CODE>false</CODE> otherwise.
- */
- protected boolean hasCertificateSyntax(String attrName, Schema schema)
- {
- boolean isCertificate = false;
- // Check all the attributes that we consider binaries.
- if (schema != null)
- {
- String attributeName = AttributeDescription.valueOf(attrName).getNameOrOID().toLowerCase();
- if (schema.hasAttributeType(attributeName))
- {
- AttributeType attr = schema.getAttributeType(attributeName);
- Syntax syntax = attr.getSyntax();
- if (syntax != null)
- {
- isCertificate = SchemaConstants.SYNTAX_CERTIFICATE_OID.equals(syntax.getOID());
- }
- }
- }
- return isCertificate;
- }
-
- /**
* Gets the values associated with a given attribute. The values are the
* ones displayed in the panel.
* @param attrName the attribute name.
@@ -552,13 +501,11 @@
}
/**
- * Returns the list of superior object classes (to top) for a given object
- * class.
+ * Returns the list of superior object classes (to top) for a given object class.
* @param oc the object class.
* @return the set of superior object classes for a given object classes.
*/
- protected Set<String> getObjectClassSuperiorValues(
- ObjectClass oc)
+ protected Set<String> getObjectClassSuperiorValues(ObjectClass oc)
{
Set<String> names = new LinkedHashSet<>();
Set<ObjectClass> parents = oc.getSuperiorClasses();
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/protocols/http/AllowDenyFilter.java b/opendj-server-legacy/src/main/java/org/opends/server/protocols/http/AllowDenyFilter.java
index 12fd6cc..88a414f 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/protocols/http/AllowDenyFilter.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/protocols/http/AllowDenyFilter.java
@@ -76,14 +76,13 @@
return next.handle(context, request);
}
- static final Promise<Response, NeverThrowsException> forbidden()
+ private static final Promise<Response, NeverThrowsException> forbidden()
{
return Promises.newResultPromise(new Response(Status.FORBIDDEN));
}
- static final Promise<Response, NeverThrowsException> internalError()
+ private static final Promise<Response, NeverThrowsException> internalError()
{
return Promises.newResultPromise(new Response(Status.INTERNAL_SERVER_ERROR));
}
-
}
\ No newline at end of file
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/protocols/ldap/LDAPRequestHandler.java b/opendj-server-legacy/src/main/java/org/opends/server/protocols/ldap/LDAPRequestHandler.java
index 53e9def..648be08 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/protocols/ldap/LDAPRequestHandler.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/protocols/ldap/LDAPRequestHandler.java
@@ -28,16 +28,15 @@
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
-
import java.util.LinkedList;
import java.util.List;
+
import org.forgerock.i18n.LocalizableMessage;
-import org.opends.server.api.DirectoryThread;
-import org.opends.server.api.ServerShutdownListener;
-import org.opends.server.core.DirectoryServer;
import org.forgerock.i18n.slf4j.LocalizedLogger;
import org.forgerock.opendj.io.ASN1Reader;
import org.forgerock.opendj.ldap.DecodeException;
+import org.opends.server.api.DirectoryThread;
+import org.opends.server.api.ServerShutdownListener;
import org.opends.server.types.DisconnectReason;
import org.opends.server.types.InitializationException;
import org.opends.server.types.LDAPException;
@@ -57,7 +56,6 @@
/** Indicates whether the Directory Server is in the process of shutting down. */
private volatile boolean shutdownRequested;
-
/** The current set of selection keys. */
private volatile SelectionKey[] keys = new SelectionKey[0];
@@ -70,13 +68,10 @@
/** Lock object for synchronizing access to the pending connections queue. */
private final Object pendingConnectionsLock = new Object();
-
/** The list of connections ready for request processing. */
- private LinkedList<LDAPClientConnection> readyConnections = new LinkedList<>();
-
+ private final LinkedList<LDAPClientConnection> readyConnections = new LinkedList<>();
/** The selector that will be used to monitor the client connections. */
private final Selector selector;
-
/** The name to use for this request handler. */
private final String handlerName;
@@ -459,41 +454,12 @@
return connList;
}
-
-
- /**
- * Retrieves the human-readable name for this shutdown listener.
- *
- * @return The human-readable name for this shutdown listener.
- */
@Override
public String getShutdownListenerName()
{
return handlerName;
}
-
-
- /**
- * Causes this request handler to register itself as a shutdown listener with
- * the Directory Server. This must be called if the connection handler is
- * shut down without closing all associated connections, otherwise the thread
- * would not be stopped by the server.
- */
- public void registerShutdownListener()
- {
- DirectoryServer.registerShutdownListener(this);
- }
-
-
-
- /**
- * Indicates that the Directory Server has received a request to stop running
- * and that this shutdown listener should take any action necessary to prepare
- * for it.
- *
- * @param reason The human-readable reason for the shutdown.
- */
@Override
public void processServerShutdown(LocalizableMessage reason)
{
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/ReplLDIFOutputStream.java b/opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/ReplLDIFOutputStream.java
index 213a977..6fea346 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/ReplLDIFOutputStream.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/replication/plugin/ReplLDIFOutputStream.java
@@ -30,14 +30,14 @@
extends OutputStream
{
/** The number of entries to be exported. */
- long numEntries;
+ private final long numEntries;
/** The current number of entries exported. */
private long numExportedEntries;
- String entryBuffer = "";
+ private String entryBuffer = "";
/** The checksum for computing the generation id. */
- private GenerationIdChecksum checkSum = new GenerationIdChecksum();
+ private final GenerationIdChecksum checkSum = new GenerationIdChecksum();
/**
* Creates a new ReplLDIFOutputStream related to a replication
@@ -68,61 +68,49 @@
@Override
public void write(byte b[], int off, int len) throws IOException
{
- int endOfEntryIndex;
- int endIndex;
-
- String ebytes = "";
- ebytes = ebytes.concat(entryBuffer);
+ String ebytes = entryBuffer;
entryBuffer = "";
- ebytes = ebytes.concat(new String(b, off, len));
- endIndex = ebytes.length();
+ ebytes = ebytes + new String(b, off, len);
+ int endIndex = ebytes.length();
while (true)
{
// if we have the bytes for an entry, let's make an entry and send it
- endOfEntryIndex = ebytes.indexOf(ServerConstants.EOL +
- ServerConstants.EOL);
-
- if ( endOfEntryIndex >= 0 )
- {
- endOfEntryIndex += 2;
- entryBuffer = ebytes.substring(0, endOfEntryIndex);
-
- // Send the entry
- if (numEntries>0 && getNumExportedEntries() > numEntries)
- {
- // This outputstream has reached the total number
- // of entries to export.
- throw new IOException();
- }
-
- // Add the entry bytes to the checksum
- byte[] entryBytes = entryBuffer.getBytes();
- checkSum.update(entryBytes, 0, entryBytes.length);
-
- numExportedEntries++;
- entryBuffer = "";
-
- if (endIndex == endOfEntryIndex)
- {
- // no more data to process
- break;
- }
- else
- {
- // loop to the data of the next entry
- ebytes = ebytes.substring(endOfEntryIndex,
- endIndex);
- endIndex = ebytes.length();
- }
- }
- else
+ int endOfEntryIndex = ebytes.indexOf(ServerConstants.EOL + ServerConstants.EOL);
+ if (endOfEntryIndex < 0)
{
// a next call to us will provide more bytes to make an entry
entryBuffer = entryBuffer.concat(ebytes);
break;
}
+
+ endOfEntryIndex += 2;
+ entryBuffer = ebytes.substring(0, endOfEntryIndex);
+
+ // Send the entry
+ if (numEntries > 0 && getNumExportedEntries() > numEntries)
+ {
+ // This outputstream has reached the total number
+ // of entries to export.
+ throw new IOException();
+ }
+
+ // Add the entry bytes to the checksum
+ byte[] entryBytes = entryBuffer.getBytes();
+ checkSum.update(entryBytes, 0, entryBytes.length);
+
+ numExportedEntries++;
+ entryBuffer = "";
+
+ if (endIndex == endOfEntryIndex)
+ {
+ // no more data to process
+ break;
+ }
+ // loop to the data of the next entry
+ ebytes = ebytes.substring(endOfEntryIndex, endIndex);
+ endIndex = ebytes.length();
}
}
--
Gitblit v1.10.0