ghoward     2003/06/30 20:44:17

  Modified:    src/scratchpad/src/org/apache/cocoon/caching/validity
                        NameValueEvent.java Event.java EventValidity.java
                        NamedEvent.java
  Log:
  Add hashCode for lookup in EventAwareCacheImpl
  
  Revision  Changes    Path
  1.2       +19 -11    
cocoon-2.1/src/scratchpad/src/org/apache/cocoon/caching/validity/NameValueEvent.java
  
  Index: NameValueEvent.java
  ===================================================================
  RCS file: 
/home/cvs/cocoon-2.1/src/scratchpad/src/org/apache/cocoon/caching/validity/NameValueEvent.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- NameValueEvent.java       21 Jun 2003 03:36:14 -0000      1.1
  +++ NameValueEvent.java       1 Jul 2003 03:44:16 -0000       1.2
  @@ -60,27 +60,35 @@
   
       private String m_name;
       private String m_value;
  +    private int m_hashcode;
       
  +    /**
  +     * Constructor requires two Strings - the name/value 
  +     * pair which defines this Event.
  +     * 
  +     * @param name
  +     * @param value
  +     */
        public NameValueEvent(String name, String value) {
           m_name = name;
           m_value = value;
  +        m_hashcode = (name + value).hashCode();
        }
       
  -    private String getName() {
  -        return m_name;
  -    }
  -    
  -    private String getValue() {
  -        return m_value;
  -    }
  -    
  +    /**
  +     * Must return true when both name and value are 
  +     * equivalent Strings.
  +     */
        public boolean equals(Event e) {
                if (e instanceof NameValueEvent) {
               NameValueEvent nve = (NameValueEvent)e;
  -            return ( m_name.equals(nve.getName()) && 
  -                m_value.equals(nve.getValue()) );
  +            return ( m_name.equals(nve.m_name) && 
  +                m_value.equals(nve.m_value) );
                }
                return false;
        }
  -
  +    
  +    public int hashCode() {
  +        return m_hashcode;
  +    }
   }
  
  
  
  1.2       +14 -0     
cocoon-2.1/src/scratchpad/src/org/apache/cocoon/caching/validity/Event.java
  
  Index: Event.java
  ===================================================================
  RCS file: 
/home/cvs/cocoon-2.1/src/scratchpad/src/org/apache/cocoon/caching/validity/Event.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- Event.java        21 Jun 2003 03:36:14 -0000      1.1
  +++ Event.java        1 Jul 2003 03:44:16 -0000       1.2
  @@ -59,7 +59,21 @@
    */
   public abstract class Event {
       
  +    /**
  +     * Used by EventValidity for equals(Object o) which 
  +     * is important for determining whether a received event 
  +     * should uncache a held Pipeline key.
  +     * 
  +     * @param event Another Event to compare.
  +     * @return true if
  +     */
       public abstract boolean equals(Event e);
  +    
  +    /**
  +     * This hash code is the only way the system can locate 
  +     * matching Events when a new event notification is received.
  +     */
  +    public abstract int hashCode();
       
       public boolean equals(Object o) {
           if (o instanceof Event) {
  
  
  
  1.2       +30 -4     
cocoon-2.1/src/scratchpad/src/org/apache/cocoon/caching/validity/EventValidity.java
  
  Index: EventValidity.java
  ===================================================================
  RCS file: 
/home/cvs/cocoon-2.1/src/scratchpad/src/org/apache/cocoon/caching/validity/EventValidity.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- EventValidity.java        21 Jun 2003 03:36:14 -0000      1.1
  +++ EventValidity.java        1 Jul 2003 03:44:16 -0000       1.2
  @@ -55,32 +55,58 @@
    * The SourceValidity object for cache invalidation based on 
    * external events.
    * 
  - * @author Geoff Howard([EMAIL PROTECTED])
  - * @version $CVS$
  + * @author Geoff Howard ([EMAIL PROTECTED])
  + * @version $CVS$ 
    */
   public class EventValidity implements SourceValidity {
       
       private Event m_event;
       
  +    /**
  +     * Constructor requires any subclass of Event.
  +     * @param ev
  +     */
       public EventValidity(Event ev) {
           m_event = ev;
       }
       
  +    /**
  +     * Returns the specific Event this validity is based on.
  +     * 
  +     * @return Event
  +     */
       public Event getEvent() {
           return m_event;
       }
   
  -     /** Basic implementation is always valid until event signals 
  -     *  otherwise.  May never need other behavior.
  +     /** 
  +     * Basic implementation is always valid until event signals 
  +     * otherwise.  May never need other behavior.
         */
        public int isValid() {
                return VALID;
        }
   
  +    /** 
  +     * Older style of isValid
  +     */
        public int isValid(SourceValidity sv) {
                if (sv instanceof EventValidity) {
               return VALID;
                } 
           return INVALID;
        }
  +    
  +    
  +    public boolean equals(Object o) {
  +        if (o instanceof EventValidity) {
  +            return m_event.equals(((EventValidity)o).getEvent());
  +        } 
  +        return false;
  +    }
  +    
  +     public int hashCode() {
  +             return m_event.hashCode();
  +     }
  +
   }
  
  
  
  1.2       +15 -5     
cocoon-2.1/src/scratchpad/src/org/apache/cocoon/caching/validity/NamedEvent.java
  
  Index: NamedEvent.java
  ===================================================================
  RCS file: 
/home/cvs/cocoon-2.1/src/scratchpad/src/org/apache/cocoon/caching/validity/NamedEvent.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- NamedEvent.java   21 Jun 2003 03:36:14 -0000      1.1
  +++ NamedEvent.java   1 Jul 2003 03:44:16 -0000       1.2
  @@ -59,21 +59,31 @@
   public class NamedEvent extends Event {
       
       private String m_name;
  +    private int m_hashcode;
       
  +    /**
  +     * Constructor takes a simple String as event name.
  +     * 
  +     * @param String name
  +     */
       public NamedEvent(String name) {
           m_name = name;
  +        m_hashcode = name.hashCode();
       }
       
  -    private String getName() {
  -        return m_name;
  -    }
  -
  +    /**
  +     * Every NamedEvent where the name string is equal must 
  +     * return true.
  +     */
        public boolean equals(Event e) {
           if (e instanceof NamedEvent) {
  -            return m_name.equals(((NamedEvent)e).getName());
  +            return m_name.equals(((NamedEvent)e).m_name);
           }
                return false;
        }
       
  +    public int hashCode() {
  +        return m_hashcode;
  +    }
       
   }
  
  
  

Reply via email to