Announcement

Collapse
No announcement yet.
X
  • Filter
  • Time
Clear All
new posts

    #16
    The problem with post #13 is that, by design, we do not validate missing values on update requests (because they are assumed to be missing because the user hasn't changed them). We are discussing how best to deal with this issue.

    The problem in post #14 is a client-side problem with validating fields with a conditional "required" validator, specifically when editing in a ListGrid: it is not to do with the "notNull" condition as such. We have made a change to correct this; it will be in tomorrow's 11.1d / 5.1d builds.

    Comment


      #17
      Originally posted by Isomorphic View Post
      The problem in post #14 is a client-side problem with validating fields with a conditional "required" validator, specifically when editing in a ListGrid: it is not to do with the "notNull" condition as such. We have made a change to correct this; it will be in tomorrow's 11.1d / 5.1d builds.
      SmartClient Version: SNAPSHOT_v11.1d_2016-12-21/Enterprise Deployment (built 2016-12-21)
      I can confirm it's fixed, thank you very much.

      Originally posted by Isomorphic View Post
      The problem with post #13 is that, by design, we do not validate missing values on update requests (because they are assumed to be missing because the user hasn't changed them).
      oh, right, I hadn't considered that.

      Originally posted by Isomorphic View Post
      We are discussing how best to deal with this issue.
      Thanks for your effort on this.

      Comment


        #18
        We have implemented some improved handling of conditional "required" validators that should solve your issues. This will be in 6.1 / 11.1 builds as of tomorrow, January 12. Note, this can mean that we have to delegate some conditional validations to the server, and also perform a database fetch. Please read the documentation for DataSourceField.required (in tomorrow's build, that is) for an explanation of the complexities involved.

        Comment


          #19
          SmartClient Version: SNAPSHOT_v11.1d_2017-01-19/Enterprise Development Only (built 2017-01-19)

          Hello, the test case from post #13 now is working, the update operation returns the correct validation error, thank you very much.

          Only I find the server logs a bit odd, you may notice it says:
          'units' conditional validator of type 'required' is: inactive
          Code:
           === 2017-01-19 14:45:10,216 [ec-7] INFO  RequestContext - URL: '/isomorphic/IDACall', User-Agent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.95 Safari/537.36': Safari with Accept-Encoding header
            === 2017-01-19 14:45:10,217 [ec-7] DEBUG XML - Parsed XML from (in memory stream): 1ms
            === 2017-01-19 14:45:10,219 [ec-7] DEBUG RPCManager - Processing 1 requests.
            === 2017-01-19 14:45:10,219 [ec-7] DEBUG RPCManager - Request #1 (DSRequest) payload: {
                criteria:{
                    itemID:3960
                },
                values:{
                    SKU:"fail",
                    itemName:"yup",
                    category:"",
                    itemID:3960,
                    unitCost:0
                },
                operationConfig:{
                    dataSource:"supplyItem",
                    repo:null,
                    operationType:"update",
                    textMatchStyle:"exact"
                },
                componentId:"testForm",
                appID:"builtinApplication",
                operation:"supplyItem_update",
                oldValues:{
                    SKU:"foobar",
                    itemName:"yup",
                    category:"",
                    itemID:3960,
                    unitCost:0
                }
            }
            === 2017-01-19 14:45:10,219 [ec-7] INFO  IDACall - Performing 1 operation(s)
            === 2017-01-19 14:45:10,219 [ec-7] DEBUG DeclarativeSecurity - Processing security checks for DataSource null, field null
            === 2017-01-19 14:45:10,219 [ec-7] DEBUG DeclarativeSecurity - DataSource supplyItem is not in the pre-checked list, processing...
            === 2017-01-19 14:45:10,220 [ec-7] DEBUG AppBase - [builtinApplication.supplyItem_update] No userTypes defined, allowing anyone access to all operations for this application
            === 2017-01-19 14:45:10,220 [ec-7] DEBUG AppBase - [builtinApplication.supplyItem_update] No public zero-argument method named '_supplyItem_update' found, performing generic datasource operation
            === 2017-01-19 14:45:10,221 [ec-7] DEBUG DefaultValidators - [builtinApplication.supplyItem_update] on field: 'units' for validator type 'required', 'applyWhen' is:
            {
                operator:"and",
                criteria:[
                    {
                        fieldName:"SKU",
                        operator:"notEqual",
                        value:"foobar"
                    }
                ]
            }
            record is:
            {
                category:"",
                itemName:"yup",
                itemID:3960,
                unitCost:0.0,
                SKU:"fail",
                units:null
            }
            === 2017-01-19 14:45:10,221 [ec-7] DEBUG DeclarativeSecurity - [builtinApplication.supplyItem_update] Processing security checks for DataSource null, field null
            === 2017-01-19 14:45:10,221 [ec-7] DEBUG DeclarativeSecurity - [builtinApplication.supplyItem_update] Request is not a client request, ignoring security checks.
            === 2017-01-19 14:45:10,221 [ec-7] DEBUG AppBase - [builtinApplication.supplyItem_update, builtinApplication.null] No userTypes defined, allowing anyone access to all operations for this application
            === 2017-01-19 14:45:10,221 [ec-7] DEBUG AppBase - [builtinApplication.supplyItem_update, builtinApplication.null] No public zero-argument method named '_null' found, performing generic datasource operation
            === 2017-01-19 14:45:10,221 [ec-7] INFO  SQLDataSource - [builtinApplication.supplyItem_update, builtinApplication.null] Performing fetch operation with
                criteria: {itemID:3960}    values: {itemID:3960}
            === 2017-01-19 14:45:10,222 [ec-7] INFO  SQLDataSource - [builtinApplication.supplyItem_update, builtinApplication.null] derived query: SELECT $defaultSelectClause FROM $defaultTableClause WHERE $defaultWhereClause
            === 2017-01-19 14:45:10,222 [ec-7] INFO  SQLDataSource - [builtinApplication.supplyItem_update, builtinApplication.null] 733: Executing SQL query on 'HSQLDB': SELECT supplyItem.itemID, supplyItem.itemName, supplyItem.SKU, supplyItem.description, supplyItem.category, supplyItem.units, supplyItem.unitCost, supplyItem.inStock, supplyItem.nextShipment FROM supplyItem WHERE (supplyItem.itemID=3960)
            === 2017-01-19 14:45:10,222 [ec-7] DEBUG SQLConnectionManager - [builtinApplication.supplyItem_update, builtinApplication.null] Borrowed connection '153267032'
            === 2017-01-19 14:45:10,222 [ec-7] INFO  SQLDriver - [builtinApplication.supplyItem_update, builtinApplication.null] Executing SQL query on 'HSQLDB' using connection '153267032': SELECT supplyItem.itemID, supplyItem.itemName, supplyItem.SKU, supplyItem.description, supplyItem.category, supplyItem.units, supplyItem.unitCost, supplyItem.inStock, supplyItem.nextShipment FROM supplyItem WHERE (supplyItem.itemID=3960)
            === 2017-01-19 14:45:10,224 [ec-7] INFO  DSResponse - [builtinApplication.supplyItem_update] DSResponse: List with 1 items
            === 2017-01-19 14:45:10,225 [ec-7] DEBUG DefaultValidators - [builtinApplication.supplyItem_update] NOTE: Record after applying stored values is:
            {
                category:"",
                itemName:"yup",
                itemID:3960,
                unitCost:0.0,
                SKU:"foobar",
                units:null
            }
            === 2017-01-19 14:45:10,226 [ec-7] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] criterion (class com.isomorphic.criteria.criterion.SimpleCriterion): {
                operatorId:"notEqual",
                value:"foobar",
                fieldName:"SKU"
            }: And
            === 2017-01-19 14:45:10,226 [ec-7] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] value (class java.lang.String): "foobar": isEqualToConfiguredValue
            === 2017-01-19 14:45:10,226 [ec-7] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] operand (class java.lang.String): "foobar": isEqualToConfiguredValue
            === 2017-01-19 14:45:10,226 [ec-7] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] passedOp (class java.lang.String): "foobar": isEqualToConfiguredValue
            === 2017-01-19 14:45:10,226 [ec-7] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] isEqualToConfiguredValue returnstrue
            === 2017-01-19 14:45:10,226 [ec-7] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] And 0/0: false
           [B]  === 2017-01-19 14:45:10,226 [ec-7] INFO  DefaultValidators - [builtinApplication.supplyItem_update] on field: 'units' conditional validator of type 'required' is: inactive
           [/B]  === 2017-01-19 14:45:10,227 [ec-7] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] criterion (class com.isomorphic.criteria.criterion.SimpleCriterion): {
                operatorId:"notEqual",
                value:"foobar",
                fieldName:"SKU"
            }: And
            === 2017-01-19 14:45:10,227 [ec-7] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] value (class java.lang.String): "fail": isEqualToConfiguredValue
            === 2017-01-19 14:45:10,227 [ec-7] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] operand (class java.lang.String): "foobar": isEqualToConfiguredValue
            === 2017-01-19 14:45:10,227 [ec-7] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] passedOp (class java.lang.String): "foobar": isEqualToConfiguredValue
            === 2017-01-19 14:45:10,227 [ec-7] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] isEqualToConfiguredValue returnsfalse
            === 2017-01-19 14:45:10,227 [ec-7] DEBUG DefaultOperators - [builtinApplication.supplyItem_update] And 0/0: true
            === 2017-01-19 14:45:10,227 [ec-7] DEBUG ValidationContext - [builtinApplication.supplyItem_update] Adding validation errors at path '/supplyItem/units': {errorMessage=custom error message}
            === 2017-01-19 14:45:10,228 [ec-7] INFO  Validation - [builtinApplication.supplyItem_update] Validation error: [
                {
                    units:{
                        errorMessage:"custom error message"
                    }
                }
            ]
            === 2017-01-19 14:45:10,228 [ec-7] DEBUG RPCManager - Content type for RPC transaction: text/plain; charset=UTF-8
            === 2017-01-19 14:45:10,228 [ec-7] DEBUG RPCManager - non-DMI response, dropExtraFields: false
            === 2017-01-19 14:45:10,228 [ec-7] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 738
            === 2017-01-19 14:45:10,228 [ec-7] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 738
            === 2017-01-19 14:45:10,228 [ec-7] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 738
            === 2017-01-19 14:45:10,228 [ec-7] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 733
            === 2017-01-19 14:45:10,229 [ec-7] DEBUG SQLDriver - Freeing SQLDriver dbConnection 153267032 for SQLDriver instance 1530071453
            === 2017-01-19 14:45:10,229 [ec-7] DEBUG SQLConnectionManager - About to close connection with hashcode "153267032"
            === 2017-01-19 14:45:10,229 [ec-7] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 733
            === 2017-01-19 14:45:10,229 [ec-7] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 733
            === 2017-01-19 14:45:10,229 [ec-7] INFO  Compression - /isomorphic/IDACall: 216 -> 179 bytes

          Comment


            #20
            Hello, unfortunately with the latest build I've got a new problem.
            The update operation on the dataSource which has the <applyWhen> validator, passes through a DMI, where I'm executing another update or insert operation, on another dataSource.
            The latter dataSource, has an includeFrom field, which includes (from the former dataSource) the field with the applyWhen validator.
            Actually it seems that the validator is enforced on that field (and fails). Shouldn't it be ignored, being an included field?
            Last edited by claudiobosticco; 20 Jan 2017, 00:03.

            Comment


              #21
              Hi all,

              without knowing all the details: I have a similar problem (validator run on included field) as well. Unfortunately I failed to isolate the problem so far. Perhaps this is related?
              claudiobosticco: Does this happen consistently for you or after running the appliation for hours/days?

              Best regards
              Blama

              Comment


                #22
                Hi Blama, it happens consistently.

                Isomorphic I've also another problem with my actual use case, where I've got two fields with conditional required validators:

                Code:
                <DataSource xmlns:fmt="WEB-INF/" xmlns="http://www.smartclient.com/schema"
                            ID="JTK_NOMI_TICKET"
                            serverType="sql"
                            dbName="dbJpcEP"
                            schema="DBSALES"
                            tableName="JTK_NOMI_TICKET"
                            allowAdvancedCriteria="true"
                            requiresAuthentication="true"
                            dropExtraFields="false"
                >
                    <fmt:bundle basename="i18nMessages" encoding="utf-8"/>
                    <fields>
                        <field sqlType="decimal" primaryKey="true" name="ID_REC" type="sequence" hidden="true" sequenceName="SEQUENCE_ID_JTK"/>
                        <field name="NOME" type="capitalizeFullyTrimText" required="true" length="100"/>
                        <field name="COGNOME" type="capitalizeFullyTrimText" required="true" length="100"/>
                        <field name="DATA_NASCITA" type="date" required="true"/>
                        <field name="EMAIL" type="trimText" length="200"/> <!--todo deve essere required se facciamo perfezionamento-->
                        <field name="ID_NAZIONE_FK" type="integer" foreignKey="JPC_NAZIONI.ID_REC" joinType="outer" required="true" displayField="NAZIONE"/>
                        <field name="NAZIONE" type="text" includeFrom="JPC_NAZIONI.NOME"/>
                        <field name="ID_COMUNE_FK" type="integer" foreignKey="JPC_COMUNI.ID_REC" joinType="outer" displayField="COMUNE">
                             <validators>
                                 <validator type="required" stopIfFalse="true" dependentFields="ID_NAZIONE_FK">
                                     <applyWhen operator="and">
                                         <criteria>
                                             <criterion fieldName="ID_NAZIONE_FK" operator="equals" value="118"/>
                                         </criteria>
                                     </applyWhen>
                                 </validator>
                             </validators>
                        </field>
                        <field name="COMUNE" type="text" includeFrom="JPC_COMUNI.NOME"/>
                        <field name="LOCALITA" type="text" length="100">
                            <validators>
                                <validator type="required" stopIfFalse="true" dependentFields="ID_NAZIONE_FK">
                                    <applyWhen operator="and">
                                        <criteria>
                                            <criterion fieldName="ID_NAZIONE_FK" operator="notEqual" value="118"/>
                                        </criteria>
                                    </applyWhen>
                                </validator>
                            </validators>
                        </field>
                
                        <field name="NOMINATIVO_IN_RUBRICA" type="boolean" sqlStorageStrategy="singleCharTF"
                               customSelectExpression="decode(JTK_RUBRICA_TITOLARI.ID_REC, null, 'F', 'T')"/>
                
                        <field name="CREATOR" type="creator" editRequires="false"/>
                        <field name="CREATOR_TIMESTAMP" type="creatorTimestamp" editRequires="false"/>
                        <field name="MODIFIER" type="modifier" editRequires="false"/>
                        <field name="MODIFIER_TIMESTAMP" type="modifierTimestamp" editRequires="false"/>
                    </fields>
                    <operationBindings>
                        <operationBinding operationType="fetch" requiresRole="">
                            <tableClause>$defaultTableClause, JTK_RUBRICA_TITOLARI</tableClause>
                            <whereClause>
                                $defaultWhereClause
                                and JTK_NOMI_TICKET.ID_REC = JTK_RUBRICA_TITOLARI.ID_NOME_RUBRICA_FK (+)
                                and ($sessionAttributes.ID_TITOLARE_IMPERSONATO_FK = JTK_RUBRICA_TITOLARI.ID_TITOLARE_FK or JTK_RUBRICA_TITOLARI.ID_TITOLARE_FK is null)
                            </whereClause>
                        </operationBinding>
                        <operationBinding operationType="fetch" operationId="fetchAll" requiresRole="ROLE_TICKETING"/>
                        <operationBinding operationType="add" requiresRole="ROLE_TICKETING"/>
                        <operationBinding operationType="update" requiresRole="ROLE_TICKETING"/>
                        <operationBinding operationType="add" operationId="salvaNomeBigliettoPagamento" serverMethod="salvaNomeBigliettoPagamento" requiresRole="">
                            <serverObject lookupStyle="new" className="com.juve.jtk.biglietti.pagamento.SalvaNomeBigliettoPagamento"/>
                        </operationBinding>
                        <operationBinding operationType="add" operationId="salvaNomeBigliettoOmaggio" serverMethod="salvaNomeBigliettoOmaggio" requiresRole="">
                            <serverObject lookupStyle="new" className="com.juve.jtk.biglietti.SalvaNomeBigliettoOmaggio"/>
                        </operationBinding>
                        <operationBinding operationType="update" operationId="salvaNomeBigliettoOmaggio" serverMethod="salvaNomeBigliettoOmaggio" requiresRole="">
                            <serverObject lookupStyle="new" className="com.juve.jtk.biglietti.SalvaNomeBigliettoOmaggio"/>
                        </operationBinding>
                        <!--todo implementare rimozione da rubrica? magari in gestione ad hoc?-->
                        <operationBinding operationType="remove" requiresRole=""/>
                    </operationBindings>
                </DataSource>
                As you may see, ID_NAZIONE_FK is != 118, so ID_COMUNE_FK is not required, and LOCALITA is required.

                ID_COMUNE_FK is null (I need to update it to null), and I get a validation error about it:

                Code:
                2017-01-19 18:15:40,939 DEBUG RPCManager Request #1 (DSRequest) payload: {
                    criteria:{
                        ID_REC:12601
                    },
                    values:{
                        ID_BIGLIETTO_PAGAMENTO_FK:4402,
                        ID_NAZIONE_FK:15,
                        NAZIONE:"Azerbaigian",
                        NOMINATIVO_IN_RUBRICA:false,
                        COGNOME:"Gfddsf",
                        NOME:"Dgfdfs",
                        DATA_NASCITA:new Date(1483484400000),
                        ID_COMUNE_FK:null,
                        COMUNE:null,
                        EMAIL:null,
                        ID_REC:12601,
                        CREATOR:"claudio.bosticco@juventus.com",
                        CREATOR_TIMESTAMP:new Date(1484846082000),
                        MODIFIER:"claudio.bosticco@juventus.com",
                        MODIFIER_TIMESTAMP:new Date(1484846082000),
                        LOCALITA:"rgdfsfs"
                    },
                    operationConfig:{
                        dataSource:"JTK_NOMI_TICKET",
                        repo:null,
                        operationType:"update",
                        textMatchStyle:"exact"
                    },
                    componentId:"nomiBigliettiPagamentoForm",
                    appID:"builtinApplication",
                    operation:"salvaNomeBigliettoPagamento",
                    oldValues:{
                        ID_BIGLIETTO_PAGAMENTO_FK:4402,
                        ID_NAZIONE_FK:118,
                        NAZIONE:"Italia",
                        NOMINATIVO_IN_RUBRICA:false,
                        COGNOME:"Gfddsf",
                        NOME:"Dgfdfs",
                        DATA_NASCITA:new Date(1483484400000),
                        ID_COMUNE_FK:18,
                        COMUNE:"ACERRA",
                        EMAIL:null,
                        ID_REC:12601,
                        CREATOR:"claudio.bosticco@juventus.com",
                        CREATOR_TIMESTAMP:new Date(1484846082000),
                        MODIFIER:"claudio.bosticco@juventus.com",
                        MODIFIER_TIMESTAMP:new Date(1484846082000)
                    }
                } 
                2017-01-19 18:15:40,939 INFO  IDACall Performing 1 operation(s) 
                2017-01-19 18:15:40,939 DEBUG DeclarativeSecurity Processing security checks for DataSource null, field null 
                2017-01-19 18:15:40,939 DEBUG DeclarativeSecurity DataSource JTK_NOMI_TICKET is not in the pre-checked list, processing... 
                2017-01-19 18:15:40,940 INFO  DeclarativeSecurity Field 'CREATOR' is not allowed for 'update' operation for user 'claudio.bosticco@juventus.com'.  Removing this field from the record 
                2017-01-19 18:15:40,940 INFO  DeclarativeSecurity Field 'CREATOR_TIMESTAMP' is not allowed for 'update' operation for user 'claudio.bosticco@juventus.com'.  Removing this field from the record 
                2017-01-19 18:15:40,940 INFO  DeclarativeSecurity Field 'MODIFIER' is not allowed for 'update' operation for user 'claudio.bosticco@juventus.com'.  Removing this field from the record 
                2017-01-19 18:15:40,940 INFO  DeclarativeSecurity Field 'MODIFIER_TIMESTAMP' is not allowed for 'update' operation for user 'claudio.bosticco@juventus.com'.  Removing this field from the record 
                2017-01-19 18:15:40,941 DEBUG BasicDataSource Validating 1 'JTK_NOMI_TICKET's at path '' 
                2017-01-19 18:15:40,941 DEBUG BasicDataSource Validating a 'JTK_NOMI_TICKET' at path '' 
                2017-01-19 18:15:40,941 DEBUG PoolableDataSourceFactory Tried to create DataSource  of type 'capitalizeFullyTrimText' but null was returned 
                2017-01-19 18:15:40,941 DEBUG BasicDataSource for field: LOCALITAadding automatically generated lengthRange validator for length:100 
                2017-01-19 18:15:40,942 DEBUG DefaultValidators on field: 'LOCALITA' for validator type 'required', 'applyWhen' is:
                {
                    operator:"and",
                    criteria:[
                        {
                            fieldName:"ID_NAZIONE_FK",
                            operator:"notEqual",
                            value:"118"
                        }
                    ]
                }
                record is:
                {
                    ID_REC:12601,
                    NOMINATIVO_IN_RUBRICA:false,
                    LOCALITA:"rgdfsfs",
                    ID_COMUNE_FK:null,
                    ID_NAZIONE_FK:15,
                    NOME:"Dgfdfs",
                    COGNOME:"Gfddsf",
                    ID_BIGLIETTO_PAGAMENTO_FK:4402,
                    NAZIONE:"Azerbaigian",
                    DATA_NASCITA:new Date(1483484400000),
                    EMAIL:null,
                    MODIFIER_TIMESTAMP:new Date(1484846140940),
                    MODIFIER:"claudio.bosticco@juventus.com",
                    COMUNE:null
                } 
                2017-01-19 18:15:40,943 DEBUG BasicDataSource Looking up superDS of DataSource JPC_NAZIONI: 'JPC_NAZIONI_BASE' 
                2017-01-19 18:15:40,943 DEBUG SQLDataSource DataSource 1719 acquired SQLDriver instance 2022941671 during initialization 
                2017-01-19 18:15:40,943 DEBUG PoolableDataSourceFactory Created DataSource 1719 of type 'JPC_NAZIONI_BASE' and assigned it to thread http-bio-8445-exec-5 
                2017-01-19 18:15:40,943 DEBUG SQLDataSource DataSource 1718 acquired SQLDriver instance 619565193 during initialization 
                2017-01-19 18:15:40,943 DEBUG PoolableDataSourceFactory Created DataSource 1718 of type 'JPC_NAZIONI' and assigned it to thread http-bio-8445-exec-5 
                2017-01-19 18:15:40,943 DEBUG DataSource Caching instance 1718 of DS 'JPC_NAZIONI' from getIncludeFromInfo() 
                2017-01-19 18:15:40,943 DEBUG DSRequest Caching instance 1718 of DS JPC_NAZIONI 
                2017-01-19 18:15:40,943 DEBUG DataSource Path selected from JTK_NOMI_TICKET to JPC_NAZIONI:  -> JTK_NOMI_TICKET -> JPC_NAZIONI 
                2017-01-19 18:15:40,944 DEBUG BasicDataSource Looking up superDS of DataSource JPC_COMUNI: 'JPC_COMUNI_BASE' 
                2017-01-19 18:15:40,944 DEBUG SQLDataSource DataSource 1721 acquired SQLDriver instance 2031478095 during initialization 
                2017-01-19 18:15:40,944 DEBUG PoolableDataSourceFactory Created DataSource 1721 of type 'JPC_COMUNI_BASE' and assigned it to thread http-bio-8445-exec-5 
                2017-01-19 18:15:40,944 DEBUG SQLDataSource DataSource 1720 acquired SQLDriver instance 209839012 during initialization 
                2017-01-19 18:15:40,944 DEBUG PoolableDataSourceFactory Created DataSource 1720 of type 'JPC_COMUNI' and assigned it to thread http-bio-8445-exec-5 
                2017-01-19 18:15:40,944 DEBUG DataSource Caching instance 1720 of DS 'JPC_COMUNI' from getIncludeFromInfo() 
                2017-01-19 18:15:40,944 DEBUG DSRequest Caching instance 1720 of DS JPC_COMUNI 
                2017-01-19 18:15:40,944 DEBUG DataSource Path selected from JTK_NOMI_TICKET to JPC_COMUNI:  -> JTK_NOMI_TICKET -> JPC_COMUNI 
                2017-01-19 18:15:40,945 DEBUG SQLDataSource DataSource 1717 acquired SQLDriver instance 596126310 during initialization 
                2017-01-19 18:15:40,945 DEBUG PoolableDataSourceFactory Created DataSource 1717 of type 'JTK_NOMI_TICKET' and assigned it to thread http-bio-8445-exec-5 
                2017-01-19 18:15:40,945 DEBUG DSRequest Caching instance 1717 of DS 'JTK_NOMI_TICKET' from DSRequest.getDataSource() 
                2017-01-19 18:15:40,945 DEBUG DSRequest Caching instance 1717 of DS JTK_NOMI_TICKET 
                2017-01-19 18:15:40,945 DEBUG DeclarativeSecurity Processing security checks for DataSource null, field null 
                2017-01-19 18:15:40,945 DEBUG DeclarativeSecurity Request is not a client request, ignoring security checks. 
                2017-01-19 18:15:40,945 DEBUG AppBase [builtinApplication.null] No userTypes defined, allowing anyone access to all operations for this application 
                2017-01-19 18:15:40,945 DEBUG AppBase [builtinApplication.null] No public zero-argument method named '_null' found, performing generic datasource operation 
                2017-01-19 18:15:40,945 INFO  SQLDataSource [builtinApplication.null] Performing fetch operation with
                    criteria: {ID_REC:12601}    values: {ID_REC:12601} 
                2017-01-19 18:15:40,946 INFO  SQLDataSource [builtinApplication.null] derived query: SELECT $defaultSelectClause FROM $defaultTableClause, JTK_RUBRICA_TITOLARI WHERE 
                                $defaultWhereClause
                                and JTK_NOMI_TICKET.ID_REC = JTK_RUBRICA_TITOLARI.ID_NOME_RUBRICA_FK (+)
                                and ($sessionAttributes.ID_TITOLARE_IMPERSONATO_FK = JTK_RUBRICA_TITOLARI.ID_TITOLARE_FK or JTK_RUBRICA_TITOLARI.ID_TITOLARE_FK is null)
                             AND $defaultJoinWhereClause 
                2017-01-19 18:15:40,947 INFO  SQLDataSource [builtinApplication.null] 1717: Executing SQL query on 'dbJpcEP': SELECT JTK_NOMI_TICKET.ID_REC, JTK_NOMI_TICKET.NOME, JTK_NOMI_TICKET.COGNOME, JTK_NOMI_TICKET.DATA_NASCITA, JTK_NOMI_TICKET.EMAIL, JTK_NOMI_TICKET.ID_NAZIONE_FK, JTK_NOMI_TICKET.ID_COMUNE_FK, JTK_NOMI_TICKET.LOCALITA, decode(JTK_RUBRICA_TITOLARI.ID_REC, null, 'F', 'T') AS NOMINATIVO_IN_RUBRICA, JTK_NOMI_TICKET.CREATOR, JTK_NOMI_TICKET.CREATOR_TIMESTAMP, JTK_NOMI_TICKET.MODIFIER, JTK_NOMI_TICKET.MODIFIER_TIMESTAMP, JPC_NAZIONI.NOME AS NAZIONE, JPC_COMUNI.NOME AS COMUNE FROM DBSALES.JTK_NOMI_TICKET, DBSALES.JPC_NAZIONI, DBSALES.JPC_COMUNI, JTK_RUBRICA_TITOLARI WHERE 
                                (JTK_NOMI_TICKET.ID_REC=12601)
                                and JTK_NOMI_TICKET.ID_REC = JTK_RUBRICA_TITOLARI.ID_NOME_RUBRICA_FK (+)
                                and (38 = JTK_RUBRICA_TITOLARI.ID_TITOLARE_FK or JTK_RUBRICA_TITOLARI.ID_TITOLARE_FK is null)
                             AND JTK_NOMI_TICKET.ID_NAZIONE_FK = JPC_NAZIONI.ID_REC(+) AND JTK_NOMI_TICKET.ID_COMUNE_FK = JPC_COMUNI.ID_REC(+) 
                2017-01-19 18:15:40,948 DEBUG PoolableSQLConnectionFactory [builtinApplication.null] makeObject() created an unpooled Connection '1555935710' 
                2017-01-19 18:15:40,948 DEBUG SQLConnectionManager [builtinApplication.null] Borrowed connection '1555935710' 
                2017-01-19 18:15:40,948 DEBUG SQLTransaction [builtinApplication.null] Started new dbJpcEP transaction "1555935710" 
                2017-01-19 18:15:40,948 DEBUG SQLDataSource [builtinApplication.null] Setting DSRequest as being part of a transaction 
                2017-01-19 18:15:40,948 INFO  SQLDriver [builtinApplication.null] Executing SQL query on 'dbJpcEP' using connection '1555935710': SELECT JTK_NOMI_TICKET.ID_REC, JTK_NOMI_TICKET.NOME, JTK_NOMI_TICKET.COGNOME, JTK_NOMI_TICKET.DATA_NASCITA, JTK_NOMI_TICKET.EMAIL, JTK_NOMI_TICKET.ID_NAZIONE_FK, JTK_NOMI_TICKET.ID_COMUNE_FK, JTK_NOMI_TICKET.LOCALITA, decode(JTK_RUBRICA_TITOLARI.ID_REC, null, 'F', 'T') AS NOMINATIVO_IN_RUBRICA, JTK_NOMI_TICKET.CREATOR, JTK_NOMI_TICKET.CREATOR_TIMESTAMP, JTK_NOMI_TICKET.MODIFIER, JTK_NOMI_TICKET.MODIFIER_TIMESTAMP, JPC_NAZIONI.NOME AS NAZIONE, JPC_COMUNI.NOME AS COMUNE FROM DBSALES.JTK_NOMI_TICKET, DBSALES.JPC_NAZIONI, DBSALES.JPC_COMUNI, JTK_RUBRICA_TITOLARI WHERE 
                                (JTK_NOMI_TICKET.ID_REC=12601)
                                and JTK_NOMI_TICKET.ID_REC = JTK_RUBRICA_TITOLARI.ID_NOME_RUBRICA_FK (+)
                                and (38 = JTK_RUBRICA_TITOLARI.ID_TITOLARE_FK or JTK_RUBRICA_TITOLARI.ID_TITOLARE_FK is null)
                             AND JTK_NOMI_TICKET.ID_NAZIONE_FK = JPC_NAZIONI.ID_REC(+) AND JTK_NOMI_TICKET.ID_COMUNE_FK = JPC_COMUNI.ID_REC(+) 
                2017-01-19 18:15:40,956 INFO  DSResponse DSResponse: List with 1 items 
                2017-01-19 18:15:40,956 DEBUG DSRequest freeOnExecute is false for request of type fetch on DataSource JTK_NOMI_TICKET - not freeing resources! 
                2017-01-19 18:15:40,957 DEBUG PoolableDataSourceFactory Tried to create DataSource  of type 'sequence' but null was returned 
                2017-01-19 18:15:40,957 DEBUG PoolableDataSourceFactory Tried to create DataSource  of type 'capitalizeFullyTrimText' but null was returned 
                2017-01-19 18:15:40,957 DEBUG PoolableDataSourceFactory Tried to create DataSource  of type 'capitalizeFullyTrimText' but null was returned 
                2017-01-19 18:15:40,957 DEBUG PoolableDataSourceFactory Tried to create DataSource  of type 'date' but null was returned 
                2017-01-19 18:15:40,957 DEBUG PoolableDataSourceFactory Tried to create DataSource  of type 'trimText' but null was returned 
                2017-01-19 18:15:40,957 DEBUG PoolableDataSourceFactory Tried to create DataSource  of type 'integer' but null was returned 
                2017-01-19 18:15:40,957 DEBUG PoolableDataSourceFactory Tried to create DataSource  of type 'text' but null was returned 
                2017-01-19 18:15:40,957 DEBUG PoolableDataSourceFactory Tried to create DataSource  of type 'integer' but null was returned 
                2017-01-19 18:15:40,957 DEBUG PoolableDataSourceFactory Tried to create DataSource  of type 'text' but null was returned 
                2017-01-19 18:15:40,957 DEBUG PoolableDataSourceFactory Tried to create DataSource  of type 'capitalizeFullyTrimText' but null was returned 
                2017-01-19 18:15:40,957 DEBUG PoolableDataSourceFactory Tried to create DataSource  of type 'boolean' but null was returned 
                2017-01-19 18:15:40,957 DEBUG PoolableDataSourceFactory Tried to create DataSource  of type 'creator' but null was returned 
                2017-01-19 18:15:40,957 DEBUG PoolableDataSourceFactory Tried to create DataSource  of type 'creatorTimestamp' but null was returned 
                2017-01-19 18:15:40,957 DEBUG PoolableDataSourceFactory Tried to create DataSource  of type 'modifier' but null was returned 
                2017-01-19 18:15:40,957 DEBUG PoolableDataSourceFactory Tried to create DataSource  of type 'modifierTimestamp' but null was returned 
                2017-01-19 18:15:40,958 DEBUG DefaultValidators NOTE: Record after applying stored values is:
                {
                    ID_REC:12601,
                    NOMINATIVO_IN_RUBRICA:false,
                    LOCALITA:"rgdfsfs",
                    CREATOR:"claudio.bosticco@juventus.com",
                    ID_COMUNE_FK:18,
                    ID_NAZIONE_FK:118,
                    NOME:"Dgfdfs",
                    COGNOME:"Gfddsf",
                    ID_BIGLIETTO_PAGAMENTO_FK:4402,
                    NAZIONE:"Italia",
                    DATA_NASCITA:isc.DateUtil.parseServerDate(2017,0,4),
                    EMAIL:null,
                    CREATOR_TIMESTAMP:new Date(1484846082000),
                    MODIFIER_TIMESTAMP:new Date(1484846082000),
                    MODIFIER:"claudio.bosticco@juventus.com",
                    COMUNE:"ACERRA"
                } 
                2017-01-19 18:15:40,958 DEBUG DefaultOperators criterion (class com.isomorphic.criteria.criterion.SimpleCriterion): {
                    operatorId:"notEqual",
                    value:"118",
                    fieldName:"ID_NAZIONE_FK"
                }: And 
                2017-01-19 18:15:40,958 DEBUG DefaultOperators value (class java.math.BigDecimal): 118: isEqualToConfiguredValue 
                2017-01-19 18:15:40,958 DEBUG DefaultOperators operand (class java.lang.String): "118": isEqualToConfiguredValue 
                2017-01-19 18:15:40,958 DEBUG DefaultOperators passedOp (class java.math.BigDecimal): 118: isEqualToConfiguredValue 
                2017-01-19 18:15:40,958 DEBUG DefaultOperators isEqualToConfiguredValue returnstrue 
                2017-01-19 18:15:40,958 DEBUG DefaultOperators And 0/0: false 
                2017-01-19 18:15:40,958 INFO  DefaultValidators on field: 'LOCALITA' conditional validator of type 'required' is: inactive 
                2017-01-19 18:15:40,959 DEBUG DefaultValidators on field: 'ID_COMUNE_FK' for validator type 'required', 'applyWhen' is:
                {
                    operator:"and",
                    criteria:[
                        {
                            fieldName:"ID_NAZIONE_FK",
                            operator:"equals",
                            value:"118"
                        }
                    ]
                }
                record is:
                {
                    ID_REC:12601,
                    NOMINATIVO_IN_RUBRICA:false,
                    LOCALITA:"Rgdfsfs",
                    ID_COMUNE_FK:null,
                    ID_NAZIONE_FK:15,
                    NOME:"Dgfdfs",
                    COGNOME:"Gfddsf",
                    ID_BIGLIETTO_PAGAMENTO_FK:4402,
                    NAZIONE:"Azerbaigian",
                    DATA_NASCITA:new Date(1483484400000),
                    EMAIL:null,
                    MODIFIER_TIMESTAMP:new Date(1484846140940),
                    MODIFIER:"claudio.bosticco@juventus.com",
                    COMUNE:null
                } 
                2017-01-19 18:15:40,959 DEBUG DefaultValidators NOTE: Record after applying stored values is:
                {
                    ID_REC:12601,
                    NOMINATIVO_IN_RUBRICA:false,
                    LOCALITA:"Rgdfsfs",
                    CREATOR:"claudio.bosticco@juventus.com",
                    ID_COMUNE_FK:18,
                    ID_NAZIONE_FK:118,
                    NOME:"Dgfdfs",
                    COGNOME:"Gfddsf",
                    ID_BIGLIETTO_PAGAMENTO_FK:4402,
                    NAZIONE:"Italia",
                    DATA_NASCITA:isc.DateUtil.parseServerDate(2017,0,4),
                    EMAIL:null,
                    CREATOR_TIMESTAMP:new Date(1484846082000),
                    MODIFIER_TIMESTAMP:new Date(1484846082000),
                    MODIFIER:"claudio.bosticco@juventus.com",
                    COMUNE:"ACERRA"
                } 
                2017-01-19 18:15:40,959 DEBUG DefaultOperators criterion (class com.isomorphic.criteria.criterion.SimpleCriterion): {
                    operatorId:"equals",
                    value:"118",
                    fieldName:"ID_NAZIONE_FK"
                }: And 
                2017-01-19 18:15:40,960 DEBUG DefaultOperators value (class java.math.BigDecimal): 118: isEqualToConfiguredValue 
                2017-01-19 18:15:40,960 DEBUG DefaultOperators operand (class java.lang.String): "118": isEqualToConfiguredValue 
                2017-01-19 18:15:40,960 DEBUG DefaultOperators passedOp (class java.math.BigDecimal): 118: isEqualToConfiguredValue 
                2017-01-19 18:15:40,960 DEBUG DefaultOperators isEqualToConfiguredValue returnstrue 
                2017-01-19 18:15:40,960 DEBUG DefaultOperators And 0/0: true 
                2017-01-19 18:15:40,960 INFO  DefaultValidators on field: 'ID_COMUNE_FK' conditional validator of type 'required' is: active 
                2017-01-19 18:15:40,961 DEBUG ValidationContext Adding validation errors at path '/JTK_NOMI_TICKET/ID_COMUNE_FK/ID_COMUNE_FK': {errorMessage=Field is required} 
                2017-01-19 18:15:40,961 DEBUG BasicDataSource for field: NOMEadding automatically generated lengthRange validator for length:100 
                2017-01-19 18:15:40,962 DEBUG BasicDataSource for field: COGNOMEadding automatically generated lengthRange validator for length:100 
                2017-01-19 18:15:40,962 DEBUG BasicDataSource for field: NAZIONEadding automatically generated lengthRange validator for length:200 
                2017-01-19 18:15:40,962 DEBUG PoolableDataSourceFactory Tried to create DataSource  of type 'trimText' but null was returned 
                2017-01-19 18:15:40,962 DEBUG BasicDataSource for field: EMAILadding automatically generated lengthRange validator for length:200 
                2017-01-19 18:15:40,962 DEBUG BasicDataSource for field: COMUNEadding automatically generated lengthRange validator for length:40 
                2017-01-19 18:15:40,963 DEBUG DefaultOperators criterion (class com.isomorphic.criteria.criterion.SimpleCriterion): {
                    operatorId:"equals",
                    value:"118",
                    fieldName:"ID_NAZIONE_FK"
                }: And 
                2017-01-19 18:15:40,963 DEBUG DefaultOperators value (class java.lang.Long): 15: isEqualToConfiguredValue 
                2017-01-19 18:15:40,963 DEBUG DefaultOperators operand (class java.lang.String): "118": isEqualToConfiguredValue 
                2017-01-19 18:15:40,963 DEBUG DefaultOperators passedOp (class java.lang.Long): 118: isEqualToConfiguredValue 
                2017-01-19 18:15:40,963 DEBUG DefaultOperators isEqualToConfiguredValue returnsfalse 
                2017-01-19 18:15:40,963 DEBUG DefaultOperators And 0/0: false 
                2017-01-19 18:15:40,963 DEBUG DefaultOperators criterion (class com.isomorphic.criteria.criterion.SimpleCriterion): {
                    operatorId:"notEqual",
                    value:"118",
                    fieldName:"ID_NAZIONE_FK"
                }: And 
                2017-01-19 18:15:40,963 DEBUG DefaultOperators value (class java.lang.Long): 15: isEqualToConfiguredValue 
                2017-01-19 18:15:40,963 DEBUG DefaultOperators operand (class java.lang.String): "118": isEqualToConfiguredValue 
                2017-01-19 18:15:40,963 DEBUG DefaultOperators passedOp (class java.lang.Long): 118: isEqualToConfiguredValue 
                2017-01-19 18:15:40,963 DEBUG DefaultOperators isEqualToConfiguredValue returnsfalse 
                2017-01-19 18:15:40,963 DEBUG DefaultOperators And 0/0: true 
                2017-01-19 18:15:40,963 DEBUG BasicDataSource Done validating 1 'JTK_NOMI_TICKET's at path '': 22ms (avg 22) 
                2017-01-19 18:15:40,964 DEBUG DataSource post-validation valueSet: [
                    {
                        ID_BIGLIETTO_PAGAMENTO_FK:4402,
                        ID_NAZIONE_FK:15,
                        NAZIONE:"Azerbaigian",
                        NOMINATIVO_IN_RUBRICA:false,
                        COGNOME:"Gfddsf",
                        NOME:"Dgfdfs",
                        DATA_NASCITA:new Date(1483484400000),
                        ID_COMUNE_FK:null,
                        COMUNE:null,
                        EMAIL:null,
                        ID_REC:12601,
                        LOCALITA:"Rgdfsfs",
                        MODIFIER:"claudio.bosticco@juventus.com",
                        MODIFIER_TIMESTAMP:new Date(1484846140940)
                    }
                ] 
                2017-01-19 18:15:40,964 INFO  Validation Validation error: [
                    {
                        ID_COMUNE_FK:{
                            errorMessage:"Field is required"
                        }
                    }
                ]

                Comment


                  #23
                  Originally posted by claudiobosticco View Post
                  Hello, unfortunately with the latest build I've got a new problem.
                  The update operation on the dataSource which has the <applyWhen> validator, passes through a DMI, where I'm executing another update or insert operation, on another dataSource.
                  The latter dataSource, has an includeFrom field, which includes (from the former dataSource) the field with the applyWhen validator.
                  Actually it seems that the validator is enforced on that field (and fails). Shouldn't it be ignored, being an included field?
                  Regarding this issue which seems similar to the issue reported by Blama, the former dataSource is:
                  Code:
                  <DataSource xmlns:fmt="WEB-INF/" xmlns="http://www.smartclient.com/schema"
                              ID="JTK_NOMI_TICKET"
                              serverType="sql"
                              dbName="dbJpcEP"
                              schema="DBSALES"
                              tableName="JTK_NOMI_TICKET"
                              allowAdvancedCriteria="true"
                              requiresAuthentication="true"
                              dropExtraFields="false"
                  >
                      <fmt:bundle basename="i18nMessages" encoding="utf-8"/>
                      <fields>
                          <field sqlType="decimal" primaryKey="true" name="ID_REC" type="sequence" hidden="true" sequenceName="SEQUENCE_ID_JTK"/>
                          <field name="NOME" type="capitalizeFullyTrimText" required="true" length="100"/>
                          <field name="COGNOME" type="capitalizeFullyTrimText" required="true" length="100"/>
                          <field name="DATA_NASCITA" type="date" required="true"/>
                          <field name="EMAIL" type="trimText" length="200"/> <!--todo deve essere required se facciamo perfezionamento-->
                          <field name="ID_NAZIONE_FK" type="integer" foreignKey="JPC_NAZIONI.ID_REC" joinType="outer" required="true" displayField="NAZIONE"/>
                          <field name="NAZIONE" type="text" includeFrom="JPC_NAZIONI.NOME"/>
                          <field name="ID_COMUNE_FK" type="integer" foreignKey="JPC_COMUNI.ID_REC" joinType="outer" displayField="COMUNE">
                               <validators>
                                   <validator type="required" stopIfFalse="true" dependentFields="ID_NAZIONE_FK">
                                       <applyWhen operator="and">
                                           <criteria>
                                               <criterion fieldName="ID_NAZIONE_FK" operator="equals" value="118"/>
                                           </criteria>
                                       </applyWhen>
                                   </validator>
                               </validators>
                          </field>
                          <field name="COMUNE" type="text" includeFrom="JPC_COMUNI.NOME"/>
                          <field name="LOCALITA" type="capitalizeFullyTrimText" length="100">
                              <validators>
                                  <validator type="required" stopIfFalse="true" dependentFields="ID_NAZIONE_FK">
                                      <applyWhen operator="and">
                                          <criteria>
                                              <criterion fieldName="ID_NAZIONE_FK" operator="notEqual" value="118"/>
                                          </criteria>
                                      </applyWhen>
                                  </validator>
                              </validators>
                          </field>
                  
                          <field name="NOMINATIVO_IN_RUBRICA" type="boolean" sqlStorageStrategy="singleCharTF"
                                 customSelectExpression="decode(JTK_RUBRICA_TITOLARI.ID_REC, null, 'F', 'T')"/>
                  
                          <field name="CREATOR" type="creator" editRequires="false"/>
                          <field name="CREATOR_TIMESTAMP" type="creatorTimestamp" editRequires="false"/>
                          <field name="MODIFIER" type="modifier" editRequires="false"/>
                          <field name="MODIFIER_TIMESTAMP" type="modifierTimestamp" editRequires="false"/>
                      </fields>
                      <operationBindings>
                          <operationBinding operationType="fetch" requiresRole="">
                              <tableClause>$defaultTableClause, JTK_RUBRICA_TITOLARI</tableClause>
                              <whereClause>
                                  $defaultWhereClause
                                  and JTK_NOMI_TICKET.ID_REC = JTK_RUBRICA_TITOLARI.ID_NOME_RUBRICA_FK (+)
                                  and ($sessionAttributes.ID_TITOLARE_IMPERSONATO_FK = JTK_RUBRICA_TITOLARI.ID_TITOLARE_FK or JTK_RUBRICA_TITOLARI.ID_TITOLARE_FK is null)
                              </whereClause>
                          </operationBinding>
                          <operationBinding operationType="fetch" operationId="fetchAll" requiresRole="ROLE_TICKETING"/>
                          <operationBinding operationType="add" requiresRole="ROLE_TICKETING"/>
                          <operationBinding operationType="update" requiresRole="ROLE_TICKETING"/>
                          <operationBinding operationType="add" operationId="salvaNomeBigliettoPagamento" serverMethod="salvaNomeBigliettoPagamento" requiresRole="">
                              <serverObject lookupStyle="new" className="com.juve.jtk.biglietti.pagamento.SalvaNomeBigliettoPagamento"/>
                          </operationBinding>
                          <operationBinding operationType="update" operationId="salvaNomeBigliettoPagamento" serverMethod="salvaNomeBigliettoPagamento" requiresRole="">
                              <serverObject lookupStyle="new" className="com.juve.jtk.biglietti.pagamento.SalvaNomeBigliettoPagamento"/>
                          </operationBinding>
                          <operationBinding operationType="add" operationId="salvaNomeBigliettoOmaggio" serverMethod="salvaNomeBigliettoOmaggio" requiresRole="">
                              <serverObject lookupStyle="new" className="com.juve.jtk.biglietti.SalvaNomeBigliettoOmaggio"/>
                          </operationBinding>
                          <operationBinding operationType="update" operationId="salvaNomeBigliettoOmaggio" serverMethod="salvaNomeBigliettoOmaggio" requiresRole="">
                              <serverObject lookupStyle="new" className="com.juve.jtk.biglietti.SalvaNomeBigliettoOmaggio"/>
                          </operationBinding>
                          <!--todo implementare rimozione da rubrica? magari in gestione ad hoc?-->
                          <operationBinding operationType="remove" requiresRole=""/>
                      </operationBindings>
                  </DataSource>
                  then in the DMI salvaNomeBigliettoPagamento there's an update which uses this dataSource:

                  Code:
                  <DataSource xmlns:fmt="WEB-INF/" xmlns="http://www.smartclient.com/schema"
                              ID="JTK_NOMI_PAGAMENTO"
                              serverType="sql"
                              dbName="dbJpcEP"
                              schema="DBSALES"
                              tableName="JTK_NOMI_PAGAMENTO"
                              allowAdvancedCriteria="true"
                              requiresAuthentication="true">
                      <fmt:bundle basename="i18nMessages" encoding="utf-8"/>
                      <fields>
                          <field sqlType="decimal" primaryKey="true" name="ID_REC" type="sequence" hidden="true" sequenceName="SEQUENCE_ID_JTK"/>
                          <field name="ID_BIGLIETTO_PAGAMENTO_FK" type="integer" foreignKey="JTK_BIGLIETTI_PAGAMENTO.ID_REC" joinType="outer"/>
                          <field name="ID_BIGLIETTO_PAGAMENTO_JOIN_FK" type="integer" customSelectExpression="JTK_BIGLIETTI_PAGAMENTO.ID_REC"/>
                          <field name="ID_NOME_TICKET_FK" type="integer" foreignKey="JTK_NOMI_TICKET.ID_REC" joinType="outer"/>
                  
                  
                          <field name="ID_TITOLARE_FK" type="integer" tableName="JTK_BIGLIETTI_PAGAMENTO"/>
                          <field name="ID_TARIFFA_FK" type="boolean" tableName="JTK_BIGLIETTI_PAGAMENTO"/>
                          <field name="ID_PAGAMENTO_FK" type="boolean" tableName="JTK_BIGLIETTI_PAGAMENTO"/>
                  
                          <field name="ID_LISTINO_FK" type="integer" tableName="JTK_TARIFFE"/>
                          <field name="PREZZO_LORDO" type="localeFloat" tableName="JTK_TARIFFE"/>
                          <field name="TARIFFA" type="text" customSelectExpression="JTK_TARIFFE.NOME || (decode(ETA, null , '', ' ' || JTK_TARIFFE.ETA))"/>
                          <field name="SETTORE" type="text" tableName="JTK_SETTORI_VENDITA" nativeName="DESCRIZIONE"/>
                  
                          <field name="NOME" type="text" length="100" includeFrom="JTK_NOMI_TICKET.NOME"/>
                          <field name="COGNOME" type="text" length="100" includeFrom="JTK_NOMI_TICKET.COGNOME"/>
                          <field name="DATA_NASCITA" type="datetime" includeFrom="JTK_NOMI_TICKET.DATA_NASCITA"/>
                          <field name="EMAIL" type="text" length="200" includeFrom="JTK_NOMI_TICKET.EMAIL"/>
                          <field name="ID_NAZIONE_FK" type="integer" foreignKey="JPC_NAZIONI.ID_REC" includeFrom="JTK_NOMI_TICKET.ID_NAZIONE_FK"/>
                          <field name="ID_COMUNE_FK" type="integer" foreignKey="JPC_COMUNI.ID_REC" includeFrom="JTK_NOMI_TICKET.ID_COMUNE_FK"/>
                          <field name="LOCALITA" type="text" length="100" includeFrom="JTK_NOMI_TICKET.LOCALITA"/>
                          <field name="NAZIONE" type="text" includeFrom="JTK_NOMI_TICKET.JPC_NAZIONI.NOME"/>
                          <field name="COMUNE" type="text" includeFrom="JTK_NOMI_TICKET.JPC_COMUNI.NOME"/>
                  
                          <field name="CREATOR" type="creator" editRequires="false"/>
                          <field name="CREATOR_TIMESTAMP" type="creatorTimestamp" editRequires="false"/>
                          <field name="MODIFIER" type="modifier" editRequires="false"/>
                          <field name="MODIFIER_TIMESTAMP" type="modifierTimestamp" editRequires="false"/>
                      </fields>
                      <operationBindings>
                          <operationBinding operationType="fetch" requiresRole="">
                              <tableClause>$defaultTableClause, JTK_BIGLIETTI_PAGAMENTO, JTK_TARIFFE, JTK_SETTORI_VENDITA</tableClause>
                              <whereClause>
                                  $defaultWhereClause
                                  and JTK_BIGLIETTI_PAGAMENTO.ID_TITOLARE_FK = $sessionAttributes.ID_TITOLARE_IMPERSONATO_FK
                                  AND JTK_NOMI_PAGAMENTO.ID_BIGLIETTO_PAGAMENTO_FK = JTK_BIGLIETTI_PAGAMENTO.ID_REC
                                  AND JTK_BIGLIETTI_PAGAMENTO.ID_TARIFFA_FK = JTK_TARIFFE.ID_REC
                                  and JTK_TARIFFE.ID_SETTORE_VENDITA_FK = JTK_SETTORI_VENDITA.ID_REC
                                  AND JTK_NOMI_PAGAMENTO.ID_NOME_TICKET_FK = JTK_NOMI_TICKET.ID_REC
                                  AND JTK_NOMI_TICKET.ID_NAZIONE_FK = JPC_NAZIONI.ID_REC
                                  AND JTK_NOMI_TICKET.ID_COMUNE_FK = JPC_COMUNI.ID_REC(+)
                              </whereClause>
                          </operationBinding>
                          <operationBinding operationType="fetch" operationId="fetchAncheSenzaNome" requiresRole="">
                              <tableClause>$defaultTableClause, JTK_BIGLIETTI_PAGAMENTO, JTK_TARIFFE, JTK_SETTORI_VENDITA</tableClause>
                              <whereClause>
                                  $defaultWhereClause
                                  and JTK_BIGLIETTI_PAGAMENTO.ID_TITOLARE_FK = $sessionAttributes.ID_TITOLARE_IMPERSONATO_FK
                                  AND JTK_BIGLIETTI_PAGAMENTO.ID_REC = JTK_NOMI_PAGAMENTO.ID_BIGLIETTO_PAGAMENTO_FK (+)
                                  AND JTK_BIGLIETTI_PAGAMENTO.ID_TARIFFA_FK = JTK_TARIFFE.ID_REC
                                  and JTK_TARIFFE.ID_SETTORE_VENDITA_FK = JTK_SETTORI_VENDITA.ID_REC
                                  AND JTK_NOMI_PAGAMENTO.ID_NOME_TICKET_FK = JTK_NOMI_TICKET.ID_REC(+)
                                  AND JTK_NOMI_TICKET.ID_NAZIONE_FK = JPC_NAZIONI.ID_REC(+)
                                  AND JTK_NOMI_TICKET.ID_COMUNE_FK = JPC_COMUNI.ID_REC(+)
                              </whereClause>
                          </operationBinding>
                          <operationBinding operationType="add" requiresRole=""/>
                          <operationBinding operationType="add" operationId="mustInvalidateCache" invalidateCache="true" cacheSyncOperation="fetchAncheSenzaNome"
                                            requiresRole=""/>
                          <operationBinding operationType="update" cacheSyncOperation="fetchAncheSenzaNome" requiresRole=""/>
                          <operationBinding operationType="remove" requires="false"/>
                      </operationBindings>
                  </DataSource>
                  This JTK_NOMI_PAGAMENTO dataSource includes LOCALITA from the former JTK_NOMI_TICKET, and the validator on this field is executed during the update.

                  Comment


                    #24
                    and this is the server log with the validation error on the LOCALITA field:

                    Code:
                    2017-01-20 09:20:32,874 DEBUG CommonUtils safeGetParameter called on a POST HttpServletRequest for LogoutRequest.  Cannot complete check safely.  Reverting to standard behavior for this Parameter 
                    2017-01-20 09:20:32,875 INFO  RequestContext URL: '/Jtk/isomorphic/IDACall', User-Agent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.95 Safari/537.36': Safari with Accept-Encoding header 
                    2017-01-20 09:20:32,876 DEBUG IDACall Header Name:Value pair: host:mbproedp02:8445 
                    2017-01-20 09:20:32,876 DEBUG IDACall Header Name:Value pair: connection:keep-alive 
                    2017-01-20 09:20:32,876 DEBUG IDACall Header Name:Value pair: content-length:3275 
                    2017-01-20 09:20:32,876 DEBUG IDACall Header Name:Value pair: origin:https://mbproedp02:8445 
                    2017-01-20 09:20:32,876 DEBUG IDACall Header Name:Value pair: user-agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.95 Safari/537.36 
                    2017-01-20 09:20:32,876 DEBUG IDACall Header Name:Value pair: content-type:application/x-www-form-urlencoded; charset=UTF-8 
                    2017-01-20 09:20:32,876 DEBUG IDACall Header Name:Value pair: accept:*/* 
                    2017-01-20 09:20:32,876 DEBUG IDACall Header Name:Value pair: referer:https://mbproedp02:8445/Jtk/ 
                    2017-01-20 09:20:32,876 DEBUG IDACall Header Name:Value pair: accept-encoding:gzip, deflate, br 
                    2017-01-20 09:20:32,876 DEBUG IDACall Header Name:Value pair: accept-language:it-IT,it;q=0.8,en-US;q=0.6,en;q=0.4 
                    2017-01-20 09:20:32,876 DEBUG IDACall Header Name:Value pair: cookie:JSESSIONID=75D2FEEC529794787A18F368C79DB74C; isc_cState=ready; org.springframework.web.servlet.i18n.CookieLocaleResolver.LOCALE=it; JSESSIONID=B50BFFDBE5F241A8E623D72AF71F3557; GLog=%7B%0A%20%20%20%20trackRPC%3Atrue%2C%20%0A%20%20%20%20isc_pageURL%3A%22https%3A//mbproedp02%3A8445/Jtk/%23gestioneBigliettiPagamento%22%2C%20%0A%20%20%20%20isc_pageGUID%3A%2256F0DEBB-2BEB-49A0-A468-0ED5AECAAB8D%22%2C%20%0A%20%20%20%20priorityDefaults%3A%7B%0A%20%20%20%20%20%20%20%20sgwtInternal%3A1%2C%20%0A%20%20%20%20%20%20%20%20Log%3A4%0A%20%20%20%20%7D%2C%20%0A%20%20%20%20defaultPriority%3A3%2C%20%0A%20%20%20%20left%3A1328%2C%20%0A%20%20%20%20top%3A22%2C%20%0A%20%20%20%20width%3A1164%2C%20%0A%20%20%20%20height%3A823%0A%7D 
                    2017-01-20 09:20:32,876 DEBUG IDACall session exists: 75D2FEEC529794787A18F368C79DB74C 
                    2017-01-20 09:20:32,876 DEBUG IDACall remote user: claudio.bosticco@juventus.com 
                    2017-01-20 09:20:32,878 DEBUG XML Parsed XML from (in memory stream): 2ms 
                    2017-01-20 09:20:32,878 DEBUG PoolableDataSourceFactory Tried to create DataSource  of type 'transaction' but null was returned 
                    2017-01-20 09:20:32,878 DEBUG PoolableDataSourceFactory Created DataSource 282 of type 'Object' and assigned it to thread http-bio-8445-exec-25 
                    2017-01-20 09:20:32,878 DEBUG BasicDataSource Validating a 'Object' at path '' 
                    2017-01-20 09:20:32,878 DEBUG BasicDataSource Using class com.isomorphic.datasource.ListType as implementer for DataSource List 
                    2017-01-20 09:20:32,879 DEBUG PoolableDataSourceFactory Created DataSource 283 of type 'List' and assigned it to thread http-bio-8445-exec-25 
                    2017-01-20 09:20:32,879 DEBUG PoolableDataSourceFactory Tried to create DataSource  of type 'elem' but null was returned 
                    2017-01-20 09:20:32,879 DEBUG BasicDataSource Validating a 'Object' at path '/transaction/operations' 
                    2017-01-20 09:20:32,879 DEBUG BasicDataSource Validating a 'Object' at path '/transaction/operations/elem/criteria' 
                    2017-01-20 09:20:32,879 DEBUG BasicDataSource Done validating a 'Object' at path '/transaction/operations/elem/criteria': 0ms 
                    2017-01-20 09:20:32,879 DEBUG BasicDataSource Validating a 'Object' at path '/transaction/operations/elem/values' 
                    2017-01-20 09:20:32,879 DEBUG BasicDataSource Done validating a 'Object' at path '/transaction/operations/elem/values': 0ms 
                    2017-01-20 09:20:32,879 DEBUG BasicDataSource Validating a 'Object' at path '/transaction/operations/elem/operationConfig' 
                    2017-01-20 09:20:32,879 DEBUG BasicDataSource Done validating a 'Object' at path '/transaction/operations/elem/operationConfig': 0ms 
                    2017-01-20 09:20:32,880 DEBUG BasicDataSource Validating a 'Object' at path '/transaction/operations/elem/oldValues' 
                    2017-01-20 09:20:32,880 DEBUG BasicDataSource Done validating a 'Object' at path '/transaction/operations/elem/oldValues': 0ms 
                    2017-01-20 09:20:32,880 DEBUG BasicDataSource Done validating a 'Object' at path '/transaction/operations': 1ms 
                    2017-01-20 09:20:32,880 DEBUG BasicDataSource Done validating a 'List' at path '/transaction/operations': 1ms 
                    2017-01-20 09:20:32,880 DEBUG BasicDataSource Done validating a 'Object' at path '': 2ms 
                    2017-01-20 09:20:32,880 DEBUG RPCManager Processing 1 requests. 
                    2017-01-20 09:20:32,881 DEBUG BasicDataSource Looking up superDS of DataSource JPC_NAZIONI: 'JPC_NAZIONI_BASE' 
                    2017-01-20 09:20:32,882 DEBUG SQLDataSource DataSource 286 acquired SQLDriver instance 1468881345 during initialization 
                    2017-01-20 09:20:32,882 DEBUG PoolableDataSourceFactory Created DataSource 286 of type 'JPC_NAZIONI_BASE' and assigned it to thread http-bio-8445-exec-25 
                    2017-01-20 09:20:32,882 DEBUG SQLDataSource DataSource 285 acquired SQLDriver instance 16759503 during initialization 
                    2017-01-20 09:20:32,882 DEBUG PoolableDataSourceFactory Created DataSource 285 of type 'JPC_NAZIONI' and assigned it to thread http-bio-8445-exec-25 
                    2017-01-20 09:20:32,882 DEBUG DataSource Caching instance 285 of DS 'JPC_NAZIONI' from getIncludeFromInfo() 
                    2017-01-20 09:20:32,882 DEBUG DSRequest Caching instance 285 of DS JPC_NAZIONI 
                    2017-01-20 09:20:32,882 DEBUG DataSource Path selected from JTK_NOMI_TICKET to JPC_NAZIONI:  -> JTK_NOMI_TICKET -> JPC_NAZIONI 
                    2017-01-20 09:20:32,882 DEBUG BasicDataSource Looking up superDS of DataSource JPC_COMUNI: 'JPC_COMUNI_BASE' 
                    2017-01-20 09:20:32,882 DEBUG SQLDataSource DataSource 288 acquired SQLDriver instance 356609164 during initialization 
                    2017-01-20 09:20:32,882 DEBUG PoolableDataSourceFactory Created DataSource 288 of type 'JPC_COMUNI_BASE' and assigned it to thread http-bio-8445-exec-25 
                    2017-01-20 09:20:32,883 DEBUG SQLDataSource DataSource 287 acquired SQLDriver instance 2050844218 during initialization 
                    2017-01-20 09:20:32,883 DEBUG PoolableDataSourceFactory Created DataSource 287 of type 'JPC_COMUNI' and assigned it to thread http-bio-8445-exec-25 
                    2017-01-20 09:20:32,883 DEBUG DataSource Caching instance 287 of DS 'JPC_COMUNI' from getIncludeFromInfo() 
                    2017-01-20 09:20:32,883 DEBUG DSRequest Caching instance 287 of DS JPC_COMUNI 
                    2017-01-20 09:20:32,883 DEBUG DataSource Path selected from JTK_NOMI_TICKET to JPC_COMUNI:  -> JTK_NOMI_TICKET -> JPC_COMUNI 
                    2017-01-20 09:20:32,883 DEBUG SQLDataSource DataSource 284 acquired SQLDriver instance 1426237576 during initialization 
                    2017-01-20 09:20:32,883 DEBUG PoolableDataSourceFactory Created DataSource 284 of type 'JTK_NOMI_TICKET' and assigned it to thread http-bio-8445-exec-25 
                    2017-01-20 09:20:32,883 DEBUG DSRequest Caching instance 284 of DS 'JTK_NOMI_TICKET' from DSRequest.getDataSource() 
                    2017-01-20 09:20:32,883 DEBUG DSRequest Caching instance 284 of DS JTK_NOMI_TICKET 
                    2017-01-20 09:20:32,883 DEBUG RPCManager Request #1 (DSRequest) payload: {
                        criteria:{
                            ID_REC:1
                        },
                        values:{
                            ID_BIGLIETTO_PAGAMENTO_FK:4402,
                            ID_NOME_RUBRICA_FK:50650,
                            ID_REC:1,
                            NOMINATIVO_IN_RUBRICA:true,
                            CREATOR:"claudio.bosticco@juventus.com",
                            ID_COMUNE_FK:7304,
                            ID_NAZIONE_FK:118,
                            NOME:"Claudio",
                            COGNOME:"Bosticco",
                            NAZIONE:"Italia",
                            DATA_NASCITA:new Date(1475704800000),
                            EMAIL:"test@test.it",
                            CREATOR_TIMESTAMP:new Date(1475769667000),
                            MODIFIER:"claudio.bosticco@juventus.com",
                            MODIFIER_TIMESTAMP:new Date(1481127137000),
                            COMUNE:"TORINO"
                        },
                        operationConfig:{
                            dataSource:"JTK_NOMI_TICKET",
                            repo:null,
                            operationType:"update",
                            textMatchStyle:"exact"
                        },
                        componentId:"nomiBigliettiPagamentoForm",
                        appID:"builtinApplication",
                        operation:"salvaNomeBigliettoPagamento",
                        oldValues:{
                            ID_BIGLIETTO_PAGAMENTO_FK:4402,
                            ID_NOME_RUBRICA_FK:50650,
                            ID_REC:1,
                            NOMINATIVO_IN_RUBRICA:true,
                            CREATOR:"claudio.bosticco@juventus.com",
                            ID_COMUNE_FK:7304,
                            ID_NAZIONE_FK:118,
                            NOME:"Claudio",
                            COGNOME:"Bosticco",
                            NAZIONE:"Italia",
                            DATA_NASCITA:new Date(1475704800000),
                            EMAIL:"test@test.it",
                            CREATOR_TIMESTAMP:new Date(1475769667000),
                            MODIFIER:"claudio.bosticco@juventus.com",
                            MODIFIER_TIMESTAMP:new Date(1481127137000),
                            COMUNE:"TORINO"
                        }
                    } 
                    2017-01-20 09:20:32,883 INFO  IDACall Performing 1 operation(s) 
                    2017-01-20 09:20:32,884 DEBUG DeclarativeSecurity Processing security checks for DataSource null, field null 
                    2017-01-20 09:20:32,884 DEBUG DeclarativeSecurity DataSource JTK_NOMI_TICKET is not in the pre-checked list, processing... 
                    2017-01-20 09:20:32,884 INFO  DeclarativeSecurity Field 'CREATOR' is not allowed for 'update' operation for user 'claudio.bosticco@juventus.com'.  Removing this field from the record 
                    2017-01-20 09:20:32,884 INFO  DeclarativeSecurity Field 'CREATOR_TIMESTAMP' is not allowed for 'update' operation for user 'claudio.bosticco@juventus.com'.  Removing this field from the record 
                    2017-01-20 09:20:32,885 INFO  DeclarativeSecurity Field 'MODIFIER' is not allowed for 'update' operation for user 'claudio.bosticco@juventus.com'.  Removing this field from the record 
                    2017-01-20 09:20:32,885 INFO  DeclarativeSecurity Field 'MODIFIER_TIMESTAMP' is not allowed for 'update' operation for user 'claudio.bosticco@juventus.com'.  Removing this field from the record 
                    2017-01-20 09:20:32,885 DEBUG BasicDataSource Validating 1 'JTK_NOMI_TICKET's at path '' 
                    2017-01-20 09:20:32,885 DEBUG BasicDataSource Validating a 'JTK_NOMI_TICKET' at path '' 
                    2017-01-20 09:20:32,885 DEBUG PoolableDataSourceFactory Tried to create DataSource  of type 'capitalizeFullyTrimText' but null was returned 
                    2017-01-20 09:20:32,885 DEBUG BasicDataSource for field: LOCALITAadding automatically generated lengthRange validator for length:100 
                    2017-01-20 09:20:32,886 DEBUG DefaultValidators on field: 'LOCALITA' for validator type 'required', 'applyWhen' is:
                    {
                        operator:"and",
                        criteria:[
                            {
                                fieldName:"ID_NAZIONE_FK",
                                operator:"notEqual",
                                value:"118"
                            }
                        ]
                    }
                    record is:
                    {
                        ID_NOME_RUBRICA_FK:50650,
                        ID_REC:1,
                        NOMINATIVO_IN_RUBRICA:true,
                        LOCALITA:null,
                        ID_COMUNE_FK:7304,
                        ID_NAZIONE_FK:118,
                        COGNOME:"Bosticco",
                        NOME:"Claudio",
                        ID_BIGLIETTO_PAGAMENTO_FK:4402,
                        NAZIONE:"Italia",
                        DATA_NASCITA:new Date(1475704800000),
                        EMAIL:"test@test.it",
                        MODIFIER_TIMESTAMP:new Date(1484900432884),
                        MODIFIER:"claudio.bosticco@juventus.com",
                        COMUNE:"TORINO"
                    } 
                    2017-01-20 09:20:32,887 DEBUG BasicDataSource Looking up superDS of DataSource JPC_NAZIONI: 'JPC_NAZIONI_BASE' 
                    2017-01-20 09:20:32,887 DEBUG SQLDataSource DataSource 291 acquired SQLDriver instance 244192432 during initialization 
                    2017-01-20 09:20:32,887 DEBUG PoolableDataSourceFactory Created DataSource 291 of type 'JPC_NAZIONI_BASE' and assigned it to thread http-bio-8445-exec-25 
                    2017-01-20 09:20:32,887 DEBUG SQLDataSource DataSource 290 acquired SQLDriver instance 300955207 during initialization 
                    2017-01-20 09:20:32,887 DEBUG PoolableDataSourceFactory Created DataSource 290 of type 'JPC_NAZIONI' and assigned it to thread http-bio-8445-exec-25 
                    2017-01-20 09:20:32,887 DEBUG DataSource Caching instance 290 of DS 'JPC_NAZIONI' from getIncludeFromInfo() 
                    2017-01-20 09:20:32,887 DEBUG DSRequest Caching instance 290 of DS JPC_NAZIONI 
                    2017-01-20 09:20:32,887 DEBUG DataSource Path selected from JTK_NOMI_TICKET to JPC_NAZIONI:  -> JTK_NOMI_TICKET -> JPC_NAZIONI 
                    2017-01-20 09:20:32,887 DEBUG BasicDataSource Looking up superDS of DataSource JPC_COMUNI: 'JPC_COMUNI_BASE' 
                    2017-01-20 09:20:32,888 DEBUG SQLDataSource DataSource 293 acquired SQLDriver instance 830175364 during initialization 
                    2017-01-20 09:20:32,888 DEBUG PoolableDataSourceFactory Created DataSource 293 of type 'JPC_COMUNI_BASE' and assigned it to thread http-bio-8445-exec-25 
                    2017-01-20 09:20:32,888 DEBUG SQLDataSource DataSource 292 acquired SQLDriver instance 556088189 during initialization 
                    2017-01-20 09:20:32,888 DEBUG PoolableDataSourceFactory Created DataSource 292 of type 'JPC_COMUNI' and assigned it to thread http-bio-8445-exec-25 
                    2017-01-20 09:20:32,888 DEBUG DataSource Caching instance 292 of DS 'JPC_COMUNI' from getIncludeFromInfo() 
                    2017-01-20 09:20:32,888 DEBUG DSRequest Caching instance 292 of DS JPC_COMUNI 
                    2017-01-20 09:20:32,888 DEBUG DataSource Path selected from JTK_NOMI_TICKET to JPC_COMUNI:  -> JTK_NOMI_TICKET -> JPC_COMUNI 
                    2017-01-20 09:20:32,888 DEBUG SQLDataSource DataSource 289 acquired SQLDriver instance 325360779 during initialization 
                    2017-01-20 09:20:32,888 DEBUG PoolableDataSourceFactory Created DataSource 289 of type 'JTK_NOMI_TICKET' and assigned it to thread http-bio-8445-exec-25 
                    2017-01-20 09:20:32,888 DEBUG DSRequest Caching instance 289 of DS 'JTK_NOMI_TICKET' from DSRequest.getDataSource() 
                    2017-01-20 09:20:32,888 DEBUG DSRequest Caching instance 289 of DS JTK_NOMI_TICKET 
                    2017-01-20 09:20:32,888 DEBUG DeclarativeSecurity Processing security checks for DataSource null, field null 
                    2017-01-20 09:20:32,888 DEBUG DeclarativeSecurity Request is not a client request, ignoring security checks. 
                    2017-01-20 09:20:32,888 DEBUG AppBase [builtinApplication.null] No userTypes defined, allowing anyone access to all operations for this application 
                    2017-01-20 09:20:32,888 DEBUG AppBase [builtinApplication.null] No public zero-argument method named '_null' found, performing generic datasource operation 
                    2017-01-20 09:20:32,889 INFO  SQLDataSource [builtinApplication.null] Performing fetch operation with
                        criteria: {ID_REC:1}    values: {ID_REC:1} 
                    2017-01-20 09:20:32,889 INFO  SQLDataSource [builtinApplication.null] derived query: SELECT $defaultSelectClause FROM $defaultTableClause, JTK_RUBRICA_TITOLARI WHERE 
                                    $defaultWhereClause
                                    and JTK_NOMI_TICKET.ID_REC = JTK_RUBRICA_TITOLARI.ID_NOME_RUBRICA_FK (+)
                                    and ($sessionAttributes.ID_TITOLARE_IMPERSONATO_FK = JTK_RUBRICA_TITOLARI.ID_TITOLARE_FK or JTK_RUBRICA_TITOLARI.ID_TITOLARE_FK is null)
                                 AND $defaultJoinWhereClause 
                    2017-01-20 09:20:32,890 INFO  SQLDataSource [builtinApplication.null] 289: Executing SQL query on 'dbJpcEP': SELECT JTK_NOMI_TICKET.ID_REC, JTK_NOMI_TICKET.NOME, JTK_NOMI_TICKET.COGNOME, JTK_NOMI_TICKET.DATA_NASCITA, JTK_NOMI_TICKET.EMAIL, JTK_NOMI_TICKET.ID_NAZIONE_FK, JTK_NOMI_TICKET.ID_COMUNE_FK, JTK_NOMI_TICKET.LOCALITA, decode(JTK_RUBRICA_TITOLARI.ID_REC, null, 'F', 'T') AS NOMINATIVO_IN_RUBRICA, JTK_NOMI_TICKET.CREATOR, JTK_NOMI_TICKET.CREATOR_TIMESTAMP, JTK_NOMI_TICKET.MODIFIER, JTK_NOMI_TICKET.MODIFIER_TIMESTAMP, JPC_NAZIONI.NOME AS NAZIONE, JPC_COMUNI.NOME AS COMUNE FROM DBSALES.JTK_NOMI_TICKET, DBSALES.JPC_NAZIONI, DBSALES.JPC_COMUNI, JTK_RUBRICA_TITOLARI WHERE 
                                    (JTK_NOMI_TICKET.ID_REC=1)
                                    and JTK_NOMI_TICKET.ID_REC = JTK_RUBRICA_TITOLARI.ID_NOME_RUBRICA_FK (+)
                                    and (38 = JTK_RUBRICA_TITOLARI.ID_TITOLARE_FK or JTK_RUBRICA_TITOLARI.ID_TITOLARE_FK is null)
                                 AND JTK_NOMI_TICKET.ID_NAZIONE_FK = JPC_NAZIONI.ID_REC(+) AND JTK_NOMI_TICKET.ID_COMUNE_FK = JPC_COMUNI.ID_REC(+) 
                    2017-01-20 09:20:32,891 DEBUG PoolableSQLConnectionFactory [builtinApplication.null] makeObject() created an unpooled Connection '453261274' 
                    2017-01-20 09:20:32,891 DEBUG SQLConnectionManager [builtinApplication.null] Borrowed connection '453261274' 
                    2017-01-20 09:20:32,891 DEBUG SQLTransaction [builtinApplication.null] Started new dbJpcEP transaction "453261274" 
                    2017-01-20 09:20:32,891 DEBUG SQLDataSource [builtinApplication.null] Setting DSRequest as being part of a transaction 
                    2017-01-20 09:20:32,891 INFO  SQLDriver [builtinApplication.null] Executing SQL query on 'dbJpcEP' using connection '453261274': SELECT JTK_NOMI_TICKET.ID_REC, JTK_NOMI_TICKET.NOME, JTK_NOMI_TICKET.COGNOME, JTK_NOMI_TICKET.DATA_NASCITA, JTK_NOMI_TICKET.EMAIL, JTK_NOMI_TICKET.ID_NAZIONE_FK, JTK_NOMI_TICKET.ID_COMUNE_FK, JTK_NOMI_TICKET.LOCALITA, decode(JTK_RUBRICA_TITOLARI.ID_REC, null, 'F', 'T') AS NOMINATIVO_IN_RUBRICA, JTK_NOMI_TICKET.CREATOR, JTK_NOMI_TICKET.CREATOR_TIMESTAMP, JTK_NOMI_TICKET.MODIFIER, JTK_NOMI_TICKET.MODIFIER_TIMESTAMP, JPC_NAZIONI.NOME AS NAZIONE, JPC_COMUNI.NOME AS COMUNE FROM DBSALES.JTK_NOMI_TICKET, DBSALES.JPC_NAZIONI, DBSALES.JPC_COMUNI, JTK_RUBRICA_TITOLARI WHERE 
                                    (JTK_NOMI_TICKET.ID_REC=1)
                                    and JTK_NOMI_TICKET.ID_REC = JTK_RUBRICA_TITOLARI.ID_NOME_RUBRICA_FK (+)
                                    and (38 = JTK_RUBRICA_TITOLARI.ID_TITOLARE_FK or JTK_RUBRICA_TITOLARI.ID_TITOLARE_FK is null)
                                 AND JTK_NOMI_TICKET.ID_NAZIONE_FK = JPC_NAZIONI.ID_REC(+) AND JTK_NOMI_TICKET.ID_COMUNE_FK = JPC_COMUNI.ID_REC(+) 
                    2017-01-20 09:20:32,903 INFO  DSResponse DSResponse: List with 1 items 
                    2017-01-20 09:20:32,903 DEBUG DSRequest freeOnExecute is false for request of type fetch on DataSource JTK_NOMI_TICKET - not freeing resources! 
                    2017-01-20 09:20:32,903 DEBUG PoolableDataSourceFactory Tried to create DataSource  of type 'sequence' but null was returned 
                    2017-01-20 09:20:32,903 DEBUG PoolableDataSourceFactory Tried to create DataSource  of type 'capitalizeFullyTrimText' but null was returned 
                    2017-01-20 09:20:32,903 DEBUG PoolableDataSourceFactory Tried to create DataSource  of type 'capitalizeFullyTrimText' but null was returned 
                    2017-01-20 09:20:32,903 DEBUG PoolableDataSourceFactory Tried to create DataSource  of type 'date' but null was returned 
                    2017-01-20 09:20:32,903 DEBUG PoolableDataSourceFactory Tried to create DataSource  of type 'trimText' but null was returned 
                    2017-01-20 09:20:32,903 DEBUG PoolableDataSourceFactory Tried to create DataSource  of type 'integer' but null was returned 
                    2017-01-20 09:20:32,903 DEBUG PoolableDataSourceFactory Tried to create DataSource  of type 'text' but null was returned 
                    2017-01-20 09:20:32,903 DEBUG PoolableDataSourceFactory Tried to create DataSource  of type 'integer' but null was returned 
                    2017-01-20 09:20:32,903 DEBUG PoolableDataSourceFactory Tried to create DataSource  of type 'text' but null was returned 
                    2017-01-20 09:20:32,903 DEBUG PoolableDataSourceFactory Tried to create DataSource  of type 'capitalizeFullyTrimText' but null was returned 
                    2017-01-20 09:20:32,903 DEBUG PoolableDataSourceFactory Tried to create DataSource  of type 'boolean' but null was returned 
                    2017-01-20 09:20:32,903 DEBUG PoolableDataSourceFactory Tried to create DataSource  of type 'creator' but null was returned 
                    2017-01-20 09:20:32,903 DEBUG PoolableDataSourceFactory Tried to create DataSource  of type 'creatorTimestamp' but null was returned 
                    2017-01-20 09:20:32,903 DEBUG PoolableDataSourceFactory Tried to create DataSource  of type 'modifier' but null was returned 
                    2017-01-20 09:20:32,903 DEBUG PoolableDataSourceFactory Tried to create DataSource  of type 'modifierTimestamp' but null was returned 
                    2017-01-20 09:20:32,904 DEBUG DefaultValidators NOTE: Record after applying stored values is:
                    {
                        ID_NOME_RUBRICA_FK:50650,
                        ID_REC:1,
                        NOMINATIVO_IN_RUBRICA:true,
                        LOCALITA:null,
                        CREATOR:"claudio.bosticco@juventus.com",
                        ID_COMUNE_FK:7304,
                        ID_NAZIONE_FK:118,
                        COGNOME:"Bosticco",
                        NOME:"Claudio",
                        ID_BIGLIETTO_PAGAMENTO_FK:4402,
                        NAZIONE:"Italia",
                        DATA_NASCITA:isc.DateUtil.parseServerDate(2016,9,6),
                        EMAIL:"test@test.it",
                        CREATOR_TIMESTAMP:new Date(1475769667000),
                        MODIFIER_TIMESTAMP:new Date(1481127137000),
                        MODIFIER:"claudio.bosticco@juventus.com",
                        COMUNE:"TORINO"
                    } 
                    2017-01-20 09:20:32,904 DEBUG DefaultOperators criterion (class com.isomorphic.criteria.criterion.SimpleCriterion): {
                        operatorId:"notEqual",
                        value:"118",
                        fieldName:"ID_NAZIONE_FK"
                    }: And 
                    2017-01-20 09:20:32,904 DEBUG DefaultOperators value (class java.math.BigDecimal): 118: isEqualToConfiguredValue 
                    2017-01-20 09:20:32,904 DEBUG DefaultOperators operand (class java.lang.String): "118": isEqualToConfiguredValue 
                    2017-01-20 09:20:32,904 DEBUG DefaultOperators passedOp (class java.math.BigDecimal): 118: isEqualToConfiguredValue 
                    2017-01-20 09:20:32,904 DEBUG DefaultOperators isEqualToConfiguredValue returnstrue 
                    2017-01-20 09:20:32,904 DEBUG DefaultOperators And 0/0: false 
                    2017-01-20 09:20:32,904 INFO  DefaultValidators on field: 'LOCALITA' conditional validator of type 'required' is: inactive 
                    2017-01-20 09:20:32,904 DEBUG DefaultValidators on field: 'ID_COMUNE_FK' for validator type 'required', 'applyWhen' is:
                    {
                        operator:"and",
                        criteria:[
                            {
                                fieldName:"ID_NAZIONE_FK",
                                operator:"equals",
                                value:"118"
                            }
                        ]
                    }
                    record is:
                    {
                        ID_NOME_RUBRICA_FK:50650,
                        ID_REC:1,
                        NOMINATIVO_IN_RUBRICA:true,
                        LOCALITA:null,
                        ID_COMUNE_FK:7304,
                        ID_NAZIONE_FK:118,
                        COGNOME:"Bosticco",
                        NOME:"Claudio",
                        ID_BIGLIETTO_PAGAMENTO_FK:4402,
                        NAZIONE:"Italia",
                        DATA_NASCITA:new Date(1475704800000),
                        EMAIL:"test@test.it",
                        MODIFIER_TIMESTAMP:new Date(1484900432884),
                        MODIFIER:"claudio.bosticco@juventus.com",
                        COMUNE:"TORINO"
                    } 
                    2017-01-20 09:20:32,905 DEBUG DefaultValidators NOTE: Record after applying stored values is:
                    {
                        ID_NOME_RUBRICA_FK:50650,
                        ID_REC:1,
                        NOMINATIVO_IN_RUBRICA:true,
                        LOCALITA:null,
                        CREATOR:"claudio.bosticco@juventus.com",
                        ID_COMUNE_FK:7304,
                        ID_NAZIONE_FK:118,
                        COGNOME:"Bosticco",
                        NOME:"Claudio",
                        ID_BIGLIETTO_PAGAMENTO_FK:4402,
                        NAZIONE:"Italia",
                        DATA_NASCITA:isc.DateUtil.parseServerDate(2016,9,6),
                        EMAIL:"test@test.it",
                        CREATOR_TIMESTAMP:new Date(1475769667000),
                        MODIFIER_TIMESTAMP:new Date(1481127137000),
                        MODIFIER:"claudio.bosticco@juventus.com",
                        COMUNE:"TORINO"
                    } 
                    2017-01-20 09:20:32,905 DEBUG DefaultOperators criterion (class com.isomorphic.criteria.criterion.SimpleCriterion): {
                        operatorId:"equals",
                        value:"118",
                        fieldName:"ID_NAZIONE_FK"
                    }: And 
                    2017-01-20 09:20:32,905 DEBUG DefaultOperators value (class java.math.BigDecimal): 118: isEqualToConfiguredValue 
                    2017-01-20 09:20:32,905 DEBUG DefaultOperators operand (class java.lang.String): "118": isEqualToConfiguredValue 
                    2017-01-20 09:20:32,905 DEBUG DefaultOperators passedOp (class java.math.BigDecimal): 118: isEqualToConfiguredValue 
                    2017-01-20 09:20:32,905 DEBUG DefaultOperators isEqualToConfiguredValue returnstrue 
                    2017-01-20 09:20:32,905 DEBUG DefaultOperators And 0/0: true 
                    2017-01-20 09:20:32,905 INFO  DefaultValidators on field: 'ID_COMUNE_FK' conditional validator of type 'required' is: active 
                    2017-01-20 09:20:32,905 DEBUG BasicDataSource for field: COGNOMEadding automatically generated lengthRange validator for length:100 
                    2017-01-20 09:20:32,905 DEBUG BasicDataSource for field: NOMEadding automatically generated lengthRange validator for length:100 
                    2017-01-20 09:20:32,906 DEBUG BasicDataSource for field: NAZIONEadding automatically generated lengthRange validator for length:200 
                    2017-01-20 09:20:32,906 DEBUG PoolableDataSourceFactory Tried to create DataSource  of type 'trimText' but null was returned 
                    2017-01-20 09:20:32,906 DEBUG BasicDataSource for field: EMAILadding automatically generated lengthRange validator for length:200 
                    2017-01-20 09:20:32,906 DEBUG BasicDataSource for field: COMUNEadding automatically generated lengthRange validator for length:40 
                    2017-01-20 09:20:32,906 DEBUG DefaultOperators criterion (class com.isomorphic.criteria.criterion.SimpleCriterion): {
                        operatorId:"equals",
                        value:"118",
                        fieldName:"ID_NAZIONE_FK"
                    }: And 
                    2017-01-20 09:20:32,907 DEBUG DefaultOperators value (class java.lang.Long): 118: isEqualToConfiguredValue 
                    2017-01-20 09:20:32,907 DEBUG DefaultOperators operand (class java.lang.String): "118": isEqualToConfiguredValue 
                    2017-01-20 09:20:32,907 DEBUG DefaultOperators passedOp (class java.lang.Long): 118: isEqualToConfiguredValue 
                    2017-01-20 09:20:32,907 DEBUG DefaultOperators isEqualToConfiguredValue returnstrue 
                    2017-01-20 09:20:32,907 DEBUG DefaultOperators And 0/0: true 
                    2017-01-20 09:20:32,907 DEBUG DefaultOperators criterion (class com.isomorphic.criteria.criterion.SimpleCriterion): {
                        operatorId:"notEqual",
                        value:"118",
                        fieldName:"ID_NAZIONE_FK"
                    }: And 
                    2017-01-20 09:20:32,907 DEBUG DefaultOperators value (class java.lang.Long): 118: isEqualToConfiguredValue 
                    2017-01-20 09:20:32,907 DEBUG DefaultOperators operand (class java.lang.String): "118": isEqualToConfiguredValue 
                    2017-01-20 09:20:32,907 DEBUG DefaultOperators passedOp (class java.lang.Long): 118: isEqualToConfiguredValue 
                    2017-01-20 09:20:32,907 DEBUG DefaultOperators isEqualToConfiguredValue returnstrue 
                    2017-01-20 09:20:32,907 DEBUG DefaultOperators And 0/0: false 
                    2017-01-20 09:20:32,907 DEBUG BasicDataSource Done validating 1 'JTK_NOMI_TICKET's at path '': 22ms (avg 22) 
                    2017-01-20 09:20:32,907 DEBUG DataSource post-validation valueSet: [
                        {
                            ID_BIGLIETTO_PAGAMENTO_FK:4402,
                            ID_NOME_RUBRICA_FK:50650,
                            ID_REC:1,
                            NOMINATIVO_IN_RUBRICA:true,
                            ID_COMUNE_FK:7304,
                            ID_NAZIONE_FK:118,
                            NOME:"Claudio",
                            COGNOME:"Bosticco",
                            NAZIONE:"Italia",
                            DATA_NASCITA:new Date(1475704800000),
                            EMAIL:"test@test.it",
                            COMUNE:"TORINO",
                            MODIFIER:"claudio.bosticco@juventus.com",
                            MODIFIER_TIMESTAMP:new Date(1484900432884)
                        }
                    ] 
                    2017-01-20 09:20:32,908 DEBUG DataSource Path selected from JTK_NOMI_PAGAMENTO to JTK_NOMI_TICKET:  -> JTK_NOMI_PAGAMENTO -> JTK_NOMI_TICKET 
                    2017-01-20 09:20:32,908 DEBUG DataSource Returning cached relation for JTK_NOMI_PAGAMENTO -> JTK_NOMI_TICKET (the relation is not necessarily direct) 
                    2017-01-20 09:20:32,908 DEBUG DataSource Returning cached relation for JTK_NOMI_PAGAMENTO -> JTK_NOMI_TICKET (the relation is not necessarily direct) 
                    2017-01-20 09:20:32,908 DEBUG DataSource Returning cached relation for JTK_NOMI_PAGAMENTO -> JTK_NOMI_TICKET (the relation is not necessarily direct) 
                    2017-01-20 09:20:32,908 DEBUG DataSource Returning cached relation for JTK_NOMI_PAGAMENTO -> JTK_NOMI_TICKET (the relation is not necessarily direct) 
                    2017-01-20 09:20:32,908 DEBUG DataSource Returning cached relation for JTK_NOMI_PAGAMENTO -> JTK_NOMI_TICKET (the relation is not necessarily direct) 
                    2017-01-20 09:20:32,908 DEBUG DataSource Returning cached relation for JTK_NOMI_PAGAMENTO -> JTK_NOMI_TICKET (the relation is not necessarily direct) 
                    2017-01-20 09:20:32,908 DEBUG DataSource Path selected from JTK_NOMI_PAGAMENTO to JTK_NOMI_TICKET.JPC_NAZIONI:  -> JTK_NOMI_PAGAMENTO -> JTK_NOMI_TICKET -> JPC_NAZIONI 
                    2017-01-20 09:20:32,909 DEBUG DataSource Path selected from JTK_NOMI_PAGAMENTO to JTK_NOMI_TICKET.JPC_COMUNI:  -> JTK_NOMI_PAGAMENTO -> JTK_NOMI_TICKET -> JPC_COMUNI 
                    2017-01-20 09:20:32,909 DEBUG SQLDataSource DataSource 294 acquired SQLDriver instance 837736209 during initialization 
                    2017-01-20 09:20:32,909 DEBUG PoolableDataSourceFactory Created DataSource 294 of type 'JTK_NOMI_PAGAMENTO' and assigned it to thread http-bio-8445-exec-25 
                    2017-01-20 09:20:32,909 DEBUG DSRequest Caching instance 294 of DS 'JTK_NOMI_PAGAMENTO' from DSRequest.getDataSource() 
                    2017-01-20 09:20:32,909 DEBUG DSRequest Caching instance 294 of DS JTK_NOMI_PAGAMENTO 
                    2017-01-20 09:20:32,909 DEBUG DeclarativeSecurity Processing security checks for DataSource null, field null 
                    2017-01-20 09:20:32,909 DEBUG DeclarativeSecurity Request is not a client request, ignoring security checks. 
                    2017-01-20 09:20:32,909 DEBUG AppBase [builtinApplication.null] No userTypes defined, allowing anyone access to all operations for this application 
                    2017-01-20 09:20:32,909 DEBUG AppBase [builtinApplication.null] No public zero-argument method named '_null' found, performing generic datasource operation 
                    2017-01-20 09:20:32,909 INFO  SQLDataSource [builtinApplication.null] Performing fetch operation with
                        criteria: {ID_BIGLIETTO_PAGAMENTO_FK:4402}    values: {ID_BIGLIETTO_PAGAMENTO_FK:4402} 
                    2017-01-20 09:20:32,910 INFO  SQLDataSource [builtinApplication.null] derived query: SELECT $defaultSelectClause FROM $defaultTableClause, JTK_BIGLIETTI_PAGAMENTO, JTK_TARIFFE, JTK_SETTORI_VENDITA WHERE 
                                    $defaultWhereClause
                                    and JTK_BIGLIETTI_PAGAMENTO.ID_TITOLARE_FK = $sessionAttributes.ID_TITOLARE_IMPERSONATO_FK
                                    AND JTK_NOMI_PAGAMENTO.ID_BIGLIETTO_PAGAMENTO_FK = JTK_BIGLIETTI_PAGAMENTO.ID_REC
                                    AND JTK_BIGLIETTI_PAGAMENTO.ID_TARIFFA_FK = JTK_TARIFFE.ID_REC
                                    and JTK_TARIFFE.ID_SETTORE_VENDITA_FK = JTK_SETTORI_VENDITA.ID_REC
                                    AND JTK_NOMI_PAGAMENTO.ID_NOME_TICKET_FK = JTK_NOMI_TICKET.ID_REC
                                    AND JTK_NOMI_TICKET.ID_NAZIONE_FK = JPC_NAZIONI.ID_REC
                                    AND JTK_NOMI_TICKET.ID_COMUNE_FK = JPC_COMUNI.ID_REC(+)
                                 AND $defaultJoinWhereClause 
                    2017-01-20 09:20:32,910 INFO  SQLDataSource [builtinApplication.null] 294: Executing SQL query on 'dbJpcEP': SELECT JTK_NOMI_PAGAMENTO.ID_REC, JTK_NOMI_PAGAMENTO.ID_BIGLIETTO_PAGAMENTO_FK, JTK_BIGLIETTI_PAGAMENTO.ID_REC AS ID_BIGLIETTO_PAGAMENTO_JOIN_FK, JTK_NOMI_PAGAMENTO.ID_NOME_TICKET_FK, JTK_BIGLIETTI_PAGAMENTO.ID_TITOLARE_FK, JTK_BIGLIETTI_PAGAMENTO.ID_TARIFFA_FK, JTK_BIGLIETTI_PAGAMENTO.ID_PAGAMENTO_FK, JTK_TARIFFE.ID_LISTINO_FK, JTK_TARIFFE.PREZZO_LORDO, JTK_TARIFFE.NOME || (decode(ETA, null , '', ' ' || JTK_TARIFFE.ETA)) AS TARIFFA, JTK_SETTORI_VENDITA.DESCRIZIONE AS SETTORE, JTK_NOMI_PAGAMENTO.CREATOR, JTK_NOMI_PAGAMENTO.CREATOR_TIMESTAMP, JTK_NOMI_PAGAMENTO.MODIFIER, JTK_NOMI_PAGAMENTO.MODIFIER_TIMESTAMP, JTK_NOMI_TICKET.NOME, JTK_NOMI_TICKET.COGNOME, JTK_NOMI_TICKET.DATA_NASCITA, JTK_NOMI_TICKET.EMAIL, JTK_NOMI_TICKET.ID_NAZIONE_FK, JTK_NOMI_TICKET.ID_COMUNE_FK, JTK_NOMI_TICKET.LOCALITA, JPC_NAZIONI.NOME AS NAZIONE, JPC_COMUNI.NOME AS COMUNE FROM DBSALES.JTK_NOMI_TICKET, DBSALES.JTK_NOMI_PAGAMENTO, DBSALES.JPC_NAZIONI, DBSALES.JPC_COMUNI, JTK_BIGLIETTI_PAGAMENTO, JTK_TARIFFE, JTK_SETTORI_VENDITA WHERE 
                                    (JTK_NOMI_PAGAMENTO.ID_BIGLIETTO_PAGAMENTO_FK=4402)
                                    and JTK_BIGLIETTI_PAGAMENTO.ID_TITOLARE_FK = 38
                                    AND JTK_NOMI_PAGAMENTO.ID_BIGLIETTO_PAGAMENTO_FK = JTK_BIGLIETTI_PAGAMENTO.ID_REC
                                    AND JTK_BIGLIETTI_PAGAMENTO.ID_TARIFFA_FK = JTK_TARIFFE.ID_REC
                                    and JTK_TARIFFE.ID_SETTORE_VENDITA_FK = JTK_SETTORI_VENDITA.ID_REC
                                    AND JTK_NOMI_PAGAMENTO.ID_NOME_TICKET_FK = JTK_NOMI_TICKET.ID_REC
                                    AND JTK_NOMI_TICKET.ID_NAZIONE_FK = JPC_NAZIONI.ID_REC
                                    AND JTK_NOMI_TICKET.ID_COMUNE_FK = JPC_COMUNI.ID_REC(+)
                                 AND JTK_NOMI_PAGAMENTO.ID_NOME_TICKET_FK = JTK_NOMI_TICKET.ID_REC(+) AND JTK_NOMI_TICKET.ID_NAZIONE_FK = JPC_NAZIONI.ID_REC(+) AND JTK_NOMI_TICKET.ID_COMUNE_FK = JPC_COMUNI.ID_REC(+) 
                    2017-01-20 09:20:32,910 DEBUG SQLDataSource [builtinApplication.null] Setting DSRequest as being part of a transaction 
                    2017-01-20 09:20:32,910 INFO  SQLDriver [builtinApplication.null] Executing SQL query on 'dbJpcEP' using connection '453261274': SELECT JTK_NOMI_PAGAMENTO.ID_REC, JTK_NOMI_PAGAMENTO.ID_BIGLIETTO_PAGAMENTO_FK, JTK_BIGLIETTI_PAGAMENTO.ID_REC AS ID_BIGLIETTO_PAGAMENTO_JOIN_FK, JTK_NOMI_PAGAMENTO.ID_NOME_TICKET_FK, JTK_BIGLIETTI_PAGAMENTO.ID_TITOLARE_FK, JTK_BIGLIETTI_PAGAMENTO.ID_TARIFFA_FK, JTK_BIGLIETTI_PAGAMENTO.ID_PAGAMENTO_FK, JTK_TARIFFE.ID_LISTINO_FK, JTK_TARIFFE.PREZZO_LORDO, JTK_TARIFFE.NOME || (decode(ETA, null , '', ' ' || JTK_TARIFFE.ETA)) AS TARIFFA, JTK_SETTORI_VENDITA.DESCRIZIONE AS SETTORE, JTK_NOMI_PAGAMENTO.CREATOR, JTK_NOMI_PAGAMENTO.CREATOR_TIMESTAMP, JTK_NOMI_PAGAMENTO.MODIFIER, JTK_NOMI_PAGAMENTO.MODIFIER_TIMESTAMP, JTK_NOMI_TICKET.NOME, JTK_NOMI_TICKET.COGNOME, JTK_NOMI_TICKET.DATA_NASCITA, JTK_NOMI_TICKET.EMAIL, JTK_NOMI_TICKET.ID_NAZIONE_FK, JTK_NOMI_TICKET.ID_COMUNE_FK, JTK_NOMI_TICKET.LOCALITA, JPC_NAZIONI.NOME AS NAZIONE, JPC_COMUNI.NOME AS COMUNE FROM DBSALES.JTK_NOMI_TICKET, DBSALES.JTK_NOMI_PAGAMENTO, DBSALES.JPC_NAZIONI, DBSALES.JPC_COMUNI, JTK_BIGLIETTI_PAGAMENTO, JTK_TARIFFE, JTK_SETTORI_VENDITA WHERE 
                                    (JTK_NOMI_PAGAMENTO.ID_BIGLIETTO_PAGAMENTO_FK=4402)
                                    and JTK_BIGLIETTI_PAGAMENTO.ID_TITOLARE_FK = 38
                                    AND JTK_NOMI_PAGAMENTO.ID_BIGLIETTO_PAGAMENTO_FK = JTK_BIGLIETTI_PAGAMENTO.ID_REC
                                    AND JTK_BIGLIETTI_PAGAMENTO.ID_TARIFFA_FK = JTK_TARIFFE.ID_REC
                                    and JTK_TARIFFE.ID_SETTORE_VENDITA_FK = JTK_SETTORI_VENDITA.ID_REC
                                    AND JTK_NOMI_PAGAMENTO.ID_NOME_TICKET_FK = JTK_NOMI_TICKET.ID_REC
                                    AND JTK_NOMI_TICKET.ID_NAZIONE_FK = JPC_NAZIONI.ID_REC
                                    AND JTK_NOMI_TICKET.ID_COMUNE_FK = JPC_COMUNI.ID_REC(+)
                                 AND JTK_NOMI_PAGAMENTO.ID_NOME_TICKET_FK = JTK_NOMI_TICKET.ID_REC(+) AND JTK_NOMI_TICKET.ID_NAZIONE_FK = JPC_NAZIONI.ID_REC(+) AND JTK_NOMI_TICKET.ID_COMUNE_FK = JPC_COMUNI.ID_REC(+) 
                    2017-01-20 09:20:32,915 INFO  DSResponse DSResponse: List with 1 items 
                    2017-01-20 09:20:32,915 DEBUG DSRequest freeOnExecute is false for request of type fetch on DataSource JTK_NOMI_PAGAMENTO - not freeing resources! 
                    2017-01-20 09:20:32,915 DEBUG DeclarativeSecurity Processing security checks for DataSource null, field null 
                    2017-01-20 09:20:32,915 DEBUG DeclarativeSecurity Request is not a client request, ignoring security checks. 
                    2017-01-20 09:20:32,916 DEBUG AppBase [builtinApplication.null] No userTypes defined, allowing anyone access to all operations for this application 
                    2017-01-20 09:20:32,916 DEBUG AppBase [builtinApplication.null] No public zero-argument method named '_null' found, performing generic datasource operation 
                    2017-01-20 09:20:32,916 DEBUG BasicDataSource [builtinApplication.null] Validating 1 'JTK_NOMI_PAGAMENTO's at path '' 
                    2017-01-20 09:20:32,916 DEBUG BasicDataSource [builtinApplication.null] Validating a 'JTK_NOMI_PAGAMENTO' at path '' 
                    2017-01-20 09:20:32,916 DEBUG PoolableDataSourceFactory [builtinApplication.null] Tried to create DataSource  of type 'capitalizeFullyTrimText' but null was returned 
                    2017-01-20 09:20:32,916 DEBUG DefaultValidators [builtinApplication.null] on field: 'LOCALITA' for validator type 'required', 'applyWhen' is:
                    {
                        operator:"and",
                        criteria:[
                            {
                                fieldName:"ID_NAZIONE_FK",
                                operator:"notEqual",
                                value:"118"
                            }
                        ]
                    }
                    record is:
                    {
                        LOCALITA:null,
                        ID_COMUNE_FK:null,
                        MODIFIER:"claudio.bosticco@juventus.com",
                        MODIFIER_TIMESTAMP:new Date(1484900432884),
                        ID_NOME_TICKET_FK:1
                    } 
                    2017-01-20 09:20:32,917 DEBUG DefaultValidators [builtinApplication.null] NOTE: Record after applying stored values is:
                    {
                        LOCALITA:null,
                        ID_COMUNE_FK:null,
                        MODIFIER:"claudio.bosticco@juventus.com",
                        MODIFIER_TIMESTAMP:new Date(1484900432884),
                        ID_NOME_TICKET_FK:1
                    } 
                    2017-01-20 09:20:32,917 DEBUG DefaultOperators [builtinApplication.null] criterion (class com.isomorphic.criteria.criterion.SimpleCriterion): {
                        operatorId:"notEqual",
                        value:"118",
                        fieldName:"ID_NAZIONE_FK"
                    }: And 
                    2017-01-20 09:20:32,917 DEBUG DefaultOperators [builtinApplication.null] value (null): isEqualToConfiguredValue 
                    2017-01-20 09:20:32,917 DEBUG DefaultOperators [builtinApplication.null] operand (class java.lang.String): "118": isEqualToConfiguredValue 
                    2017-01-20 09:20:32,917 DEBUG DefaultOperators [builtinApplication.null] passedOp (class java.lang.String): "118": isEqualToConfiguredValue 
                    2017-01-20 09:20:32,917 DEBUG DefaultOperators [builtinApplication.null] isEqualToConfiguredValue returnsfalse 
                    2017-01-20 09:20:32,917 DEBUG DefaultOperators [builtinApplication.null] And 0/0: true 
                    2017-01-20 09:20:32,917 INFO  DefaultValidators [builtinApplication.null] on field: 'LOCALITA' conditional validator of type 'required' is: active 
                    2017-01-20 09:20:32,917 DEBUG ValidationContext [builtinApplication.null] Adding validation errors at path '/JTK_NOMI_PAGAMENTO/LOCALITA/LOCALITA': {errorMessage=Field is required} 
                    2017-01-20 09:20:32,918 DEBUG BasicDataSource [builtinApplication.null] Done validating 1 'JTK_NOMI_PAGAMENTO's at path '': 2ms (avg 2) 
                    2017-01-20 09:20:32,918 DEBUG DataSource [builtinApplication.null] post-validation valueSet: [
                        {
                            MODIFIER_TIMESTAMP:new Date(1484900432884),
                            MODIFIER:"claudio.bosticco@juventus.com",
                            ID_NOME_TICKET_FK:1
                        }
                    ] 
                    2017-01-20 09:20:32,918 INFO  Validation [builtinApplication.null] Validation error: [
                        {
                            LOCALITA:{
                                errorMessage:"Field is required"
                            }
                        }
                    ]

                    Comment


                      #25
                      Hi claudiobosticco,

                      when you call the DataSourceLoader-servlet manually (just like the main html page does) for just the two DataSources, do you see a Validator defined on the includeFrom-Field?
                      Because if there is no Validator there, it most likely is the same as my problem.
                      If there is a Validator, it is a problem of DataSourceLoader or the code that DataSourceLoader uses.

                      Can you post that result-json as well?

                      Best regards
                      Blama

                      Comment


                        #26
                        Hi Blama, here it is the json for the two datasources:

                        Code:
                        isc.DataSource.create({
                            allowAdvancedCriteria: true,
                            dropExtraFields: false,
                            xmlns: "http://www.smartclient.com/schema",
                            operationBindings: [
                                {
                                    operationType: "fetch"
                                },
                                {
                                    operationType: "fetch",
                                    operationId: "fetchAll"
                                },
                                {
                                    operationType: "add"
                                },
                                {
                                    operationType: "update"
                                },
                                {
                                    operationType: "add",
                                    operationId: "salvaNomeBigliettoPagamento"
                                },
                                {
                                    operationType: "update",
                                    operationId: "salvaNomeBigliettoPagamento"
                                },
                                {
                                    operationType: "add",
                                    operationId: "salvaNomeBigliettoOmaggio"
                                },
                                {
                                    operationType: "update",
                                    operationId: "salvaNomeBigliettoOmaggio"
                                },
                                {
                                    operationType: "remove"
                                }
                            ],
                            serverType: "sql",
                            tableCode: "ccd5a596315c637a297dd69a7fe04816",
                            ID: "JTK_NOMI_TICKET",
                            fields: [
                                {
                                    validators: [],
                                    sqlType: "decimal",
                                    hidden: true,
                                    columnCode: "99ac8da1ccc809f30f520cfbd6a5f739",
                                    primaryKey: true,
                                    name: "ID_REC",
                                    type: "sequence"
                                },
                                {
                                    validators: [],
                                    columnCode: "666ac576aa2666cff323f5d976d592a6",
                                    name: "NOME",
                                    length: 100,
                                    type: "capitalizeFullyTrimText",
                                    required: true
                                },
                                {
                                    validators: [],
                                    columnCode: "0669eb2a399543eae72ceda065969f65",
                                    name: "COGNOME",
                                    length: 100,
                                    type: "capitalizeFullyTrimText",
                                    required: true
                                },
                                {
                                    validators: [],
                                    columnCode: "798a16e88ada254f9e084f107d271186",
                                    name: "DATA_NASCITA",
                                    type: "date",
                                    required: true
                                },
                                {
                                    validators: [],
                                    columnCode: "0c83f57c786a0b4a39efab23731c7ebc",
                                    name: "EMAIL",
                                    length: 200,
                                    type: "trimText"
                                },
                                {
                                    validators: [],
                                    displayField: "NAZIONE",
                                    columnCode: "a428e3779af13e11c27c5c8720ab708d",
                                    name: "ID_NAZIONE_FK",
                                    useLocalDisplayFieldValue: true,
                                    joinType: "outer",
                                    type: "integer",
                                    required: true,
                                    foreignKey: "JPC_NAZIONI.ID_REC"
                                },
                                {
                                    validators: [],
                                    sqlType: "varchar",
                                    columnCode: "7922116829c3ffcebb4edebad2f3ae4a",
                                    sqlLength: "200",
                                    name: "NAZIONE",
                                    length: 200,
                                    canEdit: false,
                                    type: "text"
                                },
                                {
                                    conditionallyRequired: true,
                                    validators: [
                                        {
                                            applyWhen: {
                                                operator: "and",
                                                criteria: [
                                                    {
                                                        fieldName: "ID_NAZIONE_FK",
                                                        operator: "equals",
                                                        value: "118"
                                                    }
                                                ]
                                            },
                                            dependentFields: [
                                                "ID_NAZIONE_FK"
                                            ],
                                            type: "required",
                                            stopIfFalse: true
                                        }
                                    ],
                                    displayField: "COMUNE",
                                    columnCode: "06188e0d7a6b09545a0f5e69f9f40b70",
                                    name: "ID_COMUNE_FK",
                                    useLocalDisplayFieldValue: true,
                                    joinType: "outer",
                                    requiredMessage: null,
                                    required: true,
                                    type: "integer",
                                    foreignKey: "JPC_COMUNI.ID_REC"
                                },
                                {
                                    validators: [],
                                    sqlType: "varchar",
                                    columnCode: "800d4d1009b8b505eee34576b20b8a7c",
                                    sqlLength: "40",
                                    name: "COMUNE",
                                    length: 40,
                                    canEdit: false,
                                    type: "text"
                                },
                                {
                                    conditionallyRequired: true,
                                    validators: [
                                        {
                                            applyWhen: {
                                                operator: "and",
                                                criteria: [
                                                    {
                                                        fieldName: "ID_NAZIONE_FK",
                                                        operator: "notEqual",
                                                        value: "118"
                                                    }
                                                ]
                                            },
                                            dependentFields: [
                                                "ID_NAZIONE_FK"
                                            ],
                                            type: "required",
                                            stopIfFalse: true
                                        }
                                    ],
                                    columnCode: "67ffa9b5b24af1796da4ce34fa96daf6",
                                    name: "LOCALITA",
                                    length: 100,
                                    requiredMessage: null,
                                    required: true,
                                    type: "capitalizeFullyTrimText"
                                },
                                {
                                    validators: [],
                                    columnCode: "379b82537a809d9769d7d0efe49d8e63",
                                    name: "NOMINATIVO_IN_RUBRICA",
                                    type: "boolean"
                                },
                                {
                                    canSave: false,
                                    validators: [],
                                    hidden: true,
                                    columnCode: "ee2433259b0fe399b40e81d2c98a38b6",
                                    name: "CREATOR",
                                    canEdit: false,
                                    type: "creator"
                                },
                                {
                                    canSave: false,
                                    validators: [],
                                    hidden: true,
                                    columnCode: "95e224a9df61b23642f292448b1179e6",
                                    name: "CREATOR_TIMESTAMP",
                                    canEdit: false,
                                    type: "creatorTimestamp"
                                },
                                {
                                    canSave: false,
                                    validators: [],
                                    hidden: true,
                                    columnCode: "3ad7320fa61b1cfad6b5a97fcb565315",
                                    name: "MODIFIER",
                                    canEdit: false,
                                    type: "modifier"
                                },
                                {
                                    canSave: false,
                                    validators: [],
                                    hidden: true,
                                    columnCode: "12bcef44eef71bedabad0b3dad512f6d",
                                    name: "MODIFIER_TIMESTAMP",
                                    canEdit: false,
                                    type: "modifierTimestamp"
                                }
                            ]
                        })
                        
                        isc.DataSource.create({
                            allowAdvancedCriteria: true,
                            xmlns: "http://www.smartclient.com/schema",
                            operationBindings: [
                                {
                                    operationType: "fetch"
                                },
                                {
                                    operationType: "fetch",
                                    operationId: "fetchAncheSenzaNome"
                                },
                                {
                                    operationType: "add"
                                },
                                {
                                    invalidateCache: "true",
                                    operationType: "add",
                                    cacheSyncOperation: "fetchAncheSenzaNome",
                                    operationId: "mustInvalidateCache"
                                },
                                {
                                    operationType: "update",
                                    cacheSyncOperation: "fetchAncheSenzaNome"
                                },
                                {
                                    operationType: "remove"
                                }
                            ],
                            serverType: "sql",
                            tableCode: "1c53b20b5382294436c6acea1179954f",
                            ID: "JTK_NOMI_PAGAMENTO",
                            fields: [
                                {
                                    validators: [],
                                    sqlType: "decimal",
                                    hidden: true,
                                    columnCode: "99ac8da1ccc809f30f520cfbd6a5f739",
                                    primaryKey: true,
                                    name: "ID_REC",
                                    type: "sequence"
                                },
                                {
                                    validators: [],
                                    columnCode: "23541f139e037a942aafb1c3b8dadb84",
                                    name: "ID_BIGLIETTO_PAGAMENTO_FK",
                                    joinType: "outer",
                                    type: "integer",
                                    foreignKey: "JTK_BIGLIETTI_PAGAMENTO.ID_REC"
                                },
                                {
                                    validators: [],
                                    columnCode: "5017992adabfc47529b87a020149f927",
                                    name: "ID_BIGLIETTO_PAGAMENTO_JOIN_FK",
                                    type: "integer"
                                },
                                {
                                    validators: [],
                                    columnCode: "7fa4af35c53fc646ef42a4242d6497ee",
                                    name: "ID_NOME_TICKET_FK",
                                    joinType: "outer",
                                    type: "integer",
                                    foreignKey: "JTK_NOMI_TICKET.ID_REC"
                                },
                                {
                                    name: "ID_TITOLARE_FK",
                                    type: "integer",
                                    canEdit: false,
                                    validators: [],
                                    columnCode: "2419c24dd8acc4bfa1590e7ea039eb98"
                                },
                                {
                                    name: "ID_TARIFFA_FK",
                                    type: "boolean",
                                    canEdit: false,
                                    validators: [],
                                    columnCode: "d7c17d6c67592aeed44fd0699fc2ac67"
                                },
                                {
                                    name: "ID_PAGAMENTO_FK",
                                    type: "boolean",
                                    canEdit: false,
                                    validators: [],
                                    columnCode: "812062979c493ba8428b17b76f9f0f96"
                                },
                                {
                                    name: "ID_LISTINO_FK",
                                    type: "integer",
                                    canEdit: false,
                                    validators: [],
                                    columnCode: "3191c20436ad68a0c795ce0c15828918"
                                },
                                {
                                    name: "PREZZO_LORDO",
                                    type: "localeFloat",
                                    canEdit: false,
                                    validators: [],
                                    columnCode: "8808ef01da204866156dd9d71d4896e5"
                                },
                                {
                                    validators: [],
                                    columnCode: "f83a1f1768d768be994bd8436e600e88",
                                    name: "TARIFFA",
                                    type: "text"
                                },
                                {
                                    name: "SETTORE",
                                    type: "text",
                                    canEdit: false,
                                    validators: [],
                                    columnCode: "fd6bf5d46fd27698da47f9390ec40082"
                                },
                                {
                                    validators: [],
                                    columnCode: "666ac576aa2666cff323f5d976d592a6",
                                    name: "NOME",
                                    length: 100,
                                    canEdit: false,
                                    type: "capitalizeFullyTrimText"
                                },
                                {
                                    validators: [],
                                    columnCode: "0669eb2a399543eae72ceda065969f65",
                                    name: "COGNOME",
                                    length: 100,
                                    canEdit: false,
                                    type: "capitalizeFullyTrimText"
                                },
                                {
                                    validators: [],
                                    columnCode: "798a16e88ada254f9e084f107d271186",
                                    name: "DATA_NASCITA",
                                    canEdit: false,
                                    type: "date"
                                },
                                {
                                    validators: [],
                                    columnCode: "0c83f57c786a0b4a39efab23731c7ebc",
                                    name: "EMAIL",
                                    length: 200,
                                    canEdit: false,
                                    type: "trimText"
                                },
                                {
                                    validators: [],
                                    displayField: "NAZIONE",
                                    columnCode: "a428e3779af13e11c27c5c8720ab708d",
                                    name: "ID_NAZIONE_FK",
                                    useLocalDisplayFieldValue: true,
                                    joinType: "outer",
                                    canEdit: false,
                                    type: "integer",
                                    foreignKey: "JPC_NAZIONI.ID_REC"
                                },
                                {
                                    conditionallyRequired: true,
                                    validators: [],
                                    displayField: "COMUNE",
                                    columnCode: "06188e0d7a6b09545a0f5e69f9f40b70",
                                    name: "ID_COMUNE_FK",
                                    useLocalDisplayFieldValue: true,
                                    joinType: "outer",
                                    requiredMessage: null,
                                    canEdit: false,
                                    type: "integer",
                                    foreignKey: "JPC_COMUNI.ID_REC"
                                },
                                {
                                    conditionallyRequired: true,
                                    validators: [],
                                    columnCode: "67ffa9b5b24af1796da4ce34fa96daf6",
                                    name: "LOCALITA",
                                    length: 100,
                                    requiredMessage: null,
                                    canEdit: false,
                                    type: "capitalizeFullyTrimText"
                                },
                                {
                                    validators: [],
                                    sqlType: "varchar",
                                    columnCode: "7922116829c3ffcebb4edebad2f3ae4a",
                                    sqlLength: "200",
                                    name: "NAZIONE",
                                    length: 200,
                                    canEdit: false,
                                    type: "text"
                                },
                                {
                                    validators: [],
                                    sqlType: "varchar",
                                    columnCode: "800d4d1009b8b505eee34576b20b8a7c",
                                    sqlLength: "40",
                                    name: "COMUNE",
                                    length: 40,
                                    canEdit: false,
                                    type: "text"
                                },
                                {
                                    canSave: false,
                                    validators: [],
                                    hidden: true,
                                    columnCode: "ee2433259b0fe399b40e81d2c98a38b6",
                                    name: "CREATOR",
                                    canEdit: false,
                                    type: "creator"
                                },
                                {
                                    canSave: false,
                                    validators: [],
                                    hidden: true,
                                    columnCode: "95e224a9df61b23642f292448b1179e6",
                                    name: "CREATOR_TIMESTAMP",
                                    canEdit: false,
                                    type: "creatorTimestamp"
                                },
                                {
                                    canSave: false,
                                    validators: [],
                                    hidden: true,
                                    columnCode: "3ad7320fa61b1cfad6b5a97fcb565315",
                                    name: "MODIFIER",
                                    canEdit: false,
                                    type: "modifier"
                                },
                                {
                                    canSave: false,
                                    validators: [],
                                    hidden: true,
                                    columnCode: "12bcef44eef71bedabad0b3dad512f6d",
                                    name: "MODIFIER_TIMESTAMP",
                                    canEdit: false,
                                    type: "modifierTimestamp"
                                }
                            ]
                        })
                        the LOCALITA included field is:
                        Code:
                                {
                                    conditionallyRequired: true,
                                    validators: [],
                                    columnCode: "67ffa9b5b24af1796da4ce34fa96daf6",
                                    name: "LOCALITA",
                                    length: 100,
                                    requiredMessage: null,
                                    canEdit: false,
                                    type: "capitalizeFullyTrimText"
                                }

                        Comment


                          #27
                          Hi claudiobosticco,

                          great! I assume that the conditionallyRequired for the included field is just there because it is a new attribute and Isomorphic just forgot to not-emit it there (?). There are some more attributes that DataSourceLoader should not emit, so this is very possible.
                          Important is that the validator array itself is empty, so there are no validators that should be run IMHO.
                          If the issue happens consistently, perhaps Isomorphic now has the base it needs in order to identify the source of the problem.

                          Best regards
                          Blama

                          Comment


                            #28
                            also, If I decompile I can see that, while validating, the LOCALITA field for dataSource JTK_NOMI_PAGAMENTO has an attribute __cachedType which contains the validators of the original field.

                            Comment


                              #29
                              Wow, that might just be it! Thanks a lot for analyzing further.

                              Comment


                                #30
                                Isomorphic feel free to give me some hint to debug some more, if it could be of some help.

                                Comment

                                Working...
                                X