svn commit: r832880 - in /ofbiz/trunk/framework/entity/src/org/ofbiz/entity/condition: EntityConditionSubSelect.java EntityExpr.java

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

svn commit: r832880 - in /ofbiz/trunk/framework/entity/src/org/ofbiz/entity/condition: EntityConditionSubSelect.java EntityExpr.java

jleroux@apache.org
Author: jleroux
Date: Wed Nov  4 21:56:34 2009
New Revision: 832880

URL: http://svn.apache.org/viewvc?rev=832880&view=rev
Log:
A patch from Matarazzo Angelo "Remove an useless EntitySubSelect warning message." (https://issues.apache.org/jira/browse/OFBIZ-3145) - OFBIZ-3145
With the same security kept

Modified:
    ofbiz/trunk/framework/entity/src/org/ofbiz/entity/condition/EntityConditionSubSelect.java
    ofbiz/trunk/framework/entity/src/org/ofbiz/entity/condition/EntityExpr.java

Modified: ofbiz/trunk/framework/entity/src/org/ofbiz/entity/condition/EntityConditionSubSelect.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/entity/src/org/ofbiz/entity/condition/EntityConditionSubSelect.java?rev=832880&r1=832879&r2=832880&view=diff
==============================================================================
--- ofbiz/trunk/framework/entity/src/org/ofbiz/entity/condition/EntityConditionSubSelect.java (original)
+++ ofbiz/trunk/framework/entity/src/org/ofbiz/entity/condition/EntityConditionSubSelect.java Wed Nov  4 21:56:34 2009
@@ -106,17 +106,26 @@
         }
     }
 
+    
     @Override
     public EntityConditionValue freeze() {
         return new EntityConditionSubSelect(localModelEntity, keyFieldName, (whereCond != null ? whereCond.freeze() : null), requireAll);
     }
-
+    
+    public String getKeyFieldName() {
+        return this.keyFieldName;
+    }
+    
+    public ModelEntity getModelEntity() {
+        return this.localModelEntity;
+    }
+    
     @Override
     public ModelField getModelField(ModelEntity modelEntity) {
         // do nothing for now
         return null;
     }
-
+  
     @Override
     public Comparable getValue(Delegator delegator, Map<String, ? extends Object> map) {
         // do nothing for now

Modified: ofbiz/trunk/framework/entity/src/org/ofbiz/entity/condition/EntityExpr.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/entity/src/org/ofbiz/entity/condition/EntityExpr.java?rev=832880&r1=832879&r2=832880&view=diff
==============================================================================
--- ofbiz/trunk/framework/entity/src/org/ofbiz/entity/condition/EntityExpr.java (original)
+++ ofbiz/trunk/framework/entity/src/org/ofbiz/entity/condition/EntityExpr.java Wed Nov  4 21:56:34 2009
@@ -280,12 +280,27 @@
         if (type == null) {
             throw new IllegalArgumentException("Type " + curField.getType() + " not found for entity [" + modelEntity.getEntityName() + "]; probably because there is no datasource (helper) setup for the entity group that this entity is in: [" + delegator.getEntityGroupName(modelEntity.getEntityName()) + "]");
         }
-
+        if (value instanceof EntityConditionSubSelect){
+         ModelFieldType valueType=null;
+         try {
+         ModelEntity valueModelEntity= ((EntityConditionSubSelect) value).getModelEntity();
+         valueType = delegator.getEntityFieldType(valueModelEntity,  valueModelEntity.getField(((EntityConditionSubSelect) value).getKeyFieldName()).getType());
+             } catch (GenericEntityException e) {
+                 Debug.logWarning(e, module);
+             }
+          // make sure the type of keyFieldName of EntityConditionSubSelect  matches the field Java type
+             if (!ObjectType.instanceOf(valueType.getJavaType(), type.getJavaType())) {
+             String errMsg = "Warning using ["+ value.getClass().getName() + "] and entity field [" + modelEntity.getEntityName() + "." + curField.getName() + "]. The Java type of keyFieldName : [" + valueType.getJavaType()+ "] is not compatible with the Java type of the field [" + type.getJavaType() + "]";
+ // eventually we should do this, but for now we'll do a "soft" failure: throw new IllegalArgumentException(errMsg);
+ Debug.logWarning(new Exception("Location of database type warning"), "=-=-=-=-=-=-=-=-= Database type warning in EntityExpr =-=-=-=-=-=-=-=-= " + errMsg, module);
+             }
+        } else {
         // make sure the type matches the field Java type
-        if (!ObjectType.instanceOf(value, type.getJavaType())) {
-            String errMsg = "In entity field [" + modelEntity.getEntityName() + "." + curField.getName() + "] set the value passed in [" + value.getClass().getName() + "] is not compatible with the Java type of the field [" + type.getJavaType() + "]";
-            // eventually we should do this, but for now we'll do a "soft" failure: throw new IllegalArgumentException(errMsg);
-            Debug.logWarning(new Exception("Location of database type warning"), "=-=-=-=-=-=-=-=-= Database type warning in EntityExpr =-=-=-=-=-=-=-=-= " + errMsg, module);
+         if (!ObjectType.instanceOf(value, type.getJavaType())) {
+ String errMsg = "In entity field [" + modelEntity.getEntityName() + "." + curField.getName() + "] set the value passed in [" + value.getClass().getName() + "] is not compatible with the Java type of the field [" + type.getJavaType() + "]";
+ // eventually we should do this, but for now we'll do a "soft" failure: throw new IllegalArgumentException(errMsg);
+ Debug.logWarning(new Exception("Location of database type warning"), "=-=-=-=-=-=-=-=-= Database type warning in EntityExpr =-=-=-=-=-=-=-=-= " + errMsg, module);
+ }
         }
     }