You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by el...@apache.org on 2010/08/09 08:42:25 UTC
svn commit: r983534 [1/3] - in /directory:
apacheds/branches/apacheds-codec-merge/server-integ/src/test/java/org/apache/directory/server/operations/add/
shared/branches/shared-codec-merge/asn1/src/main/java/org/apache/directory/shared/asn1/codec/statef...
Author: elecharny
Date: Mon Aug 9 06:41:54 2010
New Revision: 983534
URL: http://svn.apache.org/viewvc?rev=983534&view=rev
Log:
o Merged the DelRequestCodec, CompareRequestCodec, AbandonRequestCodec and UnbindRequestCodec with the Internal messages
o Added a ControlEnum class to list all the existing Controls
o Fixed the tests accordingly to the modifications
Added:
directory/shared/branches/shared-codec-merge/ldap/src/main/java/org/apache/directory/shared/ldap/codec/controls/ControlEnum.java
Modified:
directory/apacheds/branches/apacheds-codec-merge/server-integ/src/test/java/org/apache/directory/server/operations/add/AddIT.java
directory/shared/branches/shared-codec-merge/asn1/src/main/java/org/apache/directory/shared/asn1/codec/stateful/DecoderCallback.java
directory/shared/branches/shared-codec-merge/ldap/src/main/java/org/apache/directory/shared/ldap/codec/LdapDecoder.java
directory/shared/branches/shared-codec-merge/ldap/src/main/java/org/apache/directory/shared/ldap/codec/LdapMessageContainer.java
directory/shared/branches/shared-codec-merge/ldap/src/main/java/org/apache/directory/shared/ldap/codec/LdapMessageGrammar.java
directory/shared/branches/shared-codec-merge/ldap/src/main/java/org/apache/directory/shared/ldap/codec/LdapTransformer.java
directory/shared/branches/shared-codec-merge/ldap/src/main/java/org/apache/directory/shared/ldap/codec/actions/ControlValueAction.java
directory/shared/branches/shared-codec-merge/ldap/src/main/java/org/apache/directory/shared/ldap/codec/actions/ControlsInitAction.java
directory/shared/branches/shared-codec-merge/ldap/src/main/java/org/apache/directory/shared/ldap/message/internal/InternalAbstractMessage.java
directory/shared/branches/shared-codec-merge/ldap/src/main/java/org/apache/directory/shared/ldap/message/internal/InternalMessage.java
directory/shared/branches/shared-codec-merge/ldap/src/test/java/org/apache/directory/shared/ldap/codec/LdapControlTest.java
directory/shared/branches/shared-codec-merge/ldap/src/test/java/org/apache/directory/shared/ldap/codec/LdapMessageTest.java
directory/shared/branches/shared-codec-merge/ldap/src/test/java/org/apache/directory/shared/ldap/codec/abandon/AbandonRequestTest.java
directory/shared/branches/shared-codec-merge/ldap/src/test/java/org/apache/directory/shared/ldap/codec/add/AddRequestTest.java
directory/shared/branches/shared-codec-merge/ldap/src/test/java/org/apache/directory/shared/ldap/codec/compare/CompareRequestTest.java
directory/shared/branches/shared-codec-merge/ldap/src/test/java/org/apache/directory/shared/ldap/codec/del/DelRequestTest.java
directory/shared/branches/shared-codec-merge/ldap/src/test/java/org/apache/directory/shared/ldap/codec/unbind/UnBindRequestTest.java
directory/shared/branches/shared-codec-merge/ldap/src/test/java/org/apache/directory/shared/ldap/message/AddRequestImplTest.java
directory/shared/branches/shared-codec-merge/ldap/src/test/java/org/apache/directory/shared/ldap/message/BindRequestImplTest.java
directory/shared/branches/shared-codec-merge/ldap/src/test/java/org/apache/directory/shared/ldap/message/CompareRequestImplTest.java
directory/shared/branches/shared-codec-merge/ldap/src/test/java/org/apache/directory/shared/ldap/message/DeleteRequestImplTest.java
directory/shared/branches/shared-codec-merge/ldap/src/test/java/org/apache/directory/shared/ldap/message/ExtendedRequestImplTest.java
directory/shared/branches/shared-codec-merge/ldap/src/test/java/org/apache/directory/shared/ldap/message/ExtendedResponseImplTest.java
directory/shared/branches/shared-codec-merge/ldap/src/test/java/org/apache/directory/shared/ldap/message/ModifyDnRequestImplTest.java
directory/shared/branches/shared-codec-merge/ldap/src/test/java/org/apache/directory/shared/ldap/message/ModifyRequestImplTest.java
directory/shared/branches/shared-codec-merge/ldap/src/test/java/org/apache/directory/shared/ldap/message/SearchResponseDoneImplTest.java
directory/shared/branches/shared-codec-merge/ldap/src/test/java/org/apache/directory/shared/ldap/message/SearchResponseReferenceImplTest.java
Modified: directory/apacheds/branches/apacheds-codec-merge/server-integ/src/test/java/org/apache/directory/server/operations/add/AddIT.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/apacheds-codec-merge/server-integ/src/test/java/org/apache/directory/server/operations/add/AddIT.java?rev=983534&r1=983533&r2=983534&view=diff
==============================================================================
--- directory/apacheds/branches/apacheds-codec-merge/server-integ/src/test/java/org/apache/directory/server/operations/add/AddIT.java (original)
+++ directory/apacheds/branches/apacheds-codec-merge/server-integ/src/test/java/org/apache/directory/server/operations/add/AddIT.java Mon Aug 9 06:41:54 2010
@@ -100,84 +100,46 @@ import org.slf4j.LoggerFactory;
*
* @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
*/
-@RunWith ( FrameworkRunner.class )
-@CreateDS( allowAnonAccess=true, name="AddIT-class",
- partitions =
- {
- @CreatePartition(
- name = "example",
- suffix = "dc=example,dc=com",
- contextEntry = @ContextEntry(
- entryLdif =
- "dn: dc=example,dc=com\n" +
- "dc: example\n" +
- "objectClass: top\n" +
- "objectClass: domain\n\n" ),
- indexes =
- {
- @CreateIndex( attribute = "objectClass" ),
- @CreateIndex( attribute = "dc" ),
- @CreateIndex( attribute = "ou" )
- } ),
-
- @CreatePartition(
- name = "directory",
- suffix = "dc=directory,dc=apache,dc=org",
- contextEntry = @ContextEntry(
- entryLdif =
- "dn: dc=directory,dc=apache,dc=org\n"+
- "dc: directory\n"+
- "objectClass: top\n"+
- "objectClass: domain\n\n" ),
- indexes =
- {
- @CreateIndex( attribute = "objectClass" ),
- @CreateIndex( attribute = "dc" ),
- @CreateIndex( attribute = "ou" )
- } )
- })
-@CreateLdapServer (
- transports =
- {
- @CreateTransport( protocol = "LDAP" )
- })
-@ApplyLdifs( {
- // Entry # 0
- "dn: cn=The Person,ou=system",
- "objectClass: person",
- "objectClass: top",
- "cn: The Person",
- "description: this is a person",
- "sn: Person",
-
- // Entry # 1
- "dn: uid=akarasulu,ou=users,ou=system",
- "objectClass: uidObject",
- "objectClass: person",
- "objectClass: top",
- "uid: akarasulu",
- "cn: Alex Karasulu",
- "sn: karasulu",
-
- // Entry # 2
- "dn: ou=Computers,uid=akarasulu,ou=users,ou=system",
- "objectClass: organizationalUnit",
- "objectClass: top",
- "ou: computers",
- "description: Computers for Alex",
- "seeAlso: ou=Machines,uid=akarasulu,ou=users,ou=system",
-
- // Entry # 3
- "dn: uid=akarasuluref,ou=users,ou=system",
- "objectClass: uidObject",
- "objectClass: referral",
- "objectClass: top",
- "uid: akarasuluref",
- "ref: ldap://localhost:10389/uid=akarasulu,ou=users,ou=system",
- "ref: ldap://foo:10389/uid=akarasulu,ou=users,ou=system",
- "ref: ldap://bar:10389/uid=akarasulu,ou=users,ou=system"
- }
-)
+@RunWith(FrameworkRunner.class)
+@CreateDS(allowAnonAccess = true, name = "AddIT-class", partitions =
+ {
+ @CreatePartition(name = "example", suffix = "dc=example,dc=com", contextEntry = @ContextEntry(entryLdif = "dn: dc=example,dc=com\n"
+ + "dc: example\n" + "objectClass: top\n" + "objectClass: domain\n\n"), indexes =
+ { @CreateIndex(attribute = "objectClass"), @CreateIndex(attribute = "dc"), @CreateIndex(attribute = "ou") }),
+
+ @CreatePartition(name = "directory", suffix = "dc=directory,dc=apache,dc=org", contextEntry = @ContextEntry(entryLdif = "dn: dc=directory,dc=apache,dc=org\n"
+ + "dc: directory\n" + "objectClass: top\n" + "objectClass: domain\n\n"), indexes =
+ { @CreateIndex(attribute = "objectClass"), @CreateIndex(attribute = "dc"), @CreateIndex(attribute = "ou") }) })
+@CreateLdapServer(transports =
+ { @CreateTransport(protocol = "LDAP") })
+@ApplyLdifs(
+ {
+ // Entry # 0
+ "dn: cn=The Person,ou=system",
+ "objectClass: person",
+ "objectClass: top",
+ "cn: The Person",
+ "description: this is a person",
+ "sn: Person",
+
+ // Entry # 1
+ "dn: uid=akarasulu,ou=users,ou=system", "objectClass: uidObject", "objectClass: person",
+ "objectClass: top",
+ "uid: akarasulu",
+ "cn: Alex Karasulu",
+ "sn: karasulu",
+
+ // Entry # 2
+ "dn: ou=Computers,uid=akarasulu,ou=users,ou=system", "objectClass: organizationalUnit", "objectClass: top",
+ "ou: computers",
+ "description: Computers for Alex",
+ "seeAlso: ou=Machines,uid=akarasulu,ou=users,ou=system",
+
+ // Entry # 3
+ "dn: uid=akarasuluref,ou=users,ou=system", "objectClass: uidObject", "objectClass: referral",
+ "objectClass: top", "uid: akarasuluref", "ref: ldap://localhost:10389/uid=akarasulu,ou=users,ou=system",
+ "ref: ldap://foo:10389/uid=akarasulu,ou=users,ou=system",
+ "ref: ldap://bar:10389/uid=akarasulu,ou=users,ou=system" })
public class AddIT extends AbstractLdapTestUnit
{
private static final Logger LOG = LoggerFactory.getLogger( AddIT.class );
@@ -186,7 +148,8 @@ public class AddIT extends AbstractLdapT
private static final String BASE = "ou=system";
private static final String BASE_EXAMPLE_COM = "dc=example,dc=com";
private static final String BASE_DIRECTORY_APACHE_ORG = "dc=directory,dc=apache,dc=org";
-
+
+
/**
* This is the original defect as in JIRA DIREVE-216.
*
@@ -198,8 +161,7 @@ public class AddIT extends AbstractLdapT
DirContext ctx = ( DirContext ) getWiredContext( ldapServer ).lookup( BASE );
// modify object classes, add two more
- Attributes attributes = LdifUtils.createAttributes(
- "objectClass: organizationalPerson",
+ Attributes attributes = LdifUtils.createAttributes( "objectClass: organizationalPerson",
"objectClass: inetOrgPerson" );
DirContext person = ( DirContext ) ctx.lookup( RDN );
@@ -210,7 +172,8 @@ public class AddIT extends AbstractLdapT
attributes = person.getAttributes( "" );
Attribute newOcls = attributes.get( "objectClass" );
- String[] expectedOcls = { "top", "person", "organizationalPerson", "inetOrgPerson" };
+ String[] expectedOcls =
+ { "top", "person", "organizationalPerson", "inetOrgPerson" };
for ( String name : expectedOcls )
{
@@ -276,8 +239,8 @@ public class AddIT extends AbstractLdapT
// expected
}
}
-
-
+
+
/**
* Test case to demonstrate DIRSERVER-643 ("Netscape SDK: Adding an entry with
* two description attributes does not combine values."). Uses Sun ONE Directory
@@ -289,7 +252,7 @@ public class AddIT extends AbstractLdapT
public void testAddEntryWithTwoDescriptions() throws Exception
{
LdapConnection con = getClientApiConnection( ldapServer );
-
+
String dn = "cn=Kate Bush," + BASE;
Entry kate = new DefaultEntry( new DN( dn ) );
@@ -346,7 +309,7 @@ public class AddIT extends AbstractLdapT
con.add( kate );
// Analyze entry and description attribute
- Entry kateReloaded = ( (SearchResultEntry ) con.lookup( dn ) ).getEntry();
+ Entry kateReloaded = ( ( SearchResultEntry ) con.lookup( dn ) ).getEntry();
assertNotNull( kateReloaded );
EntryAttribute attr = kateReloaded.get( "description" );
assertNotNull( attr );
@@ -372,7 +335,7 @@ public class AddIT extends AbstractLdapT
String dn = "cn=Kate Bush," + BASE;
Entry kate = new DefaultEntry( new DN( dn ) );
-
+
kate.add( "objectclass", "top", "person" );
kate.add( "sn", "Bush" );
@@ -398,7 +361,7 @@ public class AddIT extends AbstractLdapT
con.unBind();
}
-
+
/**
* Try to add entry with invalid number of values for a single-valued attribute
*
@@ -409,7 +372,7 @@ public class AddIT extends AbstractLdapT
public void testAddWithInvalidNumberOfAttributeValues() throws Exception
{
DirContext ctx = ( DirContext ) getWiredContext( ldapServer ).lookup( BASE );
-
+
// add inetOrgPerson with two displayNames
Attributes attrs = new BasicAttributes( true );
Attribute ocls = new BasicAttribute( "objectClass" );
@@ -545,7 +508,7 @@ public class AddIT extends AbstractLdapT
sr = ne.next();
assertEquals( "ou=favorite", sr.getName() );
assertFalse( ne.hasMore() );
-
+
// search with base set to alias and dereferencing turned on
controls = new SearchControls();
controls.setDerefLinkFlag( false );
@@ -554,9 +517,9 @@ public class AddIT extends AbstractLdapT
ne = containerCtx.search( "ou=bestFruit", "(objectClass=*)", controls );
assertTrue( ne.hasMore() );
sr = ne.next();
- assertEquals( "ldap://localhost:"+ ldapServer.getPort() +"/ou=favorite,ou=Fruits,ou=system", sr.getName() );
+ assertEquals( "ldap://localhost:" + ldapServer.getPort() + "/ou=favorite,ou=Fruits,ou=system", sr.getName() );
assertFalse( ne.hasMore() );
-
+
// Remove alias and entry
containerCtx.destroySubcontext( rdnAlias );
containerCtx.destroySubcontext( entryRdn );
@@ -564,8 +527,8 @@ public class AddIT extends AbstractLdapT
// Remove container
ctx.destroySubcontext( containerRdn );
}
-
-
+
+
/**
* Try to add entry and an alias to it. Afterwards, remove it. Taken from
* DIRSERVER-1157 test contribution.
@@ -704,13 +667,13 @@ public class AddIT extends AbstractLdapT
constraints.setClientControls( new LDAPControl( LDAPControl.MANAGEDSAIT, true, new byte[0] ) );
constraints.setServerControls( new LDAPControl( LDAPControl.MANAGEDSAIT, true, new byte[0] ) );
conn.setConstraints( constraints );
-
+
// add success
LDAPAttributeSet attrSet = new LDAPAttributeSet();
attrSet.add( new LDAPAttribute( "objectClass", "organizationalUnit" ) );
attrSet.add( new LDAPAttribute( "ou", "UnderReferral" ) );
LDAPEntry entry = new LDAPEntry( "ou=UnderReferral,uid=akarasuluref,ou=users,ou=system", attrSet );
-
+
try
{
conn.add( entry, constraints );
@@ -718,57 +681,56 @@ public class AddIT extends AbstractLdapT
}
catch ( LDAPException le )
{
- assertEquals( 10, le.getLDAPResultCode() );
+ assertEquals( ResultCodeEnum.REFERRAL.getValue(), le.getLDAPResultCode() );
}
-
+
try
{
- conn.read( "ou=UnderReferral,uid=akarasuluref,ou=users,ou=system",
- ( LDAPSearchConstraints ) constraints );
+ conn.read( "ou=UnderReferral,uid=akarasuluref,ou=users,ou=system", ( LDAPSearchConstraints ) constraints );
fail();
}
catch ( LDAPException le )
{
-
+
}
-
+
conn.disconnect();
}
-
-
- public static LdapContext getContext( String principalDn, DirectoryService service, String dn )
- throws Exception
+
+
+ public static LdapContext getContext( String principalDn, DirectoryService service, String dn ) throws Exception
{
if ( principalDn == null )
{
principalDn = "";
}
-
+
DN userDn = new DN( principalDn, service.getSchemaManager() );
LdapPrincipal principal = new LdapPrincipal( userDn, AuthenticationLevel.SIMPLE );
-
+
if ( dn == null )
{
dn = "";
}
-
+
CoreSession session = service.getSession( principal );
LdapContext ctx = new ServerLdapContext( service, session, new LdapName( dn ) );
return ctx;
}
-
-
+
+
/**
* Tests add operation on referral entry with the ManageDsaIT control.
*/
@Test
public void testOnReferralWitJNDIIgnore() throws Exception
{
- LdapContext MNNCtx = getContext( ServerDNConstants.ADMIN_SYSTEM_DN, ldapServer.getDirectoryService(), "uid=akarasuluref,ou=users,ou=system" );
+ LdapContext MNNCtx = getContext( ServerDNConstants.ADMIN_SYSTEM_DN, ldapServer.getDirectoryService(),
+ "uid=akarasuluref,ou=users,ou=system" );
// Set to 'ignore'
MNNCtx.addToEnvironment( Context.REFERRAL, "ignore" );
-
+
try
{
// JNDI entry
@@ -785,12 +747,12 @@ public class AddIT extends AbstractLdapT
assertTrue( true );
}
}
-
-
+
+
/**
* Tests referral handling when an ancestor is a referral.
*/
- @Test
+ @Test
public void testAncestorReferral() throws Exception
{
LOG.debug( "" );
@@ -804,22 +766,22 @@ public class AddIT extends AbstractLdapT
attrSet.add( new LDAPAttribute( "objectClass", "organizationalUnit" ) );
attrSet.add( new LDAPAttribute( "ou", "UnderReferral" ) );
LDAPEntry entry = new LDAPEntry( "ou=UnderReferral,ou=Computers,uid=akarasuluref,ou=users,ou=system", attrSet );
-
+
LDAPResponseListener listener = conn.add( entry, null, constraints );
LDAPResponse response = listener.getResponse();
assertEquals( ResultCodeEnum.REFERRAL.getValue(), response.getResultCode() );
- assertEquals( "ldap://localhost:10389/ou=UnderReferral,ou=Computers,uid=akarasulu,ou=users,ou=system",
- response.getReferrals()[0] );
- assertEquals( "ldap://foo:10389/ou=UnderReferral,ou=Computers,uid=akarasulu,ou=users,ou=system",
- response.getReferrals()[1] );
- assertEquals( "ldap://bar:10389/ou=UnderReferral,ou=Computers,uid=akarasulu,ou=users,ou=system",
- response.getReferrals()[2] );
+ assertEquals( "ldap://localhost:10389/ou=UnderReferral,ou=Computers,uid=akarasulu,ou=users,ou=system", response
+ .getReferrals()[0] );
+ assertEquals( "ldap://foo:10389/ou=UnderReferral,ou=Computers,uid=akarasulu,ou=users,ou=system", response
+ .getReferrals()[1] );
+ assertEquals( "ldap://bar:10389/ou=UnderReferral,ou=Computers,uid=akarasulu,ou=users,ou=system", response
+ .getReferrals()[2] );
conn.disconnect();
}
-
+
/**
* Tests add operation on normal and referral entries without the
* ManageDsaIT control. Referrals are sent back to the client with a
@@ -832,14 +794,14 @@ public class AddIT extends AbstractLdapT
LDAPConstraints constraints = new LDAPConstraints();
constraints.setReferrals( false );
conn.setConstraints( constraints );
-
+
// referrals failure
LDAPAttributeSet attrSet = new LDAPAttributeSet();
attrSet.add( new LDAPAttribute( "objectClass", "organizationalUnit" ) );
attrSet.add( new LDAPAttribute( "ou", "UnderReferral" ) );
LDAPEntry entry = new LDAPEntry( "ou=UnderReferral,uid=akarasuluref,ou=users,ou=system", attrSet );
-
+
LDAPResponseListener listener = null;
LDAPResponse response = null;
listener = conn.add( entry, null, constraints );
@@ -847,14 +809,15 @@ public class AddIT extends AbstractLdapT
assertEquals( ResultCodeEnum.REFERRAL.getValue(), response.getResultCode() );
- assertEquals( "ldap://localhost:10389/ou=UnderReferral,uid=akarasulu,ou=users,ou=system", response.getReferrals()[0] );
+ assertEquals( "ldap://localhost:10389/ou=UnderReferral,uid=akarasulu,ou=users,ou=system", response
+ .getReferrals()[0] );
assertEquals( "ldap://foo:10389/ou=UnderReferral,uid=akarasulu,ou=users,ou=system", response.getReferrals()[1] );
assertEquals( "ldap://bar:10389/ou=UnderReferral,uid=akarasulu,ou=users,ou=system", response.getReferrals()[2] );
conn.disconnect();
}
-
-
+
+
/**
* Tests add operation on normal and referral entries without the
* ManageDsaIT control using JNDI instead of the Netscape API. Referrals
@@ -867,19 +830,20 @@ public class AddIT extends AbstractLdapT
SearchControls controls = new SearchControls();
controls.setReturningAttributes( new String[0] );
controls.setSearchScope( SearchControls.OBJECT_SCOPE );
-
+
// add failure
Attributes attrs = new BasicAttributes( "objectClass", "organizationalUnit", true );
attrs.put( "ou", "UnderReferral" );
-
+
try
{
ctx.createSubcontext( "ou=UnderReferral,uid=akarasuluref,ou=users,ou=system", attrs );
fail( "Should never get here: add should fail with ReferralExcpetion" );
}
- catch( ReferralException e )
+ catch ( ReferralException e )
{
- assertEquals( "ldap://localhost:10389/ou=UnderReferral,uid=akarasulu,ou=users,ou=system", e.getReferralInfo() );
+ assertEquals( "ldap://localhost:10389/ou=UnderReferral,uid=akarasulu,ou=users,ou=system", e
+ .getReferralInfo() );
}
ctx.close();
@@ -902,7 +866,7 @@ public class AddIT extends AbstractLdapT
attrs.put( "givenName", "Jim" );
attrs.put( "sn", "Bean" );
attrs.put( "cn", "\"Jim, Bean\"" );
-
+
ctx.createSubcontext( "cn=\"Jim, Bean\"", attrs );
}
@@ -914,7 +878,7 @@ public class AddIT extends AbstractLdapT
public void testAddEntryNoRDNInEntry() throws Exception
{
DirContext ctx = ( DirContext ) getWiredContext( ldapServer ).lookup( BASE );
-
+
// Create a person
Attributes person = new BasicAttributes( "objectClass", "inetOrgPerson", true );
person.get( "objectClass" ).add( "top" );
@@ -924,22 +888,23 @@ public class AddIT extends AbstractLdapT
person.put( "cn", "Jackson" );
DirContext michaelCtx = ctx.createSubcontext( "givenname=Michael", person );
-
+
assertNotNull( michaelCtx );
-
+
DirContext jackson = ( DirContext ) ctx.lookup( "givenname=Michael" );
person = jackson.getAttributes( "" );
Attribute newOcls = person.get( "objectClass" );
- String[] expectedOcls = { "top", "person", "organizationalPerson", "inetOrgPerson" };
+ String[] expectedOcls =
+ { "top", "person", "organizationalPerson", "inetOrgPerson" };
for ( String name : expectedOcls )
{
assertTrue( "object class " + name + " is present", newOcls.contains( name ) );
}
-
+
Attribute givenName = person.get( "givenname" );
-
+
assertEquals( "Michael", givenName.get() );
}
@@ -952,7 +917,7 @@ public class AddIT extends AbstractLdapT
public void testAddEntryDifferentRDNInEntry() throws Exception
{
DirContext ctx = ( DirContext ) getWiredContext( ldapServer ).lookup( BASE );
-
+
// Create a person
Attributes person = new BasicAttributes( "objectClass", "inetOrgPerson", true );
person.get( "objectClass" ).add( "top" );
@@ -963,24 +928,26 @@ public class AddIT extends AbstractLdapT
person.put( "cn", "Jackson" );
DirContext michaelCtx = ctx.createSubcontext( "cn=Michael", person );
-
+
assertNotNull( michaelCtx );
-
+
DirContext jackson = ( DirContext ) ctx.lookup( "cn=Michael" );
person = jackson.getAttributes( "" );
Attribute newOcls = person.get( "objectClass" );
- String[] expectedOcls = { "top", "person", "organizationalPerson", "inetOrgPerson" };
+ String[] expectedOcls =
+ { "top", "person", "organizationalPerson", "inetOrgPerson" };
for ( String name : expectedOcls )
{
assertTrue( "object class " + name + " is present", newOcls.contains( name ) );
}
-
+
Attribute cn = person.get( "cn" );
-
+
assertEquals( 2, cn.size() );
- String[] expectedCns = { "Jackson", "Michael" };
+ String[] expectedCns =
+ { "Jackson", "Michael" };
for ( String name : expectedCns )
{
@@ -997,7 +964,7 @@ public class AddIT extends AbstractLdapT
public void testAddEntryDifferentRDNSingleValuedInEntry() throws Exception
{
DirContext ctx = ( DirContext ) getWiredContext( ldapServer ).lookup( BASE );
-
+
// Create a person
Attributes person = new BasicAttributes( "objectClass", "inetOrgPerson", true );
person.get( "objectClass" ).add( "top" );
@@ -1008,23 +975,24 @@ public class AddIT extends AbstractLdapT
person.put( "cn", "Jackson" );
DirContext michaelCtx = ctx.createSubcontext( "displayName=test", person );
-
+
assertNotNull( michaelCtx );
-
+
DirContext jackson = ( DirContext ) ctx.lookup( "displayName=test" );
person = jackson.getAttributes( "" );
Attribute newOcls = person.get( "objectClass" );
- String[] expectedOcls = { "top", "person", "organizationalPerson", "inetOrgPerson" };
+ String[] expectedOcls =
+ { "top", "person", "organizationalPerson", "inetOrgPerson" };
for ( String name : expectedOcls )
{
assertTrue( "object class " + name + " is present", newOcls.contains( name ) );
}
-
+
// Check that the displayName attribute has been replaced
Attribute displayName = person.get( "displayName" );
-
+
assertEquals( 1, displayName.size() );
assertTrue( displayName.contains( "test" ) );
}
@@ -1038,7 +1006,7 @@ public class AddIT extends AbstractLdapT
public void testAddEntryComposedRDN() throws Exception
{
DirContext ctx = ( DirContext ) getWiredContext( ldapServer ).lookup( BASE );
-
+
// Create a person
Attributes person = new BasicAttributes( "objectClass", "inetOrgPerson", true );
person.get( "objectClass" ).add( "top" );
@@ -1048,29 +1016,30 @@ public class AddIT extends AbstractLdapT
person.put( "cn", "Jackson" );
DirContext michaelCtx = ctx.createSubcontext( "displayName=test+cn=Michael", person );
-
+
assertNotNull( michaelCtx );
-
+
DirContext jackson = ( DirContext ) ctx.lookup( "displayName=test+cn=Michael" );
person = jackson.getAttributes( "" );
Attribute newOcls = person.get( "objectClass" );
- String[] expectedOcls = { "top", "person", "organizationalPerson", "inetOrgPerson" };
+ String[] expectedOcls =
+ { "top", "person", "organizationalPerson", "inetOrgPerson" };
for ( String name : expectedOcls )
{
assertTrue( "object class " + name + " is present", newOcls.contains( name ) );
}
-
+
// Check that the DIsplayName attribute has been added
Attribute displayName = person.get( "displayName" );
-
+
assertEquals( 1, displayName.size() );
assertTrue( displayName.contains( "test" ) );
// Check that the cn attribute value has been added
Attribute cn = person.get( "cn" );
-
+
assertEquals( 2, cn.size() );
assertTrue( cn.contains( "Jackson" ) );
assertTrue( cn.contains( "Michael" ) );
@@ -1093,20 +1062,20 @@ public class AddIT extends AbstractLdapT
// modify object classes, add two more
Attributes attributes = new BasicAttributes( true );
Attribute ocls = new BasicAttribute( "description" );
-
+
// Inject a 1024 bytes long description
StringBuilder sb = new StringBuilder();
-
+
for ( int i = 0; i < 128; i++ )
{
sb.append( "0123456789ABCDEF" );
}
-
+
ocls.add( sb.toString() );
attributes.put( ocls );
DirContext person = ( DirContext ) ctx.lookup( RDN );
-
+
try
{
person.modifyAttributes( "", DirContext.ADD_ATTRIBUTE, attributes );
@@ -1116,14 +1085,14 @@ public class AddIT extends AbstractLdapT
{
// We are expecting the session to be close here.
}
-
+
// Test again with a bigger size
// Limit the PDU size to 1024
ldapServer.getDirectoryService().setMaxPDUSize( 4096 );
-
+
ctx = ( DirContext ) getWiredContext( ldapServer ).lookup( BASE );
person = ( DirContext ) ctx.lookup( RDN );
-
+
try
{
person.modifyAttributes( "", DirContext.ADD_ATTRIBUTE, attributes );
@@ -1137,7 +1106,7 @@ public class AddIT extends AbstractLdapT
// Read again from directory
ctx = ( DirContext ) getWiredContext( ldapServer ).lookup( BASE );
person = ( DirContext ) ctx.lookup( RDN );
-
+
assertNotNull( person );
attributes = person.getAttributes( "" );
Attribute newOcls = attributes.get( "objectClass" );
@@ -1210,13 +1179,13 @@ public class AddIT extends AbstractLdapT
assertTrue( userPasswordAttribute.contains( StringTools.getBytesUtf8( "ABC" ) ) );
assertFalse( res.hasMore() );
}
-
-
+
+
@Test
public void testAddEntryUUIDAndCSNAttributes() throws Exception
{
LdapConnection con = getClientApiConnection( ldapServer );
-
+
String dn = "cn=Kate Bush," + BASE;
Entry entry = new DefaultEntry( new DN( dn ) );
entry.add( "objectclass", "top", "person" );
@@ -1232,7 +1201,7 @@ public class AddIT extends AbstractLdapT
CsnFactory csnFac = new CsnFactory( 0 );
Csn csn = csnFac.newInstance();
entry.add( SchemaConstants.ENTRY_CSN_AT, csn.toString() );
-
+
con.add( entry );
// Analyze entry and description attribute
@@ -1242,19 +1211,19 @@ public class AddIT extends AbstractLdapT
EntryAttribute attr = addedEntry.get( SchemaConstants.ENTRY_UUID_AT );
assertNotNull( attr );
-
+
assertEquals( uuid.toString(), attr.getString() );
attr = addedEntry.get( SchemaConstants.ENTRY_CSN_AT );
assertNotNull( attr );
assertEquals( csn.toString(), attr.getString() );
-
+
// Remove entry
con.delete( dn );
con.unBind();
}
-
+
protected Attributes getPersonAttributes( String sn, String cn )
{
Attributes attrs = new BasicAttributes( true );
@@ -1281,7 +1250,6 @@ public class AddIT extends AbstractLdapT
return attrs;
}
-
/**
* <pre>
* ou=system
Modified: directory/shared/branches/shared-codec-merge/asn1/src/main/java/org/apache/directory/shared/asn1/codec/stateful/DecoderCallback.java
URL: http://svn.apache.org/viewvc/directory/shared/branches/shared-codec-merge/asn1/src/main/java/org/apache/directory/shared/asn1/codec/stateful/DecoderCallback.java?rev=983534&r1=983533&r2=983534&view=diff
==============================================================================
--- directory/shared/branches/shared-codec-merge/asn1/src/main/java/org/apache/directory/shared/asn1/codec/stateful/DecoderCallback.java (original)
+++ directory/shared/branches/shared-codec-merge/asn1/src/main/java/org/apache/directory/shared/asn1/codec/stateful/DecoderCallback.java Mon Aug 9 06:41:54 2010
@@ -30,10 +30,8 @@ public interface DecoderCallback
/**
* Callback to deliver a fully decoded object.
*
- * @param decoder
- * the stateful decoder driving the callback
- * @param decoded
- * the object that was decoded
+ * @param decoder the stateful decoder driving the callback
+ * @param decoded the object that was decoded
*/
void decodeOccurred( StatefulDecoder decoder, Object decoded );
}
Modified: directory/shared/branches/shared-codec-merge/ldap/src/main/java/org/apache/directory/shared/ldap/codec/LdapDecoder.java
URL: http://svn.apache.org/viewvc/directory/shared/branches/shared-codec-merge/ldap/src/main/java/org/apache/directory/shared/ldap/codec/LdapDecoder.java?rev=983534&r1=983533&r2=983534&view=diff
==============================================================================
--- directory/shared/branches/shared-codec-merge/ldap/src/main/java/org/apache/directory/shared/ldap/codec/LdapDecoder.java (original)
+++ directory/shared/branches/shared-codec-merge/ldap/src/main/java/org/apache/directory/shared/ldap/codec/LdapDecoder.java Mon Aug 9 06:41:54 2010
@@ -76,7 +76,7 @@ public class LdapDecoder implements Prov
this.provider = provider;
ldapMessageContainer = new LdapMessageContainer( binaryAttributeDetector );
ldapDecoder = new Asn1Decoder();
-
+
ldapMessageContainer.setMaxPDUSize( maxPDUSize );
}
@@ -110,23 +110,23 @@ public class LdapDecoder implements Prov
try
{
ldapDecoder.decode( buf, ldapMessageContainer );
-
+
if ( IS_DEBUG )
{
log.debug( "Decoding the PDU : " );
-
+
int size = buf.position();
buf.flip();
-
- byte[] array = new byte[ size - position ];
-
+
+ byte[] array = new byte[size - position];
+
for ( int i = position; i < size; i++ )
{
- array[ i ] = buf.get();
+ array[i] = buf.get();
}
-
+
position = size;
-
+
if ( array.length == 0 )
{
log.debug( "NULL buffer, what the HELL ???" );
@@ -136,7 +136,7 @@ public class LdapDecoder implements Prov
log.debug( StringTools.dumpBytes( array ) );
}
}
-
+
if ( ldapMessageContainer.getState() == TLVStateEnum.PDU_DECODED )
{
if ( IS_DEBUG )
@@ -144,8 +144,15 @@ public class LdapDecoder implements Prov
log.debug( "Decoded LdapMessage : " + ldapMessageContainer.getLdapMessage() );
buf.mark();
}
-
- decoderCallback.decodeOccurred( null, ldapMessageContainer.getLdapMessage() );
+
+ if ( ldapMessageContainer.isInternal() )
+ {
+ decoderCallback.decodeOccurred( null, ldapMessageContainer.getInternalMessage() );
+ }
+ else
+ {
+ decoderCallback.decodeOccurred( null, ldapMessageContainer.getLdapMessage() );
+ }
ldapMessageContainer.clean();
}
}
Modified: directory/shared/branches/shared-codec-merge/ldap/src/main/java/org/apache/directory/shared/ldap/codec/LdapMessageContainer.java
URL: http://svn.apache.org/viewvc/directory/shared/branches/shared-codec-merge/ldap/src/main/java/org/apache/directory/shared/ldap/codec/LdapMessageContainer.java?rev=983534&r1=983533&r2=983534&view=diff
==============================================================================
--- directory/shared/branches/shared-codec-merge/ldap/src/main/java/org/apache/directory/shared/ldap/codec/LdapMessageContainer.java (original)
+++ directory/shared/branches/shared-codec-merge/ldap/src/main/java/org/apache/directory/shared/ldap/codec/LdapMessageContainer.java Mon Aug 9 06:41:54 2010
@@ -43,8 +43,12 @@ import org.apache.directory.shared.ldap.
import org.apache.directory.shared.ldap.codec.search.SearchResultEntryCodec;
import org.apache.directory.shared.ldap.codec.search.SearchResultReferenceCodec;
import org.apache.directory.shared.ldap.codec.unbind.UnBindRequestCodec;
+import org.apache.directory.shared.ldap.message.internal.InternalAbandonRequest;
import org.apache.directory.shared.ldap.message.internal.InternalAddRequest;
+import org.apache.directory.shared.ldap.message.internal.InternalCompareRequest;
+import org.apache.directory.shared.ldap.message.internal.InternalDeleteRequest;
import org.apache.directory.shared.ldap.message.internal.InternalMessage;
+import org.apache.directory.shared.ldap.message.internal.InternalUnbindRequest;
import org.apache.directory.shared.ldap.message.spi.BinaryAttributeDetector;
@@ -71,10 +75,11 @@ public class LdapMessageContainer extend
/** The message ID */
private int messageId;
-
+
/** The current control */
private AbstractControl currentControl;
+
// ~ Constructors
// -------------------------------------------------------------------------------
@@ -86,11 +91,11 @@ public class LdapMessageContainer extend
{
this( new BinaryAttributeDetector()
{
- public boolean isBinary( String attributeId )
+ public boolean isBinary( String attributeId )
{
return false;
}
- });
+ } );
}
@@ -120,7 +125,7 @@ public class LdapMessageContainer extend
return ldapMessage;
}
-
+
/**
* @return Returns the ldapMessage.
*/
@@ -129,214 +134,250 @@ public class LdapMessageContainer extend
return internalMessage;
}
-
+
/**
* @return Returns the LdapResponse.
*/
public LdapResponseCodec getLdapResponse()
{
- return (LdapResponseCodec)ldapMessage;
+ return ( LdapResponseCodec ) ldapMessage;
}
-
+
/**
* @return Returns the AbandonRequest stored in the container
*/
public AbandonRequestCodec getAbandonRequest()
{
- return (AbandonRequestCodec)ldapMessage;
+ return ( AbandonRequestCodec ) ldapMessage;
+ }
+
+
+ /**
+ * @return Returns the AbandonRequest stored in the container
+ */
+ public InternalAbandonRequest getInternalAbandonRequest()
+ {
+ return ( InternalAbandonRequest ) internalMessage;
}
-
+
/**
* @return Returns the AddRequest stored in the container
*/
public AddRequestCodec getAddRequest()
{
- return (AddRequestCodec)ldapMessage;
+ return ( AddRequestCodec ) ldapMessage;
}
-
+
/**
* @return Returns the InternalAddRequest stored in the container
*/
public InternalAddRequest getInternalAddRequest()
{
- return (InternalAddRequest)internalMessage;
+ return ( InternalAddRequest ) internalMessage;
}
-
+
/**
* @return Returns the AddResponse stored in the container
*/
public AddResponseCodec getAddResponse()
{
- return (AddResponseCodec)ldapMessage;
+ return ( AddResponseCodec ) ldapMessage;
}
-
+
/**
* @return Returns the BindRequest stored in the container
*/
public BindRequestCodec getBindRequest()
{
- return (BindRequestCodec)ldapMessage;
+ return ( BindRequestCodec ) ldapMessage;
}
-
+
/**
* @return Returns the BindResponse stored in the container
*/
public BindResponseCodec getBindResponse()
{
- return (BindResponseCodec)ldapMessage;
+ return ( BindResponseCodec ) ldapMessage;
}
-
+
/**
* @return Returns the CompareRequest stored in the container
*/
public CompareRequestCodec getCompareRequest()
{
- return (CompareRequestCodec)ldapMessage;
+ return ( CompareRequestCodec ) ldapMessage;
+ }
+
+
+ /**
+ * @return Returns the CompareRequest stored in the container
+ */
+ public InternalCompareRequest getInternalCompareRequest()
+ {
+ return ( InternalCompareRequest ) internalMessage;
}
-
+
/**
* @return Returns the CompareResponse stored in the container
*/
public CompareResponseCodec getCompareResponse()
{
- return (CompareResponseCodec)ldapMessage;
+ return ( CompareResponseCodec ) ldapMessage;
}
-
+
/**
* @return Returns the DelRequest stored in the container
*/
public DelRequestCodec getDelRequest()
{
- return (DelRequestCodec)ldapMessage;
+ return ( DelRequestCodec ) ldapMessage;
}
-
+
+ /**
+ * @return Returns the InternalDeleleteRequest stored in the container
+ */
+ public InternalDeleteRequest getInternalDeleteRequest()
+ {
+ return ( InternalDeleteRequest ) internalMessage;
+ }
+
+
/**
* @return Returns the DelResponse stored in the container
*/
public DelResponseCodec getDelResponse()
{
- return (DelResponseCodec)ldapMessage;
+ return ( DelResponseCodec ) ldapMessage;
}
-
+
/**
* @return Returns the ExtendedRequest stored in the container
*/
public ExtendedRequestCodec getExtendedRequest()
{
- return (ExtendedRequestCodec)ldapMessage;
+ return ( ExtendedRequestCodec ) ldapMessage;
}
-
+
/**
* @return Returns the ExtendedResponse stored in the container
*/
public ExtendedResponseCodec getExtendedResponse()
{
- return (ExtendedResponseCodec)ldapMessage;
+ return ( ExtendedResponseCodec ) ldapMessage;
}
-
+
/**
* @return Returns the IntermediateResponse stored in the container
*/
public IntermediateResponseCodec getIntermediateResponse()
{
- return (IntermediateResponseCodec)ldapMessage;
+ return ( IntermediateResponseCodec ) ldapMessage;
}
-
+
/**
* @return Returns the ModifyRequest stored in the container
*/
public ModifyRequestCodec getModifyRequest()
{
- return (ModifyRequestCodec)ldapMessage;
+ return ( ModifyRequestCodec ) ldapMessage;
}
-
+
/**
* @return Returns the ModifyResponse stored in the container
*/
public ModifyResponseCodec getModifyResponse()
{
- return (ModifyResponseCodec)ldapMessage;
+ return ( ModifyResponseCodec ) ldapMessage;
}
-
+
/**
* @return Returns the ModifyDnRequest stored in the container
*/
public ModifyDNRequestCodec getModifyDnRequest()
{
- return (ModifyDNRequestCodec)ldapMessage;
+ return ( ModifyDNRequestCodec ) ldapMessage;
}
-
+
/**
* @return Returns the ModifyDnResponse stored in the container
*/
public ModifyDNResponseCodec getModifyDnResponse()
{
- return (ModifyDNResponseCodec)ldapMessage;
+ return ( ModifyDNResponseCodec ) ldapMessage;
}
-
+
/**
* @return Returns the SearchRequest stored in the container
*/
public SearchRequestCodec getSearchRequest()
{
- return (SearchRequestCodec)ldapMessage;
+ return ( SearchRequestCodec ) ldapMessage;
}
-
+
/**
* @return Returns the SearchResultEntryCodec stored in the container
*/
public SearchResultEntryCodec getSearchResultEntry()
{
- return (SearchResultEntryCodec)ldapMessage;
+ return ( SearchResultEntryCodec ) ldapMessage;
}
-
+
/**
* @return Returns the SearchResultReferenceCodec stored in the container
*/
public SearchResultReferenceCodec getSearchResultReference()
{
- return (SearchResultReferenceCodec)ldapMessage;
+ return ( SearchResultReferenceCodec ) ldapMessage;
}
-
+
/**
* @return Returns the SearchResultDone stored in the container
*/
public SearchResultDoneCodec getSearchResultDone()
{
- return (SearchResultDoneCodec)ldapMessage;
+ return ( SearchResultDoneCodec ) ldapMessage;
}
-
+
/**
* @return Returns the UnbindRequest stored in the container
*/
public UnBindRequestCodec getUnbindRequest()
{
- return (UnBindRequestCodec)ldapMessage;
+ return ( UnBindRequestCodec ) ldapMessage;
}
-
+
+ /**
+ * @return Returns the UnbindRequest stored in the container
+ */
+ public InternalUnbindRequest getInternalUnbindRequest()
+ {
+ return ( InternalUnbindRequest ) internalMessage;
+ }
+
+
/**
* Set a ldapMessage Object into the container. It will be completed by the
* ldapDecoder .
@@ -348,7 +389,7 @@ public class LdapMessageContainer extend
this.ldapMessage = ldapMessage;
}
-
+
/**
* Set a InternalMessage Object into the container. It will be completed by the
* ldapDecoder.
@@ -366,12 +407,19 @@ public class LdapMessageContainer extend
super.clean();
ldapMessage = null;
+ internalMessage = null;
messageId = 0;
currentControl = null;
decodeBytes = 0;
}
+ public boolean isInternal()
+ {
+ return internalMessage != null;
+ }
+
+
/**
* @return Returns true if the attribute is binary.
* @param id checks if an attribute id is binary
@@ -381,6 +429,7 @@ public class LdapMessageContainer extend
return binaryAttributeDetector.isBinary( id );
}
+
/**
* @return The message ID
*/
@@ -389,6 +438,7 @@ public class LdapMessageContainer extend
return messageId;
}
+
/**
* Set the message ID
* @param messageId the id of the message
@@ -398,6 +448,7 @@ public class LdapMessageContainer extend
this.messageId = messageId;
}
+
/**
* @return the current control being created
*/
@@ -406,6 +457,7 @@ public class LdapMessageContainer extend
return currentControl;
}
+
/**
* Store a newly created control
* @param currentControl The control to store
Modified: directory/shared/branches/shared-codec-merge/ldap/src/main/java/org/apache/directory/shared/ldap/codec/LdapMessageGrammar.java
URL: http://svn.apache.org/viewvc/directory/shared/branches/shared-codec-merge/ldap/src/main/java/org/apache/directory/shared/ldap/codec/LdapMessageGrammar.java?rev=983534&r1=983533&r2=983534&view=diff
==============================================================================
--- directory/shared/branches/shared-codec-merge/ldap/src/main/java/org/apache/directory/shared/ldap/codec/LdapMessageGrammar.java (original)
+++ directory/shared/branches/shared-codec-merge/ldap/src/main/java/org/apache/directory/shared/ldap/codec/LdapMessageGrammar.java Mon Aug 9 06:41:54 2010
@@ -38,7 +38,6 @@ import org.apache.directory.shared.asn1.
import org.apache.directory.shared.asn1.util.LongDecoder;
import org.apache.directory.shared.asn1.util.LongDecoderException;
import org.apache.directory.shared.i18n.I18n;
-import org.apache.directory.shared.ldap.codec.abandon.AbandonRequestCodec;
import org.apache.directory.shared.ldap.codec.actions.AttributeDescAction;
import org.apache.directory.shared.ldap.codec.actions.ControlValueAction;
import org.apache.directory.shared.ldap.codec.actions.ControlsInitAction;
@@ -76,10 +75,9 @@ import org.apache.directory.shared.ldap.
import org.apache.directory.shared.ldap.codec.bind.BindResponseCodec;
import org.apache.directory.shared.ldap.codec.bind.SaslCredentials;
import org.apache.directory.shared.ldap.codec.bind.SimpleAuthentication;
-import org.apache.directory.shared.ldap.codec.compare.CompareRequestCodec;
import org.apache.directory.shared.ldap.codec.compare.CompareResponseCodec;
+import org.apache.directory.shared.ldap.codec.controls.ControlEnum;
import org.apache.directory.shared.ldap.codec.controls.ControlImpl;
-import org.apache.directory.shared.ldap.codec.del.DelRequestCodec;
import org.apache.directory.shared.ldap.codec.del.DelResponseCodec;
import org.apache.directory.shared.ldap.codec.extended.ExtendedRequestCodec;
import org.apache.directory.shared.ldap.codec.extended.ExtendedResponseCodec;
@@ -94,21 +92,29 @@ import org.apache.directory.shared.ldap.
import org.apache.directory.shared.ldap.codec.search.SearchResultEntryCodec;
import org.apache.directory.shared.ldap.codec.search.SearchResultReferenceCodec;
import org.apache.directory.shared.ldap.codec.search.SubstringFilter;
-import org.apache.directory.shared.ldap.codec.unbind.UnBindRequestCodec;
import org.apache.directory.shared.ldap.exception.LdapException;
import org.apache.directory.shared.ldap.exception.LdapInvalidDnException;
import org.apache.directory.shared.ldap.filter.SearchScope;
+import org.apache.directory.shared.ldap.message.AbandonRequestImpl;
import org.apache.directory.shared.ldap.message.AddRequestImpl;
import org.apache.directory.shared.ldap.message.AddResponseImpl;
import org.apache.directory.shared.ldap.message.BindResponseImpl;
+import org.apache.directory.shared.ldap.message.CompareRequestImpl;
import org.apache.directory.shared.ldap.message.CompareResponseImpl;
+import org.apache.directory.shared.ldap.message.DeleteRequestImpl;
import org.apache.directory.shared.ldap.message.DeleteResponseImpl;
import org.apache.directory.shared.ldap.message.ModifyDnResponseImpl;
import org.apache.directory.shared.ldap.message.ModifyResponseImpl;
import org.apache.directory.shared.ldap.message.ResultCodeEnum;
import org.apache.directory.shared.ldap.message.SearchResponseDoneImpl;
+import org.apache.directory.shared.ldap.message.UnbindRequestImpl;
import org.apache.directory.shared.ldap.message.control.Control;
+import org.apache.directory.shared.ldap.message.internal.InternalAbandonRequest;
import org.apache.directory.shared.ldap.message.internal.InternalAddRequest;
+import org.apache.directory.shared.ldap.message.internal.InternalCompareRequest;
+import org.apache.directory.shared.ldap.message.internal.InternalDeleteRequest;
+import org.apache.directory.shared.ldap.message.internal.InternalMessage;
+import org.apache.directory.shared.ldap.message.internal.InternalUnbindRequest;
import org.apache.directory.shared.ldap.name.DN;
import org.apache.directory.shared.ldap.name.RDN;
import org.apache.directory.shared.ldap.util.StringTools;
@@ -282,13 +288,11 @@ public class LdapMessageGrammar extends
{
public void action( IAsn1Container container ) throws DecoderException
{
-
LdapMessageContainer ldapMessageContainer = ( LdapMessageContainer ) container;
- // Create the UnbindRequest LdapMessage instance and store it in the container
- UnBindRequestCodec unbindRequest = new UnBindRequestCodec();
- unbindRequest.setMessageId( ldapMessageContainer.getMessageId() );
- ldapMessageContainer.setLdapMessage( unbindRequest );
+ // Create the UnbindRequest LdapMessage instance and store it in the container
+ InternalUnbindRequest unbindRequest = new UnbindRequestImpl( ldapMessageContainer.getMessageId() );
+ ldapMessageContainer.setInternalMessage( unbindRequest );
TLV tlv = ldapMessageContainer.getCurrentTLV();
int expectedLength = tlv.getLength();
@@ -334,9 +338,8 @@ public class LdapMessageGrammar extends
LdapMessageContainer ldapMessageContainer = ( LdapMessageContainer ) container;
// Create the DeleteRequest LdapMessage instance and store it in the container
- DelRequestCodec delRequest = new DelRequestCodec();
- delRequest.setMessageId( ldapMessageContainer.getMessageId() );
- ldapMessageContainer.setLdapMessage( delRequest );
+ InternalDeleteRequest delRequest = new DeleteRequestImpl( ldapMessageContainer.getMessageId() );
+ ldapMessageContainer.setInternalMessage( delRequest );
// And store the DN into it
// Get the Value and store it in the DelRequest
@@ -371,7 +374,7 @@ public class LdapMessageGrammar extends
DN.EMPTY_DN, ine );
}
- delRequest.setEntry( entry );
+ delRequest.setName( entry );
}
// We can have an END transition
@@ -411,9 +414,8 @@ public class LdapMessageGrammar extends
LdapMessageContainer ldapMessageContainer = ( LdapMessageContainer ) container;
// Create the AbandonRequest LdapMessage instance and store it in the container
- AbandonRequestCodec abandonRequest = new AbandonRequestCodec();
- abandonRequest.setMessageId( ldapMessageContainer.getMessageId() );
- ldapMessageContainer.setLdapMessage( abandonRequest );
+ InternalAbandonRequest abandonRequest = new AbandonRequestImpl( ldapMessageContainer.getMessageId() );
+ ldapMessageContainer.setInternalMessage( abandonRequest );
// The current TLV should be a integer
// We get it and store it in MessageId
@@ -434,7 +436,7 @@ public class LdapMessageGrammar extends
{
int abandonnedMessageId = IntegerDecoder.parse( value, 0, Integer.MAX_VALUE );
- abandonRequest.setAbandonedMessageId( abandonnedMessageId );
+ abandonRequest.setAbandoned( abandonnedMessageId );
if ( IS_DEBUG )
{
@@ -2057,7 +2059,6 @@ public class LdapMessageGrammar extends
{
public void action( IAsn1Container container ) throws DecoderException
{
-
LdapMessageContainer ldapMessageContainer = ( LdapMessageContainer ) container;
// Now, we can allocate the AddResponse Object
@@ -2500,9 +2501,8 @@ public class LdapMessageGrammar extends
LdapMessageContainer ldapMessageContainer = ( LdapMessageContainer ) container;
// Now, we can allocate the CompareRequest Object
- CompareRequestCodec compareRequest = new CompareRequestCodec();
- compareRequest.setMessageId( ldapMessageContainer.getMessageId() );
- ldapMessageContainer.setLdapMessage( compareRequest );
+ InternalCompareRequest compareRequest = new CompareRequestImpl( ldapMessageContainer.getMessageId() );
+ ldapMessageContainer.setInternalMessage( compareRequest );
log.debug( "Compare Request" );
}
@@ -2524,7 +2524,7 @@ public class LdapMessageGrammar extends
{
LdapMessageContainer ldapMessageContainer = ( LdapMessageContainer ) container;
- CompareRequestCodec compareRequest = ldapMessageContainer.getCompareRequest();
+ InternalCompareRequest compareRequest = ldapMessageContainer.getInternalCompareRequest();
// Get the Value and store it in the CompareRequest
TLV tlv = ldapMessageContainer.getCurrentTLV();
@@ -2557,7 +2557,7 @@ public class LdapMessageGrammar extends
DN.EMPTY_DN, ine );
}
- compareRequest.setEntry( entry );
+ compareRequest.setName( entry );
}
if ( IS_DEBUG )
@@ -2600,7 +2600,7 @@ public class LdapMessageGrammar extends
LdapMessageContainer ldapMessageContainer = ( LdapMessageContainer ) container;
// Get the CompareRequest Object
- CompareRequestCodec compareRequest = ldapMessageContainer.getCompareRequest();
+ InternalCompareRequest compareRequest = ldapMessageContainer.getInternalCompareRequest();
// Get the Value and store it in the CompareRequest
TLV tlv = ldapMessageContainer.getCurrentTLV();
@@ -2614,15 +2614,15 @@ public class LdapMessageGrammar extends
CompareResponseImpl response = new CompareResponseImpl( compareRequest.getMessageId() );
throw new ResponseCarryingException( msg, response, ResultCodeEnum.INVALID_ATTRIBUTE_SYNTAX,
- compareRequest.getEntry(), null );
+ compareRequest.getName(), null );
}
String type = StringTools.getType( tlv.getValue().getData() );
- compareRequest.setAttributeDesc( type );
+ compareRequest.setAttributeId( type );
if ( IS_DEBUG )
{
- log.debug( "Comparing attribute description {}", compareRequest.getAttributeDesc() );
+ log.debug( "Comparing attribute description {}", compareRequest.getAttributeId() );
}
}
} );
@@ -2647,7 +2647,7 @@ public class LdapMessageGrammar extends
LdapMessageContainer ldapMessageContainer = ( LdapMessageContainer ) container;
// Get the CompareRequest Object
- CompareRequestCodec compareRequest = ldapMessageContainer.getCompareRequest();
+ InternalCompareRequest compareRequest = ldapMessageContainer.getInternalCompareRequest();
// Get the Value and store it in the CompareRequest
TLV tlv = ldapMessageContainer.getCurrentTLV();
@@ -2659,14 +2659,14 @@ public class LdapMessageGrammar extends
}
else
{
- if ( ldapMessageContainer.isBinary( compareRequest.getAttributeDesc() ) )
+ if ( ldapMessageContainer.isBinary( compareRequest.getAttributeId() ) )
{
compareRequest.setAssertionValue( tlv.getValue().getData() );
if ( IS_DEBUG )
{
- log.debug( "Comparing attribute value {}", StringTools
- .dumpBytes( ( byte[] ) compareRequest.getAssertionValue() ) );
+ log.debug( "Comparing attribute value {}", StringTools.dumpBytes( compareRequest
+ .getAssertionValue().getBytes() ) );
}
}
else
@@ -3417,13 +3417,9 @@ public class LdapMessageGrammar extends
public void action( IAsn1Container container ) throws DecoderException
{
LdapMessageContainer ldapMessageContainer = ( LdapMessageContainer ) container;
- LdapMessageCodec message = ldapMessageContainer.getLdapMessage();
TLV tlv = ldapMessageContainer.getCurrentTLV();
- // Get the current control
- Control control = null;
-
// Store the type
// We have to handle the special case of a 0 length OID
if ( tlv.getLength() == 0 )
@@ -3447,24 +3443,43 @@ public class LdapMessageGrammar extends
throw new DecoderException( I18n.err( I18n.ERR_04099, oidValue ) );
}
- // get the Control for this OID
- control = message.getCodecControl( oidValue );
-
- if ( control == null )
+ if ( !ldapMessageContainer.isInternal() )
{
- // This control is unknown, we will create a neutral control
- control = new ControlImpl( oidValue );
+ LdapMessageCodec message = ldapMessageContainer.getLdapMessage();
+
+ // get the Control for this OID
+ Control control = message.getCodecControl( oidValue );
+
+ if ( control == null )
+ {
+ // This control is unknown, we will create a neutral control
+ control = new ControlImpl( oidValue );
+ }
+
+ // The control may be null, if not known
+ message.addControl( control );
}
+ else
+ {
+ InternalMessage message = ldapMessageContainer.getInternalMessage();
- // The control may be null, if not known
- message.addControl( control );
+ Control control = ControlEnum.getControl( oidValue );
+
+ if ( control == null )
+ {
+ // This control is unknown, we will create a neutral control
+ control = new ControlImpl( oidValue );
+ }
+
+ message.add( control );
+ }
// We can have an END transition
ldapMessageContainer.grammarEndAllowed( true );
if ( IS_DEBUG )
{
- log.debug( "Control OID : " + control.getOid() );
+ log.debug( "Control OID : " + oidValue );
}
}
} );
@@ -3485,12 +3500,23 @@ public class LdapMessageGrammar extends
public void action( IAsn1Container container ) throws DecoderException
{
LdapMessageContainer ldapMessageContainer = ( LdapMessageContainer ) container;
- LdapMessageCodec message = ldapMessageContainer.getLdapMessage();
TLV tlv = ldapMessageContainer.getCurrentTLV();
// Get the current control
- Control control = message.getCurrentControl();
+ Control control = null;
+
+ if ( !ldapMessageContainer.isInternal() )
+ {
+ LdapMessageCodec message = ldapMessageContainer.getLdapMessage();
+
+ control = message.getCurrentControl();
+ }
+ else
+ {
+ InternalMessage message = ldapMessageContainer.getInternalMessage();
+ control = message.getCurrentControl();
+ }
// Store the criticality
// We get the value. If it's a 0, it's a FALSE. If it's
Modified: directory/shared/branches/shared-codec-merge/ldap/src/main/java/org/apache/directory/shared/ldap/codec/LdapTransformer.java
URL: http://svn.apache.org/viewvc/directory/shared/branches/shared-codec-merge/ldap/src/main/java/org/apache/directory/shared/ldap/codec/LdapTransformer.java?rev=983534&r1=983533&r2=983534&view=diff
==============================================================================
--- directory/shared/branches/shared-codec-merge/ldap/src/main/java/org/apache/directory/shared/ldap/codec/LdapTransformer.java (original)
+++ directory/shared/branches/shared-codec-merge/ldap/src/main/java/org/apache/directory/shared/ldap/codec/LdapTransformer.java Mon Aug 9 06:41:54 2010
@@ -29,7 +29,6 @@ import org.apache.directory.shared.asn1.
import org.apache.directory.shared.asn1.primitives.OID;
import org.apache.directory.shared.i18n.I18n;
import org.apache.directory.shared.ldap.codec.abandon.AbandonRequestCodec;
-import org.apache.directory.shared.ldap.codec.add.AddRequestCodec;
import org.apache.directory.shared.ldap.codec.add.AddResponseCodec;
import org.apache.directory.shared.ldap.codec.bind.BindRequestCodec;
import org.apache.directory.shared.ldap.codec.bind.BindResponseCodec;
@@ -37,7 +36,6 @@ import org.apache.directory.shared.ldap.
import org.apache.directory.shared.ldap.codec.bind.SimpleAuthentication;
import org.apache.directory.shared.ldap.codec.compare.CompareRequestCodec;
import org.apache.directory.shared.ldap.codec.compare.CompareResponseCodec;
-import org.apache.directory.shared.ldap.codec.del.DelRequestCodec;
import org.apache.directory.shared.ldap.codec.del.DelResponseCodec;
import org.apache.directory.shared.ldap.codec.extended.ExtendedRequestCodec;
import org.apache.directory.shared.ldap.codec.extended.ExtendedResponseCodec;
@@ -79,14 +77,12 @@ import org.apache.directory.shared.ldap.
import org.apache.directory.shared.ldap.filter.SimpleNode;
import org.apache.directory.shared.ldap.filter.SubstringNode;
import org.apache.directory.shared.ldap.message.AbandonRequestImpl;
-import org.apache.directory.shared.ldap.message.AddRequestImpl;
import org.apache.directory.shared.ldap.message.AddResponseImpl;
import org.apache.directory.shared.ldap.message.AliasDerefMode;
import org.apache.directory.shared.ldap.message.BindRequestImpl;
import org.apache.directory.shared.ldap.message.BindResponseImpl;
import org.apache.directory.shared.ldap.message.CompareRequestImpl;
import org.apache.directory.shared.ldap.message.CompareResponseImpl;
-import org.apache.directory.shared.ldap.message.DeleteRequestImpl;
import org.apache.directory.shared.ldap.message.DeleteResponseImpl;
import org.apache.directory.shared.ldap.message.ExtendedRequestImpl;
import org.apache.directory.shared.ldap.message.ExtendedResponseImpl;
@@ -149,27 +145,6 @@ public class LdapTransformer
/**
- * Transform an AddRequest message from a addRequest to a InternalMessage
- *
- * @param addRequest The message to transform
- * @param messageId The message Id
- * @return A Internal AddRequestImpl
- */
- private static InternalMessage transformAddRequest( AddRequestCodec addRequest, int messageId )
- {
- AddRequestImpl internalMessage = new AddRequestImpl( messageId );
-
- // Codec : DN entry -> Internal : String name
- internalMessage.setEntry( addRequest.getEntry() );
-
- // Codec : Attributes attributes -> Internal : Attributes entry
- internalMessage.setEntry( addRequest.getEntry() );
-
- return internalMessage;
- }
-
-
- /**
* Transform a BindRequest message from a CodecMessage to a InternalMessage
*
* @param bindRequest The message to transform
@@ -301,24 +276,6 @@ public class LdapTransformer
/**
- * Transform a DelRequest message from a CodecMessage to a InternalMessage
- *
- * @param delRequest The message to transform
- * @param messageId The message Id
- * @return A Internal DeleteRequestImpl
- */
- private static InternalMessage transformDelRequest( DelRequestCodec delRequest, int messageId )
- {
- DeleteRequestImpl internalMessage = new DeleteRequestImpl( messageId );
-
- // Codec : DN entry -> Internal : DN
- internalMessage.setName( delRequest.getEntry() );
-
- return internalMessage;
- }
-
-
- /**
* Transform an ExtendedRequest message from a CodecMessage to a
* InternalMessage
*
@@ -787,11 +744,6 @@ public class LdapTransformer
*/
public static InternalMessage transform( Object obj )
{
- if ( obj instanceof InternalMessage )
- {
- return ( InternalMessage ) obj;
- }
-
LdapMessageCodec codecMessage = ( LdapMessageCodec ) obj;
int messageId = codecMessage.getMessageId();
@@ -811,10 +763,6 @@ public class LdapTransformer
internalMessage = transformBindRequest( ( BindRequestCodec ) codecMessage, messageId );
break;
- case UNBIND_REQUEST:
- internalMessage = transformUnBindRequest( messageId );
- break;
-
case SEARCH_REQUEST:
internalMessage = transformSearchRequest( ( SearchRequestCodec ) codecMessage, messageId );
break;
@@ -823,26 +771,10 @@ public class LdapTransformer
internalMessage = transformModifyRequest( ( ModifyRequestCodec ) codecMessage, messageId );
break;
- case ADD_REQUEST:
- internalMessage = transformAddRequest( ( AddRequestCodec ) codecMessage, messageId );
- break;
-
- case DEL_REQUEST:
- internalMessage = transformDelRequest( ( DelRequestCodec ) codecMessage, messageId );
- break;
-
case MODIFYDN_REQUEST:
internalMessage = transformModifyDNRequest( ( ModifyDNRequestCodec ) codecMessage, messageId );
break;
- case COMPARE_REQUEST:
- internalMessage = transformCompareRequest( ( CompareRequestCodec ) codecMessage, messageId );
- break;
-
- case ABANDON_REQUEST:
- internalMessage = transformAbandonRequest( ( AbandonRequestCodec ) codecMessage, messageId );
- break;
-
case EXTENDED_REQUEST:
internalMessage = transformExtendedRequest( ( ExtendedRequestCodec ) codecMessage, messageId );
break;
Modified: directory/shared/branches/shared-codec-merge/ldap/src/main/java/org/apache/directory/shared/ldap/codec/actions/ControlValueAction.java
URL: http://svn.apache.org/viewvc/directory/shared/branches/shared-codec-merge/ldap/src/main/java/org/apache/directory/shared/ldap/codec/actions/ControlValueAction.java?rev=983534&r1=983533&r2=983534&view=diff
==============================================================================
--- directory/shared/branches/shared-codec-merge/ldap/src/main/java/org/apache/directory/shared/ldap/codec/actions/ControlValueAction.java (original)
+++ directory/shared/branches/shared-codec-merge/ldap/src/main/java/org/apache/directory/shared/ldap/codec/actions/ControlValueAction.java Mon Aug 9 06:41:54 2010
@@ -30,6 +30,7 @@ import org.apache.directory.shared.ldap.
import org.apache.directory.shared.ldap.codec.controls.CodecControl;
import org.apache.directory.shared.ldap.codec.controls.ControlDecoder;
import org.apache.directory.shared.ldap.message.control.Control;
+import org.apache.directory.shared.ldap.message.internal.InternalMessage;
import org.apache.directory.shared.ldap.util.StringTools;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -55,13 +56,23 @@ public class ControlValueAction extends
{
LdapMessageContainer ldapMessageContainer = ( LdapMessageContainer ) container;
TLV tlv = ldapMessageContainer.getCurrentTLV();
- LdapMessageCodec message = ldapMessageContainer.getLdapMessage();
+ Control control = null;
+
+ if ( !ldapMessageContainer.isInternal() )
+ {
+ LdapMessageCodec message = ldapMessageContainer.getLdapMessage();
+ control = message.getCurrentControl();
+ }
+ else
+ {
+ InternalMessage message = ldapMessageContainer.getInternalMessage();
+ control = message.getCurrentControl();
+ }
// Get the current control
- Control control = message.getCurrentControl();
Value value = tlv.getValue();
- ControlDecoder decoder = ((CodecControl)control).getDecoder();
+ ControlDecoder decoder = ( ( CodecControl ) control ).getDecoder();
// Store the value - have to handle the special case of a 0 length value
if ( tlv.getLength() == 0 )
Modified: directory/shared/branches/shared-codec-merge/ldap/src/main/java/org/apache/directory/shared/ldap/codec/actions/ControlsInitAction.java
URL: http://svn.apache.org/viewvc/directory/shared/branches/shared-codec-merge/ldap/src/main/java/org/apache/directory/shared/ldap/codec/actions/ControlsInitAction.java?rev=983534&r1=983533&r2=983534&view=diff
==============================================================================
--- directory/shared/branches/shared-codec-merge/ldap/src/main/java/org/apache/directory/shared/ldap/codec/actions/ControlsInitAction.java (original)
+++ directory/shared/branches/shared-codec-merge/ldap/src/main/java/org/apache/directory/shared/ldap/codec/actions/ControlsInitAction.java Mon Aug 9 06:41:54 2010
@@ -26,7 +26,6 @@ import org.apache.directory.shared.asn1.
import org.apache.directory.shared.asn1.codec.DecoderException;
import org.apache.directory.shared.ldap.codec.LdapMessageCodec;
import org.apache.directory.shared.ldap.codec.LdapMessageContainer;
-
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -44,11 +43,13 @@ public class ControlsInitAction extends
/** Speedup for logs */
private static final boolean IS_DEBUG = log.isDebugEnabled();
+
public ControlsInitAction()
{
super( "Initialize a control" );
}
+
/**
* The initialization action
*/
@@ -56,7 +57,6 @@ public class ControlsInitAction extends
{
LdapMessageContainer ldapMessageContainer = ( LdapMessageContainer ) container;
- LdapMessageCodec message = ldapMessageContainer.getLdapMessage();
TLV tlv = ldapMessageContainer.getCurrentTLV();
int expectedLength = tlv.getLength();
@@ -65,17 +65,22 @@ public class ControlsInitAction extends
if ( expectedLength == 0 )
{
log.error( "The length of controls must not be null" );
-
+
// This will generate a PROTOCOL_ERROR
throw new DecoderException( "The length of controls must not be null" );
}
-
+
if ( IS_DEBUG )
{
log.debug( "A new list of controls has been initialized" );
}
-
- // We can initialize the controls array
- message.initControls();
+
+ if ( !ldapMessageContainer.isInternal() )
+ {
+ LdapMessageCodec message = ldapMessageContainer.getLdapMessage();
+
+ // We can initialize the controls array
+ message.initControls();
+ }
}
}
Added: directory/shared/branches/shared-codec-merge/ldap/src/main/java/org/apache/directory/shared/ldap/codec/controls/ControlEnum.java
URL: http://svn.apache.org/viewvc/directory/shared/branches/shared-codec-merge/ldap/src/main/java/org/apache/directory/shared/ldap/codec/controls/ControlEnum.java?rev=983534&view=auto
==============================================================================
--- directory/shared/branches/shared-codec-merge/ldap/src/main/java/org/apache/directory/shared/ldap/codec/controls/ControlEnum.java (added)
+++ directory/shared/branches/shared-codec-merge/ldap/src/main/java/org/apache/directory/shared/ldap/codec/controls/ControlEnum.java Mon Aug 9 06:41:54 2010
@@ -0,0 +1,150 @@
+/*
+ * 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.codec.controls;
+
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.directory.shared.ldap.codec.controls.replication.syncDoneValue.SyncDoneValueControl;
+import org.apache.directory.shared.ldap.codec.controls.replication.syncInfoValue.SyncInfoValueControl;
+import org.apache.directory.shared.ldap.codec.controls.replication.syncRequestValue.SyncRequestValueControl;
+import org.apache.directory.shared.ldap.codec.controls.replication.syncStateValue.SyncStateValueControl;
+import org.apache.directory.shared.ldap.codec.search.controls.pagedSearch.PagedResultsControl;
+import org.apache.directory.shared.ldap.codec.search.controls.persistentSearch.PersistentSearchControl;
+import org.apache.directory.shared.ldap.codec.search.controls.subentries.SubentriesControl;
+import org.apache.directory.shared.ldap.message.control.Control;
+import org.apache.directory.shared.ldap.message.control.replication.SynchronizationInfoEnum;
+
+
+/**
+ * An enumeration of all the existng controls. It currently includes :
+ * <ul>
+ * <li></li>
+ * <li></li>
+ * <li></li>
+ * <li></li>
+ * <li></li>
+ * <li></li>
+ * <li></li>
+ * <li></li>
+ * <li></li>
+ * <li></li>
+ * </ul>
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public enum ControlEnum
+{
+ /** The ManageDsaIt control */
+ MANAGE_DSA_IT(new ManageDsaITControl()),
+
+ /** The PagedResults control */
+ PAGED_RESULTS(new PagedResultsControl()),
+
+ /** The PersistentSearch control */
+ PERSISTENT_SEARCH(new PersistentSearchControl()),
+
+ /** The Subentries control */
+ SUBENTRIES(new SubentriesControl()),
+
+ /** The SyncDoneValue control */
+ SYNC_DONE_VALUE(new SyncDoneValueControl()),
+
+ /** The SyncInfoValue (new cookie) control */
+ SYNC_INFO_VALUE_NEW_COOKIE(new SyncInfoValueControl( SynchronizationInfoEnum.NEW_COOKIE )),
+
+ /** The SyncInfoValue (refresh delete) control */
+ SYNC_INFO_VALUE_REFRESH_DELETE(new SyncInfoValueControl( SynchronizationInfoEnum.REFRESH_DELETE )),
+
+ /** The SyncInfoValue (refresh present) control */
+ SYNC_INFO_VALUE_REFRESH_PRESENT(new SyncInfoValueControl( SynchronizationInfoEnum.REFRESH_PRESENT )),
+
+ /** The SyncInfoValue (sync id set) control */
+ SYNC_INFO_VALUE_SYNC_ID_SET(new SyncInfoValueControl( SynchronizationInfoEnum.SYNC_ID_SET )),
+
+ /** The SyncRequestValueControl control */
+ SYNC_REQUEST_VALUE(new SyncRequestValueControl()),
+
+ /** The SyncStateValueControl control */
+ SYNC_STATE_VALUE(new SyncStateValueControl());
+
+ /** The internal control instance */
+ private Control control;
+
+ /** The control's oid */
+ private String oid;
+
+ private static Map<String, Control> codecControls = new HashMap<String, Control>();
+
+ static
+ {
+ // Initialize the different known Controls
+ codecControls.put( MANAGE_DSA_IT.getOid(), MANAGE_DSA_IT.getControl() );
+ codecControls.put( PAGED_RESULTS.getOid(), PAGED_RESULTS.getControl() );
+ codecControls.put( PERSISTENT_SEARCH.getOid(), PERSISTENT_SEARCH.getControl() );
+ codecControls.put( SUBENTRIES.getOid(), SUBENTRIES.getControl() );
+ codecControls.put( SYNC_DONE_VALUE.getOid(), SYNC_DONE_VALUE.getControl() );
+ codecControls.put( SYNC_INFO_VALUE_NEW_COOKIE.getOid(), SYNC_INFO_VALUE_NEW_COOKIE.getControl() );
+ codecControls.put( SYNC_INFO_VALUE_REFRESH_DELETE.getOid(), SYNC_INFO_VALUE_REFRESH_DELETE.getControl() );
+ codecControls.put( SYNC_INFO_VALUE_REFRESH_PRESENT.getOid(), SYNC_INFO_VALUE_REFRESH_PRESENT.getControl() );
+ codecControls.put( SYNC_INFO_VALUE_SYNC_ID_SET.getOid(), SYNC_INFO_VALUE_SYNC_ID_SET.getControl() );
+ codecControls.put( SYNC_REQUEST_VALUE.getOid(), SYNC_REQUEST_VALUE.getControl() );
+ codecControls.put( SYNC_STATE_VALUE.getOid(), SYNC_STATE_VALUE.getControl() );
+ }
+
+
+ /**
+ * Create a new instance of the control identified by its oid
+ * @param oid The Control's oid
+ */
+ private ControlEnum( Control control )
+ {
+ this.control = control;
+ this.oid = control.getOid();
+ }
+
+
+ /**
+ * @return The associated control instance
+ */
+ public Control getControl()
+ {
+ return control;
+ }
+
+
+ /**
+ * @return The associated control instance
+ */
+ public static Control getControl( String oid )
+ {
+ return codecControls.get( oid );
+ }
+
+
+ /**
+ * @return The control's OID
+ */
+ public String getOid()
+ {
+ return oid;
+ }
+}
Modified: directory/shared/branches/shared-codec-merge/ldap/src/main/java/org/apache/directory/shared/ldap/message/internal/InternalAbstractMessage.java
URL: http://svn.apache.org/viewvc/directory/shared/branches/shared-codec-merge/ldap/src/main/java/org/apache/directory/shared/ldap/message/internal/InternalAbstractMessage.java?rev=983534&r1=983533&r2=983534&view=diff
==============================================================================
--- directory/shared/branches/shared-codec-merge/ldap/src/main/java/org/apache/directory/shared/ldap/message/internal/InternalAbstractMessage.java (original)
+++ directory/shared/branches/shared-codec-merge/ldap/src/main/java/org/apache/directory/shared/ldap/message/internal/InternalAbstractMessage.java Mon Aug 9 06:41:54 2010
@@ -19,6 +19,7 @@
*/
package org.apache.directory.shared.ldap.message.internal;
+
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
@@ -30,7 +31,6 @@ import org.apache.directory.shared.ldap.
import org.apache.directory.shared.ldap.message.control.Control;
-
/**
* Abstract message base class.
*
@@ -52,6 +52,9 @@ public abstract class InternalAbstractMe
/** Transient Message Parameter Hash */
private final Map<Object, Object> parameters;
+ /** The current control */
+ private Control currentControl;
+
/**
* Completes the instantiation of a Message.
@@ -95,7 +98,18 @@ public abstract class InternalAbstractMe
return Collections.unmodifiableMap( controls );
}
-
+
+ /**
+ * Get the current Control Object
+ *
+ * @return The current Control Object
+ */
+ public Control getCurrentControl()
+ {
+ return currentControl;
+ }
+
+
/**
* @see org.apache.directory.shared.ldap.message.internal.InternalMessage#hasControl(java.lang.String)
*/
@@ -103,7 +117,7 @@ public abstract class InternalAbstractMe
{
return controls.containsKey( oid );
}
-
+
/**
* Adds a control to this Message.
@@ -117,6 +131,7 @@ public abstract class InternalAbstractMe
public void add( Control control ) throws MessageException
{
controls.put( control.getOid(), control );
+ currentControl = control;
}
@@ -219,14 +234,14 @@ public abstract class InternalAbstractMe
}
Map<String, Control> controls = msg.getControls();
-
+
if ( controls.size() != this.controls.size() )
{
return false;
}
Iterator<String> list = this.controls.keySet().iterator();
-
+
while ( list.hasNext() )
{
if ( !controls.containsKey( list.next() ) )
@@ -237,7 +252,8 @@ public abstract class InternalAbstractMe
return true;
}
-
+
+
/**
* @see Object#hashCode()
* @return the instance's hash code
@@ -245,11 +261,11 @@ public abstract class InternalAbstractMe
public int hashCode()
{
int hash = 37;
- hash = hash*17 + id;
- hash = hash*17 + ( type == null ? 0 : type.hashCode() );
- hash = hash*17 + ( parameters == null ? 0 : parameters.hashCode() );
- hash = hash*17 + ( controls == null ? 0 : controls.hashCode() );
-
+ hash = hash * 17 + id;
+ hash = hash * 17 + ( type == null ? 0 : type.hashCode() );
+ hash = hash * 17 + ( parameters == null ? 0 : parameters.hashCode() );
+ hash = hash * 17 + ( controls == null ? 0 : controls.hashCode() );
+
return hash;
}
Modified: directory/shared/branches/shared-codec-merge/ldap/src/main/java/org/apache/directory/shared/ldap/message/internal/InternalMessage.java
URL: http://svn.apache.org/viewvc/directory/shared/branches/shared-codec-merge/ldap/src/main/java/org/apache/directory/shared/ldap/message/internal/InternalMessage.java?rev=983534&r1=983533&r2=983534&view=diff
==============================================================================
--- directory/shared/branches/shared-codec-merge/ldap/src/main/java/org/apache/directory/shared/ldap/message/internal/InternalMessage.java (original)
+++ directory/shared/branches/shared-codec-merge/ldap/src/main/java/org/apache/directory/shared/ldap/message/internal/InternalMessage.java Mon Aug 9 06:41:54 2010
@@ -53,7 +53,15 @@ public interface InternalMessage
*/
Map<String, Control> getControls();
-
+
+ /**
+ * Get the current Control Object
+ *
+ * @return The current Control Object
+ */
+ Control getCurrentControl();
+
+
/**
* Checks whether or not this message has the specified control.
*
@@ -61,7 +69,7 @@ public interface InternalMessage
* @return true if this message has the control, false if it does not
*/
boolean hasControl( String oid );
-
+
/**
* Adds a control to this Message.