You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by ak...@apache.org on 2011/01/27 04:18:03 UTC
svn commit: r1063971 - in /directory/shared/trunk/ldap/src:
main/java/org/apache/directory/shared/ldap/codec/search/controls/pagedSearch/
test/java/org/apache/directory/shared/ldap/codec/search/controls/
Author: akarasulu
Date: Thu Jan 27 03:18:00 2011
New Revision: 1063971
URL: http://svn.apache.org/viewvc?rev=1063971&view=rev
Log:
cleanup after extracting interface for PagedResults control
Modified:
directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/search/controls/pagedSearch/PagedResultsContainer.java
directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/search/controls/pagedSearch/PagedResultsDecoder.java
directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/search/controls/pagedSearch/PagedResultsDecorator.java
directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/search/controls/pagedSearch/PagedResultsGrammar.java
directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/search/controls/pagedSearch/SimplePagedResults.java
directory/shared/trunk/ldap/src/test/java/org/apache/directory/shared/ldap/codec/search/controls/PagedSearchControlTest.java
Modified: directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/search/controls/pagedSearch/PagedResultsContainer.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/search/controls/pagedSearch/PagedResultsContainer.java?rev=1063971&r1=1063970&r2=1063971&view=diff
==============================================================================
--- directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/search/controls/pagedSearch/PagedResultsContainer.java (original)
+++ directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/search/controls/pagedSearch/PagedResultsContainer.java Thu Jan 27 03:18:00 2011
@@ -48,15 +48,42 @@ public class PagedResultsContainer exten
/**
+ * Creates a new PagedSearchControl container object to contain a PagedResults
+ * Control, which is optionally decorated if is not a decorator already. If it
+ * is a decorator then it is used as the decorator for this container.
+ *
+ * @param control A PagedResults Control to optionally be wrapped.
+ */
+ public PagedResultsContainer( PagedResults control )
+ {
+ this();
+ decorate( control );
+ }
+
+
+ /**
* @return Returns the paged search control.
*/
- public PagedResultsDecorator getPagedSearchControl()
+ public PagedResultsDecorator getDecorator()
{
return control;
}
+ public void decorate( PagedResults control )
+ {
+ if ( control instanceof PagedResultsDecorator )
+ {
+ this.control = ( PagedResultsDecorator ) control;
+ }
+ else
+ {
+ this.control = new PagedResultsDecorator( control );
+ }
+ }
+
+
/**
* Set a PagedSearchControl Object into the container. It will be completed by
* the ldapDecoder.
Modified: directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/search/controls/pagedSearch/PagedResultsDecoder.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/search/controls/pagedSearch/PagedResultsDecoder.java?rev=1063971&r1=1063970&r2=1063971&view=diff
==============================================================================
--- directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/search/controls/pagedSearch/PagedResultsDecoder.java (original)
+++ directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/search/controls/pagedSearch/PagedResultsDecoder.java Thu Jan 27 03:18:00 2011
@@ -39,6 +39,7 @@ public class PagedResultsDecoder extends
/** An instance of this decoder */
private static final Asn1Decoder decoder = new Asn1Decoder();
+
/**
* Decode the paged search control
*
@@ -46,15 +47,13 @@ public class PagedResultsDecoder extends
*
* @return A valid PagedSearch object
*
- * @throws org.apache.directory.shared.asn1.DecoderException If the decoding found an error
- * @throws NamingException It will never be throw by this method
+ * @throws DecoderException It will never be throw by this method
*/
public Asn1Object decode( byte[] controlBytes, Control control ) throws DecoderException
{
ByteBuffer bb = ByteBuffer.wrap( controlBytes );
- PagedResultsContainer container = new PagedResultsContainer();
- container.setPagedSearchControl( (PagedResultsDecorator )control );
+ PagedResultsContainer container = new PagedResultsContainer( (PagedResults ) control );
decoder.decode( bb, container );
- return container.getPagedSearchControl();
+ return container.getDecorator();
}
}
Modified: directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/search/controls/pagedSearch/PagedResultsDecorator.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/search/controls/pagedSearch/PagedResultsDecorator.java?rev=1063971&r1=1063970&r2=1063971&view=diff
==============================================================================
--- directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/search/controls/pagedSearch/PagedResultsDecorator.java (original)
+++ directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/search/controls/pagedSearch/PagedResultsDecorator.java Thu Jan 27 03:18:00 2011
@@ -29,7 +29,6 @@ import org.apache.directory.shared.asn1.
import org.apache.directory.shared.asn1.ber.tlv.Value;
import org.apache.directory.shared.i18n.I18n;
import org.apache.directory.shared.ldap.codec.controls.ControlDecorator;
-import org.apache.directory.shared.util.StringConstants;
import org.apache.directory.shared.util.Strings;
@@ -38,28 +37,31 @@ import org.apache.directory.shared.util.
*
* @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
*/
-public class PagedResultsDecorator extends ControlDecorator
+public class PagedResultsDecorator extends ControlDecorator implements PagedResults
{
-
- /** The number of entries to return, or returned */
- private int size;
-
- /** The exchanged cookie */
- private byte[] cookie;
-
/** The entry change global length */
private int pscSeqLength;
/**
- *
- * Creates a new instance of PagedResultsDecorator.
- *
+ * Creates a new instance of PagedResultsDecorator with a newly created decorated
+ * PagedResults Control.
*/
public PagedResultsDecorator()
{
- super( new SimplePagedResults(), new PagedResultsDecoder() );
- cookie = StringConstants.EMPTY_BYTES;
+ this( new SimplePagedResults() );
+ }
+
+
+ /**
+ * Creates a new instance of PagedResultsDecorator using the supplied PagedResults
+ * Control to be decorated.
+ *
+ * @param pagedResults The PagedResults Control to be decorated.
+ */
+ public PagedResultsDecorator( PagedResults pagedResults )
+ {
+ super( pagedResults, new PagedResultsDecoder() );
}
@@ -78,13 +80,13 @@ public class PagedResultsDecorator exten
*/
public int computeLength()
{
- int sizeLength = 1 + 1 + Value.getNbBytes( size );
+ int sizeLength = 1 + 1 + Value.getNbBytes( getSize() );
int cookieLength;
- if ( cookie != null )
+ if ( getCookie() != null )
{
- cookieLength = 1 + TLV.getNbBytes( cookie.length ) + cookie.length;
+ cookieLength = 1 + TLV.getNbBytes( getCookie().length ) + getCookie().length;
}
else
{
@@ -124,8 +126,8 @@ public class PagedResultsDecorator exten
buffer.put( UniversalTag.SEQUENCE.getValue() );
buffer.put( TLV.getBytes( pscSeqLength ) );
- Value.encode( buffer, size );
- Value.encode( buffer, cookie );
+ Value.encode( buffer, getSize() );
+ Value.encode( buffer, getCookie() );
return buffer;
}
@@ -147,8 +149,8 @@ public class PagedResultsDecorator exten
buffer.put( UniversalTag.SEQUENCE.getValue() );
buffer.put( TLV.getBytes( pscSeqLength ) );
- Value.encode( buffer, size );
- Value.encode( buffer, cookie );
+ Value.encode( buffer, getSize() );
+ Value.encode( buffer, getCookie() );
getDecorated().setValue( buffer.array() );
}
@@ -162,12 +164,19 @@ public class PagedResultsDecorator exten
}
+ private PagedResults getPagedResults()
+ {
+ return ( PagedResults ) getDecorated();
+ }
+
+
+
/**
* @return The requested or returned number of entries
*/
public int getSize()
{
- return size;
+ return getPagedResults().getSize();
}
@@ -178,7 +187,7 @@ public class PagedResultsDecorator exten
*/
public void setSize( int size )
{
- this.size = size;
+ getPagedResults().setSize( size );
}
@@ -187,7 +196,7 @@ public class PagedResultsDecorator exten
*/
public byte[] getCookie()
{
- return cookie;
+ return getPagedResults().getCookie();
}
@@ -198,7 +207,7 @@ public class PagedResultsDecorator exten
*/
public void setCookie( byte[] cookie )
{
- this.cookie = cookie;
+ getPagedResults().setCookie( cookie );
}
@@ -209,23 +218,24 @@ public class PagedResultsDecorator exten
{
int value = 0;
- switch ( cookie.length )
+ switch ( getCookie().length )
{
case 1:
- value = cookie[0] & 0x00FF;
+ value = getCookie()[0] & 0x00FF;
break;
case 2:
- value = ( ( cookie[0] & 0x00FF ) << 8 ) + ( cookie[1] & 0x00FF );
+ value = ( ( getCookie()[0] & 0x00FF ) << 8 ) + ( getCookie()[1] & 0x00FF );
break;
case 3:
- value = ( ( cookie[0] & 0x00FF ) << 16 ) + ( ( cookie[1] & 0x00FF ) << 8 ) + ( cookie[2] & 0x00FF );
+ value = ( ( getCookie()[0] & 0x00FF ) << 16 ) + ( ( getCookie()[1] & 0x00FF ) << 8 )
+ + ( getCookie()[2] & 0x00FF );
break;
case 4:
- value = ( ( cookie[0] & 0x00FF ) << 24 ) + ( ( cookie[1] & 0x00FF ) << 16 )
- + ( ( cookie[2] & 0x00FF ) << 8 ) + ( cookie[3] & 0x00FF );
+ value = ( ( getCookie()[0] & 0x00FF ) << 24 ) + ( ( getCookie()[1] & 0x00FF ) << 16 )
+ + ( ( getCookie()[2] & 0x00FF ) << 8 ) + ( getCookie()[3] & 0x00FF );
break;
}
@@ -246,9 +256,9 @@ public class PagedResultsDecorator exten
return false;
}
- PagedResultsDecorator otherControl = ( PagedResultsDecorator ) o;
+ PagedResults otherControl = ( PagedResults ) o;
- return ( size == otherControl.size ) && Arrays.equals( cookie, otherControl.cookie );
+ return ( getSize() == otherControl.getSize() ) && Arrays.equals( getCookie(), otherControl.getCookie() );
}
@@ -262,8 +272,8 @@ public class PagedResultsDecorator exten
sb.append( " Paged Search Control\n" );
sb.append( " oid : " ).append( getOid() ).append( '\n' );
sb.append( " critical : " ).append( isCritical() ).append( '\n' );
- sb.append( " size : '" ).append( size ).append( "'\n" );
- sb.append( " cookie : '" ).append( Strings.dumpBytes(cookie) ).append( "'\n" );
+ sb.append( " size : '" ).append( getSize() ).append( "'\n" );
+ sb.append( " cookie : '" ).append( Strings.dumpBytes( getCookie() ) ).append( "'\n" );
return sb.toString();
}
Modified: directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/search/controls/pagedSearch/PagedResultsGrammar.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/search/controls/pagedSearch/PagedResultsGrammar.java?rev=1063971&r1=1063970&r2=1063971&view=diff
==============================================================================
--- directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/search/controls/pagedSearch/PagedResultsGrammar.java (original)
+++ directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/search/controls/pagedSearch/PagedResultsGrammar.java Thu Jan 27 03:18:00 2011
@@ -121,7 +121,7 @@ public final class PagedResultsGrammar e
LOG.debug( "size = " + size );
}
- pagedSearchContainer.getPagedSearchControl().setSize( size );
+ pagedSearchContainer.getDecorator().setSize( size );
}
catch ( IntegerDecoderException e )
{
@@ -153,11 +153,11 @@ public final class PagedResultsGrammar e
if ( pagedSearchContainer.getCurrentTLV().getLength() == 0 )
{
- pagedSearchContainer.getPagedSearchControl().setCookie( StringConstants.EMPTY_BYTES );
+ pagedSearchContainer.getDecorator().setCookie( StringConstants.EMPTY_BYTES );
}
else
{
- pagedSearchContainer.getPagedSearchControl().setCookie( value.getData() );
+ pagedSearchContainer.getDecorator().setCookie( value.getData() );
}
// We can have an END transition
Modified: directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/search/controls/pagedSearch/SimplePagedResults.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/search/controls/pagedSearch/SimplePagedResults.java?rev=1063971&r1=1063970&r2=1063971&view=diff
==============================================================================
--- directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/search/controls/pagedSearch/SimplePagedResults.java (original)
+++ directory/shared/trunk/ldap/src/main/java/org/apache/directory/shared/ldap/codec/search/controls/pagedSearch/SimplePagedResults.java Thu Jan 27 03:18:00 2011
@@ -65,7 +65,7 @@ public class SimplePagedResults extends
private int size;
/** The exchanged cookie */
- private byte[] cookie;
+ private byte[] cookie = StringConstants.EMPTY_BYTES;
/**
@@ -74,8 +74,6 @@ public class SimplePagedResults extends
public SimplePagedResults()
{
super( OID );
-
- cookie = StringConstants.EMPTY_BYTES;
}
@@ -135,6 +133,8 @@ public class SimplePagedResults extends
/**
* @see Object#equals(Object)
*/
+ @SuppressWarnings( { "EqualsWhichDoesntCheckParameterClass" } )
+ @Override
public boolean equals( Object o )
{
if ( !super.equals( o ) )
@@ -142,9 +142,9 @@ public class SimplePagedResults extends
return false;
}
- SimplePagedResults otherControl = ( SimplePagedResults ) o;
+ PagedResults otherControl = ( PagedResults ) o;
- return ( size == otherControl.size ) && Arrays.equals( cookie, otherControl.cookie );
+ return ( size == otherControl.getSize() ) && Arrays.equals( cookie, otherControl.getCookie() );
}
Modified: directory/shared/trunk/ldap/src/test/java/org/apache/directory/shared/ldap/codec/search/controls/PagedSearchControlTest.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/src/test/java/org/apache/directory/shared/ldap/codec/search/controls/PagedSearchControlTest.java?rev=1063971&r1=1063970&r2=1063971&view=diff
==============================================================================
--- directory/shared/trunk/ldap/src/test/java/org/apache/directory/shared/ldap/codec/search/controls/PagedSearchControlTest.java (original)
+++ directory/shared/trunk/ldap/src/test/java/org/apache/directory/shared/ldap/codec/search/controls/PagedSearchControlTest.java Thu Jan 27 03:18:00 2011
@@ -79,7 +79,7 @@ public class PagedSearchControlTest
fail( de.getMessage() );
}
- PagedResultsDecorator pagedSearch = container.getPagedSearchControl();
+ PagedResultsDecorator pagedSearch = container.getDecorator();
assertEquals( 32, pagedSearch.getSize() );
assertTrue( Arrays.equals( Strings.getBytesUtf8("test"),
pagedSearch.getCookie() ) );
@@ -230,7 +230,7 @@ public class PagedSearchControlTest
fail( de.getMessage() );
}
- PagedResultsDecorator pagedSearch = container.getPagedSearchControl();
+ PagedResultsDecorator pagedSearch = container.getDecorator();
assertEquals( Integer.MAX_VALUE, pagedSearch.getSize() );
assertTrue( Arrays.equals( Strings.getBytesUtf8("test"),
pagedSearch.getCookie() ) );
@@ -324,7 +324,7 @@ public class PagedSearchControlTest
fail( de.getMessage() );
}
- PagedResultsDecorator pagedSearch = container.getPagedSearchControl();
+ PagedResultsDecorator pagedSearch = container.getDecorator();
assertEquals( 32, pagedSearch.getSize() );
assertNotNull( pagedSearch.getCookie() );
assertEquals( StringConstants.EMPTY_BYTES, pagedSearch.getCookie() );