Announcement

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

    DMI Validator does not get provided additional DMI parameter of HttpServletRequest

    Hi Isomorphic,

    I'm using latest 5.1p and a .ds.xml file for my BatchUpload that has validators defined like this:

    .ds.xml excerpt:
    Code:
     <field name="CUST_SOURCEUID" uploadFieldName="Kunden-ID" length="50" type="text" escapeHTML="true">
    <title><fmt:message key="customerIDSource" /></title>
    <validators>
    <validator type="serverCustom">
    <serverObject lookupStyle="new" className="com.lmscompany.lms.server.worker.validator.ValidatorContactDetailsRequiredIf" />
    <errorMessage>$errorMessage</errorMessage>
    </validator>
    </validators>
    </field>
    Please note the $errorMessage with no further text. This is to localize the error message within the validator.
    For this I need to know the user's browser language, which I get from the HttpServletRequest:

    ValidatorContactDetailsRequiredIf.java
    Code:
    package com.lmscompany.lms.server.worker.validator;
    
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Map;
    
    import javax.servlet.http.HttpServletRequest;
    
    import com.isomorphic.datasource.DataSource;
    import com.isomorphic.datasource.Validator;
    import com.isomorphic.log.Logger;
    import com.lmscompany.lms.server.i18n.I18n;
    import com.lmscompany.lms.server.worker.T_USER;
    import com.lmscompany.lms.shared.type.DatasourceFieldEnum;
    
    public class ValidatorContactDetailsRequiredIf {
    
        Logger log = new Logger(ValidatorContactDetailsRequiredIf.class.getName());
    
        public boolean condition(Object value, Validator validator, String fieldName, Map<Object, Object> record, DataSource ds,
                HttpServletRequest httpServletRequest) {
            log.info("Validating for field \"" + fieldName + "\", value \"" + (value == null ? "" : value.toString()) + "\"");
            if (value == null)
                return true;
            else {
                List<String> missingFields = new ArrayList<String>();
                if (record.get(DatasourceFieldEnum.V_LEAD_CURRENT__CUST_NAME.getValue()) == null)
                    missingFields.add(I18n.getDSXMLString("companyName", httpServletRequest));
                if (record.get(DatasourceFieldEnum.V_LEAD_CURRENT__CUST_CONTACTPERS_GENDER_SN.getValue()) == null)
                    missingFields.add(I18n.getDSXMLString("salutation", httpServletRequest));
                if (record.get(DatasourceFieldEnum.V_LEAD_CURRENT__CUST_CONTACTPERS_SURNAME.getValue()) == null)
                    missingFields.add(I18n.getDSXMLString("surname", httpServletRequest));
    
                if (record.get(DatasourceFieldEnum.V_LEAD_CURRENT__CUST_ADDRESS_STREET.getValue()) == null)
                    missingFields.add(I18n.getDSXMLString("street", httpServletRequest));
                if (record.get(DatasourceFieldEnum.V_LEAD_CURRENT__CUST_ADDRESS_ZIPCODE.getValue()) == null)
                    missingFields.add(I18n.getDSXMLString("zipCode", httpServletRequest));
                if (record.get(DatasourceFieldEnum.V_LEAD_CURRENT__CUST_ADDRESS_CITY.getValue()) == null)
                    missingFields.add(I18n.getDSXMLString("city", httpServletRequest));
                if (record.get(DatasourceFieldEnum.V_LEAD_CURRENT__CUST_ADDRESS_COUNTRY_ID.getValue()) == null)
                    missingFields.add(I18n.getDSXMLString("country", httpServletRequest));
    
                if (missingFields.isEmpty())
                    return true;
                else {
                    if (missingFields.size() == 1)
                        validator.addErrorMessageVariable("errorMessage",
                                String.format(I18n.getString("alsoEnterOtherField", httpServletRequest), T_USER.join(missingFields, ", ")));
                    else
                        validator.addErrorMessageVariable("errorMessage",
                                String.format(I18n.getString("alsoEnterOtherFields", httpServletRequest), T_USER.join(missingFields, ", ")));
                    return false;
                }
            }
        }
    }
    This should be pretty basic and worked before (DMI with additional parameter "HttpServletRequest httpServletRequest"), but I don't know until when.
    Now, if I try to import data I get this message in the server log:

    Server log:
    Code:
    [B]=== 2016-02-17 23:46:29,818 [ec-5] WARN  DefaultValidators - Validator DMI invocation threw exception: java.lang.Exception: Unable to assign a required or optional argument to slot #6 taking type: javax.servlet.http.HttpServletRequest of method:[/B]
    
    public boolean com.lmscompany.lms.server.worker.validator.ValidatorContactDetailsRequiredIf.condition(java.lang.Object,com.isomorphic.datasource.Validator,java.lang.String,java.util.Map,com.isomorphic.datasource.DataSource,javax.servlet.http.HttpServletRequest)
    
    No remaining optional arguments match this type and all required arguments passed by the client have already been assigned.
    
    
        at com.isomorphic.base.Reflection.adaptArgsAndInvoke(Reflection.java:955)
        at com.isomorphic.base.Reflection.adaptArgsAndInvoke(Reflection.java:794)
        at com.isomorphic.util.DefaultValidators$serverCustom.callServerObject(DefaultValidators.java:1472)
        at com.isomorphic.util.DefaultValidators$serverCustom.validate(DefaultValidators.java:1383)
        at com.isomorphic.util.DefaultValidators.processValidator(DefaultValidators.java:292)
        at com.isomorphic.util.DefaultValidators.validateField(DefaultValidators.java:250)
        at com.isomorphic.datasource.SimpleType.validateValue(SimpleType.java:97)
        at com.isomorphic.datasource.SimpleType.create(SimpleType.java:73)
        at com.isomorphic.datasource.BasicDataSource.validateFieldValue(BasicDataSource.java:2088)
        at com.isomorphic.datasource.BasicDataSource.validateFieldValue(BasicDataSource.java:2003)
        at com.isomorphic.datasource.BasicDataSource.toRecord(BasicDataSource.java:1367)
        at com.isomorphic.datasource.BasicDataSource.toRecords(BasicDataSource.java:1279)
        at com.isomorphic.datasource.DataSource.validate(DataSource.java:3521)
        at com.isomorphic.tools.DataImport.importAndValidateDSRows(DataImport.java:410)
        at com.isomorphic.tools.DataImport.importAndValidateDSRows(DataImport.java:343)
        at com.isomorphic.tools.BatchUpload.internalBatchUpload(BatchUpload.java:148)
        at com.isomorphic.tools.BatchUpload.batchUpload(BatchUpload.java:88)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at com.isomorphic.base.Reflection.adaptArgsAndInvoke(Reflection.java:964)
        at com.isomorphic.datasource.DataSourceDMI.execute(DataSourceDMI.java:416)
        at com.isomorphic.datasource.DataSourceDMI.execute(DataSourceDMI.java:64)
        at com.isomorphic.datasource.DSRequest.execute(DSRequest.java:2690)
        at com.isomorphic.servlet.IDACall.handleDSRequest(IDACall.java:228)
        at com.lmscompany.lms.server.LMSIDACall.handleDSRequest(LMSIDACall.java:87)
        at com.isomorphic.servlet.IDACall.processRPCTransaction(IDACall.java:187)
        at com.lmscompany.lms.server.LMSIDACall.processRequest(LMSIDACall.java:43)
        at com.isomorphic.servlet.IDACall._processRequest(IDACall.java:119)
        at com.isomorphic.servlet.IDACall.doPost(IDACall.java:79)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
        at com.isomorphic.servlet.BaseServlet.service(BaseServlet.java:162)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at com.isomorphic.servlet.CompressionFilter._doFilter(CompressionFilter.java:260)
        at com.isomorphic.servlet.BaseFilter.doFilter(BaseFilter.java:88)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:614)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
        at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:521)
        at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1096)
        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:674)
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500)
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1456)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
        at java.lang.Thread.run(Unknown Source)
    
    com.isomorphic.util.ValidatorException: Validator DMI invocation threw exception: java.lang.Exception with error: Unable to assign a required or optional argument to slot #6 taking type: javax.servlet.http.HttpServletRequest of method:
    
    public boolean com.lmscompany.lms.server.worker.validator.ValidatorContactDetailsRequiredIf.condition(java.lang.Object,com.isomorphic.datasource.Validator,java.lang.String,java.util.Map,com.isomorphic.datasource.DataSource,javax.servlet.http.HttpServletRequest)
    
    No remaining optional arguments match this type and all required arguments passed by the client have already been assigned.
    
    
        at com.isomorphic.util.DefaultValidators$serverCustom.callServerObject(DefaultValidators.java:1481)
        at com.isomorphic.util.DefaultValidators$serverCustom.validate(DefaultValidators.java:1383)
        at com.isomorphic.util.DefaultValidators.processValidator(DefaultValidators.java:292)
        at com.isomorphic.util.DefaultValidators.validateField(DefaultValidators.java:250)
        at com.isomorphic.datasource.SimpleType.validateValue(SimpleType.java:97)
        at com.isomorphic.datasource.SimpleType.create(SimpleType.java:73)
        at com.isomorphic.datasource.BasicDataSource.validateFieldValue(BasicDataSource.java:2088)
        at com.isomorphic.datasource.BasicDataSource.validateFieldValue(BasicDataSource.java:2003)
        at com.isomorphic.datasource.BasicDataSource.toRecord(BasicDataSource.java:1367)
        at com.isomorphic.datasource.BasicDataSource.toRecords(BasicDataSource.java:1279)
        at com.isomorphic.datasource.DataSource.validate(DataSource.java:3521)
        at com.isomorphic.tools.DataImport.importAndValidateDSRows(DataImport.java:410)
        at com.isomorphic.tools.DataImport.importAndValidateDSRows(DataImport.java:343)
        at com.isomorphic.tools.BatchUpload.internalBatchUpload(BatchUpload.java:148)
        at com.isomorphic.tools.BatchUpload.batchUpload(BatchUpload.java:88)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at com.isomorphic.base.Reflection.adaptArgsAndInvoke(Reflection.java:964)
        at com.isomorphic.datasource.DataSourceDMI.execute(DataSourceDMI.java:416)
        at com.isomorphic.datasource.DataSourceDMI.execute(DataSourceDMI.java:64)
        at com.isomorphic.datasource.DSRequest.execute(DSRequest.java:2690)
        at com.isomorphic.servlet.IDACall.handleDSRequest(IDACall.java:228)
        at com.lmscompany.lms.server.LMSIDACall.handleDSRequest(LMSIDACall.java:87)
        at com.isomorphic.servlet.IDACall.processRPCTransaction(IDACall.java:187)
        at com.lmscompany.lms.server.LMSIDACall.processRequest(LMSIDACall.java:43)
        at com.isomorphic.servlet.IDACall._processRequest(IDACall.java:119)
        at com.isomorphic.servlet.IDACall.doPost(IDACall.java:79)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
        at com.isomorphic.servlet.BaseServlet.service(BaseServlet.java:162)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at com.isomorphic.servlet.CompressionFilter._doFilter(CompressionFilter.java:260)
        at com.isomorphic.servlet.BaseFilter.doFilter(BaseFilter.java:88)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:614)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
        at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:521)
        at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1096)
        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:674)
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500)
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1456)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
        at java.lang.Thread.run(Unknown Source)
    === 2016-02-17 23:46:29,820 [ec-5] DEBUG BatchUpload - Rows: [
    ]
    === 2016-02-17 23:46:29,820 [ec-5] DEBUG BatchUpload - Errors: [
    ]
    === 2016-02-17 23:46:29,821 [ec-5] DEBUG BatchUpload - Errors after conversion: [
        "Validator DMI invocation threw exception: java.lang.Exception with error: Unable to assign a required or optional argument to slot #6 taking type: javax.servlet.http.HttpServletRequest of method:\n\npublic boolean com.lmscompany.lms.server.worker.validator.ValidatorContactDetailsRequiredIf.condition(java.lang.Object,com.isomorphic.datasource.Validator,java.lang.String,java.util.Map,com.isomorphic.datasource.DataSource,javax.servlet.http.HttpServletRequest)\n\nNo remaining optional arguments match this type and all required arguments passed by the client have already been assigned.\n\n\n\nSee the log for more details about this error."
    ]
    === 2016-02-17 23:46:29,821 [ec-5] INFO  DSResponse - DSResponse: Map with 3 keys
    === 2016-02-17 23:46:29,821 [ec-5] DEBUG RPCManager - Content type for RPC transaction: text/html; charset=UTF-8
    === 2016-02-17 23:46:29,821 [ec-5] DEBUG RPCManager - DMI response, dropExtraFields: false
    === 2016-02-17 23:46:29,822 [ec-5] INFO  Compression - /lms/lms/sc/IDACall: 1360 -> 769 bytes
    It seems the framework has difficulties to provide the HttpServletRequest, but this has worked before. Could you please check if there are recent (last 2-3 month) changes in this area?

    Thank you & Best regards
    Blama

    #2
    There's been no obviously relevant changes and we have several automated tests covering this aspect of DMI which are all passing.

    As far as a possible cause, we would guess that you have multiple versions of servlets .jars in your classpath, so there are two versions of the HttpServletRequest class around which are this treated as not equivalent.

    However if you think this is instead a framework bug, we'd suggest working toward producing a ready-to-run, minimal test case. You can immediately eliminate a general problem with HttpServletRequest and DMI by just adding such a parameter to the DMI Validation sample.

    Comment


      #3
      Hi Isomorphic,

      I was able to reproduce in current 5.1p (v10.1p_2016-02-17/PowerEdition Deployment). It seems to be Batch Uploader related. With the same .ds.xml and normal BuiltInDS.java, the validator worked.

      animals.ds.xml:
      Code:
                      <field name="commonName" title="Animal" type="text">
                          <validators>
                              <validator type="serverCustom">
                                  <serverObject lookupStyle="new" className="com.smartgwt.sample.server.listener.DMIValidator" />
                                  <errorMessage>$errorMessage</errorMessage>
                              </validator>
                          </validators>
                      </field>
      DMIValidator.java
      Code:
      package com.smartgwt.sample.server.listener;
      
      import java.util.Locale;
      import java.util.Map;
      
      import javax.servlet.http.HttpServletRequest;
      
      import com.isomorphic.datasource.DataSource;
      import com.isomorphic.datasource.Validator;
      import com.isomorphic.log.Logger;
      import com.isomorphic.servlet.IDACall;
      
      public class DMIValidator {
      
          Logger log = new Logger(IDACall.class.getName());
      
          public boolean condition(Object value, Validator validator, String fieldName, Map<Object, Object> record, DataSource ds,
                  HttpServletRequest httpServletRequest) {
              log.info("Validating for field \"" + fieldName + "\", value \"" + (value == null ? "" : value.toString()) + "\"");
              if (value == null || value.toString().startsWith("A")) {
                  Locale l = httpServletRequest.getLocale();
                  log.info("Locale: " + l.getDisplayCountry());
                  validator.addErrorMessageVariable("errorMessage", String.format("Normally translated with httpServletRequest-locale"));
                  return false;
              }
              return true;
          }
      }
      BuiltInDS.java:
      Code:
      package com.smartgwt.sample.client;
      
      import com.google.gwt.core.client.EntryPoint;
      import com.smartgwt.client.core.KeyIdentifier;
      import com.smartgwt.client.data.DataSource;
      import com.smartgwt.client.types.PartialCommitOption;
      import com.smartgwt.client.util.Page;
      import com.smartgwt.client.util.PageKeyHandler;
      import com.smartgwt.client.util.SC;
      import com.smartgwt.client.widgets.BatchUploader;
      import com.smartgwt.client.widgets.IButton;
      import com.smartgwt.client.widgets.Window;
      import com.smartgwt.client.widgets.events.ClickEvent;
      import com.smartgwt.client.widgets.events.ClickHandler;
      import com.smartgwt.client.widgets.layout.VLayout;
      
      public class BuiltInDS implements EntryPoint {
          private VLayout mainLayout;
          private IButton recreateBtn;
      
          public void onModuleLoad() {
              KeyIdentifier debugKey = new KeyIdentifier();
              debugKey.setCtrlKey(true);
              debugKey.setKeyName("D");
      
              Page.registerKey(debugKey, new PageKeyHandler() {
                  public void execute(String keyName) {
                      SC.showConsole();
                  }
              });
      
              mainLayout = new VLayout(20);
              mainLayout.setWidth100();
              mainLayout.setHeight100();
      
              recreateBtn = new IButton("Recreate");
              recreateBtn.addClickHandler(new ClickHandler() {
                  @Override
                  public void onClick(ClickEvent event) {
                      recreate();
                  }
              });
              mainLayout.addMember(recreateBtn);
              recreate();
              mainLayout.draw();
          }
      
          private void recreate() {
              Window w = new Window();
              w.setWidth("95%");
              w.setHeight("95%");
              w.setMembersMargin(0);
              w.setModalMaskOpacity(70);
              w.setTitle("Sorting by a field which header-width larger than data-width causes horizontal scroll bar");
              w.setShowMinimizeButton(false);
              w.setIsModal(true);
              w.setShowModalMask(true);
              w.centerInPage();
      
              BatchUploader batchUploader = new BatchUploader();
              batchUploader.setDefaultDelimiter(";");
              batchUploader.setWidth100();
              batchUploader.setUploadDataSource(DataSource.get("animals"));
              batchUploader.setPartialCommit(PartialCommitOption.RETAIN);
              w.addItem(batchUploader);
              w.show();
          }
      }
      animals.csv:
      Code:
      commonName;scientificName;lifeSpan;status;diet;information
      New Animal,New Animal,100,Not currently listed;Vegetables;Lore ipsum[B][/B]


      Server log:
      Code:
      === 2016-02-22 18:33:09,957 [0-31] INFO  RequestContext - URL: '/builtinds/sc/IDACall', User-Agent: 'Mozilla/5.0 (Windows NT 6.3; WOW64; rv:26.0) Gecko/20100101 Firefox/26.0': Moz (Gecko) with Accept-Encoding header
      === 2016-02-22 18:33:09,957 [0-38] INFO  RequestContext - URL: '/builtinds/sc/IDACall', User-Agent: 'Mozilla/5.0 (Windows NT 6.3; WOW64; rv:26.0) Gecko/20100101 Firefox/26.0': Moz (Gecko) with Accept-Encoding header
      === 2016-02-22 18:33:09,958 [0-31] DEBUG IDACall - Header Name:Value pair: Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
      === 2016-02-22 18:33:09,958 [0-31] DEBUG IDACall - Header Name:Value pair: Connection:keep-alive
      === 2016-02-22 18:33:09,958 [0-38] DEBUG IDACall - Header Name:Value pair: Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
      === 2016-02-22 18:33:09,958 [0-31] DEBUG IDACall - Header Name:Value pair: DNT:1
      === 2016-02-22 18:33:09,958 [0-38] DEBUG IDACall - Header Name:Value pair: Connection:keep-alive
      === 2016-02-22 18:33:09,958 [0-38] DEBUG IDACall - Header Name:Value pair: DNT:1
      === 2016-02-22 18:33:09,958 [0-38] DEBUG IDACall - Header Name:Value pair: Referer:http://127.0.0.1:8888/BuiltInDS.html?gwt.codesvr=127.0.0.1:9997
      === 2016-02-22 18:33:09,958 [0-31] DEBUG IDACall - Header Name:Value pair: Referer:http://127.0.0.1:8888/BuiltInDS.html?gwt.codesvr=127.0.0.1:9997
      === 2016-02-22 18:33:09,958 [0-38] DEBUG IDACall - Header Name:Value pair: Pragma:no-cache
      === 2016-02-22 18:33:09,958 [0-31] DEBUG IDACall - Header Name:Value pair: Accept-Encoding:gzip, deflate
      === 2016-02-22 18:33:09,958 [0-38] DEBUG IDACall - Header Name:Value pair: Accept-Encoding:gzip, deflate
      === 2016-02-22 18:33:09,958 [0-38] DEBUG IDACall - Header Name:Value pair: Cache-Control:no-cache
      === 2016-02-22 18:33:09,958 [0-31] DEBUG IDACall - Header Name:Value pair: User-Agent:Mozilla/5.0 (Windows NT 6.3; WOW64; rv:26.0) Gecko/20100101 Firefox/26.0
      === 2016-02-22 18:33:09,958 [0-38] DEBUG IDACall - Header Name:Value pair: User-Agent:Mozilla/5.0 (Windows NT 6.3; WOW64; rv:26.0) Gecko/20100101 Firefox/26.0
      === 2016-02-22 18:33:09,958 [0-31] DEBUG IDACall - Header Name:Value pair: Content-Type:multipart/form-data; boundary=---------------------------264491864725939
      === 2016-02-22 18:33:09,958 [0-38] DEBUG IDACall - Header Name:Value pair: Content-Type:application/x-www-form-urlencoded; charset=UTF-8
      === 2016-02-22 18:33:09,958 [0-31] DEBUG IDACall - Header Name:Value pair: Accept-Language:de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
      === 2016-02-22 18:33:09,958 [0-38] DEBUG IDACall - Header Name:Value pair: Accept-Language:de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
      === 2016-02-22 18:33:09,958 [0-31] DEBUG IDACall - Header Name:Value pair: Cookie:isc_cState=ready; JSESSIONID=1jl3uy09oqnsg1ml32al951ynz; GLog=%7B%0A%20%20%20%20trackRPC%3Afalse%0A%7D
      === 2016-02-22 18:33:09,958 [0-38] DEBUG IDACall - Header Name:Value pair: Content-Length:1407
      === 2016-02-22 18:33:09,958 [0-31] DEBUG IDACall - Header Name:Value pair: Content-Length:1380
      === 2016-02-22 18:33:09,958 [0-38] DEBUG IDACall - Header Name:Value pair: Cookie:isc_cState=ready; JSESSIONID=1jl3uy09oqnsg1ml32al951ynz; GLog=%7B%0A%20%20%20%20trackRPC%3Afalse%0A%7D
      === 2016-02-22 18:33:09,958 [0-31] DEBUG IDACall - Header Name:Value pair: Host:127.0.0.1:8888
      === 2016-02-22 18:33:09,958 [0-38] DEBUG IDACall - Header Name:Value pair: Host:127.0.0.1:8888
      === 2016-02-22 18:33:09,958 [0-31] DEBUG IDACall - session exists: 1jl3uy09oqnsg1ml32al951ynz
      === 2016-02-22 18:33:09,958 [0-38] DEBUG IDACall - session exists: 1jl3uy09oqnsg1ml32al951ynz
      === 2016-02-22 18:33:09,958 [0-31] DEBUG IDACall - remote user: null
      === 2016-02-22 18:33:09,958 [0-38] DEBUG IDACall - remote user: null
      === 2016-02-22 18:33:09,962 [0-31] DEBUG XML - Parsed XML from (in memory stream): 1ms
      === 2016-02-22 18:33:09,962 [0-31] DEBUG ISCKeyedObjectPool - Borrowing object for 'transaction'
      === 2016-02-22 18:33:09,962 [0-38] DEBUG XML - Parsed XML from (in memory stream): 2ms
      === 2016-02-22 18:33:09,962 [0-31] DEBUG PoolableDataSourceFactory - Tried to create DataSource  of type 'transaction' but null was returned
      === 2016-02-22 18:33:09,962 [0-31] DEBUG PoolableDataSourceFactory - Created DataSource null of type 'transaction' in the pooling flow
      === 2016-02-22 18:33:09,963 [0-38] DEBUG ISCKeyedObjectPool - Borrowing object for 'transaction'
      === 2016-02-22 18:33:09,963 [0-38] DEBUG PoolableDataSourceFactory - Tried to create DataSource  of type 'transaction' but null was returned
      === 2016-02-22 18:33:09,963 [0-38] DEBUG PoolableDataSourceFactory - Created DataSource null of type 'transaction' in the pooling flow
      === 2016-02-22 18:33:09,963 [0-38] DEBUG ISCKeyedObjectPool - Borrowing object for 'Object'
      === 2016-02-22 18:33:09,963 [0-38] DEBUG PoolableDataSourceFactory - Activated DataSource 48 of type 'Object'
      === 2016-02-22 18:33:09,963 [0-31] DEBUG ISCKeyedObjectPool - Borrowing object for 'Object'
      === 2016-02-22 18:33:09,963 [0-31] DEBUG PoolableDataSourceFactory - Created DataSource 49 of type 'Object' and assigned it to thread qtp1885927370-31
      === 2016-02-22 18:33:09,963 [0-31] DEBUG PoolableDataSourceFactory - Created DataSource 49 of type 'Object' in the pooling flow
      === 2016-02-22 18:33:09,963 [0-31] DEBUG PoolableDataSourceFactory - Activated DataSource 49 of type 'Object'
      === 2016-02-22 18:33:09,964 [0-38] DEBUG ISCKeyedObjectPool - Borrowing object for 'List'
      === 2016-02-22 18:33:09,964 [0-38] DEBUG PoolableDataSourceFactory - Created DataSource 50 of type 'List' and assigned it to thread qtp1885927370-38
      === 2016-02-22 18:33:09,964 [0-38] DEBUG PoolableDataSourceFactory - Created DataSource 50 of type 'List' in the pooling flow
      === 2016-02-22 18:33:09,964 [0-38] DEBUG PoolableDataSourceFactory - Activated DataSource 50 of type 'List'
      === 2016-02-22 18:33:09,964 [0-31] DEBUG ISCKeyedObjectPool - Borrowing object for 'List'
      === 2016-02-22 18:33:09,964 [0-31] DEBUG PoolableDataSourceFactory - Created DataSource 51 of type 'List' and assigned it to thread qtp1885927370-31
      === 2016-02-22 18:33:09,964 [0-31] DEBUG PoolableDataSourceFactory - Created DataSource 51 of type 'List' in the pooling flow
      === 2016-02-22 18:33:09,964 [0-31] DEBUG PoolableDataSourceFactory - Activated DataSource 51 of type 'List'
      === 2016-02-22 18:33:09,964 [0-38] DEBUG ISCKeyedObjectPool - Borrowing object for 'elem'
      === 2016-02-22 18:33:09,964 [0-38] DEBUG PoolableDataSourceFactory - Tried to create DataSource  of type 'elem' but null was returned
      === 2016-02-22 18:33:09,964 [0-38] DEBUG PoolableDataSourceFactory - Created DataSource null of type 'elem' in the pooling flow
      === 2016-02-22 18:33:09,965 [0-31] DEBUG ISCKeyedObjectPool - Borrowing object for 'elem'
      === 2016-02-22 18:33:09,965 [0-31] DEBUG PoolableDataSourceFactory - Tried to create DataSource  of type 'elem' but null was returned
      === 2016-02-22 18:33:09,965 [0-31] DEBUG PoolableDataSourceFactory - Created DataSource null of type 'elem' in the pooling flow
      === 2016-02-22 18:33:09,965 [0-38] DEBUG RPCManager - Processing 1 requests.
      === 2016-02-22 18:33:09,965 [0-31] DEBUG RPCManager - Processing 1 requests.
      === 2016-02-22 18:33:09,965 [0-31] DEBUG ISCKeyedObjectPool - Borrowing object for 'batchUpload'
      === 2016-02-22 18:33:09,965 [0-31] DEBUG PoolableDataSourceFactory - Activated DataSource 31 of type 'batchUpload'
      === 2016-02-22 18:33:09,965 [0-31] DEBUG DSRequest - Caching instance 31 of DS 'batchUpload' from DSRequest.getDataSource()
      === 2016-02-22 18:33:09,965 [0-31] DEBUG DSRequest - Caching instance 31 of DS batchUpload
      === 2016-02-22 18:33:09,965 [0-38] DEBUG RPCManager - Request #1 (RPCRequest) data: {
          appID:"isc_builtin",
          className:"com.isomorphic.tools.BuiltinRPC",
          methodName:"setAttributes",
          arguments:[
              "session",
              [
                  {
                      name:"dsName",
                      type:"hidden",
                      value:"animals"
                  },
                  {
                      name:"delimiter",
                      type:"hidden",
                      value:";"
                  },
                  {
                      name:"quoteString",
                      type:"hidden",
                      value:"\""
                  },
                  {
                      name:"dataFormat",
                      type:"hidden",
                      value:"csv"
                  }
              ],
              null
          ],
          is_ISC_RPC_DMI:true
      }
      === 2016-02-22 18:33:09,965 [0-31] DEBUG PoolableDataSourceFactory - Cleared and passivated DataSource 31 of type 'batchUpload'
      === 2016-02-22 18:33:09,965 [0-38] INFO  IDACall - Performing 1 operation(s)
      === 2016-02-22 18:33:09,966 [0-31] DEBUG RPCManager - Request #1 (DSRequest) payload: {
          criteria:{
          },
          values:{
              file:"animals.csv",
              dsName:"animals",
              delimiter:";",
              quoteString:"\"",
              dataFormat:"csv"
          },
          operationConfig:{
              dataSource:"batchUpload",
              repo:null,
              operationType:"update",
              textMatchStyle:"exact"
          },
          componentId:"isc_DynamicForm_2",
          appID:"builtinApplication",
          operation:"upload",
          oldValues:{
              dsName:"animals",
              delimiter:";",
              quoteString:"\"",
              dataFormat:"csv",
              file:null
          }
      }
      === 2016-02-22 18:33:09,966 [0-31] INFO  IDACall - Performing 1 operation(s)
      === 2016-02-22 18:33:09,966 [0-31] DEBUG DeclarativeSecurity - Processing security checks for DataSource null, field null
      === 2016-02-22 18:33:09,966 [0-31] DEBUG DeclarativeSecurity - DataSource batchUpload is not in the pre-checked list, processing...
      === 2016-02-22 18:33:09,968 [0-31] DEBUG ISCKeyedObjectPool - Borrowing object for 'animals'
      === 2016-02-22 18:33:09,969 [0-38] DEBUG RPCDMI - appConfig: isc.Application.create({
          rpcBindings:[
              {
                  ID:"builtin",
                  className:"com.isomorphic.rpc.BuiltinRPC",
                  visibleMethods:[
                      {
                          name:"downloadWSDL"
                      },
                      {
                          name:"downloadClientContent"
                      },
                      {
                          name:"downloadClientExport"
                      },
                      {
                          name:"xmlToJS"
                      },
                      {
                          name:"uploadProgressCheck"
                      },
                      {
                          name:"saveFile"
                      },
                      {
                          name:"appendToFile"
                      },
                      {
                          name:"loadFile"
                      },
                      {
                          name:"deleteFile"
                      },
                      {
                          name:"loadSharedXML"
                      },
                      {
                          name:"saveSharedXML"
                      },
                      {
                          name:"getAvailableScriptEngines"
                      },
                      {
                          name:"devConsoleEvalServerScript"
                      },
                      {
                          name:"evalJava"
                      },
                      {
                          name:"getLogNames"
                      },
                      {
                          name:"getLogEntries"
                      },
                      {
                          name:"clearLogEntries"
                      },
                      {
                          name:"getLogThresholds"
                      },
                      {
                          name:"setLogThreshold"
                      },
                      {
                          name:"setTemporaryLogThreshold"
                      },
                      {
                          name:"revertTemporaryLogThresholds"
                      },
                      {
                          name:"getPdfObject"
                      },
                      {
                          name:"exportImage"
                      },
                      {
                          name:"areServerTimingsTracked"
                      },
                      {
                          name:"trackServerTimings"
                      },
                      {
                          name:"messagingSend"
                      },
                      {
                          name:"downloadZip"
                      }
                  ]
              },
              {
                  ID:"builtin_tools",
                  className:"com.isomorphic.tools.BuiltinRPC",
                  visibleMethods:[
                      {
                          name:"getDataSourceFromTable"
                      },
                      {
                          name:"getDataSourceJSONFromTable"
                      },
                      {
                          name:"getDataSourceFromHibernateMapping"
                      },
                      {
                          name:"getDataSourceJSONFromHibernateMapping"
                      },
                      {
                          name:"getTables"
                      },
                      {
                          name:"getFieldsFromTable"
                      },
                      {
                          name:"getBeanFields"
                      },
                      {
                          name:"getHibernateBeans"
                      },
                      {
                          name:"getDatabaseProductNameAndVersion"
                      },
                      {
                          name:"getDatabaseTableTypes"
                      },
                      {
                          name:"setAttributes"
                      },
                      {
                          name:"clearAttributes"
                      },
                      {
                          name:"getAttributes"
                      },
                      {
                          name:"getAttribute"
                      },
                      {
                          name:"getDataSourceConfigFromJavaClass"
                      },
                      {
                          args:"cName",
                          language:"groovy",
                          name:"getJavaSource",
                          script:"\n                    if (!com.isomorphic.auth.DevModeAuthFilter.devModeAuthorized(request)) throw new Exception(\"Not Authorized\");                    \n                    //import org.apache.bcel.Repository;\n\n                    try {\n                        return org.apache.bcel.Repository.lookupClass(cName).toString();\n                    } catch (Throwable e) {\n                        return \"Unable to reverse engineer class \"+cName+\": \"+e.getMessage();\n                    }\n                "
                      },
                      {
                          name:"loadDataSource"
                      },
                      {
                          name:"dsFromXML"
                      },
                      {
                          name:"dsConfigFromXML"
                      },
                      {
                          name:"getDefinedDataSources"
                      },
                      {
                          name:"importData"
                      },
                      {
                          name:"checkForTestData"
                      }
                  ]
              },
              {
                  ID:"builtin_adminconsole",
                  className:"com.isomorphic.tools.AdminConsole",
                  visibleMethods:[
                      {
                          name:"getDefinedDatabases"
                      },
                      {
                          name:"testDB"
                      },
                      {
                          name:"saveDBConfig"
                      },
                      {
                          name:"setDefaultDB"
                      },
                      {
                          name:"importDataSources"
                      },
                      {
                          name:"discoverJNDIDatabases"
                      }
                  ]
              }
          ]
      })
      
      === 2016-02-22 18:33:09,971 [0-38] DEBUG RPCDMI - rpc returned data
      === 2016-02-22 18:33:09,971 [0-31] DEBUG SQLDataSource - DataSource 52 acquired SQLDriver instance 1744782550 during initialization
      === 2016-02-22 18:33:09,972 [0-38] DEBUG RPCManager - Content type for RPC transaction: text/plain; charset=UTF-8
      === 2016-02-22 18:33:09,973 [0-31] DEBUG PoolableDataSourceFactory - Created DataSource 52 of type 'animals' and assigned it to thread qtp1885927370-31
      === 2016-02-22 18:33:09,973 [0-31] DEBUG PoolableDataSourceFactory - Created DataSource 52 of type 'animals' in the pooling flow
      === 2016-02-22 18:33:09,973 [0-31] DEBUG PoolableDataSourceFactory - Activated DataSource 52 of type 'animals'
      === 2016-02-22 18:33:09,973 [0-31] DEBUG ISCKeyedObjectPool - Borrowing object for 'animals'
      === 2016-02-22 18:33:09,974 [0-38] INFO  Compression - /builtinds/sc/IDACall: 67 -> 73 bytes
      === 2016-02-22 18:33:09,975 [0-31] DEBUG SQLDataSource - DataSource 53 acquired SQLDriver instance 1648652272 during initialization
      === 2016-02-22 18:33:09,975 [0-31] DEBUG PoolableDataSourceFactory - Created DataSource 53 of type 'animals' and assigned it to thread qtp1885927370-31
      === 2016-02-22 18:33:09,975 [0-31] DEBUG PoolableDataSourceFactory - Created DataSource 53 of type 'animals' in the pooling flow
      === 2016-02-22 18:33:09,975 [0-31] DEBUG PoolableDataSourceFactory - Activated DataSource 53 of type 'animals'
      === 2016-02-22 18:33:09,975 [0-31] DEBUG ISCKeyedObjectPool - Borrowing object for 'Object'
      === 2016-02-22 18:33:09,976 [0-31] DEBUG PoolableDataSourceFactory - Created DataSource 54 of type 'Object' and assigned it to thread qtp1885927370-31
      === 2016-02-22 18:33:09,976 [0-31] DEBUG PoolableDataSourceFactory - Created DataSource 54 of type 'Object' in the pooling flow
      === 2016-02-22 18:33:09,976 [0-31] DEBUG PoolableDataSourceFactory - Activated DataSource 54 of type 'Object'
      === 2016-02-22 18:33:09,976 [0-31] DEBUG PoolableDataSourceFactory - Cleared and passivated DataSource 54 of type 'Object'
      === 2016-02-22 18:33:09,976 [0-31] DEBUG ISCKeyedObjectPool - Borrowing object for 'Object'
      === 2016-02-22 18:33:09,976 [0-31] DEBUG PoolableDataSourceFactory - Activated DataSource 54 of type 'Object'
      === 2016-02-22 18:33:09,976 [0-31] DEBUG PoolableDataSourceFactory - Cleared and passivated DataSource 54 of type 'Object'
      === 2016-02-22 18:33:09,976 [0-31] DEBUG ISCKeyedObjectPool - Borrowing object for 'Object'
      === 2016-02-22 18:33:09,976 [0-31] DEBUG PoolableDataSourceFactory - Activated DataSource 54 of type 'Object'
      === 2016-02-22 18:33:09,977 [0-31] DEBUG PoolableDataSourceFactory - Cleared and passivated DataSource 54 of type 'Object'
      === 2016-02-22 18:33:09,977 [0-31] DEBUG ISCKeyedObjectPool - Borrowing object for 'Object'
      === 2016-02-22 18:33:09,977 [0-31] DEBUG PoolableDataSourceFactory - Activated DataSource 54 of type 'Object'
      === 2016-02-22 18:33:09,977 [0-31] DEBUG PoolableDataSourceFactory - Cleared and passivated DataSource 54 of type 'Object'
      === 2016-02-22 18:33:09,977 [0-31] DEBUG ISCKeyedObjectPool - Borrowing object for 'Object'
      === 2016-02-22 18:33:09,977 [0-31] DEBUG PoolableDataSourceFactory - Activated DataSource 54 of type 'Object'
      === 2016-02-22 18:33:09,977 [0-31] DEBUG PoolableDataSourceFactory - Cleared and passivated DataSource 54 of type 'Object'
      === 2016-02-22 18:33:09,977 [0-31] DEBUG ISCKeyedObjectPool - Borrowing object for 'Object'
      === 2016-02-22 18:33:09,977 [0-31] DEBUG PoolableDataSourceFactory - Activated DataSource 54 of type 'Object'
      === 2016-02-22 18:33:09,977 [0-31] DEBUG PoolableDataSourceFactory - Cleared and passivated DataSource 54 of type 'Object'
      === 2016-02-22 18:33:09,977 [0-31] DEBUG ISCKeyedObjectPool - Borrowing object for 'Object'
      === 2016-02-22 18:33:09,977 [0-31] DEBUG PoolableDataSourceFactory - Activated DataSource 54 of type 'Object'
      === 2016-02-22 18:33:09,977 [0-31] DEBUG PoolableDataSourceFactory - Cleared and passivated DataSource 54 of type 'Object'
      === 2016-02-22 18:33:09,977 [0-31] ERROR DataImport - Parse error at line 2: com.isomorphic.tools.TranslaterException: java.lang.NumberFormatException: For input string: "L"
      === 2016-02-22 18:33:09,980 [0-31] WARN  DefaultValidators - Validator DMI invocation threw exception: java.lang.Exception: Unable to assign a required or optional argument to slot #6 taking type: javax.servlet.http.HttpServletRequest of method:
      
      public boolean com.smartgwt.sample.server.listener.DMIValidator.condition(java.lang.Object,com.isomorphic.datasource.Validator,java.lang.String,java.util.Map,com.isomorphic.datasource.DataSource,javax.servlet.http.HttpServletRequest)
      
      No remaining optional arguments match this type and all required arguments passed by the client have already been assigned.
      
      
          at com.isomorphic.base.Reflection.adaptArgsAndInvoke(Reflection.java:955)
          at com.isomorphic.base.Reflection.adaptArgsAndInvoke(Reflection.java:794)
          at com.isomorphic.util.DefaultValidators$serverCustom.callServerObject(DefaultValidators.java:1472)
          at com.isomorphic.util.DefaultValidators$serverCustom.validate(DefaultValidators.java:1383)
          at com.isomorphic.util.DefaultValidators.processValidator(DefaultValidators.java:292)
          at com.isomorphic.util.DefaultValidators.validateField(DefaultValidators.java:250)
          at com.isomorphic.datasource.SimpleType.validateValue(SimpleType.java:97)
          at com.isomorphic.datasource.SimpleType.create(SimpleType.java:73)
          at com.isomorphic.datasource.BasicDataSource.validateFieldValue(BasicDataSource.java:2088)
          at com.isomorphic.datasource.BasicDataSource.validateFieldValue(BasicDataSource.java:2003)
          at com.isomorphic.datasource.BasicDataSource.toRecord(BasicDataSource.java:1367)
          at com.isomorphic.datasource.BasicDataSource.toRecords(BasicDataSource.java:1279)
          at com.isomorphic.datasource.DataSource.validate(DataSource.java:3521)
          at com.isomorphic.tools.DataImport.importAndValidateDSRows(DataImport.java:410)
          at com.isomorphic.tools.DataImport.importAndValidateDSRows(DataImport.java:343)
          at com.isomorphic.tools.BatchUpload.internalBatchUpload(BatchUpload.java:148)
          at com.isomorphic.tools.BatchUpload.batchUpload(BatchUpload.java:88)
          at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
          at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
          at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
          at java.lang.reflect.Method.invoke(Unknown Source)
          at com.isomorphic.base.Reflection.adaptArgsAndInvoke(Reflection.java:964)
          at com.isomorphic.datasource.DataSourceDMI.execute(DataSourceDMI.java:416)
          at com.isomorphic.datasource.DataSourceDMI.execute(DataSourceDMI.java:64)
          at com.isomorphic.datasource.DSRequest.execute(DSRequest.java:2690)
          at com.isomorphic.servlet.IDACall.handleDSRequest(IDACall.java:228)
          at com.isomorphic.servlet.IDACall.processRPCTransaction(IDACall.java:187)
          at com.isomorphic.servlet.IDACall.processRequest(IDACall.java:152)
          at com.isomorphic.servlet.IDACall._processRequest(IDACall.java:119)
          at com.isomorphic.servlet.IDACall.doPost(IDACall.java:79)
          at javax.servlet.http.HttpServlet.service(HttpServlet.java:755)
          at com.isomorphic.servlet.BaseServlet.service(BaseServlet.java:162)
          at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
          at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:686)
          at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1494)
          at com.isomorphic.servlet.CompressionFilter._doFilter(CompressionFilter.java:260)
          at com.isomorphic.servlet.BaseFilter.doFilter(BaseFilter.java:88)
          at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1474)
          at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:499)
          at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
          at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:557)
          at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
          at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086)
          at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:428)
          at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
          at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020)
          at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
          at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
          at org.eclipse.jetty.server.handler.RequestLogHandler.handle(RequestLogHandler.java:68)
          at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
          at org.eclipse.jetty.server.Server.handle(Server.java:370)
          at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:489)
          at org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:960)
          at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:1021)
          at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:865)
          at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:240)
          at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
          at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:668)
          at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)
          at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
          at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
          at java.lang.Thread.run(Unknown Source)
      
      com.isomorphic.util.ValidatorException: Validator DMI invocation threw exception: java.lang.Exception with error: Unable to assign a required or optional argument to slot #6 taking type: javax.servlet.http.HttpServletRequest of method:
      
      public boolean com.smartgwt.sample.server.listener.DMIValidator.condition(java.lang.Object,com.isomorphic.datasource.Validator,java.lang.String,java.util.Map,com.isomorphic.datasource.DataSource,javax.servlet.http.HttpServletRequest)
      
      No remaining optional arguments match this type and all required arguments passed by the client have already been assigned.
      
      
          at com.isomorphic.util.DefaultValidators$serverCustom.callServerObject(DefaultValidators.java:1481)
          at com.isomorphic.util.DefaultValidators$serverCustom.validate(DefaultValidators.java:1383)
          at com.isomorphic.util.DefaultValidators.processValidator(DefaultValidators.java:292)
          at com.isomorphic.util.DefaultValidators.validateField(DefaultValidators.java:250)
          at com.isomorphic.datasource.SimpleType.validateValue(SimpleType.java:97)
          at com.isomorphic.datasource.SimpleType.create(SimpleType.java:73)
          at com.isomorphic.datasource.BasicDataSource.validateFieldValue(BasicDataSource.java:2088)
          at com.isomorphic.datasource.BasicDataSource.validateFieldValue(BasicDataSource.java:2003)
          at com.isomorphic.datasource.BasicDataSource.toRecord(BasicDataSource.java:1367)
          at com.isomorphic.datasource.BasicDataSource.toRecords(BasicDataSource.java:1279)
          at com.isomorphic.datasource.DataSource.validate(DataSource.java:3521)
          at com.isomorphic.tools.DataImport.importAndValidateDSRows(DataImport.java:410)
          at com.isomorphic.tools.DataImport.importAndValidateDSRows(DataImport.java:343)
          at com.isomorphic.tools.BatchUpload.internalBatchUpload(BatchUpload.java:148)
          at com.isomorphic.tools.BatchUpload.batchUpload(BatchUpload.java:88)
          at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
          at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
          at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
          at java.lang.reflect.Method.invoke(Unknown Source)
          at com.isomorphic.base.Reflection.adaptArgsAndInvoke(Reflection.java:964)
          at com.isomorphic.datasource.DataSourceDMI.execute(DataSourceDMI.java:416)
          at com.isomorphic.datasource.DataSourceDMI.execute(DataSourceDMI.java:64)
          at com.isomorphic.datasource.DSRequest.execute(DSRequest.java:2690)
          at com.isomorphic.servlet.IDACall.handleDSRequest(IDACall.java:228)
          at com.isomorphic.servlet.IDACall.processRPCTransaction(IDACall.java:187)
          at com.isomorphic.servlet.IDACall.processRequest(IDACall.java:152)
          at com.isomorphic.servlet.IDACall._processRequest(IDACall.java:119)
          at com.isomorphic.servlet.IDACall.doPost(IDACall.java:79)
          at javax.servlet.http.HttpServlet.service(HttpServlet.java:755)
          at com.isomorphic.servlet.BaseServlet.service(BaseServlet.java:162)
          at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
          at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:686)
          at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1494)
          at com.isomorphic.servlet.CompressionFilter._doFilter(CompressionFilter.java:260)
          at com.isomorphic.servlet.BaseFilter.doFilter(BaseFilter.java:88)
          at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1474)
          at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:499)
          at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
          at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:557)
          at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
          at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086)
          at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:428)
          at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
          at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020)
          at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
          at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
          at org.eclipse.jetty.server.handler.RequestLogHandler.handle(RequestLogHandler.java:68)
          at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
          at org.eclipse.jetty.server.Server.handle(Server.java:370)
          at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:489)
          at org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:960)
          at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:1021)
          at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:865)
          at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:240)
          at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
          at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:668)
          at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)
          at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
          at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
          at java.lang.Thread.run(Unknown Source)
      === 2016-02-22 18:33:09,984 [0-31] DEBUG BatchUpload - Rows: [
      ]
      === 2016-02-22 18:33:09,984 [0-31] DEBUG BatchUpload - Errors: [
      ]
      === 2016-02-22 18:33:09,984 [0-31] DEBUG BatchUpload - Errors after conversion: [
          "Validator DMI invocation threw exception: java.lang.Exception with error: Unable to assign a required or optional argument to slot #6 taking type: javax.servlet.http.HttpServletRequest of method:\n\npublic boolean com.smartgwt.sample.server.listener.DMIValidator.condition(java.lang.Object,com.isomorphic.datasource.Validator,java.lang.String,java.util.Map,com.isomorphic.datasource.DataSource,javax.servlet.http.HttpServletRequest)\n\nNo remaining optional arguments match this type and all required arguments passed by the client have already been assigned.\n\n\n\nSee the log for more details about this error."
      ]
      === 2016-02-22 18:33:09,984 [0-31] INFO  DSResponse - DSResponse: Map with 3 keys
      === 2016-02-22 18:33:09,984 [0-31] DEBUG DSRequest - About to free up resources for request of type update on DataSource batchUpload
      === 2016-02-22 18:33:09,984 [0-31] DEBUG DSRequest - Ignoring freeResources call because this is not a primary request!
      === 2016-02-22 18:33:09,984 [0-31] DEBUG RPCManager - Content type for RPC transaction: text/html; charset=UTF-8
      === 2016-02-22 18:33:09,984 [0-31] DEBUG RPCManager - DMI response, dropExtraFields: false
      === 2016-02-22 18:33:09,985 [0-31] DEBUG DSRequest - Ignoring freeQueueResources call because this is not a primary request!
      === 2016-02-22 18:33:09,985 [0-31] INFO  Compression - /builtinds/sc/IDACall: 1321 -> 747 bytes
      === 2016-02-22 18:39:04,347 [0-37] INFO  RequestContext - URL: '/builtinds/sc/system/helpers/Log.html', User-Agent: 'Mozilla/5.0 (Windows NT 6.3; WOW64; rv:26.0) Gecko/20100101 Firefox/26.0': Moz (Gecko) with Accept-Encoding header
      === 2016-02-22 18:39:04,350 [0-37] INFO  Download - done streaming: C:/Users/ST/workspace/lib/smartgwtpower-5.1p/samples/built-in-ds/war/builtinds/sc/system/helpers/Log.html
      === 2016-02-22 18:39:04,350 [0-37] INFO  Compression - /builtinds/sc/system/helpers/Log.html: 3510 -> 995 bytes
      === 2016-02-22 18:39:04,364 [0-38] INFO  RequestContext - URL: '/builtinds/sc/system/development/ISC_FileLoader.js', User-Agent: 'Mozilla/5.0 (Windows NT 6.3; WOW64; rv:26.0) Gecko/20100101 Firefox/26.0': Moz (Gecko) with Accept-Encoding header
      === 2016-02-22 18:39:04,365 [0-35] INFO  RequestContext - URL: '/builtinds/sc/system/development/ISC_Core.js', User-Agent: 'Mozilla/5.0 (Windows NT 6.3; WOW64; rv:26.0) Gecko/20100101 Firefox/26.0': Moz (Gecko) with Accept-Encoding header
      === 2016-02-22 18:39:04,366 [0-38] INFO  Download - done streaming: C:/Users/ST/workspace/lib/smartgwtpower-5.1p/samples/built-in-ds/war/builtinds/sc/system/development/ISC_FileLoader.js
      === 2016-02-22 18:39:04,366 [0-31] INFO  RequestContext - URL: '/builtinds/sc/system/development/ISC_Foundation.js', User-Agent: 'Mozilla/5.0 (Windows NT 6.3; WOW64; rv:26.0) Gecko/20100101 Firefox/26.0': Moz (Gecko) with Accept-Encoding header
      === 2016-02-22 18:39:04,367 [0-37] INFO  RequestContext - URL: '/builtinds/sc/system/development/ISC_Containers.js', User-Agent: 'Mozilla/5.0 (Windows NT 6.3; WOW64; rv:26.0) Gecko/20100101 Firefox/26.0': Moz (Gecko) with Accept-Encoding header
      === 2016-02-22 18:39:04,367 [0-49] INFO  RequestContext - URL: '/builtinds/sc/system/development/ISC_Forms.js', User-Agent: 'Mozilla/5.0 (Windows NT 6.3; WOW64; rv:26.0) Gecko/20100101 Firefox/26.0': Moz (Gecko) with Accept-Encoding header
      === 2016-02-22 18:39:04,369 [0-38] INFO  Compression - /builtinds/sc/system/development/ISC_FileLoader.js: 39970 -> 11503 bytes
      === 2016-02-22 18:39:04,369 [0-48] INFO  RequestContext - URL: '/builtinds/sc/system/development/ISC_Grids.js', User-Agent: 'Mozilla/5.0 (Windows NT 6.3; WOW64; rv:26.0) Gecko/20100101 Firefox/26.0': Moz (Gecko) with Accept-Encoding header
      === 2016-02-22 18:39:04,371 [0-31] INFO  Download - done streaming: C:/Users/ST/workspace/lib/smartgwtpower-5.1p/samples/built-in-ds/war/builtinds/sc/system/development/ISC_Foundation.js
      === 2016-02-22 18:39:04,380 [izer] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 52 from Finalizer
      === 2016-02-22 18:39:04,380 [izer] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 53 from Finalizer
      === 2016-02-22 18:39:04,380 [0-35] INFO  Download - done streaming: C:/Users/ST/workspace/lib/smartgwtpower-5.1p/samples/built-in-ds/war/builtinds/sc/system/development/ISC_Core.js
      === 2016-02-22 18:39:04,382 [izer] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 46 from Finalizer
      === 2016-02-22 18:39:04,382 [izer] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 47 from Finalizer
      === 2016-02-22 18:39:04,382 [0-37] INFO  Download - done streaming: C:/Users/ST/workspace/lib/smartgwtpower-5.1p/samples/built-in-ds/war/builtinds/sc/system/development/ISC_Containers.js
      === 2016-02-22 18:39:04,384 [0-48] INFO  Download - done streaming: C:/Users/ST/workspace/lib/smartgwtpower-5.1p/samples/built-in-ds/war/builtinds/sc/system/development/ISC_Grids.js
      === 2016-02-22 18:39:04,385 [0-49] INFO  Download - done streaming: C:/Users/ST/workspace/lib/smartgwtpower-5.1p/samples/built-in-ds/war/builtinds/sc/system/development/ISC_Forms.js
      === 2016-02-22 18:39:04,389 [0-50] INFO  RequestContext - URL: '/builtinds/sc/system/development/ISC_DataBinding.js', User-Agent: 'Mozilla/5.0 (Windows NT 6.3; WOW64; rv:26.0) Gecko/20100101 Firefox/26.0': Moz (Gecko) with Accept-Encoding header
      === 2016-02-22 18:39:04,393 [0-50] INFO  Download - done streaming: C:/Users/ST/workspace/lib/smartgwtpower-5.1p/samples/built-in-ds/war/builtinds/sc/system/development/ISC_DataBinding.js
      === 2016-02-22 18:39:04,396 [0-37] INFO  Compression - /builtinds/sc/system/development/ISC_Containers.js: 153196 -> 35913 bytes
      === 2016-02-22 18:39:04,398 [0-31] INFO  Compression - /builtinds/sc/system/development/ISC_Foundation.js: 351668 -> 80902 bytes
      === 2016-02-22 18:39:04,399 [0-31] INFO  RequestContext - URL: '/builtinds/sc/system/development/ISC_RealtimeMessaging.js', User-Agent: 'Mozilla/5.0 (Windows NT 6.3; WOW64; rv:26.0) Gecko/20100101 Firefox/26.0': Moz (Gecko) with Accept-Encoding header
      === 2016-02-22 18:39:04,400 [0-37] INFO  RequestContext - URL: '/builtinds/sc/system/development/ISC_Tools.js', User-Agent: 'Mozilla/5.0 (Windows NT 6.3; WOW64; rv:26.0) Gecko/20100101 Firefox/26.0': Moz (Gecko) with Accept-Encoding header
      === 2016-02-22 18:39:04,401 [0-31] INFO  Download - done streaming: C:/Users/ST/workspace/lib/smartgwtpower-5.1p/samples/built-in-ds/war/builtinds/sc/system/development/ISC_RealtimeMessaging.js
      === 2016-02-22 18:39:04,403 [0-31] INFO  Compression - /builtinds/sc/system/development/ISC_RealtimeMessaging.js: 12977 -> 4291 bytes
      === 2016-02-22 18:39:04,404 [0-37] INFO  Download - done streaming: C:/Users/ST/workspace/lib/smartgwtpower-5.1p/samples/built-in-ds/war/builtinds/sc/system/development/ISC_Tools.js
      === 2016-02-22 18:39:04,404 [0-31] INFO  RequestContext - URL: '/builtinds/sc/skins/Enterprise/load_skin.js', User-Agent: 'Mozilla/5.0 (Windows NT 6.3; WOW64; rv:26.0) Gecko/20100101 Firefox/26.0': Moz (Gecko) with Accept-Encoding header
      === 2016-02-22 18:39:04,410 [0-31] INFO  Download - done streaming: C:/Users/ST/workspace/lib/smartgwtpower-5.1p/samples/built-in-ds/war/builtinds/sc/skins/Enterprise/load_skin.js
      === 2016-02-22 18:39:04,410 [0-37] INFO  Compression - /builtinds/sc/system/development/ISC_Tools.js: 103686 -> 26809 bytes
      === 2016-02-22 18:39:04,412 [0-31] INFO  Compression - /builtinds/sc/skins/Enterprise/load_skin.js: 71723 -> 11405 bytes
      === 2016-02-22 18:39:04,430 [0-49] INFO  Compression - /builtinds/sc/system/development/ISC_Forms.js: 936502 -> 226597 bytes
      === 2016-02-22 18:39:04,434 [0-50] INFO  Compression - /builtinds/sc/system/development/ISC_DataBinding.js: 906746 -> 218804 bytes
      === 2016-02-22 18:39:04,442 [0-48] INFO  Compression - /builtinds/sc/system/development/ISC_Grids.js: 1044716 -> 265160 bytes
      === 2016-02-22 18:39:04,443 [0-35] INFO  Compression - /builtinds/sc/system/development/ISC_Core.js: 1087388 -> 285013 bytes
      === 2016-02-22 18:39:04,444 [0-37] INFO  RequestContext - URL: '/builtinds/sc/system/development/ISC_DeveloperConsole.js', User-Agent: 'Mozilla/5.0 (Windows NT 6.3; WOW64; rv:26.0) Gecko/20100101 Firefox/26.0': Moz (Gecko) with Accept-Encoding header
      === 2016-02-22 18:39:04,446 [0-37] INFO  Download - done streaming: C:/Users/ST/workspace/lib/smartgwtpower-5.1p/samples/built-in-ds/war/builtinds/sc/system/development/ISC_DeveloperConsole.js
      === 2016-02-22 18:39:04,448 [0-37] INFO  Compression - /builtinds/sc/system/development/ISC_DeveloperConsole.js: 72706 -> 19584 bytes
      === 2016-02-22 18:39:04,824 [0-49] INFO  RequestContext - URL: '/builtinds/tools//developerConsoleOperations.jsp', User-Agent: 'Mozilla/5.0 (Windows NT 6.3; WOW64; rv:26.0) Gecko/20100101 Firefox/26.0': Moz (Gecko) with Accept-Encoding header
      === 2016-02-22 18:39:04,824 [0-31] INFO  RequestContext - URL: '/builtinds/tools//adminConsoleOperations.jsp', User-Agent: 'Mozilla/5.0 (Windows NT 6.3; WOW64; rv:26.0) Gecko/20100101 Firefox/26.0': Moz (Gecko) with Accept-Encoding header
      === 2016-02-22 18:39:05,590 [0-49] INFO  Compression - /builtinds/tools//developerConsoleOperations.jsp: 113 -> 141 bytes
      === 2016-02-22 18:39:05,754 [0-31] INFO  Compression - /builtinds/tools//adminConsoleOperations.jsp: 32 -> 84 bytes
      === 2016-02-22 18:39:06,148 [0-50] INFO  RequestContext - URL: '/builtinds/tools//developerConsoleOperations.jsp', User-Agent: 'Mozilla/5.0 (Windows NT 6.3; WOW64; rv:26.0) Gecko/20100101 Firefox/26.0': Moz (Gecko) with Accept-Encoding header
      === 2016-02-22 18:39:06,154 [0-50] DEBUG XML - Parsed XML from (in memory stream): 1ms
      === 2016-02-22 18:39:06,154 [0-50] DEBUG ISCKeyedObjectPool - Borrowing object for 'transaction'
      === 2016-02-22 18:39:06,155 [0-50] DEBUG PoolableDataSourceFactory - Tried to create DataSource  of type 'transaction' but null was returned
      === 2016-02-22 18:39:06,155 [0-50] DEBUG PoolableDataSourceFactory - Created DataSource null of type 'transaction' in the pooling flow
      === 2016-02-22 18:39:06,155 [0-50] DEBUG ISCKeyedObjectPool - Borrowing object for 'Object'
      === 2016-02-22 18:39:06,155 [0-50] DEBUG PoolableDataSourceFactory - Activated DataSource 54 of type 'Object'
      === 2016-02-22 18:39:06,155 [0-50] DEBUG ISCKeyedObjectPool - Borrowing object for 'List'
      === 2016-02-22 18:39:06,156 [0-50] DEBUG PoolableDataSourceFactory - Created DataSource 55 of type 'List' and assigned it to thread qtp1885927370-50
      === 2016-02-22 18:39:06,156 [0-50] DEBUG PoolableDataSourceFactory - Created DataSource 55 of type 'List' in the pooling flow
      === 2016-02-22 18:39:06,156 [0-50] DEBUG PoolableDataSourceFactory - Activated DataSource 55 of type 'List'
      === 2016-02-22 18:39:06,156 [0-50] DEBUG ISCKeyedObjectPool - Borrowing object for 'elem'
      === 2016-02-22 18:39:06,157 [0-50] DEBUG PoolableDataSourceFactory - Tried to create DataSource  of type 'elem' but null was returned
      === 2016-02-22 18:39:06,157 [0-50] DEBUG PoolableDataSourceFactory - Created DataSource null of type 'elem' in the pooling flow
      === 2016-02-22 18:39:06,157 [0-50] DEBUG RPCManager - Processing 1 requests.
      === 2016-02-22 18:39:06,157 [0-50] DEBUG RPCManager - Request #1 (RPCRequest) data: {
          appID:"isc_builtin",
          className:"builtin",
          methodName:"getAvailableScriptEngines",
          arguments:[
          ],
          is_ISC_RPC_DMI:true
      }
      === 2016-02-22 18:39:06,158 [0-50] DEBUG RPCDMI - appConfig: isc.Application.create({
          rpcBindings:[
              {
                  ID:"builtin",
                  className:"com.isomorphic.rpc.BuiltinRPC",
                  visibleMethods:[
                      {
                          name:"downloadWSDL"
                      },
                      {
                          name:"downloadClientContent"
                      },
                      {
                          name:"downloadClientExport"
                      },
                      {
                          name:"xmlToJS"
                      },
                      {
                          name:"uploadProgressCheck"
                      },
                      {
                          name:"saveFile"
                      },
                      {
                          name:"appendToFile"
                      },
                      {
                          name:"loadFile"
                      },
                      {
                          name:"deleteFile"
                      },
                      {
                          name:"loadSharedXML"
                      },
                      {
                          name:"saveSharedXML"
                      },
                      {
                          name:"getAvailableScriptEngines"
                      },
                      {
                          name:"devConsoleEvalServerScript"
                      },
                      {
                          name:"evalJava"
                      },
                      {
                          name:"getLogNames"
                      },
                      {
                          name:"getLogEntries"
                      },
                      {
                          name:"clearLogEntries"
                      },
                      {
                          name:"getLogThresholds"
                      },
                      {
                          name:"setLogThreshold"
                      },
                      {
                          name:"setTemporaryLogThreshold"
                      },
                      {
                          name:"revertTemporaryLogThresholds"
                      },
                      {
                          name:"getPdfObject"
                      },
                      {
                          name:"exportImage"
                      },
                      {
                          name:"areServerTimingsTracked"
                      },
                      {
                          name:"trackServerTimings"
                      },
                      {
                          name:"messagingSend"
                      },
                      {
                          name:"downloadZip"
                      }
                  ]
              },
              {
                  ID:"builtin_tools",
                  className:"com.isomorphic.tools.BuiltinRPC",
                  visibleMethods:[
                      {
                          name:"getDataSourceFromTable"
                      },
                      {
                          name:"getDataSourceJSONFromTable"
                      },
                      {
                          name:"getDataSourceFromHibernateMapping"
                      },
                      {
                          name:"getDataSourceJSONFromHibernateMapping"
                      },
                      {
                          name:"getTables"
                      },
                      {
                          name:"getFieldsFromTable"
                      },
                      {
                          name:"getBeanFields"
                      },
                      {
                          name:"getHibernateBeans"
                      },
                      {
                          name:"getDatabaseProductNameAndVersion"
                      },
                      {
                          name:"getDatabaseTableTypes"
                      },
                      {
                          name:"setAttributes"
                      },
                      {
                          name:"clearAttributes"
                      },
                      {
                          name:"getAttributes"
                      },
                      {
                          name:"getAttribute"
                      },
                      {
                          name:"getDataSourceConfigFromJavaClass"
                      },
                      {
                          args:"cName",
                          language:"groovy",
                          name:"getJavaSource",
                          script:"\n                    if (!com.isomorphic.auth.DevModeAuthFilter.devModeAuthorized(request)) throw new Exception(\"Not Authorized\");                    \n                    //import org.apache.bcel.Repository;\n\n                    try {\n                        return org.apache.bcel.Repository.lookupClass(cName).toString();\n                    } catch (Throwable e) {\n                        return \"Unable to reverse engineer class \"+cName+\": \"+e.getMessage();\n                    }\n                "
                      },
                      {
                          name:"loadDataSource"
                      },
                      {
                          name:"dsFromXML"
                      },
                      {
                          name:"dsConfigFromXML"
                      },
                      {
                          name:"getDefinedDataSources"
                      },
                      {
                          name:"importData"
                      },
                      {
                          name:"checkForTestData"
                      }
                  ]
              },
              {
                  ID:"builtin_adminconsole",
                  className:"com.isomorphic.tools.AdminConsole",
                  visibleMethods:[
                      {
                          name:"getDefinedDatabases"
                      },
                      {
                          name:"testDB"
                      },
                      {
                          name:"saveDBConfig"
                      },
                      {
                          name:"setDefaultDB"
                      },
                      {
                          name:"importDataSources"
                      },
                      {
                          name:"discoverJNDIDatabases"
                      }
                  ]
              }
          ]
      })
      
      === 2016-02-22 18:39:06,161 [0-50] DEBUG RPCDMI - rpc returned data
      === 2016-02-22 18:39:06,161 [0-50] WARN  RequestContext - Content type has already been set to: text/html - setting to: text/plain; charset=UTF-8
      === 2016-02-22 18:39:06,161 [0-50] DEBUG RPCManager - Content type for RPC transaction: text/plain; charset=UTF-8
      === 2016-02-22 18:39:06,162 [0-50] INFO  Compression - /builtinds/tools//developerConsoleOperations.jsp: 65 -> 71 bytes
      Please note that aside the Reflection parameter problem, there also is a unrelated problem with
      Code:
      === 2016-02-22 18:33:09,977 [0-31] ERROR DataImport - Parse error at line 2: com.isomorphic.tools.TranslaterException: java.lang.NumberFormatException: For input string: "L"
      where an exception is thrown (.csv is wrong with respect to the delimiter, but the result should be a validation error).

      Best regards
      Blama

      Comment


        #4
        HttpServletRequest parameter availability issue is fixed and is available in nightly builds since Feb 25 (today). Regarding parse exception logged for wrong input, it does not exclude validation - the client will still get appropriate validation error, in this case it would be "Must be a whole number."

        Comment


          #5
          Hi Isomorphic,

          thanks for fixing the parameter availability issue. This works for me, even though I found another bug now. I'll reply again in a minute.
          W.r.t. to the parse exception: I didn't see that the exception was actually catched. It still looks a bit funny in the logs and searching for "Exception" in the server logs brings up false positives, but that's the way it is.

          Best regards
          Blama

          Comment


            #6
            Hi Isomorphic,

            I'm using v10.1p_2016-02-25 now and the same setup as before.

            1st bug:
            Please change the csv file to:
            Code:
            commonName;scientificName;lifeSpan;status;diet;information
            New Animal;New Animal1;100 years;Not currently listed;Vegetables;Lore ipsum
            New Animal;New Animal2;100 years;Not currently listed;Vegetables;Lore ipsum
            New Animal;New Animal3;100 years;Not currently listed;Vegetables;Lore ipsum
            The file is now correct besides the fact that the "100 years" should be just "100".
            This results in a upload, where the 2 top lines seem to be error-free and the last line has three error messages behind the exclamation mark. Click image for larger version

Name:	three-in-one.PNG
Views:	70
Size:	6.4 KB
ID:	235304

            Server log for this one:
            Code:
            === 2016-02-25 21:17:19,038 [2-35] INFO  RequestContext - URL: '/builtinds/sc/IDACall', User-Agent: 'Mozilla/5.0 (Windows NT 6.3; WOW64; rv:26.0) Gecko/20100101 Firefox/26.0': Moz (Gecko) with Accept-Encoding header
            === 2016-02-25 21:17:19,039 [2-35] DEBUG IDACall - Header Name:Value pair: Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
            === 2016-02-25 21:17:19,039 [2-35] DEBUG IDACall - Header Name:Value pair: Connection:keep-alive
            === 2016-02-25 21:17:19,039 [2-35] DEBUG IDACall - Header Name:Value pair: DNT:1
            === 2016-02-25 21:17:19,039 [2-35] DEBUG IDACall - Header Name:Value pair: Referer:http://127.0.0.1:8888/BuiltInDS.html?gwt.codesvr=127.0.0.1:9997
            === 2016-02-25 21:17:19,039 [2-35] DEBUG IDACall - Header Name:Value pair: Pragma:no-cache
            === 2016-02-25 21:17:19,039 [2-35] DEBUG IDACall - Header Name:Value pair: Accept-Encoding:gzip, deflate
            === 2016-02-25 21:17:19,039 [2-35] DEBUG IDACall - Header Name:Value pair: Cache-Control:no-cache
            === 2016-02-25 21:17:19,039 [2-35] DEBUG IDACall - Header Name:Value pair: User-Agent:Mozilla/5.0 (Windows NT 6.3; WOW64; rv:26.0) Gecko/20100101 Firefox/26.0
            === 2016-02-25 21:17:19,039 [2-35] DEBUG IDACall - Header Name:Value pair: Content-Type:application/x-www-form-urlencoded; charset=UTF-8
            === 2016-02-25 21:17:19,039 [2-35] DEBUG IDACall - Header Name:Value pair: Accept-Language:de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
            === 2016-02-25 21:17:19,039 [2-35] DEBUG IDACall - Header Name:Value pair: Content-Length:1409
            === 2016-02-25 21:17:19,039 [2-35] DEBUG IDACall - Header Name:Value pair: Cookie:isc_cState=ready; JSESSIONID=knkqi1h811adyjlnoilpev4g; GLog=%7B%0A%20%20%20%20trackRPC%3Atrue%2C%20%0A%20%20%20%20isc_pageURL%3A%22http%3A//127.0.0.1%3A8888/BuiltInDS.html%3Fgwt.codesvr%3D127.0.0.1%3A9997%22%2C%20%0A%20%20%20%20isc_pageGUID%3A%22496B5E92-59C3-47C8-BD45-9AA0C9B43813%22%2C%20%0A%20%20%20%20priorityDefaults%3A%7B%0A%20%20%20%20%20%20%20%20sgwtInternal%3A1%0A%20%20%20%20%7D%2C%20%0A%20%20%20%20defaultPriority%3A3%2C%20%0A%20%20%20%20left%3A0%2C%20%0A%20%20%20%20top%3A0%2C%20%0A%20%20%20%20width%3A1320%2C%20%0A%20%20%20%20height%3A487%0A%7D
            === 2016-02-25 21:17:19,039 [2-35] DEBUG IDACall - Header Name:Value pair: Host:127.0.0.1:8888
            === 2016-02-25 21:17:19,039 [2-35] DEBUG IDACall - session exists: knkqi1h811adyjlnoilpev4g
            === 2016-02-25 21:17:19,039 [2-35] DEBUG IDACall - remote user: null
            === 2016-02-25 21:17:19,041 [2-35] DEBUG XML - Parsed XML from (in memory stream): 2ms
            === 2016-02-25 21:17:19,041 [2-35] DEBUG ISCKeyedObjectPool - Borrowing object for 'transaction'
            === 2016-02-25 21:17:19,041 [2-35] DEBUG PoolableDataSourceFactory - Tried to create DataSource  of type 'transaction' but null was returned
            === 2016-02-25 21:17:19,041 [2-35] DEBUG PoolableDataSourceFactory - Created DataSource null of type 'transaction' in the pooling flow
            === 2016-02-25 21:17:19,041 [2-35] DEBUG ISCKeyedObjectPool - Borrowing object for 'Object'
            === 2016-02-25 21:17:19,041 [2-35] DEBUG PoolableDataSourceFactory - Activated DataSource 84 of type 'Object'
            === 2016-02-25 21:17:19,041 [2-35] DEBUG ISCKeyedObjectPool - Borrowing object for 'List'
            === 2016-02-25 21:17:19,042 [2-35] DEBUG PoolableDataSourceFactory - Created DataSource 85 of type 'List' and assigned it to thread qtp471004142-35
            === 2016-02-25 21:17:19,042 [2-35] DEBUG PoolableDataSourceFactory - Created DataSource 85 of type 'List' in the pooling flow
            === 2016-02-25 21:17:19,042 [2-35] DEBUG PoolableDataSourceFactory - Activated DataSource 85 of type 'List'
            === 2016-02-25 21:17:19,042 [2-35] DEBUG ISCKeyedObjectPool - Borrowing object for 'elem'
            === 2016-02-25 21:17:19,042 [2-35] DEBUG PoolableDataSourceFactory - Tried to create DataSource  of type 'elem' but null was returned
            === 2016-02-25 21:17:19,042 [2-35] DEBUG PoolableDataSourceFactory - Created DataSource null of type 'elem' in the pooling flow
            === 2016-02-25 21:17:19,042 [2-35] DEBUG RPCManager - Processing 1 requests.
            === 2016-02-25 21:17:19,043 [2-35] DEBUG RPCManager - Request #1 (RPCRequest) data: {
                appID:"isc_builtin",
                className:"com.isomorphic.tools.BuiltinRPC",
                methodName:"setAttributes",
                arguments:[
                    "session",
                    [
                        {
                            name:"dsName",
                            type:"hidden",
                            value:"animals"
                        },
                        {
                            name:"delimiter",
                            type:"hidden",
                            value:";"
                        },
                        {
                            name:"quoteString",
                            type:"hidden",
                            value:"\""
                        },
                        {
                            name:"dataFormat",
                            type:"hidden",
                            value:"csv"
                        }
                    ],
                    null
                ],
                is_ISC_RPC_DMI:true
            }
            === 2016-02-25 21:17:19,043 [2-35] INFO  IDACall - Performing 1 operation(s)
            === 2016-02-25 21:17:19,043 [2-35] DEBUG RPCDMI - appConfig: isc.Application.create({
                rpcBindings:[
                    {
                        ID:"builtin",
                        className:"com.isomorphic.rpc.BuiltinRPC",
                        visibleMethods:[
                            {
                                name:"downloadWSDL"
                            },
                            {
                                name:"downloadClientContent"
                            },
                            {
                                name:"downloadClientExport"
                            },
                            {
                                name:"xmlToJS"
                            },
                            {
                                name:"uploadProgressCheck"
                            },
                            {
                                name:"saveFile"
                            },
                            {
                                name:"appendToFile"
                            },
                            {
                                name:"loadFile"
                            },
                            {
                                name:"deleteFile"
                            },
                            {
                                name:"loadSharedXML"
                            },
                            {
                                name:"saveSharedXML"
                            },
                            {
                                name:"getAvailableScriptEngines"
                            },
                            {
                                name:"devConsoleEvalServerScript"
                            },
                            {
                                name:"evalJava"
                            },
                            {
                                name:"getLogNames"
                            },
                            {
                                name:"getLogEntries"
                            },
                            {
                                name:"clearLogEntries"
                            },
                            {
                                name:"getLogThresholds"
                            },
                            {
                                name:"setLogThreshold"
                            },
                            {
                                name:"setTemporaryLogThreshold"
                            },
                            {
                                name:"revertTemporaryLogThresholds"
                            },
                            {
                                name:"getPdfObject"
                            },
                            {
                                name:"exportImage"
                            },
                            {
                                name:"areServerTimingsTracked"
                            },
                            {
                                name:"trackServerTimings"
                            },
                            {
                                name:"messagingSend"
                            },
                            {
                                name:"downloadZip"
                            }
                        ]
                    },
                    {
                        ID:"builtin_tools",
                        className:"com.isomorphic.tools.BuiltinRPC",
                        visibleMethods:[
                            {
                                name:"getDataSourceFromTable"
                            },
                            {
                                name:"getDataSourceJSONFromTable"
                            },
                            {
                                name:"getDataSourceFromHibernateMapping"
                            },
                            {
                                name:"getDataSourceJSONFromHibernateMapping"
                            },
                            {
                                name:"getTables"
                            },
                            {
                                name:"getFieldsFromTable"
                            },
                            {
                                name:"getBeanFields"
                            },
                            {
                                name:"getHibernateBeans"
                            },
                            {
                                name:"getDatabaseProductNameAndVersion"
                            },
                            {
                                name:"getDatabaseTableTypes"
                            },
                            {
                                name:"setAttributes"
                            },
                            {
                                name:"clearAttributes"
                            },
                            {
                                name:"getAttributes"
                            },
                            {
                                name:"getAttribute"
                            },
                            {
                                name:"getDataSourceConfigFromJavaClass"
                            },
                            {
                                args:"cName",
                                language:"groovy",
                                name:"getJavaSource",
                                script:"\n                    if (!com.isomorphic.auth.DevModeAuthFilter.devModeAuthorized(request)) throw new Exception(\"Not Authorized\");                    \n                    //import org.apache.bcel.Repository;\n\n                    try {\n                        return org.apache.bcel.Repository.lookupClass(cName).toString();\n                    } catch (Throwable e) {\n                        return \"Unable to reverse engineer class \"+cName+\": \"+e.getMessage();\n                    }\n                "
                            },
                            {
                                name:"loadDataSource"
                            },
                            {
                                name:"dsFromXML"
                            },
                            {
                                name:"dsConfigFromXML"
                            },
                            {
                                name:"getDefinedDataSources"
                            },
                            {
                                name:"importData"
                            },
                            {
                                name:"checkForTestData"
                            }
                        ]
                    },
                    {
                        ID:"builtin_adminconsole",
                        className:"com.isomorphic.tools.AdminConsole",
                        visibleMethods:[
                            {
                                name:"getDefinedDatabases"
                            },
                            {
                                name:"testDB"
                            },
                            {
                                name:"saveDBConfig"
                            },
                            {
                                name:"setDefaultDB"
                            },
                            {
                                name:"importDataSources"
                            },
                            {
                                name:"discoverJNDIDatabases"
                            }
                        ]
                    }
                ]
            })
            
            === 2016-02-25 21:17:19,044 [2-35] DEBUG RPCDMI - rpc returned data
            === 2016-02-25 21:17:19,044 [2-35] DEBUG RPCManager - Content type for RPC transaction: text/plain; charset=UTF-8
            === 2016-02-25 21:17:19,044 [2-35] INFO  Compression - /builtinds/sc/IDACall: 67 -> 73 bytes
            === 2016-02-25 21:17:19,050 [2-39] INFO  RequestContext - URL: '/builtinds/sc/IDACall', User-Agent: 'Mozilla/5.0 (Windows NT 6.3; WOW64; rv:26.0) Gecko/20100101 Firefox/26.0': Moz (Gecko) with Accept-Encoding header
            === 2016-02-25 21:17:19,051 [2-39] DEBUG IDACall - Header Name:Value pair: Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
            === 2016-02-25 21:17:19,051 [2-39] DEBUG IDACall - Header Name:Value pair: Connection:keep-alive
            === 2016-02-25 21:17:19,051 [2-39] DEBUG IDACall - Header Name:Value pair: DNT:1
            === 2016-02-25 21:17:19,051 [2-39] DEBUG IDACall - Header Name:Value pair: Referer:http://127.0.0.1:8888/BuiltInDS.html?gwt.codesvr=127.0.0.1:9997
            === 2016-02-25 21:17:19,051 [2-39] DEBUG IDACall - Header Name:Value pair: Accept-Encoding:gzip, deflate
            === 2016-02-25 21:17:19,051 [2-39] DEBUG IDACall - Header Name:Value pair: User-Agent:Mozilla/5.0 (Windows NT 6.3; WOW64; rv:26.0) Gecko/20100101 Firefox/26.0
            === 2016-02-25 21:17:19,051 [2-39] DEBUG IDACall - Header Name:Value pair: Content-Type:multipart/form-data; boundary=---------------------------13991516912707
            === 2016-02-25 21:17:19,051 [2-39] DEBUG IDACall - Header Name:Value pair: Accept-Language:de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
            === 2016-02-25 21:17:19,051 [2-39] DEBUG IDACall - Header Name:Value pair: Cookie:isc_cState=ready; JSESSIONID=knkqi1h811adyjlnoilpev4g; GLog=%7B%0A%20%20%20%20trackRPC%3Atrue%2C%20%0A%20%20%20%20isc_pageURL%3A%22http%3A//127.0.0.1%3A8888/BuiltInDS.html%3Fgwt.codesvr%3D127.0.0.1%3A9997%22%2C%20%0A%20%20%20%20isc_pageGUID%3A%22496B5E92-59C3-47C8-BD45-9AA0C9B43813%22%2C%20%0A%20%20%20%20priorityDefaults%3A%7B%0A%20%20%20%20%20%20%20%20sgwtInternal%3A1%0A%20%20%20%20%7D%2C%20%0A%20%20%20%20defaultPriority%3A3%2C%20%0A%20%20%20%20left%3A0%2C%20%0A%20%20%20%20top%3A0%2C%20%0A%20%20%20%20width%3A1320%2C%20%0A%20%20%20%20height%3A487%0A%7D
            === 2016-02-25 21:17:19,051 [2-39] DEBUG IDACall - Header Name:Value pair: Content-Length:1539
            === 2016-02-25 21:17:19,051 [2-39] DEBUG IDACall - Header Name:Value pair: Host:127.0.0.1:8888
            === 2016-02-25 21:17:19,051 [2-39] DEBUG IDACall - session exists: knkqi1h811adyjlnoilpev4g
            === 2016-02-25 21:17:19,051 [2-39] DEBUG IDACall - remote user: null
            === 2016-02-25 21:17:19,055 [2-39] DEBUG XML - Parsed XML from (in memory stream): 3ms
            === 2016-02-25 21:17:19,055 [2-39] DEBUG ISCKeyedObjectPool - Borrowing object for 'transaction'
            === 2016-02-25 21:17:19,056 [2-39] DEBUG PoolableDataSourceFactory - Tried to create DataSource  of type 'transaction' but null was returned
            === 2016-02-25 21:17:19,056 [2-39] DEBUG PoolableDataSourceFactory - Created DataSource null of type 'transaction' in the pooling flow
            === 2016-02-25 21:17:19,056 [2-39] DEBUG ISCKeyedObjectPool - Borrowing object for 'Object'
            === 2016-02-25 21:17:19,056 [2-39] DEBUG PoolableDataSourceFactory - Created DataSource 86 of type 'Object' and assigned it to thread qtp471004142-39
            === 2016-02-25 21:17:19,056 [2-39] DEBUG PoolableDataSourceFactory - Created DataSource 86 of type 'Object' in the pooling flow
            === 2016-02-25 21:17:19,056 [2-39] DEBUG PoolableDataSourceFactory - Activated DataSource 86 of type 'Object'
            === 2016-02-25 21:17:19,056 [2-39] DEBUG ISCKeyedObjectPool - Borrowing object for 'List'
            === 2016-02-25 21:17:19,057 [2-39] DEBUG PoolableDataSourceFactory - Created DataSource 87 of type 'List' and assigned it to thread qtp471004142-39
            === 2016-02-25 21:17:19,057 [2-39] DEBUG PoolableDataSourceFactory - Created DataSource 87 of type 'List' in the pooling flow
            === 2016-02-25 21:17:19,057 [2-39] DEBUG PoolableDataSourceFactory - Activated DataSource 87 of type 'List'
            === 2016-02-25 21:17:19,057 [2-39] DEBUG ISCKeyedObjectPool - Borrowing object for 'elem'
            === 2016-02-25 21:17:19,058 [2-39] DEBUG PoolableDataSourceFactory - Tried to create DataSource  of type 'elem' but null was returned
            === 2016-02-25 21:17:19,058 [2-39] DEBUG PoolableDataSourceFactory - Created DataSource null of type 'elem' in the pooling flow
            === 2016-02-25 21:17:19,059 [2-39] DEBUG RPCManager - Processing 1 requests.
            === 2016-02-25 21:17:19,059 [2-39] DEBUG ISCKeyedObjectPool - Borrowing object for 'batchUpload'
            === 2016-02-25 21:17:19,059 [2-39] DEBUG PoolableDataSourceFactory - Activated DataSource 28 of type 'batchUpload'
            === 2016-02-25 21:17:19,059 [2-39] DEBUG DSRequest - Caching instance 28 of DS 'batchUpload' from DSRequest.getDataSource()
            === 2016-02-25 21:17:19,059 [2-39] DEBUG DSRequest - Caching instance 28 of DS batchUpload
            === 2016-02-25 21:17:19,060 [2-39] DEBUG PoolableDataSourceFactory - Cleared and passivated DataSource 28 of type 'batchUpload'
            === 2016-02-25 21:17:19,060 [2-39] DEBUG RPCManager - Request #1 (DSRequest) payload: {
                criteria:{
                },
                values:{
                    file:"animals.csv",
                    dsName:"animals",
                    delimiter:";",
                    quoteString:"\"",
                    dataFormat:"csv"
                },
                operationConfig:{
                    dataSource:"batchUpload",
                    repo:null,
                    operationType:"update",
                    textMatchStyle:"exact"
                },
                componentId:"isc_DynamicForm_0",
                appID:"builtinApplication",
                operation:"upload",
                oldValues:{
                    dsName:"animals",
                    delimiter:";",
                    quoteString:"\"",
                    dataFormat:"csv",
                    file:null
                }
            }
            === 2016-02-25 21:17:19,060 [2-39] INFO  IDACall - Performing 1 operation(s)
            === 2016-02-25 21:17:19,060 [2-39] DEBUG DeclarativeSecurity - Processing security checks for DataSource null, field null
            === 2016-02-25 21:17:19,060 [2-39] DEBUG DeclarativeSecurity - DataSource batchUpload is not in the pre-checked list, processing...
            === 2016-02-25 21:17:19,061 [2-39] DEBUG ISCKeyedObjectPool - Borrowing object for 'animals'
            === 2016-02-25 21:17:19,061 [2-39] DEBUG PoolableDataSourceFactory - Activated DataSource 83 of type 'animals'
            === 2016-02-25 21:17:19,061 [2-39] DEBUG ISCKeyedObjectPool - Borrowing object for 'animals'
            === 2016-02-25 21:17:19,063 [2-39] DEBUG SQLDataSource - DataSource 88 acquired SQLDriver instance 1040635076 during initialization
            === 2016-02-25 21:17:19,063 [2-39] DEBUG PoolableDataSourceFactory - Created DataSource 88 of type 'animals' and assigned it to thread qtp471004142-39
            === 2016-02-25 21:17:19,063 [2-39] DEBUG PoolableDataSourceFactory - Created DataSource 88 of type 'animals' in the pooling flow
            === 2016-02-25 21:17:19,063 [2-39] DEBUG PoolableDataSourceFactory - Activated DataSource 88 of type 'animals'
            === 2016-02-25 21:17:19,063 [2-39] DEBUG ISCKeyedObjectPool - Borrowing object for 'Object'
            === 2016-02-25 21:17:19,063 [2-39] DEBUG PoolableDataSourceFactory - Created DataSource 89 of type 'Object' and assigned it to thread qtp471004142-39
            === 2016-02-25 21:17:19,063 [2-39] DEBUG PoolableDataSourceFactory - Created DataSource 89 of type 'Object' in the pooling flow
            === 2016-02-25 21:17:19,064 [2-39] DEBUG PoolableDataSourceFactory - Activated DataSource 89 of type 'Object'
            === 2016-02-25 21:17:19,064 [2-39] DEBUG PoolableDataSourceFactory - Cleared and passivated DataSource 89 of type 'Object'
            === 2016-02-25 21:17:19,064 [2-39] DEBUG ISCKeyedObjectPool - Borrowing object for 'Object'
            === 2016-02-25 21:17:19,064 [2-39] DEBUG PoolableDataSourceFactory - Activated DataSource 89 of type 'Object'
            === 2016-02-25 21:17:19,064 [2-39] DEBUG PoolableDataSourceFactory - Cleared and passivated DataSource 89 of type 'Object'
            === 2016-02-25 21:17:19,064 [2-39] DEBUG ISCKeyedObjectPool - Borrowing object for 'Object'
            === 2016-02-25 21:17:19,064 [2-39] DEBUG PoolableDataSourceFactory - Activated DataSource 89 of type 'Object'
            === 2016-02-25 21:17:19,064 [2-39] DEBUG PoolableDataSourceFactory - Cleared and passivated DataSource 89 of type 'Object'
            === 2016-02-25 21:17:19,064 [2-39] DEBUG ISCKeyedObjectPool - Borrowing object for 'Object'
            === 2016-02-25 21:17:19,064 [2-39] DEBUG PoolableDataSourceFactory - Activated DataSource 89 of type 'Object'
            === 2016-02-25 21:17:19,064 [2-39] DEBUG PoolableDataSourceFactory - Cleared and passivated DataSource 89 of type 'Object'
            === 2016-02-25 21:17:19,064 [2-39] DEBUG ISCKeyedObjectPool - Borrowing object for 'Object'
            === 2016-02-25 21:17:19,064 [2-39] DEBUG PoolableDataSourceFactory - Activated DataSource 89 of type 'Object'
            === 2016-02-25 21:17:19,064 [2-39] DEBUG PoolableDataSourceFactory - Cleared and passivated DataSource 89 of type 'Object'
            === 2016-02-25 21:17:19,065 [2-39] DEBUG ISCKeyedObjectPool - Borrowing object for 'Object'
            === 2016-02-25 21:17:19,065 [2-39] DEBUG PoolableDataSourceFactory - Activated DataSource 89 of type 'Object'
            === 2016-02-25 21:17:19,065 [2-39] DEBUG PoolableDataSourceFactory - Cleared and passivated DataSource 89 of type 'Object'
            === 2016-02-25 21:17:19,065 [2-39] DEBUG ISCKeyedObjectPool - Borrowing object for 'Object'
            === 2016-02-25 21:17:19,065 [2-39] DEBUG PoolableDataSourceFactory - Activated DataSource 89 of type 'Object'
            === 2016-02-25 21:17:19,065 [2-39] DEBUG PoolableDataSourceFactory - Cleared and passivated DataSource 89 of type 'Object'
            === 2016-02-25 21:17:19,066 [2-39] ERROR DataImport - Parse error at line 2: com.isomorphic.tools.TranslaterException: java.lang.NumberFormatException: For input string: "100 years"
            === 2016-02-25 21:17:19,066 [2-39] ERROR DataImport - Parse error at line 3: com.isomorphic.tools.TranslaterException: java.lang.NumberFormatException: For input string: "100 years"
            === 2016-02-25 21:17:19,067 [2-39] ERROR DataImport - Parse error at line 4: com.isomorphic.tools.TranslaterException: java.lang.NumberFormatException: For input string: "100 years"
            === 2016-02-25 21:17:19,069 [2-39] INFO  IDACall - Validating for field "commonName", value "New Animal"
            === 2016-02-25 21:17:19,071 [2-39] DEBUG ValidationContext - Adding validation errors at path '/animals/lifeSpan/lifeSpan': {errorMessage=Must be a whole number.}
            === 2016-02-25 21:17:19,071 [2-39] INFO  IDACall - Validating for field "commonName", value "New Animal"
            === 2016-02-25 21:17:19,072 [2-39] DEBUG ValidationContext - Adding validation errors at path '/animals/lifeSpan/lifeSpan': {errorMessage=Must be a whole number.}
            === 2016-02-25 21:17:19,072 [2-39] INFO  IDACall - Validating for field "commonName", value "New Animal"
            === 2016-02-25 21:17:19,073 [2-39] DEBUG ValidationContext - Adding validation errors at path '/animals/lifeSpan/lifeSpan': {errorMessage=Must be a whole number.}
            === 2016-02-25 21:17:19,073 [2-39] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 88
            === 2016-02-25 21:17:19,073 [2-39] DEBUG SQLDataSource - About to clear SQLDriver state for DS instance 88
            === 2016-02-25 21:17:19,073 [2-39] DEBUG PoolableDataSourceFactory - Cleared and passivated DataSource 88 of type 'animals'
            === 2016-02-25 21:17:19,073 [2-39] DEBUG BatchUpload - Rows: [
                {
                    commonName:"New Animal",
                    lifeSpan:"100 years",
                    scientificName:"New Animal1",
                    information:"Lore ipsum",
                    diet:"Vegetables",
                    status:"Not currently listed"
                },
                {
                    commonName:"New Animal",
                    lifeSpan:"100 years",
                    scientificName:"New Animal2",
                    information:"Lore ipsum",
                    diet:"Vegetables",
                    status:"Not currently listed"
                },
                {
                    commonName:"New Animal",
                    lifeSpan:"100 years",
                    scientificName:"New Animal3",
                    information:"Lore ipsum",
                    diet:"Vegetables",
                    status:"Not currently listed"
                }
            ]
            === 2016-02-25 21:17:19,074 [2-39] DEBUG BatchUpload - Errors: [
                {
                    recordPath:"/animals",
                    lifeSpan:[
                        {
                            errorMessage:"Must be a whole number."
                        },
                        {
                            errorMessage:"Must be a whole number."
                        },
                        {
                            errorMessage:"Must be a whole number."
                        }
                    ],
                    rowNum:2
                },
                {
                    recordPath:"/animals",
                    lifeSpan:[
                        {
                            errorMessage:"Must be a whole number."
                        },
                        {
                            errorMessage:"Must be a whole number."
                        },
                        {
                            errorMessage:"Must be a whole number."
                        }
                    ],
                    rowNum:2
                },
                {
                    recordPath:"/animals",
                    lifeSpan:[
                        {
                            errorMessage:"Must be a whole number."
                        },
                        {
                            errorMessage:"Must be a whole number."
                        },
                        {
                            errorMessage:"Must be a whole number."
                        }
                    ],
                    rowNum:2
                }
            ]
            === 2016-02-25 21:17:19,074 [2-39] DEBUG BatchUpload - Errors after conversion: [
                {
                    errors:{
                        lifeSpan:[
                            "Must be a whole number.",
                            "Must be a whole number.",
                            "Must be a whole number."
                        ]
                    },
                    [B]rowNum:2[/B]
                },
                {
                    errors:{
                        lifeSpan:[
                            "Must be a whole number.",
                            "Must be a whole number.",
                            "Must be a whole number."
                        ]
                    },
                    [B]rowNum:2[/B]
                },
                {
                    errors:{
                        lifeSpan:[
                            "Must be a whole number.",
                            "Must be a whole number.",
                            "Must be a whole number."
                        ]
                    },
                    [B]rowNum:2[/B]
                }
            ]
            === 2016-02-25 21:17:19,074 [2-39] INFO  DSResponse - DSResponse: Map with 3 keys
            === 2016-02-25 21:17:19,074 [2-39] DEBUG DSRequest - About to free up resources for request of type update on DataSource batchUpload
            === 2016-02-25 21:17:19,074 [2-39] DEBUG DSRequest - Ignoring freeResources call because this is not a primary request!
            === 2016-02-25 21:17:19,074 [2-39] DEBUG RPCManager - Content type for RPC transaction: text/html; charset=UTF-8
            === 2016-02-25 21:17:19,074 [2-39] DEBUG RPCManager - DMI response, dropExtraFields: false
            === 2016-02-25 21:17:19,074 [2-39] DEBUG DSRequest - Ignoring freeQueueResources call because this is not a primary request!
            === 2016-02-25 21:17:19,075 [2-39] INFO  Compression - /builtinds/sc/IDACall: 1479 -> 587 bytes
            See that for all errors, the rownum is "2".


            2nd bug:
            Change the csv file to:
            Code:
            commonName;scientificName;lifeSpan;status;diet;information
            New Animal;New Animal;100 years;Not currently listed;Vegetables;Lore ipsum
            New Animal;New Animal;100 years;Not currently listed;Vegetables;Lore ipsum
            New Animal;New Animal;100 years;Not currently listed;Vegetables;Lore ipsum
            The file is now correct besides the fact that the same value for the PK column is present three times. This results in "java.lang.String cannot be cast to java.util.Map". Click image for larger version

Name:	string-to-map.PNG
Views:	67
Size:	5.4 KB
ID:	235305



            I'm pretty sure that at least bug 1 did not happen before. Most likely this is also true for the latter one.
            These are important ones for me.

            Best regards
            Blama

            Comment


              #7
              Hi Isomorphic,

              can you reproduce the issues here?

              Best regards
              Blama

              Comment


                #8
                Yes, we see some issues here - it's being looked into today.

                Comment


                  #9
                  1 bug is fixed and is available in latest nightly (Mar 2) and yes, it was introduced by recent fixes, sorry about that.
                  2 bug is reproduce and its fix is in progress.

                  Thank you for your patience

                  Comment


                    #10
                    Hi Isomorphic,

                    thanks for fixing. I can confirm that issue#1 is gone with the testcase and v10.1p_2016-03-02.

                    Thank you,
                    Blama

                    Comment


                      #11
                      2 bug is fixed and is available in the latest nightly build (Mar 5). Duplicated primary keys validation errors will be reported in batchUploader interface like other validation errors do.

                      Comment


                        #12
                        Hi Isomorphic,

                        thank you for fixing (tested with v10.1p_2016-03-07). This is working way better than expected! I thought you would just get rid of the "java.lang.String cannot be cast to java.util.Map".

                        Two further questions:
                        1) Now that you have the in-memory duplicate check for primaryKey values - could you add this code also for fields with isUnique validators?
                        In real life, this will be way more common as the primaryKey case, as PKs should be synthetic and sequence-generated. I suggested this feature here and it seems you almost implemented it now.
                        2) Could you make the validation error message localizable?

                        Best regards
                        Blama

                        Comment


                          #13
                          Ok, we've change things in a following way:
                          - there's no duplicate check for primaryKey values anymore;
                          - to get primaryKey values validated for duplicates in-memory, you should declare a "isUnique" validator on primaryKey field;
                          - this supports isUnique validator.criteriaFields as well, so you may check different sets of fields for duplicated combinations;
                          - validation error is localizable via validator.errorMessage like usual;

                          NOTE that this in-memory validation feature will check for duplicates only within uploaded data set, although "normal" isUnique validator that searches for record duplicates in DB will still be executed separately and those errors will be reported as well.

                          This will be available in nightly builds since Mar 10 (tomorrow).

                          Comment


                            #14
                            Hi Isomorphic,

                            this seems to be the best-of-all solution. Looking forward to test it.

                            Thank you & Best regards
                            Blama

                            Comment


                              #15
                              Hi Isomorphic,

                              this is working as expected.

                              Thanks a lot for the improvement.

                              Best regards
                              Blama

                              Comment

                              Working...
                              X