You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by fe...@apache.org on 2010/06/03 14:13:44 UTC
svn commit: r950975 - in /directory:
apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/changelog/
apacheds/trunk/protocol-ldap/src/main/java/org/apache/directory/server/ldap/replication/
shared/trunk/ldap-ldif/src/main/java/org/apa...
Author: felixk
Date: Thu Jun 3 12:13:43 2010
New Revision: 950975
URL: http://svn.apache.org/viewvc?rev=950975&view=rev
Log:
Save string values larger than 64Kb - DIRSERVER-1319
Added:
directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/util/UTFUtils.java (with props)
directory/shared/trunk/ldap/src/test/java/org/apache/directory/shared/ldap/util/UTFUtilsTest.java (with props)
Modified:
directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/changelog/ChangeLogEvent.java
directory/apacheds/trunk/protocol-ldap/src/main/java/org/apache/directory/server/ldap/replication/ReplicaEventMessage.java
directory/shared/trunk/ldap-ldif/src/main/java/org/apache/directory/shared/ldap/ldif/LdifEntry.java
directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/entry/DefaultEntry.java
directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/entry/DefaultEntryAttribute.java
directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/entry/DefaultModification.java
directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/entry/StringValue.java
directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/name/AVA.java
directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/name/AVASerializer.java
directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/name/DN.java
directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/name/DnSerializer.java
directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/name/RDN.java
directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/name/RdnSerializer.java
Modified: directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/changelog/ChangeLogEvent.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/changelog/ChangeLogEvent.java?rev=950975&r1=950974&r2=950975&view=diff
==============================================================================
--- directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/changelog/ChangeLogEvent.java (original)
+++ directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/changelog/ChangeLogEvent.java Thu Jun 3 12:13:43 2010
@@ -30,6 +30,7 @@ import java.util.List;
import org.apache.directory.server.core.LdapPrincipal;
import org.apache.directory.shared.ldap.entry.EntryAttribute;
import org.apache.directory.shared.ldap.ldif.LdifEntry;
+import org.apache.directory.shared.ldap.util.UTFUtils;
/**
@@ -172,7 +173,7 @@ public class ChangeLogEvent implements E
if ( hasZuluTime )
{
- zuluTime = in.readUTF();
+ zuluTime = UTFUtils.readUTF( in );
}
// Read the forward LDIF
@@ -219,7 +220,7 @@ public class ChangeLogEvent implements E
if ( zuluTime != null )
{
out.writeBoolean( true );
- out.writeUTF( zuluTime );
+ UTFUtils.writeUTF( out, zuluTime );
}
else
{
Modified: directory/apacheds/trunk/protocol-ldap/src/main/java/org/apache/directory/server/ldap/replication/ReplicaEventMessage.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/protocol-ldap/src/main/java/org/apache/directory/server/ldap/replication/ReplicaEventMessage.java?rev=950975&r1=950974&r2=950975&view=diff
==============================================================================
--- directory/apacheds/trunk/protocol-ldap/src/main/java/org/apache/directory/server/ldap/replication/ReplicaEventMessage.java (original)
+++ directory/apacheds/trunk/protocol-ldap/src/main/java/org/apache/directory/server/ldap/replication/ReplicaEventMessage.java Thu Jun 3 12:13:43 2010
@@ -39,6 +39,7 @@ import org.apache.directory.shared.ldap.
import org.apache.directory.shared.ldap.name.DnSerializer;
import org.apache.directory.shared.ldap.schema.AttributeType;
import org.apache.directory.shared.ldap.schema.SchemaManager;
+import org.apache.directory.shared.ldap.util.UTFUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -110,22 +111,22 @@ public class ReplicaEventMessage impleme
modDnControl = new SyncModifyDnControl();
modDnControl.setModDnType( modDnType );
- modDnControl.setEntryDn( in.readUTF() );
+ modDnControl.setEntryDn( UTFUtils.readUTF( in ) );
switch( modDnType )
{
case MOVE:
- modDnControl.setNewSuperiorDn( in.readUTF() );
+ modDnControl.setNewSuperiorDn( UTFUtils.readUTF( in ) );
break;
case RENAME:
- modDnControl.setNewRdn( in.readUTF() );
+ modDnControl.setNewRdn( UTFUtils.readUTF( in ) );
modDnControl.setDeleteOldRdn( in.readBoolean() );
break;
case MOVEANDRENAME:
- modDnControl.setNewSuperiorDn( in.readUTF() );
- modDnControl.setNewRdn( in.readUTF() );
+ modDnControl.setNewSuperiorDn( UTFUtils.readUTF( in ) );
+ modDnControl.setNewRdn( UTFUtils.readUTF( in ) );
modDnControl.setDeleteOldRdn( in.readBoolean() );
}
}
@@ -148,7 +149,7 @@ public class ReplicaEventMessage impleme
for ( int i = 0; i < nbAttributes; i++ )
{
// Read the attribute's OID
- String oid = in.readUTF();
+ String oid = UTFUtils.readUTF( in );
try
{
@@ -180,22 +181,22 @@ public class ReplicaEventMessage impleme
SyncModifyDnType modDnType = modDnControl.getModDnType();
out.writeShort( modDnType.getValue() );
- out.writeUTF( modDnControl.getEntryDn() );
+ UTFUtils.writeUTF( out, modDnControl.getEntryDn() );
switch( modDnType )
{
case MOVE:
- out.writeUTF( modDnControl.getNewSuperiorDn() );
+ UTFUtils.writeUTF( out, modDnControl.getNewSuperiorDn() );
break;
case RENAME:
- out.writeUTF( modDnControl.getNewRdn() );
+ UTFUtils.writeUTF( out, modDnControl.getNewRdn() );
out.writeBoolean( modDnControl.isDeleteOldRdn() );
break;
case MOVEANDRENAME:
- out.writeUTF( modDnControl.getNewSuperiorDn() );
- out.writeUTF( modDnControl.getNewRdn() );
+ UTFUtils.writeUTF( out, modDnControl.getNewSuperiorDn() );
+ UTFUtils.writeUTF( out, modDnControl.getNewRdn() );
out.writeBoolean( modDnControl.isDeleteOldRdn() );
}
}
@@ -221,7 +222,7 @@ public class ReplicaEventMessage impleme
DefaultEntryAttribute attribute = ( DefaultEntryAttribute ) attrItr.next();
// Write the oid to be able to restore the AttributeType when deserializing
// the attribute
- out.writeUTF( attribute.getAttributeType().getOid() );
+ UTFUtils.writeUTF( out, attribute.getAttributeType().getOid() );
// Write the attribute
attribute.serialize( out );
Modified: directory/shared/trunk/ldap-ldif/src/main/java/org/apache/directory/shared/ldap/ldif/LdifEntry.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap-ldif/src/main/java/org/apache/directory/shared/ldap/ldif/LdifEntry.java?rev=950975&r1=950974&r2=950975&view=diff
==============================================================================
--- directory/shared/trunk/ldap-ldif/src/main/java/org/apache/directory/shared/ldap/ldif/LdifEntry.java (original)
+++ directory/shared/trunk/ldap-ldif/src/main/java/org/apache/directory/shared/ldap/ldif/LdifEntry.java Thu Jun 3 12:13:43 2010
@@ -43,6 +43,7 @@ import org.apache.directory.shared.ldap.
import org.apache.directory.shared.ldap.message.control.Control;
import org.apache.directory.shared.ldap.name.DN;
import org.apache.directory.shared.ldap.name.RDN;
+import org.apache.directory.shared.ldap.util.UTFUtils;
/**
@@ -836,12 +837,12 @@ public class LdifEntry implements Clonea
if ( in.readBoolean() )
{
- newRdn = in.readUTF();
+ newRdn = UTFUtils.readUTF( in );
}
if ( in.readBoolean() )
{
- newSuperior = in.readUTF();
+ newSuperior = UTFUtils.readUTF( in );
}
break;
@@ -854,7 +855,7 @@ public class LdifEntry implements Clonea
for ( int i = 0; i < nbModifs; i++ )
{
int operation = in.readInt();
- String modStr = in.readUTF();
+ String modStr = UTFUtils.readUTF( in );
DefaultEntryAttribute value = (DefaultEntryAttribute)in.readObject();
addModificationItem( ModificationOperation.getOperation( operation ), modStr, value );
@@ -903,7 +904,7 @@ public class LdifEntry implements Clonea
if ( newRdn != null )
{
out.writeBoolean( true );
- out.writeUTF( newRdn );
+ UTFUtils.writeUTF( out, newRdn );
}
else
{
@@ -913,7 +914,7 @@ public class LdifEntry implements Clonea
if ( newSuperior != null )
{
out.writeBoolean( true );
- out.writeUTF( newSuperior );
+ UTFUtils.writeUTF( out, newSuperior );
}
else
{
@@ -928,7 +929,7 @@ public class LdifEntry implements Clonea
for ( Modification modification:modificationList )
{
out.writeInt( modification.getOperation().getValue() );
- out.writeUTF( modification.getAttribute().getId() );
+ UTFUtils.writeUTF( out, modification.getAttribute().getId() );
EntryAttribute attribute = modification.getAttribute();
out.writeObject( attribute );
Modified: directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/entry/DefaultEntry.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/entry/DefaultEntry.java?rev=950975&r1=950974&r2=950975&view=diff
==============================================================================
--- directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/entry/DefaultEntry.java (original)
+++ directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/entry/DefaultEntry.java Thu Jun 3 12:13:43 2010
@@ -42,6 +42,7 @@ import org.apache.directory.shared.ldap.
import org.apache.directory.shared.ldap.schema.AttributeType;
import org.apache.directory.shared.ldap.schema.SchemaManager;
import org.apache.directory.shared.ldap.util.StringTools;
+import org.apache.directory.shared.ldap.util.UTFUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -2654,7 +2655,7 @@ public class DefaultEntry implements Ent
// the attribute
String oid = attributeType.getOid();
- out.writeUTF( oid );
+ UTFUtils.writeUTF( out, oid );
// Get the attribute
DefaultEntryAttribute attribute = ( DefaultEntryAttribute ) attributes.get( attributeType.getOid() );
@@ -2670,7 +2671,7 @@ public class DefaultEntry implements Ent
{
// Write the id to be able to restore the AttributeType when deserializing
// the attribute
- out.writeUTF( id );
+ UTFUtils.writeUTF( out, id );
// Get the attribute
DefaultEntryAttribute attribute = ( DefaultEntryAttribute ) attributes.get( id );
@@ -2711,7 +2712,7 @@ public class DefaultEntry implements Ent
for ( int i = 0; i < nbAttributes; i++ )
{
// Read the attribute's OID
- String oid = in.readUTF();
+ String oid = UTFUtils.readUTF( in );
try
{
@@ -2739,7 +2740,7 @@ public class DefaultEntry implements Ent
for ( int i = 0; i < nbAttributes; i++ )
{
// Read the attribute's ID
- String id = in.readUTF();
+ String id = UTFUtils.readUTF( in );
// Create the attribute we will read
EntryAttribute attribute = new DefaultEntryAttribute( id );
Modified: directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/entry/DefaultEntryAttribute.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/entry/DefaultEntryAttribute.java?rev=950975&r1=950974&r2=950975&view=diff
==============================================================================
--- directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/entry/DefaultEntryAttribute.java (original)
+++ directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/entry/DefaultEntryAttribute.java Thu Jun 3 12:13:43 2010
@@ -36,6 +36,7 @@ import org.apache.directory.shared.ldap.
import org.apache.directory.shared.ldap.schema.AttributeType;
import org.apache.directory.shared.ldap.schema.SyntaxChecker;
import org.apache.directory.shared.ldap.util.StringTools;
+import org.apache.directory.shared.ldap.util.UTFUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -2428,7 +2429,7 @@ public class DefaultEntryAttribute imple
public void serialize( ObjectOutput out ) throws IOException
{
// Write the UPId (the id will be deduced from the upID)
- out.writeUTF( upId );
+ UTFUtils.writeUTF( out, upId );
// Write the HR flag, if not null
if ( isHR != null )
@@ -2471,7 +2472,7 @@ public class DefaultEntryAttribute imple
public void deserialize( ObjectInput in ) throws IOException, ClassNotFoundException
{
// Read the ID and the UPId
- upId = in.readUTF();
+ upId = UTFUtils.readUTF( in );
// Compute the id
setUpId( upId );
@@ -2530,7 +2531,7 @@ public class DefaultEntryAttribute imple
public void writeExternal( ObjectOutput out ) throws IOException
{
// Write the UPId (the id will be deduced from the upID)
- out.writeUTF( upId );
+ UTFUtils.writeUTF( out, upId );
// Write the HR flag, if not null
if ( isHR != null )
@@ -2566,7 +2567,7 @@ public class DefaultEntryAttribute imple
public void readExternal( ObjectInput in ) throws IOException, ClassNotFoundException
{
// Read the ID and the UPId
- upId = in.readUTF();
+ upId = UTFUtils.readUTF( in );
// Compute the id
setUpId( upId );
Modified: directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/entry/DefaultModification.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/entry/DefaultModification.java?rev=950975&r1=950974&r2=950975&view=diff
==============================================================================
--- directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/entry/DefaultModification.java (original)
+++ directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/entry/DefaultModification.java Thu Jun 3 12:13:43 2010
@@ -27,6 +27,7 @@ import org.apache.directory.shared.i18n.
import org.apache.directory.shared.ldap.exception.LdapException;
import org.apache.directory.shared.ldap.schema.AttributeType;
import org.apache.directory.shared.ldap.schema.SchemaManager;
+import org.apache.directory.shared.ldap.util.UTFUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -243,7 +244,7 @@ public class DefaultModification impleme
AttributeType at = attribute.getAttributeType();
// Write the attribute's oid
- out.writeUTF( at.getOid() );
+ UTFUtils.writeUTF( out, at.getOid() );
// Write the attribute
((DefaultEntryAttribute)attribute).serialize( out );
@@ -267,7 +268,7 @@ public class DefaultModification impleme
operation = ModificationOperation.getOperation( op );
// Read the attribute OID
- String oid = in.readUTF();
+ String oid = UTFUtils.readUTF( in );
// Lookup for tha associated AttributeType
AttributeType attributeType = schemaManager.lookupAttributeTypeRegistry( oid );
Modified: directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/entry/StringValue.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/entry/StringValue.java?rev=950975&r1=950974&r2=950975&view=diff
==============================================================================
--- directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/entry/StringValue.java (original)
+++ directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/entry/StringValue.java Thu Jun 3 12:13:43 2010
@@ -19,10 +19,12 @@
package org.apache.directory.shared.ldap.entry;
+import java.io.DataOutputStream;
import java.io.Externalizable;
import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectOutput;
+import java.io.ObjectOutputStream;
import org.apache.directory.shared.ldap.exception.LdapException;
@@ -32,6 +34,7 @@ import org.apache.directory.shared.ldap.
import org.apache.directory.shared.ldap.schema.LdapComparator;
import org.apache.directory.shared.ldap.schema.Normalizer;
import org.apache.directory.shared.ldap.util.StringTools;
+import org.apache.directory.shared.ldap.util.UTFUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -501,7 +504,7 @@ public class StringValue extends Abstrac
// Read the wrapped value, if it's not null
if ( in.readBoolean() )
{
- wrappedValue = in.readUTF();
+ wrappedValue = UTFUtils.readUTF( in );
}
// Read the isNormalized flag
@@ -510,7 +513,7 @@ public class StringValue extends Abstrac
if ( ( normalized ) && ( in.readBoolean() ) )
{
// Read the normalized value, if not null
- normalizedValue = in.readUTF();
+ normalizedValue = UTFUtils.readUTF( in );
}
h = 0;
@@ -526,7 +529,7 @@ public class StringValue extends Abstrac
if ( wrappedValue != null )
{
out.writeBoolean( true );
- out.writeUTF( wrappedValue );
+ UTFUtils.writeUTF( out, wrappedValue );
}
else
{
@@ -542,7 +545,7 @@ public class StringValue extends Abstrac
if ( normalizedValue != null )
{
out.writeBoolean( true );
- out.writeUTF( normalizedValue );
+ UTFUtils.writeUTF( out, normalizedValue );
}
else
{
@@ -584,7 +587,7 @@ public class StringValue extends Abstrac
out.writeBoolean( true );
// Write the data
- out.writeUTF( wrappedValue );
+ UTFUtils.writeUTF( out, wrappedValue );
// Normalize the data
try
@@ -599,7 +602,7 @@ public class StringValue extends Abstrac
else
{
out.writeBoolean( false );
- out.writeUTF( normalizedValue );
+ UTFUtils.writeUTF( out, normalizedValue );
}
}
catch ( LdapException ne )
@@ -638,7 +641,7 @@ public class StringValue extends Abstrac
}
// Read the value
- String wrapped = in.readUTF();
+ String wrapped = UTFUtils.readUTF( in );
wrappedValue = wrapped;
@@ -657,7 +660,7 @@ public class StringValue extends Abstrac
else
{
// The normalized value is different. Read it
- normalizedValue = in.readUTF();
+ normalizedValue = UTFUtils.readUTF( in );
}
}
}
Modified: directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/name/AVA.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/name/AVA.java?rev=950975&r1=950974&r2=950975&view=diff
==============================================================================
--- directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/name/AVA.java (original)
+++ directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/name/AVA.java Thu Jun 3 12:13:43 2010
@@ -33,6 +33,7 @@ import org.apache.directory.shared.ldap.
import org.apache.directory.shared.ldap.exception.LdapInvalidDnException;
import org.apache.directory.shared.ldap.message.ResultCodeEnum;
import org.apache.directory.shared.ldap.util.StringTools;
+import org.apache.directory.shared.ldap.util.UTFUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -856,11 +857,11 @@ public class AVA implements Cloneable, C
throw new IOException( message );
}
- out.writeUTF( upName );
+ UTFUtils.writeUTF( out, upName );
out.writeInt( start );
out.writeInt( length );
- out.writeUTF( upType );
- out.writeUTF( normType );
+ UTFUtils.writeUTF( out, upType );
+ UTFUtils.writeUTF( out, normType );
boolean isHR = !normValue.isBinary();
@@ -868,8 +869,8 @@ public class AVA implements Cloneable, C
if ( isHR )
{
- out.writeUTF( upValue.getString() );
- out.writeUTF( normValue.getString() );
+ UTFUtils.writeUTF( out, upValue.getString() );
+ UTFUtils.writeUTF( out, normValue.getString() );
}
else
{
@@ -890,18 +891,18 @@ public class AVA implements Cloneable, C
*/
public void readExternal( ObjectInput in ) throws IOException, ClassNotFoundException
{
- upName = in.readUTF();
+ upName = UTFUtils.readUTF( in );
start = in.readInt();
length = in.readInt();
- upType = in.readUTF();
- normType = in.readUTF();
+ upType = UTFUtils.readUTF( in );
+ normType = UTFUtils.readUTF( in );
boolean isHR = in.readBoolean();
if ( isHR )
{
- upValue = new StringValue( in.readUTF() );
- normValue = new StringValue( in.readUTF() );
+ upValue = new StringValue( UTFUtils.readUTF( in ) );
+ normValue = new StringValue( UTFUtils.readUTF( in ) );
}
else
{
Modified: directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/name/AVASerializer.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/name/AVASerializer.java?rev=950975&r1=950974&r2=950975&view=diff
==============================================================================
--- directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/name/AVASerializer.java (original)
+++ directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/name/AVASerializer.java Thu Jun 3 12:13:43 2010
@@ -28,6 +28,7 @@ import org.apache.directory.shared.ldap.
import org.apache.directory.shared.ldap.entry.Value;
import org.apache.directory.shared.ldap.exception.LdapInvalidDnException;
import org.apache.directory.shared.ldap.util.StringTools;
+import org.apache.directory.shared.ldap.util.UTFUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -114,11 +115,11 @@ public class AVASerializer
throw new IOException( message );
}
- out.writeUTF( atav.getUpName() );
+ UTFUtils.writeUTF( out, atav.getUpName() );
out.writeInt( atav.getStart() );
out.writeInt( atav.getLength() );
- out.writeUTF( atav.getUpType() );
- out.writeUTF( atav.getNormType() );
+ UTFUtils.writeUTF( out, atav.getUpType() );
+ UTFUtils.writeUTF( out, atav.getNormType() );
boolean isHR = !atav.getNormValue().isBinary();
@@ -126,8 +127,8 @@ public class AVASerializer
if ( isHR )
{
- out.writeUTF( atav.getUpValue().getString() );
- out.writeUTF( atav.getNormValue().getString() );
+ UTFUtils.writeUTF( out, atav.getUpValue().getString() );
+ UTFUtils.writeUTF( out, atav.getNormValue().getString() );
}
else
{
@@ -152,11 +153,11 @@ public class AVASerializer
*/
public static AVA deserialize( ObjectInput in ) throws IOException
{
- String upName = in.readUTF();
+ String upName = UTFUtils.readUTF( in );
in.readInt(); // start
in.readInt(); // length
- String upType = in.readUTF();
- String normType = in.readUTF();
+ String upType = UTFUtils.readUTF( in );
+ String normType = UTFUtils.readUTF( in );
boolean isHR = in.readBoolean();
@@ -164,8 +165,8 @@ public class AVASerializer
{
if ( isHR )
{
- Value<String> upValue = new StringValue( in.readUTF() );
- Value<String> normValue = new StringValue( in.readUTF() );
+ Value<String> upValue = new StringValue( UTFUtils.readUTF( in ) );
+ Value<String> normValue = new StringValue( UTFUtils.readUTF( in ) );
AVA atav =
new AVA( upType, normType, upValue, normValue, upName );
Modified: directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/name/DN.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/name/DN.java?rev=950975&r1=950974&r2=950975&view=diff
==============================================================================
--- directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/name/DN.java (original)
+++ directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/name/DN.java Thu Jun 3 12:13:43 2010
@@ -43,6 +43,7 @@ import org.apache.directory.shared.ldap.
import org.apache.directory.shared.ldap.message.ResultCodeEnum;
import org.apache.directory.shared.ldap.schema.normalizers.OidNormalizer;
import org.apache.directory.shared.ldap.util.StringTools;
+import org.apache.directory.shared.ldap.util.UTFUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -1595,18 +1596,18 @@ public class DN implements Cloneable, Se
}
// Write the UPName
- out.writeUTF( upName );
+ UTFUtils.writeUTF( out, upName );
// Write the NormName if different
if ( isNormalized() )
{
if ( upName.equals( normName ) )
{
- out.writeUTF( "" );
+ UTFUtils.writeUTF( out, "" );
}
else
{
- out.writeUTF( normName );
+ UTFUtils.writeUTF( out, normName );
}
}
else
@@ -1643,10 +1644,10 @@ public class DN implements Cloneable, Se
public void readExternal( ObjectInput in ) throws IOException , ClassNotFoundException
{
// Read the UPName
- upName = in.readUTF();
+ upName = UTFUtils.readUTF( in );
// Read the NormName
- normName = in.readUTF();
+ normName = UTFUtils.readUTF( in );
if ( normName.length() == 0 )
{
Modified: directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/name/DnSerializer.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/name/DnSerializer.java?rev=950975&r1=950974&r2=950975&view=diff
==============================================================================
--- directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/name/DnSerializer.java (original)
+++ directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/name/DnSerializer.java Thu Jun 3 12:13:43 2010
@@ -25,6 +25,7 @@ import java.io.ObjectOutput;
import org.apache.directory.shared.i18n.I18n;
import org.apache.directory.shared.ldap.util.StringTools;
+import org.apache.directory.shared.ldap.util.UTFUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -66,18 +67,18 @@ public class DnSerializer
}
// Write the UPName
- out.writeUTF( dn.getName() );
+ UTFUtils.writeUTF( out, dn.getName() );
// Write the NormName if different
if ( dn.isNormalized() )
{
if ( dn.getName().equals( dn.getNormName() ) )
{
- out.writeUTF( "" );
+ UTFUtils.writeUTF( out, "" );
}
else
{
- out.writeUTF( dn.getNormName() );
+ UTFUtils.writeUTF( out, dn.getNormName() );
}
}
else
@@ -115,10 +116,10 @@ public class DnSerializer
public static DN deserialize( ObjectInput in ) throws IOException
{
// Read the UPName
- String upName = in.readUTF();
+ String upName = UTFUtils.readUTF( in );
// Read the NormName
- String normName = in.readUTF();
+ String normName = UTFUtils.readUTF( in );
if ( normName.length() == 0 )
{
Modified: directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/name/RDN.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/name/RDN.java?rev=950975&r1=950974&r2=950975&view=diff
==============================================================================
--- directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/name/RDN.java (original)
+++ directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/name/RDN.java Thu Jun 3 12:13:43 2010
@@ -38,6 +38,7 @@ import org.apache.directory.shared.ldap.
import org.apache.directory.shared.ldap.exception.LdapInvalidDnException;
import org.apache.directory.shared.ldap.schema.normalizers.OidNormalizer;
import org.apache.directory.shared.ldap.util.StringTools;
+import org.apache.directory.shared.ldap.util.UTFUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -1353,15 +1354,15 @@ public class RDN implements Cloneable, C
public void writeExternal( ObjectOutput out ) throws IOException
{
out.writeInt( nbAtavs );
- out.writeUTF( upName );
+ UTFUtils.writeUTF( out, upName );
if ( upName.equals( normName ) )
{
- out.writeUTF( "" );
+ UTFUtils.writeUTF( out, "" );
}
else
{
- out.writeUTF( normName );
+ UTFUtils.writeUTF( out, normName );
}
out.writeInt( start );
@@ -1404,10 +1405,10 @@ public class RDN implements Cloneable, C
nbAtavs = in.readInt();
// Read the UPName
- upName = in.readUTF();
+ upName = UTFUtils.readUTF( in );
// Read the normName
- normName = in.readUTF();
+ normName = UTFUtils.readUTF( in );
if ( StringTools.isEmpty( normName ) )
{
Modified: directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/name/RdnSerializer.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/name/RdnSerializer.java?rev=950975&r1=950974&r2=950975&view=diff
==============================================================================
--- directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/name/RdnSerializer.java (original)
+++ directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/name/RdnSerializer.java Thu Jun 3 12:13:43 2010
@@ -24,6 +24,7 @@ import java.io.ObjectInput;
import java.io.ObjectOutput;
import org.apache.directory.shared.ldap.util.StringTools;
+import org.apache.directory.shared.ldap.util.UTFUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -63,8 +64,8 @@ public class RdnSerializer
public static void serialize( RDN rdn, ObjectOutput out ) throws IOException
{
out.writeInt( rdn.getNbAtavs() );
- out.writeUTF( rdn.getName() );
- out.writeUTF( rdn.getNormName() );
+ UTFUtils.writeUTF( out, rdn.getName() );
+ UTFUtils.writeUTF( out, rdn.getNormName() );
out.writeInt( rdn.getStart() );
out.writeInt( rdn.getLength() );
@@ -105,10 +106,10 @@ public class RdnSerializer
int nbAtavs = in.readInt();
// Read the UPName
- String upName = in.readUTF();
+ String upName = UTFUtils.readUTF( in );
// Read the normName
- String normName = in.readUTF();
+ String normName = UTFUtils.readUTF( in );
if ( StringTools.isEmpty( normName ) )
{
Added: directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/util/UTFUtils.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/util/UTFUtils.java?rev=950975&view=auto
==============================================================================
--- directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/util/UTFUtils.java (added)
+++ directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/util/UTFUtils.java Thu Jun 3 12:13:43 2010
@@ -0,0 +1,134 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.directory.shared.ldap.util;
+
+
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+
+
+public class UTFUtils
+{
+
+ /**
+ * In UTF every char may have 1-3 bytes size
+ * Max writeUTF bytes / max char symbol size
+ */
+ public static final int SPLIT_SIZE = 65535 / 3;
+
+
+ /**
+ *
+ * Do writeUTF a string regardless of it's length. null value will be written with length=0 and value 'null' to
+ * recognize when reading if it's an empty string or a null string
+ *
+ * @param objectOutput The objectOutput to write to
+ * @param str The value to write
+ * @throws IOException If the value can't be written to the file
+ */
+ public static void writeUTF( ObjectOutput objectOutput, String str ) throws IOException
+ {
+
+ if ( str == null )
+ {
+ objectOutput.writeInt( 0 );
+ objectOutput.writeUTF( "null" );
+ }
+ else
+ {
+ int strLength = str.length();
+ int iterations = strLength / SPLIT_SIZE;
+
+ // Length of string
+ objectOutput.writeInt( strLength );
+
+ if ( iterations == 0 )
+ {
+ // String too short, no iterations needed, just write it
+ objectOutput.writeUTF( str );
+ }
+ else
+ {
+ if ( strLength % SPLIT_SIZE > 0 )
+ {
+ ++iterations;
+ }
+
+ for ( int i = 0; i < iterations; ++i )
+ {
+ int beginIndex = i * SPLIT_SIZE;
+ int lastIndex = beginIndex + SPLIT_SIZE;
+
+ if ( lastIndex > strLength )
+ {
+ objectOutput.writeUTF( str.substring( beginIndex, strLength ) );
+ }
+ else
+ {
+ objectOutput.writeUTF( str.substring( beginIndex, lastIndex ) );
+ }
+ }
+ }
+ }
+ }
+
+
+ /**
+ *
+ * Do readUTF a string regardless of it's length. null value is written with length=0 and value 'null' to
+ * recognize when reading if it's an empty string or a null string
+ *
+ * @param objectInput The objectInput to read from
+ * @return The value
+ * @throws IOException If the vale can't be read
+ */
+ public static String readUTF( ObjectInput objectInput ) throws IOException
+ {
+ StringBuffer stringBuffer = null;
+ int strLength = objectInput.readInt();
+
+ if ( strLength == 0 )
+ {
+ stringBuffer = new StringBuffer( objectInput.readUTF() );
+ if ( stringBuffer.toString().equals( "null" ) )
+ {
+ return null;
+ }
+ }
+ else
+ {
+ int iterations = strLength / SPLIT_SIZE;
+
+ if ( strLength % SPLIT_SIZE > 0 )
+ {
+ ++iterations;
+ }
+
+ stringBuffer = new StringBuffer( strLength );
+ for ( int i = 0; i < iterations; ++i )
+ {
+ stringBuffer.append( objectInput.readUTF() );
+ }
+ }
+ return stringBuffer.toString();
+ }
+
+}
Propchange: directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/util/UTFUtils.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/util/UTFUtils.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Added: directory/shared/trunk/ldap/src/test/java/org/apache/directory/shared/ldap/util/UTFUtilsTest.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/src/test/java/org/apache/directory/shared/ldap/util/UTFUtilsTest.java?rev=950975&view=auto
==============================================================================
--- directory/shared/trunk/ldap/src/test/java/org/apache/directory/shared/ldap/util/UTFUtilsTest.java (added)
+++ directory/shared/trunk/ldap/src/test/java/org/apache/directory/shared/ldap/util/UTFUtilsTest.java Thu Jun 3 12:13:43 2010
@@ -0,0 +1,129 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.directory.shared.ldap.util;
+
+
+import static org.junit.Assert.assertEquals;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.util.Arrays;
+
+import org.junit.Test;
+
+
+/**
+ * A test case for the UTFUtils methods
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$
+ */
+public class UTFUtilsTest
+{
+
+ private FileOutputStream fos = null;
+ private FileInputStream fis = null;
+
+
+ /**
+ *
+ * Creates a new instance of UTFUtilsTest.
+ *
+ */
+ public UTFUtilsTest()
+ {
+ try
+ {
+ File tmpFile = File.createTempFile( "UTFUtils", "test" );
+ tmpFile.deleteOnExit();
+ fos = new FileOutputStream( tmpFile );
+ fis = new FileInputStream( tmpFile );
+ }
+ catch ( IOException e )
+ {
+ }
+ }
+
+
+ /**
+ *
+ * Test write/read of a null string
+ *
+ * @throws Exception
+ */
+ @Test
+ public void testNullString() throws Exception
+ {
+ ObjectOutputStream dos = new ObjectOutputStream( fos );
+ ObjectInputStream dis = new ObjectInputStream( fis );
+ String testString = null;
+ UTFUtils.writeUTF( dos, testString );
+ dos.flush();
+ dos.close();
+ assertEquals( testString, UTFUtils.readUTF( dis ) );
+ dis.close();
+ }
+
+
+ /**
+ *
+ * Test write/read of an empty string
+ *
+ * @throws Exception
+ */
+ @Test
+ public void testEmptyString() throws Exception
+ {
+ ObjectOutputStream dos = new ObjectOutputStream( fos );
+ ObjectInputStream dis = new ObjectInputStream( fis );
+ String testString = "";
+ UTFUtils.writeUTF( dos, testString );
+ dos.flush();
+ dos.close();
+ assertEquals( testString, UTFUtils.readUTF( dis ) );
+ dis.close();
+ }
+
+
+ /**
+ *
+ * Test write/read of a large string (> 64Kb)
+ *
+ * @throws Exception
+ */
+ @Test
+ public void testLargeString() throws Exception
+ {
+ ObjectOutputStream dos = new ObjectOutputStream( fos );
+ ObjectInputStream dis = new ObjectInputStream( fis );
+ char[] fill = new char[196622]; // 65535 * 3 + 17
+ Arrays.fill( fill, '\u00fc' ); // German &ü
+ String testString = new String( fill );
+ UTFUtils.writeUTF( dos, testString );
+ dos.flush();
+ dos.close();
+ assertEquals( testString, UTFUtils.readUTF( dis ) );
+ dis.close();
+ }
+}
Propchange: directory/shared/trunk/ldap/src/test/java/org/apache/directory/shared/ldap/util/UTFUtilsTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: directory/shared/trunk/ldap/src/test/java/org/apache/directory/shared/ldap/util/UTFUtilsTest.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision