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);
+                       } 
         }
     }
 


Reply via email to