You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by gh...@apache.org on 2003/07/01 05:44:17 UTC
cvs commit: cocoon-2.1/src/scratchpad/src/org/apache/cocoon/caching/validity NameValueEvent.java Event.java EventValidity.java NamedEvent.java
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(ghoward@apache.org)
- * @version $CVS$
+ * @author Geoff Howard (ghoward@apache.org)
+ * @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;
+ }
}