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; + } }