You are viewing a plain text version of this content. The canonical link for it is here.
Posted to imperius-commits@incubator.apache.org by jn...@apache.org on 2008/12/22 19:22:37 UTC

svn commit: r728747 - /incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/util/TypeResolver.java

Author: jneeraj
Date: Mon Dec 22 11:22:37 2008
New Revision: 728747

URL: http://svn.apache.org/viewvc?rev=728747&view=rev
Log:
IMPERIUS-20: TypeResolver update for String - charsequence interoperability - patches by David Wood

Modified:
    incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/util/TypeResolver.java

Modified: incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/util/TypeResolver.java
URL: http://svn.apache.org/viewvc/incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/util/TypeResolver.java?rev=728747&r1=728746&r2=728747&view=diff
==============================================================================
--- incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/util/TypeResolver.java (original)
+++ incubator/imperius/trunk/imperius-splcore/src/main/java/org/apache/imperius/spl/parser/util/TypeResolver.java Mon Dec 22 11:22:37 2008
@@ -270,7 +270,11 @@
         {
         	if(isReference(leftType))
         	{
-        		if(OBJECT_STRING.equalsIgnoreCase(leftType.getReferenceTypeName()) && isString(rightType))
+//        		if(OBJECT_STRING.equalsIgnoreCase(leftType.getReferenceTypeName()) && isString(rightType))
+//        		{
+//        			res = true;
+//        		} 
+        		if (isString(rightType) && isAssignableFromString(leftType)) 
         		{
         			res = true;
         		} 
@@ -286,6 +290,19 @@
         return res;
     }
     
+    private static boolean isAssignableFromString(TypeInfo type) {
+		String typeName = type.getReferenceTypeName();
+		if (typeName != null) {
+			try {
+				Class clazz = type.getClass().forName(typeName);
+				return clazz.isAssignableFrom(String.class);
+			} catch (ClassNotFoundException e) {
+				;
+			}
+		}
+		return false;
+		
+	}    
     public static boolean isTypeAssignableForRelation(TypeInfo leftType,
             TypeInfo rightType)
     {