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 2007/12/06 09:11:16 UTC
svn commit: r601651 - in
/directory/shared/branches/bigbang/ldap/src/main/java/org/apache/directory/shared/ldap:
ldif/LdifUtils.java name/LdapDN.java util/ImmutableAttributeWrapper.java
util/ImmutableAttributesWrapper.java
Author: akarasulu
Date: Thu Dec 6 00:11:16 2007
New Revision: 601651
URL: http://svn.apache.org/viewvc?rev=601651&view=rev
Log:
changes ...
o fixed problem which hid NPE in LdifUtils
o added a couple wrappers around an Attributes object for immutibility
o made normalize() method return 'this' so I can chain ops
Added:
directory/shared/branches/bigbang/ldap/src/main/java/org/apache/directory/shared/ldap/util/ImmutableAttributeWrapper.java
directory/shared/branches/bigbang/ldap/src/main/java/org/apache/directory/shared/ldap/util/ImmutableAttributesWrapper.java
Modified:
directory/shared/branches/bigbang/ldap/src/main/java/org/apache/directory/shared/ldap/ldif/LdifUtils.java
directory/shared/branches/bigbang/ldap/src/main/java/org/apache/directory/shared/ldap/name/LdapDN.java
Modified: directory/shared/branches/bigbang/ldap/src/main/java/org/apache/directory/shared/ldap/ldif/LdifUtils.java
URL: http://svn.apache.org/viewvc/directory/shared/branches/bigbang/ldap/src/main/java/org/apache/directory/shared/ldap/ldif/LdifUtils.java?rev=601651&r1=601650&r2=601651&view=diff
==============================================================================
--- directory/shared/branches/bigbang/ldap/src/main/java/org/apache/directory/shared/ldap/ldif/LdifUtils.java (original)
+++ directory/shared/branches/bigbang/ldap/src/main/java/org/apache/directory/shared/ldap/ldif/LdifUtils.java Thu Dec 6 00:11:16 2007
@@ -700,7 +700,7 @@
Attributes modifiedEntry ) throws NamingException
{
// First, protect the original entry by cloning it : we will modify it
- Attributes clonedEntry = (Attributes)modifiedEntry.clone();
+ Attributes clonedEntry = ( Attributes ) modifiedEntry.clone();
Entry entry = new Entry();
entry.setChangeType( ChangeType.Modify );
@@ -786,7 +786,8 @@
// Special case if we don't have any reverse modifications
if ( reverseModifications.size() == 0 )
{
- return null;
+ throw new IllegalArgumentException( "Could not deduce reverse modifications from provided modifications: "
+ + forwardModifications );
}
// Now, push the reversed list into the entry
Modified: directory/shared/branches/bigbang/ldap/src/main/java/org/apache/directory/shared/ldap/name/LdapDN.java
URL: http://svn.apache.org/viewvc/directory/shared/branches/bigbang/ldap/src/main/java/org/apache/directory/shared/ldap/name/LdapDN.java?rev=601651&r1=601650&r2=601651&view=diff
==============================================================================
--- directory/shared/branches/bigbang/ldap/src/main/java/org/apache/directory/shared/ldap/name/LdapDN.java (original)
+++ directory/shared/branches/bigbang/ldap/src/main/java/org/apache/directory/shared/ldap/name/LdapDN.java Thu Dec 6 00:11:16 2007
@@ -1606,16 +1606,16 @@
* @throws InvalidNameException If the DN is invalid.
* @throws NamingException If something went wrong.
*/
- public void normalize( Map<String, OidNormalizer> oidsMap ) throws InvalidNameException, NamingException
+ public LdapDN normalize( Map<String, OidNormalizer> oidsMap ) throws InvalidNameException, NamingException
{
if ( ( oidsMap == null ) || ( oidsMap.size() == 0 ) )
{
- return;
+ return this;
}
if ( size() == 0 )
{
- return;
+ return this;
}
Enumeration<Rdn> localRdns = getAllRdn();
@@ -1632,6 +1632,7 @@
normalizeInternal();
normalized = true;
+ return this;
}
Added: directory/shared/branches/bigbang/ldap/src/main/java/org/apache/directory/shared/ldap/util/ImmutableAttributeWrapper.java
URL: http://svn.apache.org/viewvc/directory/shared/branches/bigbang/ldap/src/main/java/org/apache/directory/shared/ldap/util/ImmutableAttributeWrapper.java?rev=601651&view=auto
==============================================================================
--- directory/shared/branches/bigbang/ldap/src/main/java/org/apache/directory/shared/ldap/util/ImmutableAttributeWrapper.java (added)
+++ directory/shared/branches/bigbang/ldap/src/main/java/org/apache/directory/shared/ldap/util/ImmutableAttributeWrapper.java Thu Dec 6 00:11:16 2007
@@ -0,0 +1,140 @@
+/*
+ * 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 javax.naming.directory.Attribute;
+import javax.naming.directory.DirContext;
+import javax.naming.NamingEnumeration;
+import javax.naming.NamingException;
+
+
+/**
+ * A read only wrapper around an Attributes object.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$, $Date$
+ */
+public class ImmutableAttributeWrapper implements Attribute
+{
+ private final Attribute wrapped;
+
+
+ public ImmutableAttributeWrapper( Attribute wrapped )
+ {
+ this.wrapped = wrapped;
+ }
+
+
+ public NamingEnumeration<?> getAll() throws NamingException
+ {
+ return wrapped.getAll();
+ }
+
+
+ public Object get() throws NamingException
+ {
+ return wrapped.get();
+ }
+
+
+ public int size()
+ {
+ return wrapped.size();
+ }
+
+
+ public String getID()
+ {
+ return wrapped.getID();
+ }
+
+
+ public boolean contains( Object attrVal )
+ {
+ return wrapped.contains( attrVal );
+ }
+
+
+ public boolean add( Object attrVal )
+ {
+ throw new UnsupportedOperationException( "Value addition not supported for immutable attribute" );
+ }
+
+
+ public boolean remove( Object attrval )
+ {
+ throw new UnsupportedOperationException( "Value removal not supported for immutable attribute" );
+ }
+
+
+ public void clear()
+ {
+ throw new UnsupportedOperationException( "Clearing all values not supported for immutable attribute" );
+ }
+
+
+ public DirContext getAttributeSyntaxDefinition() throws NamingException
+ {
+ return wrapped.getAttributeSyntaxDefinition();
+ }
+
+
+ public DirContext getAttributeDefinition() throws NamingException
+ {
+ return wrapped.getAttributeDefinition();
+ }
+
+
+ @SuppressWarnings ( { "CloneDoesntCallSuperClone" } )
+ public Object clone()
+ {
+ throw new IllegalStateException( "Now why would you ever want to clone an immutable object?" );
+ }
+
+
+ public boolean isOrdered()
+ {
+ return wrapped.isOrdered();
+ }
+
+
+ public Object get( int ix ) throws NamingException
+ {
+ return wrapped.get( ix );
+ }
+
+
+ public Object remove( int ix )
+ {
+ throw new UnsupportedOperationException( "Value removal not supported for immutable attribute" );
+ }
+
+
+ public void add( int ix, Object attrVal )
+ {
+ throw new UnsupportedOperationException( "Value addition not supported for immutable attribute" );
+ }
+
+
+ public Object set( int ix, Object attrVal )
+ {
+ throw new UnsupportedOperationException( "Value alteration is not supported for immutable attribute" );
+ }
+}
Added: directory/shared/branches/bigbang/ldap/src/main/java/org/apache/directory/shared/ldap/util/ImmutableAttributesWrapper.java
URL: http://svn.apache.org/viewvc/directory/shared/branches/bigbang/ldap/src/main/java/org/apache/directory/shared/ldap/util/ImmutableAttributesWrapper.java?rev=601651&view=auto
==============================================================================
--- directory/shared/branches/bigbang/ldap/src/main/java/org/apache/directory/shared/ldap/util/ImmutableAttributesWrapper.java (added)
+++ directory/shared/branches/bigbang/ldap/src/main/java/org/apache/directory/shared/ldap/util/ImmutableAttributesWrapper.java Thu Dec 6 00:11:16 2007
@@ -0,0 +1,140 @@
+/*
+ * 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 javax.naming.NamingEnumeration;
+import javax.naming.NamingException;
+import javax.naming.directory.Attribute;
+import javax.naming.directory.Attributes;
+
+
+/**
+ * Document me!
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$, $Date$
+ */
+public class ImmutableAttributesWrapper implements Attributes
+{
+ private final Attributes wrapped;
+
+
+ public ImmutableAttributesWrapper( Attributes wrapped )
+ {
+ this.wrapped = wrapped;
+ }
+
+
+ public boolean isCaseIgnored()
+ {
+ return wrapped.isCaseIgnored();
+ }
+
+
+ public int size()
+ {
+ return wrapped.size();
+ }
+
+
+ public Attribute get( String attrID )
+ {
+ return new ImmutableAttributeWrapper( wrapped.get( attrID ) );
+ }
+
+
+ public NamingEnumeration<? extends Attribute> getAll()
+ {
+ return new ImmutableEnumeration( wrapped.getAll() );
+ }
+
+
+ public NamingEnumeration<String> getIDs()
+ {
+ return wrapped.getIDs();
+ }
+
+
+ public Attribute put( String attrID, Object val )
+ {
+ throw new UnsupportedOperationException( "Putting attributes not supported by immutable attributes" );
+ }
+
+
+ public Attribute put( Attribute attr )
+ {
+ throw new UnsupportedOperationException( "Putting attributes not supported by immutable attributes" );
+ }
+
+
+ public Attribute remove( String attrID )
+ {
+ throw new UnsupportedOperationException( "Removing attributes not supported by immutable attributes" );
+ }
+
+
+ @SuppressWarnings ( { "CloneDoesntCallSuperClone" } )
+ public Object clone()
+ {
+ throw new IllegalStateException( "Now why would you want to clone() an immutable object in the first place." );
+ }
+
+
+ class ImmutableEnumeration implements NamingEnumeration
+ {
+ private NamingEnumeration wrappedEnum;
+
+
+ public ImmutableEnumeration( NamingEnumeration<? extends Attribute> all )
+ {
+ wrappedEnum = all;
+ }
+
+
+ public Attribute next() throws NamingException
+ {
+ return new ImmutableAttributeWrapper( ( Attribute ) wrappedEnum.next() );
+ }
+
+
+ public boolean hasMore() throws NamingException
+ {
+ return wrappedEnum.hasMore();
+ }
+
+
+ public void close() throws NamingException
+ {
+ wrappedEnum.close();
+ }
+
+
+ public boolean hasMoreElements()
+ {
+ return wrappedEnum.hasMoreElements();
+ }
+
+
+ public Attribute nextElement()
+ {
+ return new ImmutableAttributeWrapper( ( Attribute ) wrappedEnum.nextElement() );
+ }
+ }
+}