You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@clerezza.apache.org by re...@apache.org on 2011/09/19 08:21:57 UTC
svn commit: r1172474 - in
/incubator/clerezza/trunk/parent/platform.typerendering/platform.typerendering.core/src:
main/java/org/apache/clerezza/platform/typerendering/
main/java/org/apache/clerezza/platform/typerendering/utils/ test/java/org/
test/jav...
Author: reto
Date: Mon Sep 19 06:21:56 2011
New Revision: 1172474
URL: http://svn.apache.org/viewvc?rev=1172474&view=rev
Log:
CLEREZZA-630: fixed regex map to actually do the sorting, removed previous fix attempt
Added:
incubator/clerezza/trunk/parent/platform.typerendering/platform.typerendering.core/src/test/java/org/
incubator/clerezza/trunk/parent/platform.typerendering/platform.typerendering.core/src/test/java/org/apache/
incubator/clerezza/trunk/parent/platform.typerendering/platform.typerendering.core/src/test/java/org/apache/clerezza/
incubator/clerezza/trunk/parent/platform.typerendering/platform.typerendering.core/src/test/java/org/apache/clerezza/platform/
incubator/clerezza/trunk/parent/platform.typerendering/platform.typerendering.core/src/test/java/org/apache/clerezza/platform/typerendering/
incubator/clerezza/trunk/parent/platform.typerendering/platform.typerendering.core/src/test/java/org/apache/clerezza/platform/typerendering/utils/
incubator/clerezza/trunk/parent/platform.typerendering/platform.typerendering.core/src/test/java/org/apache/clerezza/platform/typerendering/utils/RegexMapTest.java
Modified:
incubator/clerezza/trunk/parent/platform.typerendering/platform.typerendering.core/src/main/java/org/apache/clerezza/platform/typerendering/RendererFactory.java
incubator/clerezza/trunk/parent/platform.typerendering/platform.typerendering.core/src/main/java/org/apache/clerezza/platform/typerendering/utils/RegexMap.java
Modified: incubator/clerezza/trunk/parent/platform.typerendering/platform.typerendering.core/src/main/java/org/apache/clerezza/platform/typerendering/RendererFactory.java
URL: http://svn.apache.org/viewvc/incubator/clerezza/trunk/parent/platform.typerendering/platform.typerendering.core/src/main/java/org/apache/clerezza/platform/typerendering/RendererFactory.java?rev=1172474&r1=1172473&r2=1172474&view=diff
==============================================================================
--- incubator/clerezza/trunk/parent/platform.typerendering/platform.typerendering.core/src/main/java/org/apache/clerezza/platform/typerendering/RendererFactory.java (original)
+++ incubator/clerezza/trunk/parent/platform.typerendering/platform.typerendering.core/src/main/java/org/apache/clerezza/platform/typerendering/RendererFactory.java Mon Sep 19 06:21:56 2011
@@ -35,7 +35,6 @@ import org.apache.felix.scr.annotations.
import org.apache.felix.scr.annotations.ReferenceCardinality;
import org.apache.felix.scr.annotations.ReferencePolicy;
import org.apache.felix.scr.annotations.Service;
-import org.apache.felix.scr.annotations.Services;
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceReference;
import org.osgi.service.component.ComponentContext;
@@ -49,9 +48,7 @@ import org.slf4j.LoggerFactory;
* @author mir, reto
*/
@Component
-@Services({
- @Service(RendererFactory.class)
-})
+@Service(RendererFactory.class)
@Reference(name = "typeRenderlet",
cardinality = ReferenceCardinality.OPTIONAL_MULTIPLE,
policy = ReferencePolicy.DYNAMIC,
@@ -73,14 +70,12 @@ public class RendererFactory {
* A Tuple Type-Renderler Startlevel, for identity only the renderlet is relevan
*/
private static class TypeRenderletStartLevel {
- final TypeRenderlet renderlet;
- final int startLevel;
- final String modePattern;
+ TypeRenderlet renderlet;
+ int startLevel;
- private TypeRenderletStartLevel(TypeRenderlet renderlet, int startLevel, String modePattern) {
+ private TypeRenderletStartLevel(TypeRenderlet renderlet, int startLevel) {
this.startLevel = startLevel;
this.renderlet = renderlet;
- this.modePattern = modePattern;
}
@Override
@@ -159,18 +154,9 @@ public class RendererFactory {
Iterator<TypeRenderletStartLevel> renderlets = mediaTypeMap.getMatching(acceptableType);
if (renderlets.hasNext()) {
TypeRenderlet bestRenderlet = null;
- //an exact match is preferred over regex-matches disregarding the start-level
- boolean hasExactMatch = false;
int highestStartLevel = 0;
while (renderlets.hasNext()) {
TypeRenderletStartLevel typeRenderletStartLevel = renderlets.next();
- if (!hasExactMatch) {
- if ((mode == null) || mode.equals(typeRenderletStartLevel.modePattern)) {
- hasExactMatch = true;
- highestStartLevel = typeRenderletStartLevel.startLevel;
- bestRenderlet = typeRenderletStartLevel.renderlet;
- }
- }
if (typeRenderletStartLevel.startLevel > highestStartLevel) {
highestStartLevel = typeRenderletStartLevel.startLevel;
bestRenderlet = typeRenderletStartLevel.renderlet;
@@ -217,11 +203,11 @@ public class RendererFactory {
regexMap.addEntry(modePattern, mediaTypeMap);
}
final MediaType mediaType = typeRenderlet.getMediaType();
- mediaTypeMap.addEntry(mediaType, new TypeRenderletStartLevel(typeRenderlet, startLevel, modePattern));
+ mediaTypeMap.addEntry(mediaType, new TypeRenderletStartLevel(typeRenderlet, startLevel));
}
protected void unbindTypeRenderlet(TypeRenderlet typeRenderlet) {
- TypeRenderletStartLevel typeRenderletStartLevel = new TypeRenderletStartLevel(typeRenderlet, 0, null);
+ TypeRenderletStartLevel typeRenderletStartLevel = new TypeRenderletStartLevel(typeRenderlet, 0);
for (Map.Entry<UriRef, RegexMap<MediaTypeMap<TypeRenderletStartLevel>>> typeEntry: typeRenderletMap.entrySet()) {
final RegexMap<MediaTypeMap<TypeRenderletStartLevel>> regexMap = typeEntry.getValue();
for (Map.Entry<String, MediaTypeMap<TypeRenderletStartLevel>> regexEntry: regexMap.entrySet()) {
Modified: incubator/clerezza/trunk/parent/platform.typerendering/platform.typerendering.core/src/main/java/org/apache/clerezza/platform/typerendering/utils/RegexMap.java
URL: http://svn.apache.org/viewvc/incubator/clerezza/trunk/parent/platform.typerendering/platform.typerendering.core/src/main/java/org/apache/clerezza/platform/typerendering/utils/RegexMap.java?rev=1172474&r1=1172473&r2=1172474&view=diff
==============================================================================
--- incubator/clerezza/trunk/parent/platform.typerendering/platform.typerendering.core/src/main/java/org/apache/clerezza/platform/typerendering/utils/RegexMap.java (original)
+++ incubator/clerezza/trunk/parent/platform.typerendering/platform.typerendering.core/src/main/java/org/apache/clerezza/platform/typerendering/utils/RegexMap.java Mon Sep 19 06:21:56 2011
@@ -42,7 +42,7 @@ public class RegexMap<T> {
this.pattern = Pattern.compile(regex);
this.entry = entry;
for (char ch : regex.toCharArray()) {
- if ((ch >= 'a') && (ch <= 'Z')) {regexStrength++;} else
+ if ((ch >= 'A') && (ch <= 'z')) {regexStrength++;} else
if ((ch >= '0') && (ch <= '9')) regexStrength++;
}
@@ -54,7 +54,7 @@ public class RegexMap<T> {
@Override
public int compareTo(Tuple o) {
- return regexStrength - o.regexStrength;
+ return o.regexStrength - regexStrength;
}
@Override
@@ -97,6 +97,7 @@ public class RegexMap<T> {
public void addEntry(String pRegex, T entry) {
final String regex = pRegex != null ? pRegex : "";
tuples.add(new Tuple(regex, entry));
+ Collections.sort(tuples);
}
/**
Added: incubator/clerezza/trunk/parent/platform.typerendering/platform.typerendering.core/src/test/java/org/apache/clerezza/platform/typerendering/utils/RegexMapTest.java
URL: http://svn.apache.org/viewvc/incubator/clerezza/trunk/parent/platform.typerendering/platform.typerendering.core/src/test/java/org/apache/clerezza/platform/typerendering/utils/RegexMapTest.java?rev=1172474&view=auto
==============================================================================
--- incubator/clerezza/trunk/parent/platform.typerendering/platform.typerendering.core/src/test/java/org/apache/clerezza/platform/typerendering/utils/RegexMapTest.java (added)
+++ incubator/clerezza/trunk/parent/platform.typerendering/platform.typerendering.core/src/test/java/org/apache/clerezza/platform/typerendering/utils/RegexMapTest.java Mon Sep 19 06:21:56 2011
@@ -0,0 +1,16 @@
+package org.apache.clerezza.platform.typerendering.utils;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+
+public class RegexMapTest {
+
+ @Test
+ public void orderingTest() {
+ RegexMap<Object> map = new RegexMap<Object>();
+ map.addEntry("(naked|.*-naked)", "v2");
+ map.addEntry("concept-find-create-naked", "v1");
+ Assert.assertEquals("v1", map.getMatching("concept-find-create-naked").next());
+ }
+}