Author: cziegeler
Date: Thu Jul 18 11:05:47 2013
New Revision: 1504428
URL: http://svn.apache.org/r1504428
Log:
SLING-2975 : MapEntry#compareTo method is not consistent and might throw ISE
on Java7
Modified:
sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/mapping/MapEntry.java
Modified:
sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/mapping/MapEntry.java
URL:
http://svn.apache.org/viewvc/sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/mapping/MapEntry.java?rev=1504428&r1=1504427&r2=1504428&view=diff
==============================================================================
---
sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/mapping/MapEntry.java
(original)
+++
sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/mapping/MapEntry.java
Thu Jul 18 11:05:47 2013
@@ -41,7 +41,7 @@ public class MapEntry implements Compara
/** default log */
private final Logger log = LoggerFactory.getLogger(getClass());
-
+
private static final Pattern[] URL_WITH_PORT_MATCH = {
Pattern.compile("http/([^/]+)(\\.[^\\d/]+)(/.*)?$"),
Pattern.compile("https/([^/]+)(\\.[^\\d/]+)(/.*)?$") };
@@ -219,7 +219,7 @@ public class MapEntry implements Compara
LoggerFactory
.getLogger(MapEntry.class)
.debug("ignored entry due exception ",iae);
- }
+ }
if (mapEntry!=null){
prepEntries.add(mapEntry);
}
@@ -251,13 +251,13 @@ public class MapEntry implements Compara
if (!url.startsWith("^")) {
url = "^".concat(url);
}
-
+
try {
this.urlPattern = Pattern.compile(url);
} catch (Exception e){
throw new IllegalArgumentException("Bad url ",e);
}
-
+
this.redirect = redirect;
this.status = status;
}
@@ -273,7 +273,7 @@ public class MapEntry implements Compara
results[i] = m.replaceFirst(redirects[i]);
}catch(StringIndexOutOfBoundsException siob){
log.debug("Exception while replacing, ignoring entry {}
",redirects[i],siob);
- }
+ }
}
return results;
}
@@ -304,17 +304,20 @@ public class MapEntry implements Compara
return 0;
}
- final int tlen = urlPattern.toString().length();
- final int mlen = m.urlPattern.toString().length();
+ final String ownPatternString = urlPattern.toString();
+ final String mPatternString = m.urlPattern.toString();
+
+ final int tlen = ownPatternString.length();
+ final int mlen = mPatternString.length();
if (tlen < mlen) {
return 1;
} else if (tlen > mlen) {
return -1;
}
- // lentghs are equal, but the entries are not
- // so order m after this
- return 1;
+ // lengths are equal, but the entries are not
+ // so order based on the pattern
+ return ownPatternString.toString().compareTo(mPatternString);
}
// ---------- Object overwrite