You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@directory.apache.org by Ersin Er <er...@gmail.com> on 2006/09/03 20:25:53 UTC

Re: svn commit: r439770 - /directory/sandbox/akarasulu/apacheds-2.0/shared/ldap/src/main/java/org/apache/directory/shared/ldap/name/LdapDN.java

I prefer interfaces to classes to "compilation purposes". ;-)

On 9/3/06, elecharny@apache.org <el...@apache.org> wrote:
> Author: elecharny
> Date: Sun Sep  3 05:46:30 2006
> New Revision: 439770
>
> URL: http://svn.apache.org/viewvc?rev=439770&view=rev
> Log:
> Added a skeleton of LdapDN message. This is for compilation purpose.
>
> Added:
>     directory/sandbox/akarasulu/apacheds-2.0/shared/ldap/src/main/java/org/apache/directory/shared/ldap/name/LdapDN.java
>
> Added: directory/sandbox/akarasulu/apacheds-2.0/shared/ldap/src/main/java/org/apache/directory/shared/ldap/name/LdapDN.java
> URL: http://svn.apache.org/viewvc/directory/sandbox/akarasulu/apacheds-2.0/shared/ldap/src/main/java/org/apache/directory/shared/ldap/name/LdapDN.java?rev=439770&view=auto
> ==============================================================================
> --- directory/sandbox/akarasulu/apacheds-2.0/shared/ldap/src/main/java/org/apache/directory/shared/ldap/name/LdapDN.java (added)
> +++ directory/sandbox/akarasulu/apacheds-2.0/shared/ldap/src/main/java/org/apache/directory/shared/ldap/name/LdapDN.java Sun Sep  3 05:46:30 2006
> @@ -0,0 +1,295 @@
> +
> +package org.apache.directory.shared.ldap.name;
> +
> +import java.util.Enumeration;
> +
> +import javax.naming.InvalidNameException;
> +import javax.naming.Name;
> +
> +import org.slf4j.Logger;
> +import org.slf4j.LoggerFactory;
> +
> +public class LdapDN implements Name
> +{
> +    /**
> +     * Declares the Serial Version Uid.
> +     *
> +     * @see <a
> +     *      href="http://c2.com/cgi/wiki?AlwaysDeclareSerialVersionUid">Always
> +     *      Declare Serial Version Uid</a>
> +     */
> +    private static final long serialVersionUID = 2L;
> +
> +    /** The LoggerFactory used by this class */
> +    private static Logger log = LoggerFactory.getLogger( LdapDN.class );
> +
> +    /**
> +     * Determines whether this name is empty. An empty name is one with zero
> +     * components.
> +     *
> +     * @return true if this name is empty, false otherwise
> +     */
> +    public boolean isEmpty()
> +    {
> +        return true;
> +    }
> +
> +    /**
> +     * Determines whether this name starts with a specified prefix. A name
> +     * <tt>name</tt> is a prefix if it is equal to
> +     * <tt>getPrefix(name.size())</tt>.
> +     *
> +     * Be aware that for a specific DN like :
> +     * cn=xxx, ou=yyy
> +     * the startsWith method will return true with ou=yyy, and
> +     * false with cn=xxx
> +     *
> +     * @param name the name to check
> +     * @return true if <tt>name</tt> is a prefix of this name, false otherwise
> +     */
> +    public boolean startsWith( Name name )
> +    {
> +        return true;
> +    }
> +
> +    /**
> +     * Determines whether this name ends with a specified suffix. A name
> +     * <tt>name</tt> is a suffix if it is equal to
> +     * <tt>getSuffix(size()-name.size())</tt>.
> +     *
> +     * Be aware that for a specific
> +     * DN like : cn=xxx, ou=yyy the endsWith method will return true with
> +     * cn=xxx, and false with ou=yyy
> +     *
> +     * @param name
> +     *            the name to check
> +     * @return true if <tt>name</tt> is a suffix of this name, false otherwise
> +     */
> +    public boolean endsWith( Name name )
> +    {
> +        return true;
> +    }
> +
> +    /**
> +     * Adds a single component to the end of this name.
> +     *
> +     * @param comp
> +     *            the component to add
> +     * @return the updated name (not a new one)
> +     * @throws InvalidNameException
> +     *             if adding <tt>comp</tt> would violate the syntax rules of
> +     *             this name
> +     */
> +    public Name add( String comp ) throws InvalidNameException
> +    {
> +        return this;
> +    }
> +
> +    /**
> +     * Adds a single component at a specified position within this name.
> +     * Components of this name at or after the index of the new component are
> +     * shifted up by one (away from index 0) to accommodate the new component.
> +     *
> +     * @param comp
> +     *            the component to add
> +     * @param posn
> +     *            the index at which to add the new component. Must be in the
> +     *            range [0,size()].
> +     * @return the updated name (not a new one)
> +     * @throws ArrayIndexOutOfBoundsException
> +     *             if posn is outside the specified range
> +     * @throws InvalidNameException
> +     *             if adding <tt>comp</tt> would violate the syntax rules of
> +     *             this name
> +     */
> +    public Name add( int posn, String comp ) throws InvalidNameException
> +    {
> +        return this;
> +    }
> +
> +    /**
> +     * Adds the components of a name -- in order -- to the end of this name.
> +     *
> +     * @param suffix
> +     *            the components to add
> +     * @return the updated name (not a new one)
> +     * @throws InvalidNameException
> +     *             if <tt>suffix</tt> is not a valid name, or if the addition
> +     *             of the components would violate the syntax rules of this name
> +     */
> +    public Name addAll( Name suffix ) throws InvalidNameException
> +    {
> +        return this;
> +    }
> +
> +    /**
> +     * Adds the components of a name -- in order -- at a specified position
> +     * within this name. Components of this name at or after the index of the
> +     * first new component are shifted up (away from 0) to accommodate the new
> +     * components.
> +     *
> +     * @param name
> +     *            the components to add
> +     * @param posn
> +     *            the index in this name at which to add the new components.
> +     *            Must be in the range [0,size()].
> +     * @return the updated name (not a new one)
> +     * @throws ArrayIndexOutOfBoundsException
> +     *             if posn is outside the specified range
> +     * @throws InvalidNameException
> +     *             if <tt>n</tt> is not a valid name, or if the addition of
> +     *             the components would violate the syntax rules of this name
> +     */
> +    public Name addAll( int posn, Name name ) throws InvalidNameException
> +    {
> +        return this;
> +    }
> +
> +    /**
> +     * Retrieves the components of this name as an enumeration of strings. The
> +     * effect on the enumeration of updates to this name is undefined. If the
> +     * name has zero components, an empty (non-null) enumeration is returned.
> +     *
> +     * @return an enumeration of the components of this name, each as string
> +     */
> +    public Enumeration<String> getAll()
> +    {
> +        /*
> +         * Note that by accessing the name component using the get() method on
> +         * the name rather than get() on the list we are reading components from
> +         * right to left with increasing index values. LdapName.get() does the
> +         * index translation on m_list for us.
> +         */
> +        return new Enumeration<String>()
> +        {
> +            public boolean hasMoreElements()
> +            {
> +                return true;
> +            }
> +
> +
> +            public String nextElement()
> +            {
> +                return "";
> +            }
> +        };
> +    }
> +
> +    /**
> +     * Retrieves a component of this name.
> +     *
> +     * @param posn
> +     *            the 0-based index of the component to retrieve. Must be in the
> +     *            range [0,size()).
> +     * @return the component at index posn
> +     * @throws ArrayIndexOutOfBoundsException
> +     *             if posn is outside the specified range
> +     */
> +    public String get( int posn )
> +    {
> +        return "";
> +    }
> +
> +    /**
> +     * Removes a component from this name. The component of this name at the
> +     * specified position is removed. Components with indexes greater than this
> +     * position are shifted down (toward index 0) by one.
> +     *
> +     * @param posn
> +     *            the index of the component to remove. Must be in the range
> +     *            [0,size()).
> +     * @return the component removed (a String)
> +     * @throws ArrayIndexOutOfBoundsException
> +     *             if posn is outside the specified range
> +     * @throws InvalidNameException
> +     *             if deleting the component would violate the syntax rules of
> +     *             the name
> +     */
> +    public Object remove( int posn ) throws InvalidNameException
> +    {
> +        return this;
> +    }
> +
> +    /**
> +     * Creates a name whose components consist of a prefix of the components of
> +     * this name. Subsequent changes to this name will not affect the name that
> +     * is returned and vice versa.
> +     *
> +     * @param posn the 0-based index of the component at which to stop. Must be
> +     *            in the range [0,size()].
> +     * @return a name consisting of the components at indexes in the range
> +     *         [0,posn].
> +     * @throws ArrayIndexOutOfBoundsException if posn is outside the specified range
> +     */
> +    public Name getPrefix( int posn )
> +    {
> +        return this;
> +    }
> +
> +    /**
> +     * Creates a name whose components consist of a suffix of the components in
> +     * this name. Subsequent changes to this name do not affect the name that is
> +     * returned and vice versa.
> +     *
> +     * @param posn
> +     *            the 0-based index of the component at which to start. Must be
> +     *            in the range [0,size()].
> +     * @return a name consisting of the components at indexes in the range
> +     *         [posn,size()]. If posn is equal to size(), an empty name is
> +     *         returned.
> +     * @throws ArrayIndexOutOfBoundsException
> +     *             if posn is outside the specified range
> +     */
> +    public Name getSuffix( int posn )
> +    {
> +        return this;
> +    }
> +
> +    /**
> +     * Get the number of NameComponent contained in this LdapDN
> +     *
> +     * @return The number of NameComponent contained in this LdapDN
> +     */
> +    public int size()
> +    {
> +        return 0;
> +    }
> +
> +    /**
> +     * Generates a new copy of this name. Subsequent changes to the components
> +     * of this name will not affect the new copy, and vice versa.
> +     *
> +     * @return a copy of this name
> +     * @see Object#clone()
> +     */
> +    public Object clone()
> +    {
> +        return this;
> +    }
> +
> +    /**
> +     * Compares this name with another name for order. Returns a negative
> +     * integer, zero, or a positive integer as this name is less than, equal to,
> +     * or greater than the given name.
> +     * <p>
> +     * As with <tt>Object.equals()</tt>, the notion of ordering for names
> +     * depends on the class that implements this interface. For example, the
> +     * ordering may be based on lexicographical ordering of the name components.
> +     * Specific attributes of the name, such as how it treats case, may affect
> +     * the ordering. In general, two names of different classes may not be
> +     * compared.
> +     *
> +     * @param obj
> +     *            the non-null object to compare against.
> +     * @return a negative integer, zero, or a positive integer as this name is
> +     *         less than, equal to, or greater than the given name
> +     * @throws ClassCastException
> +     *             if obj is not a <tt>Name</tt> of a type that may be
> +     *             compared with this name
> +     * @see Comparable#compareTo(Object)
> +     */
> +    public int compareTo( Object obj )
> +    {
> +        return 0;
> +    }
> +}
>
>
>


-- 
Ersin

Re: svn commit: r439770 - /directory/sandbox/akarasulu/apacheds-2.0/shared/ldap/src/main/java/org/apache/directory/shared/ldap/name/LdapDN.java

Posted by Ersin Er <er...@gmail.com>.
Yes, I understood you intent. But I think LdapDN can also be an
interface extending Name. So we can clearly see what it adds to Name.

On 9/3/06, Emmanuel Lecharny <el...@gmail.com> wrote:
> Ersin Er a écrit :
>
> > Sorry, let me correct my sentence:
> >
> > I prefer interfaces to classes for "compilation purposes". ;-)
>
> Yes, me two. But my svn message wasn't very clear :) Whay I tried to
> mean was : "Added a skeleton to avoid compilation errors" ...
>
> However, in this very case, LdapDN is really a class, but it implements
> javax.naming.name interface, so I think this is OK for LdapDN to be a class.
>
> >
> > On 9/3/06, Ersin Er <er...@gmail.com> wrote:
> >
> >> I prefer interfaces to classes to "compilation purposes". ;-)
> >>
> >> On 9/3/06, elecharny@apache.org <el...@apache.org> wrote:
> >> > Author: elecharny
> >> > Date: Sun Sep  3 05:46:30 2006
> >> > New Revision: 439770
> >> >
> >> > URL: http://svn.apache.org/viewvc?rev=439770&view=rev
> >> > Log:
> >> > Added a skeleton of LdapDN message. This is for compilation purpose.
> >> >
> >> > Added:
> >> >
> >> directory/sandbox/akarasulu/apacheds-2.0/shared/ldap/src/main/java/org/apache/directory/shared/ldap/name/LdapDN.java
> >>
> >
> >
>
>


-- 
Ersin

Re: svn commit: r439770 - /directory/sandbox/akarasulu/apacheds-2.0/shared/ldap/src/main/java/org/apache/directory/shared/ldap/name/LdapDN.java

Posted by Emmanuel Lecharny <el...@gmail.com>.
Ersin Er a écrit :

> Sorry, let me correct my sentence:
>
> I prefer interfaces to classes for "compilation purposes". ;-)

Yes, me two. But my svn message wasn't very clear :) Whay I tried to 
mean was : "Added a skeleton to avoid compilation errors" ...

However, in this very case, LdapDN is really a class, but it implements 
javax.naming.name interface, so I think this is OK for LdapDN to be a class.

>
> On 9/3/06, Ersin Er <er...@gmail.com> wrote:
>
>> I prefer interfaces to classes to "compilation purposes". ;-)
>>
>> On 9/3/06, elecharny@apache.org <el...@apache.org> wrote:
>> > Author: elecharny
>> > Date: Sun Sep  3 05:46:30 2006
>> > New Revision: 439770
>> >
>> > URL: http://svn.apache.org/viewvc?rev=439770&view=rev
>> > Log:
>> > Added a skeleton of LdapDN message. This is for compilation purpose.
>> >
>> > Added:
>> >     
>> directory/sandbox/akarasulu/apacheds-2.0/shared/ldap/src/main/java/org/apache/directory/shared/ldap/name/LdapDN.java 
>>
>
>


Re: svn commit: r439770 - /directory/sandbox/akarasulu/apacheds-2.0/shared/ldap/src/main/java/org/apache/directory/shared/ldap/name/LdapDN.java

Posted by Ersin Er <er...@gmail.com>.
Sorry, let me correct my sentence:

I prefer interfaces to classes for "compilation purposes". ;-)

On 9/3/06, Ersin Er <er...@gmail.com> wrote:
> I prefer interfaces to classes to "compilation purposes". ;-)
>
> On 9/3/06, elecharny@apache.org <el...@apache.org> wrote:
> > Author: elecharny
> > Date: Sun Sep  3 05:46:30 2006
> > New Revision: 439770
> >
> > URL: http://svn.apache.org/viewvc?rev=439770&view=rev
> > Log:
> > Added a skeleton of LdapDN message. This is for compilation purpose.
> >
> > Added:
> >     directory/sandbox/akarasulu/apacheds-2.0/shared/ldap/src/main/java/org/apache/directory/shared/ldap/name/LdapDN.java