Author: rwesten
Date: Mon Sep 10 08:03:28 2012
New Revision: 1382678

URL: http://svn.apache.org/viewvc?rev=1382678&view=rev
Log:
fix for STANBOL-727: 

* the check of parameterised types now also considers parent classes.
* added unit tests to valudate the fix

additional minor changes:

* corrected a spelling error in a method name
* added "ldpath" parameter to the RESTful service documentation 

Added:
    incubator/stanbol/trunk/entityhub/jersey/src/test/java/org/
    incubator/stanbol/trunk/entityhub/jersey/src/test/java/org/apache/
    incubator/stanbol/trunk/entityhub/jersey/src/test/java/org/apache/stanbol/
    
incubator/stanbol/trunk/entityhub/jersey/src/test/java/org/apache/stanbol/entityhub/
    
incubator/stanbol/trunk/entityhub/jersey/src/test/java/org/apache/stanbol/entityhub/jersey/
    
incubator/stanbol/trunk/entityhub/jersey/src/test/java/org/apache/stanbol/entityhub/jersey/parsers/
    
incubator/stanbol/trunk/entityhub/jersey/src/test/java/org/apache/stanbol/entityhub/jersey/parsers/RepresetnationReaderTest.java
   (with props)
    
incubator/stanbol/trunk/entityhub/jersey/src/test/java/org/apache/stanbol/entityhub/jersey/utils/
    
incubator/stanbol/trunk/entityhub/jersey/src/test/java/org/apache/stanbol/entityhub/jersey/utils/JerseyUtilsTest.java
   (with props)
Modified:
    incubator/stanbol/trunk/entityhub/jersey/pom.xml
    
incubator/stanbol/trunk/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/parsers/RepresentationReader.java
    
incubator/stanbol/trunk/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/resource/EntityhubRootResource.java
    
incubator/stanbol/trunk/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/resource/ReferencedSiteRootResource.java
    
incubator/stanbol/trunk/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/resource/SiteManagerRootResource.java
    
incubator/stanbol/trunk/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/utils/JerseyUtils.java
    
incubator/stanbol/trunk/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/utils/LDPathHelper.java
    
incubator/stanbol/trunk/entityhub/jersey/src/main/resources/org/apache/stanbol/entityhub/jersey/templates/org/apache/stanbol/entityhub/jersey/resource/EntityhubRootResource/inc_find.ftl
    
incubator/stanbol/trunk/entityhub/jersey/src/main/resources/org/apache/stanbol/entityhub/jersey/templates/org/apache/stanbol/entityhub/jersey/resource/ReferencedSiteRootResource/inc_find.ftl
    
incubator/stanbol/trunk/entityhub/jersey/src/main/resources/org/apache/stanbol/entityhub/jersey/templates/org/apache/stanbol/entityhub/jersey/resource/SiteManagerRootResource/inc_find.ftl

Modified: incubator/stanbol/trunk/entityhub/jersey/pom.xml
URL: 
http://svn.apache.org/viewvc/incubator/stanbol/trunk/entityhub/jersey/pom.xml?rev=1382678&r1=1382677&r2=1382678&view=diff
==============================================================================
--- incubator/stanbol/trunk/entityhub/jersey/pom.xml (original)
+++ incubator/stanbol/trunk/entityhub/jersey/pom.xml Mon Sep 10 08:03:28 2012
@@ -132,10 +132,10 @@
       <groupId>org.apache.clerezza</groupId>
       <artifactId>rdf.core</artifactId>
     </dependency>
-    <dependency>
+<!--     <dependency>
       <groupId>org.apache.clerezza</groupId>
       <artifactId>jaxrs.rdf.providers</artifactId>
-    </dependency>
+    </dependency>  -->
     <dependency>
       <groupId>org.apache.clerezza</groupId>
       <artifactId>rdf.jena.serializer</artifactId>

Modified: 
incubator/stanbol/trunk/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/parsers/RepresentationReader.java
URL: 
http://svn.apache.org/viewvc/incubator/stanbol/trunk/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/parsers/RepresentationReader.java?rev=1382678&r1=1382677&r2=1382678&view=diff
==============================================================================
--- 
incubator/stanbol/trunk/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/parsers/RepresentationReader.java
 (original)
+++ 
incubator/stanbol/trunk/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/parsers/RepresentationReader.java
 Mon Sep 10 08:03:28 2012
@@ -101,30 +101,11 @@ public class RepresentationReader implem
     
     @Override
     public boolean isReadable(Class<?> type, Type genericType, Annotation[] 
annotations, MediaType mediaType) {
-        boolean keyOK;
-        boolean valueOK;
         String mediaTypeWithoutParameter = 
-            mediaType.getType().toLowerCase()+'/'+
-            mediaType.getSubtype().toLowerCase();
+                mediaType.getType().toLowerCase()+'/'+
+                mediaType.getSubtype().toLowerCase();
         log.debug("isreadable: [genericType: {}| mediaType {}]",
             genericType,mediaTypeWithoutParameter);
-        //first check the parsed type
-        if(genericType instanceof ParameterizedType && 
-                
((ParameterizedType)genericType).getActualTypeArguments().length > 1){
-            //both the raw type MUST BE compatible with Set and the
-            //generic type MUST BE compatible with Representation
-            //e.g to support method declarations like
-            // public <T extends Collection> store(T<? extends Representation> 
representations){...}
-            keyOK = JerseyUtils.testType(Map.class, 
((ParameterizedType)genericType).getRawType()) &&
-                JerseyUtils.testType(String.class, 
((ParameterizedType)genericType).getActualTypeArguments()[0]);
-            valueOK = JerseyUtils.testType(Representation.class, 
((ParameterizedType)genericType).getActualTypeArguments()[1]);
-        } else if(genericType instanceof Class<?>){
-            keyOK = Map.class.isAssignableFrom((Class<?>)genericType);
-            valueOK = true; //not needed
-        } else {//No Idea what that means
-            keyOK = false;
-            valueOK = false;
-        }
         //second the media type
         boolean mediaTypeOK = (//the MimeTypes of Representations
                 supportedMediaTypes.contains(mediaTypeWithoutParameter) ||
@@ -132,8 +113,11 @@ public class RepresentationReader implem
                 
MediaType.APPLICATION_FORM_URLENCODED.equals(mediaTypeWithoutParameter) ||
                 //and mime multipart
                 
MediaType.MULTIPART_FORM_DATA.equals(mediaTypeWithoutParameter));
-        log.debug("  > java-type: {}, media-type {}",keyOK,mediaTypeOK);
-        return keyOK && valueOK && mediaTypeOK;
+        boolean typeOk = JerseyUtils.testParameterizedType(Map.class, 
+            new Class[]{String.class,Representation.class}, genericType);
+        log.debug("type is {} for {} against Map<String,Representation>",
+            typeOk ? "compatible" : "incompatible" ,genericType);
+        return typeOk && mediaTypeOK;
     }
 
     @Override

Modified: 
incubator/stanbol/trunk/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/resource/EntityhubRootResource.java
URL: 
http://svn.apache.org/viewvc/incubator/stanbol/trunk/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/resource/EntityhubRootResource.java?rev=1382678&r1=1382677&r2=1382678&view=diff
==============================================================================
--- 
incubator/stanbol/trunk/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/resource/EntityhubRootResource.java
 (original)
+++ 
incubator/stanbol/trunk/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/resource/EntityhubRootResource.java
 Mon Sep 10 08:03:28 2012
@@ -39,7 +39,7 @@ import static org.apache.stanbol.commons
 import static 
org.apache.stanbol.commons.web.base.utils.MediaTypeUtil.getAcceptableMediaType;
 import static 
org.apache.stanbol.entityhub.jersey.utils.LDPathHelper.getLDPathParseExceptionMessage;
 import static 
org.apache.stanbol.entityhub.jersey.utils.LDPathHelper.handleLDPathRequest;
-import static 
org.apache.stanbol.entityhub.jersey.utils.LDPathHelper.prepairQueryLDPathProgram;
+import static 
org.apache.stanbol.entityhub.jersey.utils.LDPathHelper.prepareQueryLDPathProgram;
 import static 
org.apache.stanbol.entityhub.jersey.utils.LDPathHelper.transformQueryResults;
 
 import java.io.File;
@@ -610,7 +610,7 @@ public class EntityhubRootResource exten
         //first prepare (only execute the query if the parameters are valid)
         Program<Object> program;
         try {
-            program = prepairQueryLDPathProgram(ldpathProgramString, 
selectedFields, backend, ldPath);
+            program = prepareQueryLDPathProgram(ldpathProgramString, 
selectedFields, backend, ldPath);
         } catch (LDPathParseException e) {
             log.warn("Unable to parse LDPath program used as select for 
Query:");
             log.warn("FieldQuery: \n {}",query);

Modified: 
incubator/stanbol/trunk/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/resource/ReferencedSiteRootResource.java
URL: 
http://svn.apache.org/viewvc/incubator/stanbol/trunk/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/resource/ReferencedSiteRootResource.java?rev=1382678&r1=1382677&r2=1382678&view=diff
==============================================================================
--- 
incubator/stanbol/trunk/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/resource/ReferencedSiteRootResource.java
 (original)
+++ 
incubator/stanbol/trunk/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/resource/ReferencedSiteRootResource.java
 Mon Sep 10 08:03:28 2012
@@ -38,7 +38,7 @@ import static org.apache.stanbol.entityh
 import static 
org.apache.stanbol.entityhub.jersey.utils.JerseyUtils.createFieldQueryForFindRequest;
 import static 
org.apache.stanbol.entityhub.jersey.utils.LDPathHelper.getLDPathParseExceptionMessage;
 import static 
org.apache.stanbol.entityhub.jersey.utils.LDPathHelper.handleLDPathRequest;
-import static 
org.apache.stanbol.entityhub.jersey.utils.LDPathHelper.prepairQueryLDPathProgram;
+import static 
org.apache.stanbol.entityhub.jersey.utils.LDPathHelper.prepareQueryLDPathProgram;
 import static 
org.apache.stanbol.entityhub.jersey.utils.LDPathHelper.transformQueryResults;
 
 import java.io.File;
@@ -652,7 +652,7 @@ public class ReferencedSiteRootResource 
         //first prepare (only execute the query if the parameters are valid)
         Program<Object> program;
         try {
-            program = prepairQueryLDPathProgram(ldpathProgramString, 
selectedFields, backend, ldPath);
+            program = prepareQueryLDPathProgram(ldpathProgramString, 
selectedFields, backend, ldPath);
         } catch (LDPathParseException e) {
             log.warn("Unable to parse LDPath program used as select for 
Query:");
             log.warn("FieldQuery: \n {}",query);

Modified: 
incubator/stanbol/trunk/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/resource/SiteManagerRootResource.java
URL: 
http://svn.apache.org/viewvc/incubator/stanbol/trunk/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/resource/SiteManagerRootResource.java?rev=1382678&r1=1382677&r2=1382678&view=diff
==============================================================================
--- 
incubator/stanbol/trunk/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/resource/SiteManagerRootResource.java
 (original)
+++ 
incubator/stanbol/trunk/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/resource/SiteManagerRootResource.java
 Mon Sep 10 08:03:28 2012
@@ -31,7 +31,7 @@ import static org.apache.stanbol.commons
 import static 
org.apache.stanbol.commons.web.base.utils.MediaTypeUtil.getAcceptableMediaType;
 import static 
org.apache.stanbol.entityhub.jersey.utils.LDPathHelper.getLDPathParseExceptionMessage;
 import static 
org.apache.stanbol.entityhub.jersey.utils.LDPathHelper.handleLDPathRequest;
-import static 
org.apache.stanbol.entityhub.jersey.utils.LDPathHelper.prepairQueryLDPathProgram;
+import static 
org.apache.stanbol.entityhub.jersey.utils.LDPathHelper.prepareQueryLDPathProgram;
 import static 
org.apache.stanbol.entityhub.jersey.utils.LDPathHelper.transformQueryResults;
 
 import java.io.File;
@@ -426,7 +426,7 @@ public class SiteManagerRootResource ext
         //first prepare (only execute the query if the parameters are valid)
         Program<Object> program;
         try {
-            program = prepairQueryLDPathProgram(ldpathProgramString, 
selectedFields, backend, ldPath);
+            program = prepareQueryLDPathProgram(ldpathProgramString, 
selectedFields, backend, ldPath);
         } catch (LDPathParseException e) {
             log.warn("Unable to parse LDPath program used as select for a 
Query to the '/sites' endpoint:");
             log.warn("FieldQuery: \n {}",query);

Modified: 
incubator/stanbol/trunk/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/utils/JerseyUtils.java
URL: 
http://svn.apache.org/viewvc/incubator/stanbol/trunk/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/utils/JerseyUtils.java?rev=1382678&r1=1382677&r2=1382678&view=diff
==============================================================================
--- 
incubator/stanbol/trunk/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/utils/JerseyUtils.java
 (original)
+++ 
incubator/stanbol/trunk/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/utils/JerseyUtils.java
 Mon Sep 10 08:03:28 2012
@@ -27,6 +27,7 @@ import static org.apache.clerezza.rdf.co
 import java.io.IOException;
 import java.io.InputStream;
 import java.lang.reflect.GenericArrayType;
+import java.lang.reflect.ParameterizedType;
 import java.lang.reflect.Type;
 import java.lang.reflect.WildcardType;
 import java.net.URLDecoder;
@@ -59,6 +60,8 @@ import org.apache.stanbol.entityhub.serv
 import 
org.apache.stanbol.entityhub.servicesapi.query.TextConstraint.PatternType;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+
+import com.sun.jersey.api.representation.Form;
 /**
  * Utility methods used by several of the RESTful service endpoints of the
  * Entityhub.
@@ -250,7 +253,7 @@ public final class JerseyUtils {
      * @param genericType the required class
      * @return if the generic type is compatible with the required class
      */
-    public static boolean testType(Class<?> required, Type genericType) {
+    public static boolean testType(Class<?> required, Type type) {
         //for the examples let assume that a Set is the raw type and the
         //requested generic type is a Representation with the following class
         //hierarchy:
@@ -260,18 +263,15 @@ public final class JerseyUtils {
         //         -> InMemoryRepresentation
         //     -> InputStream
         //     -> Collection<T>
-        boolean typeOK;
-        if(genericType instanceof Class<?>){
-            //OK
-            //  Set<Representation>
-            //  Set<Object>
-            //NOT OK
-            //  Set<RdfRepresentation>
-            //  Set<InputStream>
-            typeOK = ((Class<?>)genericType).isAssignableFrom(required);
-        } else if(genericType instanceof WildcardType){
+        boolean typeOK = false;
+//        while(type != null && !typeOK){
+//            types.add(type);
+        if(type instanceof Class<?>){
+            typeOK = required.isAssignableFrom((Class<?>) type);
+            type = ((Class<?>)type).getGenericSuperclass();
+        } else if(type instanceof WildcardType){
             //In cases <? super {class}>, <? extends {class}, <?>
-            WildcardType wildcardSetType = (WildcardType) genericType;
+            WildcardType wildcardSetType = (WildcardType) type;
             if(wildcardSetType.getLowerBounds().length > 0){
                 Type lowerBound = wildcardSetType.getLowerBounds()[0];
                 //OK
@@ -297,18 +297,66 @@ public final class JerseyUtils {
                 // Set<?>
                 typeOK = true;
             }
-        } else if(required.isArray() && genericType instanceof 
GenericArrayType){
+        } else if(required.isArray() && type instanceof GenericArrayType){
             //In case the required type is an array we need also to support 
             //possible generic Array specifications
-            GenericArrayType arrayType = (GenericArrayType)genericType;
+            GenericArrayType arrayType = (GenericArrayType)type;
             typeOK = testType(required.getComponentType(), 
arrayType.getGenericComponentType());
+        } else if(type instanceof ParameterizedType){
+            ParameterizedType pType = ((ParameterizedType)type);
+            typeOK = pType.getRawType() instanceof Class<?> && 
+                    required.isAssignableFrom((Class<?>)pType.getRawType());
+            type = null;
         } else {
             //GenericArrayType but !required.isArray() -> incompatible
             //TypeVariable -> no variables define -> incompatible
             typeOK = false;
+//                type = null; //end
         }
+//        }
         return typeOK;
     }
+    /**
+     * Tests the parsed type against the raw type and parsed Type parameters.
+     * This allows e.g. to check for <code>Map&lt;String,Number&gt</code> but
+     * also works with classes that extend generic types such as
+     * <code>Dummy extends {@link HashMap}&lt;String,String&gt</code>.
+     * @param rawType the raw type to test against
+     * @param parameterTypes the types of the parameters
+     * @param type the type to test
+     * @return if the type is compatible or not
+     */
+    public static boolean testParameterizedType(Class<?> rawType, Class<?>[] 
parameterTypes, Type type) {
+        // first check the raw type
+        if (!testType(rawType, type)) {
+            return false;
+        }
+        while (type != null) {
+            // types.add(type);
+            Type[] parameters = null;
+            if (type instanceof ParameterizedType) {
+                parameters = ((ParameterizedType) 
type).getActualTypeArguments();
+                // the number of type arguments MUST BE the same as parameter 
types
+                if (parameters.length == parameterTypes.length) {
+                    boolean compatible = true;
+                    // All parameters MUST BE compatible!
+                    for (int i = 0; compatible && i < parameters.length; i++) {
+                        compatible = testType(parameterTypes[i], 
parameters[i]);
+                    }
+                    if (compatible) {
+                        return true;
+                    }
+                } // else check parent types
+
+            } // else not parameterised
+            if (type instanceof Class<?>) {
+                type = ((Class<?>) type).getGenericSuperclass();
+            } else {
+                return false;
+            }
+        }
+        return false;
+    }
     
     /**
      * This Method is intended to parse form data from 

Modified: 
incubator/stanbol/trunk/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/utils/LDPathHelper.java
URL: 
http://svn.apache.org/viewvc/incubator/stanbol/trunk/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/utils/LDPathHelper.java?rev=1382678&r1=1382677&r2=1382678&view=diff
==============================================================================
--- 
incubator/stanbol/trunk/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/utils/LDPathHelper.java
 (original)
+++ 
incubator/stanbol/trunk/entityhub/jersey/src/main/java/org/apache/stanbol/entityhub/jersey/utils/LDPathHelper.java
 Mon Sep 10 08:03:28 2012
@@ -257,7 +257,7 @@ public class LDPathHelper {
      * @throws IllegalStateException if the fields selected by the LDPath
      * program conflict with the fields selected by the query.
      */
-    public static Program<Object> prepairQueryLDPathProgram(String 
ldpathProgram,
+    public static Program<Object> prepareQueryLDPathProgram(String 
ldpathProgram,
                                                 Set<String> selectedFields,
                                                 AbstractBackend backend,
                                                 EntityhubLDPath ldPath) throws 
LDPathParseException {

Modified: 
incubator/stanbol/trunk/entityhub/jersey/src/main/resources/org/apache/stanbol/entityhub/jersey/templates/org/apache/stanbol/entityhub/jersey/resource/EntityhubRootResource/inc_find.ftl
URL: 
http://svn.apache.org/viewvc/incubator/stanbol/trunk/entityhub/jersey/src/main/resources/org/apache/stanbol/entityhub/jersey/templates/org/apache/stanbol/entityhub/jersey/resource/EntityhubRootResource/inc_find.ftl?rev=1382678&r1=1382677&r2=1382678&view=diff
==============================================================================
--- 
incubator/stanbol/trunk/entityhub/jersey/src/main/resources/org/apache/stanbol/entityhub/jersey/templates/org/apache/stanbol/entityhub/jersey/resource/EntityhubRootResource/inc_find.ftl
 (original)
+++ 
incubator/stanbol/trunk/entityhub/jersey/src/main/resources/org/apache/stanbol/entityhub/jersey/templates/org/apache/stanbol/entityhub/jersey/resource/EntityhubRootResource/inc_find.ftl
 Mon Sep 10 08:03:28 2012
@@ -40,6 +40,8 @@
                        <li>limit: The maximum number of returned Entities 
(optional)</li>
                        <li>offset: The offset of the first returned Entity 
(default: 0)</li>
                        <li>select: A list of fields included for returned 
Entities (optional)</li>
+                       <li>ldpath: The LDPath program executed for entities 
selected by the find query (optionally). 
+                       The LDPath program needs to be URLEncoded.</li>
                </ul>
        </td>
        </tr>

Modified: 
incubator/stanbol/trunk/entityhub/jersey/src/main/resources/org/apache/stanbol/entityhub/jersey/templates/org/apache/stanbol/entityhub/jersey/resource/ReferencedSiteRootResource/inc_find.ftl
URL: 
http://svn.apache.org/viewvc/incubator/stanbol/trunk/entityhub/jersey/src/main/resources/org/apache/stanbol/entityhub/jersey/templates/org/apache/stanbol/entityhub/jersey/resource/ReferencedSiteRootResource/inc_find.ftl?rev=1382678&r1=1382677&r2=1382678&view=diff
==============================================================================
--- 
incubator/stanbol/trunk/entityhub/jersey/src/main/resources/org/apache/stanbol/entityhub/jersey/templates/org/apache/stanbol/entityhub/jersey/resource/ReferencedSiteRootResource/inc_find.ftl
 (original)
+++ 
incubator/stanbol/trunk/entityhub/jersey/src/main/resources/org/apache/stanbol/entityhub/jersey/templates/org/apache/stanbol/entityhub/jersey/resource/ReferencedSiteRootResource/inc_find.ftl
 Mon Sep 10 08:03:28 2012
@@ -43,6 +43,8 @@
                information to return for Entities selected by the /find 
request</li>
                <li>limit: optionally the maximum number of results</li>
                <li>offset: optionally the offset of first result</li>
+            <li>ldpath: The LDPath program executed for entities selected by 
the find query (optionally). 
+            The LDPath program needs to be URLEncoded.</li>
                </ul>
        </td>
        </tr>

Modified: 
incubator/stanbol/trunk/entityhub/jersey/src/main/resources/org/apache/stanbol/entityhub/jersey/templates/org/apache/stanbol/entityhub/jersey/resource/SiteManagerRootResource/inc_find.ftl
URL: 
http://svn.apache.org/viewvc/incubator/stanbol/trunk/entityhub/jersey/src/main/resources/org/apache/stanbol/entityhub/jersey/templates/org/apache/stanbol/entityhub/jersey/resource/SiteManagerRootResource/inc_find.ftl?rev=1382678&r1=1382677&r2=1382678&view=diff
==============================================================================
--- 
incubator/stanbol/trunk/entityhub/jersey/src/main/resources/org/apache/stanbol/entityhub/jersey/templates/org/apache/stanbol/entityhub/jersey/resource/SiteManagerRootResource/inc_find.ftl
 (original)
+++ 
incubator/stanbol/trunk/entityhub/jersey/src/main/resources/org/apache/stanbol/entityhub/jersey/templates/org/apache/stanbol/entityhub/jersey/resource/SiteManagerRootResource/inc_find.ftl
 Mon Sep 10 08:03:28 2012
@@ -40,6 +40,8 @@
                <li>lang: optionally the language of the parsed name can be 
defined</li>
                <li>limit: optionally the maximum number of results</li>
                <li>offset: optionally the offset of first result</li>
+            <li>ldpath: The LDPath program executed for entities selected by 
the find query (optionally). 
+            The LDPath program needs to be URLEncoded.</li>
                </ul>
        </td>
        </tr>

Added: 
incubator/stanbol/trunk/entityhub/jersey/src/test/java/org/apache/stanbol/entityhub/jersey/parsers/RepresetnationReaderTest.java
URL: 
http://svn.apache.org/viewvc/incubator/stanbol/trunk/entityhub/jersey/src/test/java/org/apache/stanbol/entityhub/jersey/parsers/RepresetnationReaderTest.java?rev=1382678&view=auto
==============================================================================
--- 
incubator/stanbol/trunk/entityhub/jersey/src/test/java/org/apache/stanbol/entityhub/jersey/parsers/RepresetnationReaderTest.java
 (added)
+++ 
incubator/stanbol/trunk/entityhub/jersey/src/test/java/org/apache/stanbol/entityhub/jersey/parsers/RepresetnationReaderTest.java
 Mon Sep 10 08:03:28 2012
@@ -0,0 +1,28 @@
+package org.apache.stanbol.entityhub.jersey.parsers;
+
+import javax.ws.rs.core.MediaType;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.sun.jersey.api.representation.Form;
+
+public class RepresetnationReaderTest {
+
+    Logger log = LoggerFactory.getLogger(RepresetnationReaderTest.class);
+    
+    RepresentationReader reader = new RepresentationReader();
+    
+    /**
+     * Tests the bug reported by STANBOL-727
+     */
+    @Test
+    public void testIsReadable(){
+        //NOTE the use of com.sun.* API for unit testing
+        Class<Form> formClass = com.sun.jersey.api.representation.Form.class;
+        boolean state = reader.isReadable(formClass, formClass, null, 
MediaType.APPLICATION_FORM_URLENCODED_TYPE);
+        Assert.assertFalse(state);
+    }
+}

Propchange: 
incubator/stanbol/trunk/entityhub/jersey/src/test/java/org/apache/stanbol/entityhub/jersey/parsers/RepresetnationReaderTest.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: 
incubator/stanbol/trunk/entityhub/jersey/src/test/java/org/apache/stanbol/entityhub/jersey/utils/JerseyUtilsTest.java
URL: 
http://svn.apache.org/viewvc/incubator/stanbol/trunk/entityhub/jersey/src/test/java/org/apache/stanbol/entityhub/jersey/utils/JerseyUtilsTest.java?rev=1382678&view=auto
==============================================================================
--- 
incubator/stanbol/trunk/entityhub/jersey/src/test/java/org/apache/stanbol/entityhub/jersey/utils/JerseyUtilsTest.java
 (added)
+++ 
incubator/stanbol/trunk/entityhub/jersey/src/test/java/org/apache/stanbol/entityhub/jersey/utils/JerseyUtilsTest.java
 Mon Sep 10 08:03:28 2012
@@ -0,0 +1,44 @@
+package org.apache.stanbol.entityhub.jersey.utils;
+
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+/**
+ * Tests added mainly in response to the bug reported by STANBOL-727
+ * @author Rupert Westenthaler
+ *
+ */
+public class JerseyUtilsTest {
+
+    private static class TestMap extends HashMap<String,Collection<? extends 
Number>>{
+        private static final long serialVersionUID = 1L;
+    }
+    /**
+     * Tests some combination for Test
+     */
+    @Test
+    public void testType(){
+        Assert.assertTrue(JerseyUtils.testType(Map.class, HashMap.class));
+        Assert.assertFalse(JerseyUtils.testType(Map.class, HashSet.class));
+        Assert.assertTrue(JerseyUtils.testType(Map.class, new 
HashMap<String,String>().getClass()));
+        Map<String,Collection<? extends Number>> genericMapTest = new 
TestMap();
+        Assert.assertTrue(JerseyUtils.testType(Map.class, 
genericMapTest.getClass()));
+        Assert.assertFalse(JerseyUtils.testType(Set.class, 
genericMapTest.getClass()));
+        //test a parsed Type
+        Assert.assertTrue(JerseyUtils.testType(Map.class, 
TestMap.class.getGenericSuperclass()));
+    }
+    
+    @Test
+    public void testParameterisedType() {
+        //NOTE: this can not check for Collection<String>!!
+        Assert.assertTrue(JerseyUtils.testParameterizedType(Map.class, 
+            new Class[]{String.class,Collection.class}, TestMap.class));
+    }
+    
+}

Propchange: 
incubator/stanbol/trunk/entityhub/jersey/src/test/java/org/apache/stanbol/entityhub/jersey/utils/JerseyUtilsTest.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain


Reply via email to