Override equals() so that it takes lastModified into account to allow for the updating of images. This is for bug 42385.


git-svn-id: https://svn.apache.org/repos/asf/lenya/trunk@603984 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/modules/svg/java/src/org/apache/lenya/modules/svg/ProtocolHandler.java b/src/modules/svg/java/src/org/apache/lenya/modules/svg/ProtocolHandler.java
index 0de2567..1be1032 100644
--- a/src/modules/svg/java/src/org/apache/lenya/modules/svg/ProtocolHandler.java
+++ b/src/modules/svg/java/src/org/apache/lenya/modules/svg/ProtocolHandler.java
@@ -70,6 +70,7 @@
         private Source source;
         private SourceResolver resolver;
         private String url;
+        private long lastModified;
 
         public ParsedUrlData(String protocol, SourceResolver resolver, String url) {
             this.url = url;
@@ -80,6 +81,7 @@
             this.resolver = resolver;
             try {
                 this.source = resolver.resolveURI(url);
+                this.lastModified = this.source.getLastModified();
                 this.contentType = this.source.getMimeType();
             } catch (Exception e) {
                 throw new RuntimeException(e);
@@ -106,6 +108,30 @@
             return url + source.getLastModified();
         }
 
+        /**
+         * Object.equals 
+         */
+        public boolean equals(Object obj) {
+            if(obj == null) {
+                return false;
+            }
+            if( ! (obj instanceof ParsedUrlData)) {
+                return false;
+            }
+            // super.equals() doesn't take lastModified into account
+            ParsedUrlData pud = (ParsedUrlData)obj;
+            if(pud.url.equals(this.url) && pud.lastModified == this.lastModified ) {
+                return true;
+            }
+            return false;
+        }
+ 
+        /**
+         * Returns hashCode for object
+         */
+        public int hashCode() {
+            return (url + lastModified).hashCode();
+        }
     }
 
     public void start() throws Exception {