You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jetspeed-dev@portals.apache.org by ta...@apache.org on 2001/07/17 18:41:14 UTC

cvs commit: jakarta-jetspeed/src/java/org/apache/jetspeed/om/profile BasePSMLDocument.java BaseProfile.java BaseProfileLocator.java Profile.java ProfileLocator.java

taylor      01/07/17 09:41:14

  Modified:    src/java/org/apache/jetspeed/om/profile
                        BasePSMLDocument.java BaseProfile.java
                        BaseProfileLocator.java Profile.java
                        ProfileLocator.java
  Log:
  - added compare functions provided by Atul Dambalker for profile locators
  
  Revision  Changes    Path
  1.3       +2 -1      jakarta-jetspeed/src/java/org/apache/jetspeed/om/profile/BasePSMLDocument.java
  
  Index: BasePSMLDocument.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jetspeed/src/java/org/apache/jetspeed/om/profile/BasePSMLDocument.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- BasePSMLDocument.java	2001/06/25 10:48:59	1.2
  +++ BasePSMLDocument.java	2001/07/17 16:40:59	1.3
  @@ -64,7 +64,7 @@
    * document.
    *
    * @author <a href="mailto:raphael@apache.org">Rapha�l Luta</a>
  - * @version $Id: BasePSMLDocument.java,v 1.2 2001/06/25 10:48:59 raphael Exp $
  + * @version $Id: BasePSMLDocument.java,v 1.3 2001/07/17 16:40:59 taylor Exp $
    */
   public class BasePSMLDocument implements PSMLDocument
   {
  @@ -96,6 +96,7 @@
        */
       public BasePSMLDocument( String name, Portlets portlets )
       {
  +        this.name = name;
           this.portlets = portlets;
       }
   
  
  
  
  1.8       +23 -21    jakarta-jetspeed/src/java/org/apache/jetspeed/om/profile/BaseProfile.java
  
  Index: BaseProfile.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jetspeed/src/java/org/apache/jetspeed/om/profile/BaseProfile.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- BaseProfile.java	2001/07/09 07:37:12	1.7
  +++ BaseProfile.java	2001/07/17 16:41:01	1.8
  @@ -64,32 +64,24 @@
   Provides base functionality within a Registry.
   
   @author <a href="mailto:taylor@apache.org">David Sean Taylor</a>
  -@version $Id: BaseProfile.java,v 1.7 2001/07/09 07:37:12 taylor Exp $
  +@version $Id: BaseProfile.java,v 1.8 2001/07/17 16:41:01 taylor Exp $
   */
   
   public class BaseProfile  extends BaseProfileLocator implements Profile
   {
   
  -    private String url;
  +    private PSMLDocument document = null;
   
  -    private PSMLDocument doc = null;
  -
       public BaseProfile()
       {}
  -
  -    /**
  -      * Gets the URL for this profile, a path and resource name
  -      * @deprecated
  -       @return The URL of the profile
  -     */
  -    public String getURL()
  -    {
  -        return this.url;
  -    }
   
  -    public void setURL(String url)
  +   /** 
  +     * @see Object#clone
  +     * @return an instance copy of this object
  +     */    
  +    public Object clone() throws java.lang.CloneNotSupportedException
       {
  -        this.url = url;
  +        return super.clone();
       }
   
       /**
  @@ -111,13 +103,23 @@
       {
           synchronized (this)
           {
  -            if ((this.doc == null) || (this.doc.getPortlets() == null))
  +            if ((this.document == null) || (this.document.getPortlets() == null))
               {
  -                this.doc = PsmlManager.getDocument(getURL());
  +                this.document = PsmlManager.getDocument(this);
               }
           }
           
  -        return this.doc;
  +        return this.document;
  +    }
  +
  +    /*
  +     * Sets the psml document attached to this profile
  +     *
  +     * @param The PSML document for this profile.
  +     */
  +    public void setDocument(PSMLDocument document)
  +    {
  +        this.document = document;
       }
   
       /**
  @@ -127,9 +129,9 @@
       */
       public void store() throws ProfileException
       {
  -        if (doc!=null)
  +        if (document != null)
           {
  -            PsmlManager.saveDocument(doc);
  +            PsmlManager.saveDocument(document);
           }
       }
   
  
  
  
  1.2       +228 -11   jakarta-jetspeed/src/java/org/apache/jetspeed/om/profile/BaseProfileLocator.java
  
  Index: BaseProfileLocator.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jetspeed/src/java/org/apache/jetspeed/om/profile/BaseProfileLocator.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- BaseProfileLocator.java	2001/07/09 07:37:12	1.1
  +++ BaseProfileLocator.java	2001/07/17 16:41:03	1.2
  @@ -54,7 +54,14 @@
   
   package org.apache.jetspeed.om.profile;
   
  +import org.apache.turbine.util.Log;
  +import org.apache.turbine.om.security.User;
  +import org.apache.turbine.om.security.Role;
  +import org.apache.turbine.om.security.Group;
  +import org.apache.turbine.util.security.UnknownEntityException;
   
  +import org.apache.jetspeed.services.JetspeedSecurity;
  +
   /**
    * Interface definition for a Profile Locator.
    * Locators are used by the profiler to describe the parameters used to locate
  @@ -62,19 +69,30 @@
    *
    *
    * @author <a href="mailto:taylor@apache.org">David Sean Taylor</a>
  - * @version $Id: BaseProfileLocator.java,v 1.1 2001/07/09 07:37:12 taylor Exp $
  + * @author <a href="mailto:adambalk@cisco.com">Atul Dambalkar</a>
  + * @version $Id: BaseProfileLocator.java,v 1.2 2001/07/17 16:41:03 taylor Exp $
   */
   
  -public class BaseProfileLocator implements ProfileLocator
  +public class BaseProfileLocator implements ProfileLocator, Cloneable
   {
       // instance state
       private String name;
       private String mediaType;
       private String language;
       private String country;
  -    private String user;
  -    private String role;
  -    private String group;
  +    private User   user = null;
  +    private Role   role = null;
  +    private Group  group = null;
  +    private boolean anonymous = false;
  +
  +   /** 
  +     * @see Object#clone
  +     * @return an instance copy of this object
  +     */    
  +    public Object clone() throws java.lang.CloneNotSupportedException
  +    {
  +        return super.clone();
  +    }
   
       /*
        * Gets the resource name parameter for this profile.
  @@ -97,6 +115,38 @@
       }
   
       /*
  +     * Gets the anonymous user flag for this profile.
  +     *
  +     * @param The user parameter for this profile.
  +     */
  +    public boolean getAnonymous()
  +    {
  +        return this.anonymous;
  +    }
  +
  +
  +    /*
  +     * Sets the user parameter as the anonymous user
  +     *
  +     * @param anonymous True indicates this is an anonymous user.
  +     */
  +    public void setAnonymous(boolean anonymous)
  +    {
  +        try
  +        {
  +             this.setUser( JetspeedSecurity.getAnonymousUser() );
  +        }
  +        catch (UnknownEntityException e)
  +        {
  +            Log.error("Could not get Anonymous user");
  +        }
  +        finally
  +        {
  +            this.anonymous = anonymous;
  +        }
  +    }
  +
  +    /*
        * Gets the media type parameter for this profile.
        * Media types are values such as html, wml, xml ...
        *
  @@ -171,7 +221,7 @@
        *
        * @return The user parameter for this profile.
        */
  -    public String getUser()
  +    public User getUser()
       {
           return user;
       }
  @@ -181,7 +231,7 @@
        *
        * @param The user parameter for this profile.
        */
  -    public void setUser(String user)
  +    public void setUser(User user)
       {
           this.user = user;
       }
  @@ -191,7 +241,7 @@
        *
        * @return The role parameter for this profile.
        */
  -    public String getRole()
  +    public Role getRole()
       {
           return role;
       }
  @@ -201,7 +251,7 @@
        *
        * @param The role parameter for this profile.
        */
  -    public void setRole( String role )
  +    public void setRole( Role role )
       {
           this.role = role;
       }
  @@ -211,7 +261,7 @@
        *
        * @return The group parameter for this profile.
        */
  -    public String getGroup()
  +    public Group getGroup()
       {
           return group;
       }
  @@ -221,9 +271,176 @@
        *
        * @param The group parameter for this profile.
        */
  -    public void setGroup( String group )
  +    public void setGroup( Group group )
       {
           this.group = group;
       }
   
  +
  +    /*
  +     * Comparision Functions. Contributed by Atul Dambalkar
  +     */
  +
  +   /**
  +     * Define equality criteria for ProfileLocator objects.
  +     * @param obj ProfileLocator object to be compared with.
  +     */
  +    public boolean equals(Object obj)
  +    {
  +        synchronized (obj)
  +        {
  +            if ( ! ( obj instanceof ProfileLocator ) )
  +            {
  +                return false;
  +            }
  +
  +            ProfileLocator locator = (ProfileLocator)obj;
  +
  +            String name = locator.getName();
  +            String mediaType = locator.getMediaType();
  +            String language = locator.getLanguage();
  +            String country = locator.getCountry();
  +            Group group = locator.getGroup();
  +            Role role = locator.getRole();
  +
  +            return nameEquals(name)
  +                   && mediaTypeEquals(mediaType)
  +                   && languageEquals(language)
  +                   && countryEquals(country)
  +                   && userEquals(locator)
  +                   && groupEquals(group)
  +                   && roleEquals(role);
  +        }
  +    }
  +
  +    /**
  +     * Check equality for given User object with this ProfileLocator's User 
  +     * object.
  +     */
  +    private boolean userEquals(ProfileLocator locator)
  +    {
  +        User user = locator.getUser();
  +        // if either of reference is null return false.
  +        if (exclusiveOr(this.user, user)) 
  +        {
  +            return false;
  +        }
  +        // check if both are non-nulls
  +        if (assert(this.user) && assert(user))
  +        {
  +            return stringEquals(this.user.getUserName(), user.getUserName());
  +        }
  +        // can be anonymous user
  +        return this.anonymous == locator.getAnonymous();
  +    }
  +
  +    /**
  +     * Check equality for given Group object with this ProfileLocator's Group 
  +     * object.
  +     */
  +    private boolean groupEquals(Group group)
  +    {
  +        // if either of reference is null return false.
  +        if (exclusiveOr(this.group, group)) 
  +        {
  +            return false;
  +        }
  +        // check if both are non-nulls
  +        if (assert(this.group) && assert(group))
  +        {
  +            return stringEquals( this.group.getName(), group.getName());
  +        }
  +        // both are null
  +        return true;
  +    }
  +
  +    /**
  +     * Check equality for given Role object with this ProfileLocator's Role 
  +     * object.
  +     */
  +    private boolean roleEquals(Role role)
  +    {
  +        // if either of reference is null return false.
  +        if (exclusiveOr(this.role, role)) 
  +        {
  +            return false;
  +        }
  +        // check if both are non-nulls
  +        if (assert(this.role) && assert(role))
  +        {
  +            return stringEquals(this.role.getName(), role.getName());
  +        }
  +        // both are null
  +        return true;
  +    }
  +
  +    /**
  +     * Check equality for language object with this ProfileLocator's language
  +     * object.
  +     */
  +    private boolean languageEquals(String language)
  +    {
  +        return stringEquals(this.language, language);
  +    }
  +
  +    /**
  +     * Check equality for country object with this ProfileLocator's country
  +     * object.
  +     */
  +    private boolean countryEquals(String country)
  +    {
  +        return stringEquals(this.country, country);
  +    }
  +
  +    /**
  +     * Check equality for name object with this ProfileLocator's name
  +     * object.
  +     */
  +    private boolean nameEquals(String name)
  +    {
  +        return stringEquals(this.name, name);
  +    }
  +
  +    /**
  +     * Check equality for name object with this ProfileLocator's name
  +     * object.
  +     */
  +    private boolean mediaTypeEquals(String mediaType)
  +    {
  +        return stringEquals(this.mediaType, mediaType);
  +    }
  +
  +    /**
  +     * Assert the two String objects and then check the equality.
  +     */
  +    private boolean stringEquals(String str1, String str2)
  +    {
  +        if (exclusiveOr(str1, str2)) 
  +        {
  +            return false;
  +        }
  +        if (assert(str1) && assert(str2))
  +        {
  +            return str1.equals(str2);
  +        }
  +        // both are null
  +        return true;
  +    }
  +
  +    /**
  +     * Assert the given object.
  +     */
  +    private boolean assert(Object object)
  +    {
  +        return object != null;
  +    }
  +
  +    /**
  +     * Exclusive or the two objects fro their references null-ability.
  +     */
  +    private boolean exclusiveOr(Object obj1, Object obj2)
  +    {
  +        return (assert(obj1) && !assert(obj2))
  +                || (!assert(obj1) && assert(obj2));
  +    }
   }
  
  
  
  1.7       +10 -6     jakarta-jetspeed/src/java/org/apache/jetspeed/om/profile/Profile.java
  
  Index: Profile.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jetspeed/src/java/org/apache/jetspeed/om/profile/Profile.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- Profile.java	2001/07/09 07:37:12	1.6
  +++ Profile.java	2001/07/17 16:41:04	1.7
  @@ -62,7 +62,7 @@
   Represents a profile, the interface to a PSML resource.
   
   @author <a href="mailto:david@bluesunrise.com">David Sean Taylor</a>
  -@version $Id: Profile.java,v 1.6 2001/07/09 07:37:12 taylor Exp $
  +@version $Id: Profile.java,v 1.7 2001/07/17 16:41:04 taylor Exp $
   */
   
   public interface Profile extends ProfileLocator
  @@ -83,13 +83,11 @@
       public PSMLDocument getDocument();
   
       /*
  -     * Gets the URL for this profile, a fully qualified local path and resource name
  +     * Sets the psml document attached to this profile
        *
  -     * @deprecated Will be removed with refactoring of profiler service.
  -     * @return The URL of the profile
  +     * @param The PSML document for this profile.
        */
  -    public String getURL();
  -    public void setURL(String url);
  +    public void setDocument(PSMLDocument document);
   
       /*
        * stores the resource by merging and rewriting the psml file
  @@ -97,5 +95,11 @@
        * @throws ProfileException if an error occurs storing the profile
        */
       public void store() throws ProfileException;
  +
  +   /** 
  +     * @see Object#clone
  +     * @return an instance copy of this object
  +     */    
  +    Object clone() throws java.lang.CloneNotSupportedException;
   
   }
  
  
  
  1.2       +37 -14    jakarta-jetspeed/src/java/org/apache/jetspeed/om/profile/ProfileLocator.java
  
  Index: ProfileLocator.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jetspeed/src/java/org/apache/jetspeed/om/profile/ProfileLocator.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ProfileLocator.java	2001/07/09 07:37:13	1.1
  +++ ProfileLocator.java	2001/07/17 16:41:06	1.2
  @@ -54,6 +54,9 @@
   
   package org.apache.jetspeed.om.profile;
   
  +import org.apache.turbine.om.security.User;
  +import org.apache.turbine.om.security.Role;
  +import org.apache.turbine.om.security.Group;
   
   /**
    * Interface definition for a Profile Locator.
  @@ -62,7 +65,7 @@
    *
    *
    * @author <a href="mailto:taylor@apache.org">David Sean Taylor</a>
  - * @version $Id: ProfileLocator.java,v 1.1 2001/07/09 07:37:13 taylor Exp $
  + * @version $Id: ProfileLocator.java,v 1.2 2001/07/17 16:41:06 taylor Exp $
   */
   
   public interface ProfileLocator
  @@ -77,7 +80,7 @@
       /*
        * Sets the resource name parameter for this profile.
        *
  -     * @param The resource name parameter for this profile.
  +     * @param name The resource name parameter for this profile.
        */
       void setName(String name);
   
  @@ -93,7 +96,7 @@
        * Sets the media type parameter for this profile.
        * Media types are values such as html, wml, xml ...
        *
  -     * @param The media type parameter for this profile.
  +     * @param mediaType The media type parameter for this profile.
        */
       void setMediaType(String mediaType);
   
  @@ -111,7 +114,7 @@
        * Language values are ISO-639 standard language abbreviations
        * en, fr, de, ...
        *
  -     * @param The language parameter for this profile.
  +     * @param language The language parameter for this profile.
        */
       void setLanguage(String language);
   
  @@ -129,7 +132,7 @@
        * Country code values are ISO-3166 standard country code abbreviations.
        * GB, US, FR, CA, DE, ...
        *
  -     * @param The country code parameter for this profile.
  +     * @param country The country code parameter for this profile.
        */
       void setCountry(String country);
   
  @@ -138,41 +141,61 @@
        *
        * @return The user parameter for this profile.
        */
  -    String getUser();
  +    User getUser();
   
       /*
        * Sets the user parameter for this profile.
        *
  -     * @param The user parameter for this profile.
  +     * @param user The user parameter for this profile.
        */
  -    void setUser(String user);
  +    void setUser(User user);
   
       /*
  +     * Gets the anonymous user flag for this profile.
  +     *
  +     * @return True if this profile is anonymous.
  +     */
  +    boolean getAnonymous();
  +
  +    /*
  +     * Sets the user parameter as the anonymous user
  +     *
  +     * @param anonymous True indicates this is an anonymous user.
  +     */
  +    void setAnonymous(boolean anonymous);
  +
  +    /*
        * Gets the role parameter for this profile.
        *
        * @return The role parameter for this profile.
        */
  -    String getRole();
  +    Role getRole();
   
       /*
        * Sets the role parameter for this profile.
        *
  -     * @param The role parameter for this profile.
  +     * @param role The role parameter for this profile.
        */
  -    void setRole( String role );
  +    void setRole( Role role );
   
       /*
        * Gets the group parameter for this profile.
        *
        * @return The group parameter for this profile.
        */
  -    String getGroup();
  +    Group getGroup();
   
       /*
        * Sets the group parameter for this profile.
        *
  -     * @param The group parameter for this profile.
  +     * @param group The group parameter for this profile.
        */
  -    void setGroup( String group );
  +    void setGroup( Group group );
  +
  +   /** 
  +     * @see Object#clone
  +     * @return an instance copy of this object
  +     */    
  +    Object clone() throws java.lang.CloneNotSupportedException;
   
   }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jetspeed-dev-help@jakarta.apache.org