svn commit: r1655499 - in /ofbiz/trunk/framework: common/ common/servicedef/ common/src/org/ofbiz/common/ common/src/org/ofbiz/common/test/ common/testdef/ entity/entitydef/

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

svn commit: r1655499 - in /ofbiz/trunk/framework: common/ common/servicedef/ common/src/org/ofbiz/common/ common/src/org/ofbiz/common/test/ common/testdef/ entity/entitydef/

nmalin
Author: nmalin
Date: Wed Jan 28 23:25:40 2015
New Revision: 1655499

URL: http://svn.apache.org/r1655499
Log:
A patch from Anne Jessel to Support filtering on non-std date field names in performFind and prepareFind (OFBIZ-4374).
With the difficulty to test, I create a new test-suite performfindtests with five junit :
 * testPerformFindConditionFieldEquals
 * testPerformFindConditionFieldLike
 * testPerformFindConditionDistinct
 * testPerformFindFilterByDate
 * testPerformFindFilterByDateWithDedicateDateField
I also improve TestNodeMember with two fields extendFromDate and extendThruDate to realize filter on it.

Added:
    ofbiz/trunk/framework/common/src/org/ofbiz/common/test/
    ofbiz/trunk/framework/common/src/org/ofbiz/common/test/PerformFindTests.java   (with props)
    ofbiz/trunk/framework/common/testdef/PerformFindTests.xml   (with props)
Modified:
    ofbiz/trunk/framework/common/build.xml
    ofbiz/trunk/framework/common/ofbiz-component.xml
    ofbiz/trunk/framework/common/servicedef/services.xml
    ofbiz/trunk/framework/common/src/org/ofbiz/common/FindServices.java
    ofbiz/trunk/framework/entity/entitydef/entitymodel_test.xml

Modified: ofbiz/trunk/framework/common/build.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/common/build.xml?rev=1655499&r1=1655498&r2=1655499&view=diff
==============================================================================
--- ofbiz/trunk/framework/common/build.xml (original)
+++ ofbiz/trunk/framework/common/build.xml Wed Jan 28 23:25:40 2015
@@ -44,4 +44,9 @@ under the License.
         <fileset dir="../webapp/build/lib" includes="*.jar"/>
         <fileset dir="../widget/build/lib" includes="*.jar"/>
     </path>
+
+    <target name="jar" depends="classes">
+        <main-jar/>
+        <test-jar/>
+    </target>
 </project>

Modified: ofbiz/trunk/framework/common/ofbiz-component.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/common/ofbiz-component.xml?rev=1655499&r1=1655498&r2=1655499&view=diff
==============================================================================
--- ofbiz/trunk/framework/common/ofbiz-component.xml (original)
+++ ofbiz/trunk/framework/common/ofbiz-component.xml Wed Jan 28 23:25:40 2015
@@ -73,4 +73,5 @@ under the License.
     <service-resource type="mca" loader="main" location="servicedef/smcas_test.xml"/>
 
     <test-suite loader="main" location="testdef/UserLoginTests.xml"/>
+    <test-suite loader="main" location="testdef/PerformFindTests.xml"/>
 </ofbiz-component>

Modified: ofbiz/trunk/framework/common/servicedef/services.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/common/servicedef/services.xml?rev=1655499&r1=1655498&r2=1655499&view=diff
==============================================================================
--- ofbiz/trunk/framework/common/servicedef/services.xml (original)
+++ ofbiz/trunk/framework/common/servicedef/services.xml Wed Jan 28 23:25:40 2015
@@ -214,6 +214,8 @@ under the License.
         <attribute name="noConditionFind" type="String" mode="IN" optional="true"><!-- find with no condition (empty entityConditionList) only done when this is Y --></attribute>
         <attribute name="filterByDate" type="String" mode="IN" optional="true"/>
         <attribute name="filterByDateValue" type="Timestamp" mode="IN" optional="true"/>
+        <attribute name="fromDateName" type="String" mode="IN" optional="true"/>
+        <attribute name="thruDateName" type="String" mode="IN" optional="true"/>
         <attribute name="queryString" type="String" mode="OUT" optional="true"/>
         <attribute name="queryStringMap" type="java.util.Map" mode="OUT" optional="true"/>
         <attribute name="orderByList" type="java.util.List" mode="OUT" optional="true"/>
@@ -243,6 +245,8 @@ under the License.
         <attribute name="distinct" type="String" mode="IN" optional="true"><!-- distinct find only done when this is Y --></attribute>
         <attribute name="filterByDate" type="String" mode="IN" optional="true"/>
         <attribute name="filterByDateValue" type="Timestamp" mode="IN" optional="true"/>
+        <attribute name="fromDateName" type="String" mode="IN" optional="true"/>
+        <attribute name="thruDateName" type="String" mode="IN" optional="true"/>
         <attribute name="viewIndex" type="Integer" mode="IN" optional="true"/>
         <attribute name="viewSize" type="Integer" mode="IN" optional="true"/>
         <attribute name="listIt" type="org.ofbiz.entity.util.EntityListIterator" mode="OUT" optional="true"/>

Modified: ofbiz/trunk/framework/common/src/org/ofbiz/common/FindServices.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/common/src/org/ofbiz/common/FindServices.java?rev=1655499&r1=1655498&r2=1655499&view=diff
==============================================================================
--- ofbiz/trunk/framework/common/src/org/ofbiz/common/FindServices.java (original)
+++ ofbiz/trunk/framework/common/src/org/ofbiz/common/FindServices.java Wed Jan 28 23:25:40 2015
@@ -479,6 +479,16 @@ public class FindServices {
             filterByDate = (String) inputFields.get("filterByDate");
         }
         Timestamp filterByDateValue = (Timestamp) context.get("filterByDateValue");
+        String fromDateName = (String) context.get("fromDateName");
+        if (UtilValidate.isEmpty(fromDateName)) {
+            // try finding in inputFields Map
+            fromDateName = (String) inputFields.get("fromDateName");
+        }
+        String thruDateName = (String) context.get("thruDateName");
+        if (UtilValidate.isEmpty(thruDateName)) {
+            // try finding in inputFields Map
+            thruDateName = (String) inputFields.get("thruDateName");
+        }
 
         Integer viewSize = (Integer) context.get("viewSize");
         Integer viewIndex = (Integer) context.get("viewIndex");
@@ -493,7 +503,7 @@ public class FindServices {
         try {
             prepareResult = dispatcher.runSync("prepareFind", UtilMisc.toMap("entityName", entityName, "orderBy", orderBy,
                                                "inputFields", inputFields, "filterByDate", filterByDate, "noConditionFind", noConditionFind,
-                                               "filterByDateValue", filterByDateValue, "userLogin", userLogin,
+                                               "filterByDateValue", filterByDateValue, "userLogin", userLogin, "fromDateName", fromDateName, "thruDateName", thruDateName,
                                                "locale", context.get("locale"), "timeZone", context.get("timeZone")));
         } catch (GenericServiceException gse) {
             return ServiceUtil.returnError(UtilProperties.getMessage(resource, "CommonFindErrorPreparingConditions", UtilMisc.toMap("errorString", gse.getMessage()), locale));
@@ -550,6 +560,8 @@ public class FindServices {
             filterByDate = (String) inputFields.get("filterByDate");
         }
         Timestamp filterByDateValue = (Timestamp) context.get("filterByDateValue");
+        String fromDateName = (String) context.get("fromDateName");
+        String thruDateName = (String) context.get("thruDateName");
 
         Map<String, Object> queryStringMap = new LinkedHashMap<String, Object>();
         ModelEntity modelEntity = delegator.getModelEntity(entityName);
@@ -562,12 +574,16 @@ public class FindServices {
         if (tmpList.size() > 0 || "Y".equals(noConditionFind)) {
             if ("Y".equals(filterByDate)) {
                 queryStringMap.put("filterByDate", filterByDate);
+                if (UtilValidate.isEmpty(fromDateName)) fromDateName = "fromDate";
+                else queryStringMap.put("fromDateName", fromDateName);
+                if (UtilValidate.isEmpty(thruDateName)) thruDateName = "thruDate";
+                else queryStringMap.put("thruDateName", thruDateName);
                 if (UtilValidate.isEmpty(filterByDateValue)) {
-                    EntityCondition filterByDateCondition = EntityUtil.getFilterByDateExpr();
+                    EntityCondition filterByDateCondition = EntityUtil.getFilterByDateExpr(fromDateName, thruDateName);
                     tmpList.add(filterByDateCondition);
                 } else {
                     queryStringMap.put("filterByDateValue", filterByDateValue);
-                    EntityCondition filterByDateCondition = EntityUtil.getFilterByDateExpr(filterByDateValue);
+                    EntityCondition filterByDateCondition = EntityUtil.getFilterByDateExpr(filterByDateValue, fromDateName, thruDateName);
                     tmpList.add(filterByDateCondition);
                 }
             }

Added: ofbiz/trunk/framework/common/src/org/ofbiz/common/test/PerformFindTests.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/common/src/org/ofbiz/common/test/PerformFindTests.java?rev=1655499&view=auto
==============================================================================
--- ofbiz/trunk/framework/common/src/org/ofbiz/common/test/PerformFindTests.java (added)
+++ ofbiz/trunk/framework/common/src/org/ofbiz/common/test/PerformFindTests.java Wed Jan 28 23:25:40 2015
@@ -0,0 +1,244 @@
+/*******************************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *******************************************************************************/
+package org.ofbiz.common.test;
+
+import java.sql.Timestamp;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+
+import org.ofbiz.base.util.Debug;
+import org.ofbiz.base.util.UtilDateTime;
+import org.ofbiz.base.util.UtilMisc;
+import org.ofbiz.base.util.UtilValidate;
+import org.ofbiz.entity.GenericEntityException;
+import org.ofbiz.entity.GenericValue;
+import org.ofbiz.entity.util.EntityListIterator;
+import org.ofbiz.service.ServiceUtil;
+import org.ofbiz.service.testtools.OFBizTestCase;
+
+public class PerformFindTests extends OFBizTestCase {
+
+    private static final String module = PerformFindTests.class.getName();
+    public PerformFindTests(String name) {
+        super(name);
+    }
+
+    private List<GenericValue> getCompleteList(Map<String, Object> context) {
+        EntityListIterator listIt = (EntityListIterator) context.get("listIt");
+        List<GenericValue> foundElements = new LinkedList<GenericValue>();
+        if (listIt != null) {
+            try {
+                foundElements = listIt.getCompleteList();
+            } catch (GenericEntityException e) {
+                Debug.logError(" Failed to extract values from EntityListIterator after a performFind service", module);
+            } finally {
+                try {
+                    listIt.close();
+                } catch (GenericEntityException e) {
+                    Debug.logError(" Failed to close EntityListIterator after a performFind service", module);
+                }
+            }
+        }
+        return foundElements;
+    }
+
+    private void prepareData() throws Exception {
+        if (delegator.findOne("TestingType", false, "testingTypeId", "PERFOMFINDTEST") == null) {
+            delegator.create("TestingType", "testingTypeId", "PERFOMFINDTEST");
+            delegator.create("Testing", "testingId", "PERF_TEST_1", "testingTypeId", "PERFOMFINDTEST", "testingName", "nice name one");
+            delegator.create("Testing", "testingId", "PERF_TEST_2", "testingTypeId", "PERFOMFINDTEST", "testingName", "nice other name two");
+            delegator.create("Testing", "testingId", "PERF_TEST_3", "testingTypeId", "PERFOMFINDTEST", "testingName", "medium name three");
+            delegator.create("Testing", "testingId", "PERF_TEST_4", "testingTypeId", "PERFOMFINDTEST", "testingName", "bad nme four");
+            delegator.create("Testing", "testingId", "PERF_TEST_5", "testingTypeId", "PERFOMFINDTEST", "testingName", "nice name one");
+            delegator.create("Testing", "testingId", "PERF_TEST_6", "testingTypeId", "PERFOMFINDTEST");
+            delegator.create("Testing", "testingId", "PERF_TEST_7", "testingTypeId", "PERFOMFINDTEST");
+            delegator.create("Testing", "testingId", "PERF_TEST_8", "testingTypeId", "PERFOMFINDTEST");
+            delegator.create("Testing", "testingId", "PERF_TEST_9", "testingTypeId", "PERFOMFINDTEST");
+
+            Timestamp nowTimestamp = UtilDateTime.nowTimestamp();
+            delegator.create("TestingNode", "testingNodeId", "NODE_1", "description", "Date Node");
+            delegator.create("TestingNodeMember", "testingNodeId", "NODE_1", "testingId", "PERF_TEST_5",
+                    "fromDate", UtilDateTime.addDaysToTimestamp(nowTimestamp, 1d),
+                    "thruDate", UtilDateTime.addDaysToTimestamp(nowTimestamp, 3d),
+                    "extendFromDate", UtilDateTime.addDaysToTimestamp(nowTimestamp, -1d),
+                    "extendThruDate", UtilDateTime.addDaysToTimestamp(nowTimestamp, 3d));
+            delegator.create("TestingNodeMember", "testingNodeId", "NODE_1", "testingId", "PERF_TEST_6",
+                    "fromDate", UtilDateTime.addDaysToTimestamp(nowTimestamp, -1d),
+                    "thruDate", UtilDateTime.addDaysToTimestamp(nowTimestamp, 1d),
+                    "extendFromDate", UtilDateTime.addDaysToTimestamp(nowTimestamp, -1d),
+                    "extendThruDate", UtilDateTime.addDaysToTimestamp(nowTimestamp, 3d));
+            delegator.create("TestingNodeMember", "testingNodeId", "NODE_1", "testingId", "PERF_TEST_7",
+                    "fromDate", UtilDateTime.addDaysToTimestamp(nowTimestamp, -1d),
+                    "thruDate", UtilDateTime.addDaysToTimestamp(nowTimestamp, 1d),
+                    "extendFromDate", UtilDateTime.addDaysToTimestamp(nowTimestamp, -1d),
+                    "extendThruDate", UtilDateTime.addDaysToTimestamp(nowTimestamp, 3d));
+            delegator.create("TestingNodeMember", "testingNodeId", "NODE_1", "testingId", "PERF_TEST_8",
+                    "fromDate", UtilDateTime.addDaysToTimestamp(nowTimestamp, -3d),
+                    "thruDate", UtilDateTime.addDaysToTimestamp(nowTimestamp, 1d),
+                    "extendFromDate", UtilDateTime.addDaysToTimestamp(nowTimestamp, -1d),
+                    "extendThruDate", UtilDateTime.addDaysToTimestamp(nowTimestamp, 3d));
+            delegator.create("TestingNodeMember", "testingNodeId", "NODE_1", "testingId", "PERF_TEST_9",
+                    "fromDate", UtilDateTime.addDaysToTimestamp(nowTimestamp, -3d),
+                    "thruDate", UtilDateTime.addDaysToTimestamp(nowTimestamp, -1d),
+                    "extendFromDate", UtilDateTime.addDaysToTimestamp(nowTimestamp, -1d),
+                    "extendThruDate", UtilDateTime.addDaysToTimestamp(nowTimestamp, -3d));
+        }
+    }
+
+    public void testPerformFindConditionFieldEquals() throws Exception {
+        GenericValue userLogin = delegator.findOne("UserLogin", true, "userLoginId", "system");
+        prepareData();
+
+        Map<String, Object> inputFields = new HashMap<String, Object>();
+        //first test without condition
+        Map<String, Object> performFindMap = UtilMisc.toMap("userLogin", userLogin, "entityName", "Testing", "inputFields", inputFields);
+        Map<String, Object> result = dispatcher.runSync("performFind", performFindMap);
+        assertTrue(ServiceUtil.isSuccess(result));
+        List<GenericValue> foundElements = getCompleteList(result);
+        assertTrue("performFind search without condition ", UtilValidate.isEmpty(foundElements));
+
+        //second test without condition and noConditionFind to Y
+        performFindMap = UtilMisc.toMap("userLogin", userLogin, "entityName", "Testing", "inputFields", inputFields, "noConditionFind", "Y");
+        result = dispatcher.runSync("performFind", performFindMap);
+        assertTrue(ServiceUtil.isSuccess(result));
+        foundElements = getCompleteList(result);
+        assertEquals("performFind search without condition with noConditionFind Y", 9, foundElements.size());
+
+        //third test with equals condition on testingTypeId
+        inputFields = UtilMisc.toMap("testingTypeId", "PERFOMFINDTEST");
+        performFindMap = UtilMisc.toMap("userLogin", userLogin, "entityName", "Testing", "inputFields", inputFields);
+        result = dispatcher.runSync("performFind", performFindMap);
+        assertTrue(ServiceUtil.isSuccess(result));
+        foundElements = getCompleteList(result);
+        List<GenericValue> testingElements = delegator.findAll("Testing", false);
+        assertEquals("performFind search without condition with equals on testingTypeId", testingElements.size(), foundElements.size());
+
+        //fourth test with equals condition on testingId
+        inputFields = UtilMisc.toMap("testingId", "PERF_TEST_1");
+        performFindMap = UtilMisc.toMap("userLogin", userLogin, "entityName", "Testing", "inputFields", inputFields);
+        result = dispatcher.runSync("performFind", performFindMap);
+        assertTrue(ServiceUtil.isSuccess(result));
+        foundElements = getCompleteList(result);
+        assertEquals("performFind search without condition with equals on testingId", 1, foundElements.size());
+    }
+
+    public void testPerformFindConditionFieldLike() throws Exception {
+        GenericValue userLogin = delegator.findOne("UserLogin", true, "userLoginId", "system");
+        prepareData();
+
+        //first test like condition
+        Map<String, Object> inputFields = UtilMisc.toMap("testingName", "nice", "testingName_op", "like");
+        Map<String, Object> performFindMap = UtilMisc.toMap("userLogin", userLogin, "entityName", "Testing", "inputFields", inputFields);
+        Map<String, Object> result = dispatcher.runSync("performFind", performFindMap);
+        assertTrue(ServiceUtil.isSuccess(result));
+        List<GenericValue> foundElements = getCompleteList(result);
+        assertEquals("performFind search with like nice% condition", 3, foundElements.size());
+
+        //second test contains condition
+        inputFields = UtilMisc.toMap("testingName", "name", "testingName_op", "contains");
+        performFindMap = UtilMisc.toMap("userLogin", userLogin, "entityName", "Testing", "inputFields", inputFields);
+        result = dispatcher.runSync("performFind", performFindMap);
+        assertTrue(ServiceUtil.isSuccess(result));
+        foundElements = getCompleteList(result);
+        assertEquals("performFind search with like %name% condition", 4, foundElements.size());
+
+        //third test not-like condition
+        inputFields = UtilMisc.toMap("testingName", "bad", "testingName_op", "not-like");
+        performFindMap = UtilMisc.toMap("userLogin", userLogin, "entityName", "Testing", "inputFields", inputFields);
+        result = dispatcher.runSync("performFind", performFindMap);
+        assertTrue(ServiceUtil.isSuccess(result));
+        foundElements = getCompleteList(result);
+        assertEquals("performFind search with not like bad% condition", 4, foundElements.size());
+
+        //fourth test not-contains condition
+        inputFields = UtilMisc.toMap("testingName", "name", "testingName_op", "not-contains");
+        performFindMap = UtilMisc.toMap("userLogin", userLogin, "entityName", "Testing", "inputFields", inputFields);
+        result = dispatcher.runSync("performFind", performFindMap);
+        assertTrue(ServiceUtil.isSuccess(result));
+        foundElements = getCompleteList(result);
+        assertEquals("performFind search with not like %name% condition", 1, foundElements.size());
+    }
+
+    public void testPerformFindConditionDistinct() throws Exception {
+        GenericValue userLogin = delegator.findOne("UserLogin", true, "userLoginId", "system");
+        prepareData();
+
+        //first test without distinct condition
+        Map<String, Object> inputFields = UtilMisc.toMap("testingTypeId", "PERFOMFINDTEST");
+        List<String> fieldList= UtilMisc.toList("testingName", "testingTypeId");
+        Map<String, Object> performFindMap = UtilMisc.toMap("userLogin", userLogin, "entityName", "Testing", "inputFields", inputFields, "fieldList", fieldList, "distinct", "N");
+        Map<String, Object> result = dispatcher.runSync("performFind", performFindMap);
+        assertTrue(ServiceUtil.isSuccess(result));
+        List<GenericValue> foundElements = getCompleteList(result);
+        assertEquals("performFind search with distinct N", 9, foundElements.size());
+
+        //second test with distinct condition
+        performFindMap = UtilMisc.toMap("userLogin", userLogin, "entityName", "Testing", "inputFields", inputFields, "fieldList", fieldList, "distinct", "Y");
+        result = dispatcher.runSync("performFind", performFindMap);
+        assertTrue(ServiceUtil.isSuccess(result));
+        foundElements = getCompleteList(result);
+        assertEquals("performFind search with distinct Y", 5, foundElements.size());
+    }
+
+    public void testPerformFindFilterByDate() throws Exception {
+        GenericValue userLogin = delegator.findOne("UserLogin", true, "userLoginId", "system");
+        prepareData();
+
+        //first test without filterDate condition
+        Map<String, Object> inputFields = UtilMisc.toMap("testingNodeId", "NODE_1");
+        Map<String, Object> performFindMap = UtilMisc.toMap("userLogin", userLogin, "entityName", "TestingNodeMember", "inputFields", inputFields, "filterByDate", "N", "filterByDateValue", UtilDateTime.nowTimestamp());
+        Map<String, Object> result = dispatcher.runSync("performFind", performFindMap);
+        assertTrue(ServiceUtil.isSuccess(result));
+        List<GenericValue> foundElements = getCompleteList(result);
+        assertEquals("performFind search with filterDate N", 5, foundElements.size());
+
+        //second test with filterDate condition
+        performFindMap = UtilMisc.toMap("userLogin", userLogin, "entityName", "TestingNodeMember", "inputFields", inputFields, "filterByDate", "Y", "filterByDateValue", UtilDateTime.nowTimestamp());
+        result = dispatcher.runSync("performFind", performFindMap);
+        assertTrue(ServiceUtil.isSuccess(result));
+        foundElements = getCompleteList(result);
+        assertEquals("performFind search with filterDate Y", 3, foundElements.size());
+    }
+
+    public void testPerformFindFilterByDateWithDedicateDateField() throws Exception {
+        GenericValue userLogin = delegator.findOne("UserLogin", true, "userLoginId", "system");
+        prepareData();
+
+        //first test without filterDate condition
+        Map<String, Object> inputFields = UtilMisc.toMap("testingNodeId", "NODE_1");
+        Map<String, Object> performFindMap = UtilMisc.toMap("userLogin", userLogin, "entityName", "TestingNodeMember", "inputFields", inputFields,
+                "filterByDate", "N", "filterByDateValue", UtilDateTime.nowTimestamp(),
+                "fromDateName", "extendFromDate", "thruDateName", "extendThruDate");
+        Map<String, Object> result = dispatcher.runSync("performFind", performFindMap);
+        assertTrue(ServiceUtil.isSuccess(result));
+        List<GenericValue> foundElements = getCompleteList(result);
+        assertEquals("performFind search with filterDate N and specific date field name", 5, foundElements.size());
+
+        //second test with filterDate condition
+        performFindMap = UtilMisc.toMap("userLogin", userLogin, "entityName", "TestingNodeMember", "inputFields", inputFields,
+                "filterByDate", "Y", "filterByDateValue", UtilDateTime.nowTimestamp(),
+                "fromDateName", "extendFromDate", "thruDateName", "extendThruDate");
+        result = dispatcher.runSync("performFind", performFindMap);
+        assertTrue(ServiceUtil.isSuccess(result));
+        foundElements = getCompleteList(result);
+        assertEquals("performFind search with filterDate Y and specific date field name", 4, foundElements.size());
+    }
+}

Propchange: ofbiz/trunk/framework/common/src/org/ofbiz/common/test/PerformFindTests.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: ofbiz/trunk/framework/common/src/org/ofbiz/common/test/PerformFindTests.java
------------------------------------------------------------------------------
    svn:keywords = Date Rev Author URL Id

Propchange: ofbiz/trunk/framework/common/src/org/ofbiz/common/test/PerformFindTests.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: ofbiz/trunk/framework/common/testdef/PerformFindTests.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/common/testdef/PerformFindTests.xml?rev=1655499&view=auto
==============================================================================
--- ofbiz/trunk/framework/common/testdef/PerformFindTests.xml (added)
+++ ofbiz/trunk/framework/common/testdef/PerformFindTests.xml Wed Jan 28 23:25:40 2015
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+-->
+
+<test-suite suite-name="performfindtests"
+        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+        xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/test-suite.xsd">
+
+    <test-case case-name="performfind-tests">
+        <junit-test-suite class-name="org.ofbiz.common.test.PerformFindTests"/>
+    </test-case>
+
+</test-suite>
\ No newline at end of file

Propchange: ofbiz/trunk/framework/common/testdef/PerformFindTests.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: ofbiz/trunk/framework/common/testdef/PerformFindTests.xml
------------------------------------------------------------------------------
    svn:keywords = Date Rev Author URL Id

Propchange: ofbiz/trunk/framework/common/testdef/PerformFindTests.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Modified: ofbiz/trunk/framework/entity/entitydef/entitymodel_test.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/entity/entitydef/entitymodel_test.xml?rev=1655499&r1=1655498&r2=1655499&view=diff
==============================================================================
--- ofbiz/trunk/framework/entity/entitydef/entitymodel_test.xml (original)
+++ ofbiz/trunk/framework/entity/entitydef/entitymodel_test.xml Wed Jan 28 23:25:40 2015
@@ -162,10 +162,12 @@ under the License.
     <entity entity-name="TestingNodeMember"
             package-name="org.ofbiz.entity.test"
             title="Testing Node Member">
-      <field name="testingNodeId" type="id-ne"></field>
-      <field name="testingId" type="id-ne"></field>
-      <field name="fromDate" type="date-time"></field>
-      <field name="thruDate" type="date-time"></field>
+      <field name="testingNodeId" type="id-ne"/>
+      <field name="testingId" type="id-ne"/>
+      <field name="fromDate" type="date-time"/>
+      <field name="thruDate" type="date-time"/>
+      <field name="extendFromDate" type="date-time"/><!--use to test filterDate -->
+      <field name="extendThruDate" type="date-time"/><!--use to test filterDate -->
       <prim-key field="testingNodeId"/>
       <prim-key field="testingId"/>
       <prim-key field="fromDate"/>