Announcement

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

    Showstopper bug in current 5.1d regaring missing (but unused) isomorphic_spring.jar

    Hi Isomorphic,

    I'm getting this error log inside my DMIs (using SNAPSHOT_v10.1d_2015-04-07):
    Code:
    === 2015-04-07 23:45:15,572 [c-28] ERROR InterfaceProvider - Unable to instantiate class 'com.isomorphic.spring.SpringBeanFactory' - check to make sure you have isomorphic_spring.jar (and its dependencies: isomorphic_core_rpc.jar, spring-core-3.2.10.RELEASE.jar, groovy-2.3.6.jar, commons-jxpath-1.3.jar, commons-pool-1.6.jar, spring-aop-3.2.10.RELEASE.jar, httpcore-4.3.2.jar, xml-apis-1.3.04.jar, commons-logging-1.1.1.jar, xercesImpl-2.9.1.jar, commons-fileupload-1.3.1.jar, aopalliance.jar, commons-lang-2.6.jar, commons-vfs-1.0.jar, xbean.jar, poi-ooxml-schemas-3.9-20121203.jar, activation.jar, poi-ooxml-3.9-20121203.jar, isc-jakarta-oro-2.0.6.jar, log4j-1.2.17.jar, slf4j-api-1.7.7.jar, spring-tx-3.2.10.RELEASE.jar, joda-time-2.3.jar, spring-beans-3.2.10.RELEASE.jar, spring-jdbc-3.2.10.RELEASE.jar, commons-io-2.2.jar, velocity-1.7.jar, spring-webmvc-3.2.10.RELEASE.jar, spring-context-3.2.10.RELEASE.jar, spring-orm-3.2.10.RELEASE.jar, commons-cli-1.2.jar, hibernate-validator-4.1.0.Final.jar, mail.jar, javax.persistence.jar, poi-3.9-20121203.jar, spring-web-3.2.10.RELEASE.jar, validation-api-1.0.0.GA.jar, commons-collections-3.2.1.jar, spring-expression-3.2.10.RELEASE.jar, httpclient-4.3.5.jar, commons-codec-1.6.jar) in your CLASSPATH
    I don't have in my classpath and also not in my war/WEB-INF/lib, as I'm not using it. My DMIs are defined like this:
    Code:
    <serverObject lookupStyle=[B]"new"[/B] className="com.lmscompany.lms.server.worker.V_LEAD_CURRENT" />
    When I debug into the called serverMethod with the signature
    Code:
    public DSResponse assignStatus(DSRequest dsRequest, HttpServletRequest servletRequest) throws Exception
    I can see that the servletRequest is null.

    Could you please check this?

    Best regards,
    Blama

    #2
    Hi Isomorphic,

    I just copied the whole 5.1d lib directory from the download to my war/WEB_INF/lib. This makes the log message go away, but the servletRequest is still null.

    Best regards,
    Blama

    Comment


      #3
      Hi Isomorphic,

      to be sure I also removed the serverConstructor of my DataSource in the .ds.xml - no success either.

      In case that this is important: I tested with
      Tomcat 7.0.50 running under Win 8.1 64bit (Dev)
      Tomcat 7.0.53 running under CentOS 6 (Prod)

      Best regards,
      Blama

      Comment


        #4
        The problem with loud warnings about missing spring libraries has been fixed (and will be in the April 9, 2015 build).

        But we're unable to reproduce a null being passed in for the HttpServletRequest argument.

        Would you mind sharing a full stack trace to your DMI call (just log the stack trace at the entry point of your DMI method and post that please?).

        Comment


          #5
          Hi Isomorphic,

          of course.

          I did a "right-click"-"Copy Stack" in Eclipse debug mode directly before and after entering the DMI with the null-object. I also took screenshots.

          Stack trace before entering:
          Code:
          Daemon Thread [http-bio-8080-exec-24] (Suspended (breakpoint at line 112 in V_LEAD_MATCHED_UNDISMISSED))	
          	owns: SocketWrapper<E>  (id=1553)	
          	V_LEAD_MATCHED_UNDISMISSED.acceptLead(DSRequest, HttpServletRequest) line: 112	
          	NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]	
          	NativeMethodAccessorImpl.invoke(Object, Object[]) line: not available	
          	DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: not available	
          	Method.invoke(Object, Object...) line: not available	
          	Reflection.adaptArgsAndInvoke(Object, Method, ReflectionArgument[], ReflectionArgument[], DataSource, DSRequest) line: 964	
          	DataSourceDMI.execute() line: 413	
          	DataSourceDMI.execute(DSRequest, RPCManager, RequestContext) line: 64	
          	DSRequest.execute() line: 2615	
          	LMSIDACall(IDACall).handleDSRequest(DSRequest, RPCManager, RequestContext) line: 221	
          	LMSIDACall.handleDSRequest(DSRequest, RPCManager, RequestContext) line: 75	
          	LMSIDACall(IDACall).processRPCTransaction(RPCManager, RequestContext) line: 186	
          	LMSIDACall.processRequest(HttpServletRequest, HttpServletResponse) line: 40	
          	LMSIDACall(IDACall)._processRequest(HttpServletRequest, HttpServletResponse) line: 118	
          	LMSIDACall(IDACall).doPost(HttpServletRequest, HttpServletResponse) line: 78	
          	LMSIDACall(HttpServlet).service(HttpServletRequest, HttpServletResponse) line: 647	
          	LMSIDACall(BaseServlet).service(HttpServletRequest, HttpServletResponse) line: 156	
          	LMSIDACall(HttpServlet).service(ServletRequest, ServletResponse) line: 728	
          	ApplicationFilterChain.internalDoFilter(ServletRequest, ServletResponse) line: 305	
          	ApplicationFilterChain.doFilter(ServletRequest, ServletResponse) line: 210	
          	WsFilter.doFilter(ServletRequest, ServletResponse, FilterChain) line: 52	
          	ApplicationFilterChain.internalDoFilter(ServletRequest, ServletResponse) line: 243	
          	ApplicationFilterChain.doFilter(ServletRequest, ServletResponse) line: 210	
          	CompressionFilter._doFilter(ServletRequest, ServletResponse, FilterChain) line: 260	
          	CompressionFilter(BaseFilter).doFilter(ServletRequest, ServletResponse, FilterChain) line: 83	
          	ApplicationFilterChain.internalDoFilter(ServletRequest, ServletResponse) line: 243	
          	ApplicationFilterChain.doFilter(ServletRequest, ServletResponse) line: 210	
          	StandardWrapperValve.invoke(Request, Response) line: 222	
          	StandardContextValve.invoke(Request, Response) line: 123	
          	FormAuthenticator(AuthenticatorBase).invoke(Request, Response) line: 611	
          	StandardHostValve.invoke(Request, Response) line: 171	
          	ErrorReportValve.invoke(Request, Response) line: 100	
          	AccessLogValve.invoke(Request, Response) line: 953	
          	StandardEngineValve.invoke(Request, Response) line: 118	
          	CoyoteAdapter.service(Request, Response) line: 409	
          	Http11Processor(AbstractHttp11Processor<S>).process(SocketWrapper<S>) line: 1044	
          	Http11Protocol$Http11ConnectionHandler(AbstractProtocol$AbstractConnectionHandler<S,P>).process(SocketWrapper<S>, SocketStatus) line: 607	
          	JIoEndpoint$SocketProcessor.run() line: 315	
          	ThreadPoolExecutor(ThreadPoolExecutor).runWorker(ThreadPoolExecutor$Worker) line: not available	
          	ThreadPoolExecutor$Worker.run() line: not available	
          	TaskThread(Thread).run() line: not available
          Request that enters the DMI:
          Code:
          updateHistRequest = new DSRequest(DatasourceEnum.V_LEAD_CURRENT.getValue(), DataSource.OP_CUSTOM) {
          	{
          		setRPCManager(request.getRPCManager());
          		setOperationId("assignStatus");
          		HashMap<String, Object> values = new HashMap<String, Object>() {
          			private static final long serialVersionUID = -4852485799957630003L;
          			{
          				put("LEAD_ID", myLeadId);
          				put("STATUS_SHORTNAME", LeadstatusEnum.WORKINPROGRESS.getValue());
          				// Rest is determined by T_STATUS_CHANGE
          			}
          		};
          		setValues(values);
          	}
          };
          Stack trace after entering:
          Code:
          Daemon Thread [http-bio-8080-exec-24] (Suspended (entry into method assignStatus in V_LEAD_CURRENT))	
          	owns: SocketWrapper<E>  (id=1553)	
          	V_LEAD_CURRENT.assignStatus(DSRequest, HttpServletRequest) line: 87	
          	NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]	
          	NativeMethodAccessorImpl.invoke(Object, Object[]) line: not available	
          	DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: not available	
          	Method.invoke(Object, Object...) line: not available	
          	Reflection.adaptArgsAndInvoke(Object, Method, ReflectionArgument[], ReflectionArgument[], DataSource, DSRequest) line: 964	
          	DataSourceDMI.execute() line: 413	
          	DataSourceDMI.execute(DSRequest, RPCManager, RequestContext) line: 64	
          	V_LEAD_MATCHED_UNDISMISSED$2(DSRequest).execute() line: 2615	
          	V_LEAD_MATCHED_UNDISMISSED.acceptLead(DSRequest, HttpServletRequest) line: 112	
          	NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]	
          	NativeMethodAccessorImpl.invoke(Object, Object[]) line: not available	
          	DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: not available	
          	Method.invoke(Object, Object...) line: not available	
          	Reflection.adaptArgsAndInvoke(Object, Method, ReflectionArgument[], ReflectionArgument[], DataSource, DSRequest) line: 964	
          	DataSourceDMI.execute() line: 413	
          	DataSourceDMI.execute(DSRequest, RPCManager, RequestContext) line: 64	
          	DSRequest.execute() line: 2615	
          	LMSIDACall(IDACall).handleDSRequest(DSRequest, RPCManager, RequestContext) line: 221	
          	LMSIDACall.handleDSRequest(DSRequest, RPCManager, RequestContext) line: 75	
          	LMSIDACall(IDACall).processRPCTransaction(RPCManager, RequestContext) line: 186	
          	LMSIDACall.processRequest(HttpServletRequest, HttpServletResponse) line: 40	
          	LMSIDACall(IDACall)._processRequest(HttpServletRequest, HttpServletResponse) line: 118	
          	LMSIDACall(IDACall).doPost(HttpServletRequest, HttpServletResponse) line: 78	
          	LMSIDACall(HttpServlet).service(HttpServletRequest, HttpServletResponse) line: 647	
          	LMSIDACall(BaseServlet).service(HttpServletRequest, HttpServletResponse) line: 156	
          	LMSIDACall(HttpServlet).service(ServletRequest, ServletResponse) line: 728	
          	ApplicationFilterChain.internalDoFilter(ServletRequest, ServletResponse) line: 305	
          	ApplicationFilterChain.doFilter(ServletRequest, ServletResponse) line: 210	
          	WsFilter.doFilter(ServletRequest, ServletResponse, FilterChain) line: 52	
          	ApplicationFilterChain.internalDoFilter(ServletRequest, ServletResponse) line: 243	
          	ApplicationFilterChain.doFilter(ServletRequest, ServletResponse) line: 210	
          	CompressionFilter._doFilter(ServletRequest, ServletResponse, FilterChain) line: 260	
          	CompressionFilter(BaseFilter).doFilter(ServletRequest, ServletResponse, FilterChain) line: 83	
          	ApplicationFilterChain.internalDoFilter(ServletRequest, ServletResponse) line: 243	
          	ApplicationFilterChain.doFilter(ServletRequest, ServletResponse) line: 210	
          	StandardWrapperValve.invoke(Request, Response) line: 222	
          	StandardContextValve.invoke(Request, Response) line: 123	
          	FormAuthenticator(AuthenticatorBase).invoke(Request, Response) line: 611	
          	StandardHostValve.invoke(Request, Response) line: 171	
          	ErrorReportValve.invoke(Request, Response) line: 100	
          	AccessLogValve.invoke(Request, Response) line: 953	
          	StandardEngineValve.invoke(Request, Response) line: 118	
          	CoyoteAdapter.service(Request, Response) line: 409	
          	Http11Processor(AbstractHttp11Processor<S>).process(SocketWrapper<S>) line: 1044	
          	Http11Protocol$Http11ConnectionHandler(AbstractProtocol$AbstractConnectionHandler<S,P>).process(SocketWrapper<S>, SocketStatus) line: 607	
          	JIoEndpoint$SocketProcessor.run() line: 315	
          	ThreadPoolExecutor(ThreadPoolExecutor).runWorker(ThreadPoolExecutor$Worker) line: not available	
          	ThreadPoolExecutor$Worker.run() line: not available	
          	TaskThread(Thread).run() line: not available
          In case you need the .ds.xml of V_LEAD_CURRENT:
          Code:
          <DataSource dbName="Oracle" tableName="V_LEAD_CURRENT" ID="V_LEAD_CURRENT" serverType="sql"
          	serverConstructor="com.lmscompany.lms.server.LMSSQLDataSource" allowedClientOperationTypes="add fetch update custom validate">
          	<fields>
          		<field hidden="true" name="TENANT_ID" type="integer" canEdit="false" />
          		<field foreignKey="V_USER_CREATED_BY.ID" relatedTableAlias="USER_CREATED_BY" name="CREATED_BY" title="Erstellt von" type="modifier" />
          		<field name="CREATED_AT" title="Erstellt am" type="modifierTimestamp" />
          		<field primaryKey="true" foreignKey="T_LEAD.ID" name="LEAD_ID" title="LEAD_ID" type="integer" hidden="true" required="true" />
          
          		<field name="LEAD_CATEGORY_ID" title="DEBUGFIELD CATEGORY SOURCE" type="integer" hidden="true" />
          		<field name="LEAD_STATUS_ID" title="DEBUGFIELD STATUS SOURCE" type="integer" hidden="true" />
          		<field name="LEAD_CONTACT_ID" title="DEBUGFIELD CONTACT SOURCE" type="integer" hidden="true" />
          		<field name="LEAD_ADDRESS_ID" title="DEBUGFIELD ADDRESS SOURCE" type="integer" hidden="true" />
          
          		<!-- required="true" in Oracle, but not here, as it is set during "add" -->
          		<field foreignKey="T_STATUS.ID" name="STATUS_ID" displayField="STATUS_SHORTNAME" title="Leadstatus" type="integer" joinType="outer" />
          		<field name="STATUS_SHORTNAME" includeFrom="T_STATUS.SHORTNAME" canSave="false" hidden="true" />
          		<field foreignKey="T_RESELLER.ID" name="STATUS_RESELLER_ID" type="integer" joinType="outer" />
          		<field name="STATUS_RESELLER_NAME" includeFrom="T_RESELLER.NAME" />
          		<field foreignKey="T_USER.ID" name="STATUS_USER_ID" type="integer" joinType="outer" />
          		<field name="STATUS_STATUSCOMMENT" title="Kommentar zum Status" length="500" type="text" escapeHTML="true" />
          		<field name="STATUS_STATUSDATE" title="Statusdatum" type="datetime" />
          		<field foreignKey="T_WONLOST.ID" joinType="outer" name="STATUS_WONLOST_ID" displayField="STATUS_WONLOST_NAME" title="Gewonnen/Verloren" type="integer" />
          		<field name="STATUS_WONLOST_NAME" includeFrom="T_WONLOST.NAME" canSave="false" hidden="true" />
          		<field name="STATUS_WONLOST_TYPE" includeFrom="T_WONLOST.TYPE" canSave="false" hidden="true" />
          		<field name="STATUS_POTREV_COMPANY" title="Anteil Kunde (netto)" type="integer" />
          		<field name="STATUS_POTREV_PROJECT" title="Umfang Gesamtprojekt (netto)" type="integer" />
          
          		<field foreignKey="T_CATEGORY1.ID" joinType="outer" name="CATEGORY1_ID" displayField="CATEGORY1_NAME" title="" type="integer" canFilter="false" />
          		<field name="CATEGORY1_NAME" includeFrom="T_CATEGORY1.NAME" canSave="false" hidden="true" />
          		<field name="CATEGORY1_POSITION" includeFrom="T_CATEGORY1.POSITION" canSave="false" hidden="true" />
          		<field name="CATEGORY1_AVAILABLE" includeFrom="T_CATEGORY1.AVAILABLE" canSave="false" hidden="true" />
          		<field foreignKey="T_CATEGORY2.ID" joinType="outer" name="CATEGORY2_ID" displayField="CATEGORY2_NAME" title="" type="integer" canFilter="false" />
          		<field name="CATEGORY2_NAME" includeFrom="T_CATEGORY2.NAME" canSave="false" hidden="true" />
          		<field name="CATEGORY2_POSITION" includeFrom="T_CATEGORY2.POSITION" canSave="false" hidden="true" />
          		<field name="CATEGORY2_AVAILABLE" includeFrom="T_CATEGORY2.AVAILABLE" canSave="false" hidden="true" />
          		<field foreignKey="T_CATEGORY3.ID" joinType="outer" name="CATEGORY3_ID" displayField="CATEGORY3_NAME" title="" type="integer" canFilter="false" />
          		<field name="CATEGORY3_NAME" includeFrom="T_CATEGORY3.NAME" canSave="false" hidden="true" />
          		<field name="CATEGORY3_POSITION" includeFrom="T_CATEGORY3.POSITION" canSave="false" hidden="true" />
          		<field name="CATEGORY3_AVAILABLE" includeFrom="T_CATEGORY3.AVAILABLE" canSave="false" hidden="true" />
          		<field foreignKey="T_CATEGORY4.ID" joinType="outer" name="CATEGORY4_ID" displayField="CATEGORY4_NAME" title="" type="integer" canFilter="false" />
          		<field name="CATEGORY4_NAME" includeFrom="T_CATEGORY4.NAME" canSave="false" hidden="true" />
          		<field name="CATEGORY4_POSITION" includeFrom="T_CATEGORY4.POSITION" canSave="false" hidden="true" />
          		<field name="CATEGORY4_AVAILABLE" includeFrom="T_CATEGORY4.AVAILABLE" canSave="false" hidden="true" />
          		<field foreignKey="T_CATEGORY5.ID" joinType="outer" name="CATEGORY5_ID" displayField="CATEGORY5_NAME" title="" type="integer" canFilter="false" />
          		<field name="CATEGORY5_NAME" includeFrom="T_CATEGORY5.NAME" canSave="false" hidden="true" />
          		<field name="CATEGORY5_POSITION" includeFrom="T_CATEGORY5.POSITION" canSave="false" hidden="true" />
          		<field name="CATEGORY5_AVAILABLE" includeFrom="T_CATEGORY5.AVAILABLE" canSave="false" hidden="true" />
          		<field foreignKey="T_CATEGORY6.ID" joinType="outer" name="CATEGORY6_ID" displayField="CATEGORY6_NAME" title="" type="integer" canFilter="false" />
          		<field name="CATEGORY6_NAME" includeFrom="T_CATEGORY6.NAME" canSave="false" hidden="true" />
          		<field name="CATEGORY6_POSITION" includeFrom="T_CATEGORY6.POSITION" canSave="false" hidden="true" />
          		<field name="CATEGORY6_AVAILABLE" includeFrom="T_CATEGORY6.AVAILABLE" canSave="false" hidden="true" />
          		<field foreignKey="T_CATEGORY7.ID" joinType="outer" name="CATEGORY7_ID" displayField="CATEGORY7_NAME" title="" type="integer" canFilter="false" />
          		<field name="CATEGORY7_NAME" includeFrom="T_CATEGORY7.NAME" canSave="false" hidden="true" />
          		<field name="CATEGORY7_POSITION" includeFrom="T_CATEGORY7.POSITION" canSave="false" hidden="true" />
          		<field name="CATEGORY7_AVAILABLE" includeFrom="T_CATEGORY7.AVAILABLE" canSave="false" hidden="true" />
          		<field foreignKey="T_CATEGORY8.ID" joinType="outer" name="CATEGORY8_ID" displayField="CATEGORY8_NAME" title="" type="integer" canFilter="false" />
          		<field name="CATEGORY8_NAME" includeFrom="T_CATEGORY8.NAME" canSave="false" hidden="true" />
          		<field name="CATEGORY8_POSITION" includeFrom="T_CATEGORY8.POSITION" canSave="false" hidden="true" />
          		<field name="CATEGORY8_AVAILABLE" includeFrom="T_CATEGORY8.AVAILABLE" canSave="false" hidden="true" />
          		<field foreignKey="T_CATEGORY9.ID" joinType="outer" name="CATEGORY9_ID" displayField="CATEGORY9_NAME" title="" type="integer" canFilter="false" />
          		<field name="CATEGORY9_NAME" includeFrom="T_CATEGORY9.NAME" canSave="false" hidden="true" />
          		<field name="CATEGORY9_POSITION" includeFrom="T_CATEGORY9.POSITION" canSave="false" hidden="true" />
          		<field name="CATEGORY9_AVAILABLE" includeFrom="T_CATEGORY9.AVAILABLE" canSave="false" hidden="true" />
          		<field name="MAXDISTANCE" title="Maximale Entfernung" type="integer">
          			<valueMap>
          				<value id="-1" />
          				<value id="10">bis 10km</value>
          				<value id="20">bis 20km</value>
          				<value id="50">bis 50km</value>
          				<value id="100">bis 100km</value>
          				<value id="200">bis 200km</value>
          				<value id="500">bis 500km</value>
          			</valueMap>
          		</field>
          
          		<field name="CUST_NAME" title="Firma" length="50" type="text" escapeHTML="true" />
          		<field name="CUST_CONTACTPERS_GENDER_SN" title="Anrede" length="1" type="text" escapeHTML="true" />
          		<field name="CUST_CONTACTPERS_GIVENNAME" title="Vorname" length="30" type="text" escapeHTML="true" />
          		<field name="CUST_CONTACTPERS_SURNAME" title="Name" length="30" type="text" escapeHTML="true" />
          		<field name="CUST_CONTACTPERS_POSITION" title="Position d. Ansprechpartners" length="50" type="text" escapeHTML="true" />
          		<field name="CUST_CONTACTPERS_TELEPHONE" title="Telefonnummer" length="50" type="text" escapeHTML="true" />
          		<field name="CUST_CONTACTPERS_EMAIL" title="eMail" length="50" type="emailType" escapeHTML="true">
          			<validators>
          				<validator type="regexp"
          					expression="^[a-zA-Z0-9._%+-]+@(?:[a-zA-Z0-9-]+\.)+(?:[a-zA-Z]{2}|[cC][oO][mM]|[oO][rR][gG]|[nN][eE][tT]|[eE][dD][uU]|[gG][oO][vV]|[mM][iI][lL]|[bB][iI][zZ]|[iI][nN][fF][oO]|[mM][oO][bB][iI]|[nN][aA][mM][eE]|[aA][eE][rR][oO]|[aA][sS][iI][aA]|[jJ][oO][bB][sS]|[mM][uU][sS][eE][uU][mM])$"
          					errorMessage="Bitte geben Sie eine gültige Emailadresse ein." />
          			</validators>
          		</field>
          		<field name="CUST_CONTACTPERS_EMAILENTRY" title="Name+EMail" length="116" type="text" escapeHTML="true" canEdit="false" canSave="false" />
          		<field name="CUST_CONTACTPERS_EMAIL_DOMAIN" title="EMail-Domain" length="50" type="text" escapeHTML="true" canEdit="false" canSave="false" />
          		<field name="CUST_NAME_CONTACTPERSFULLNAME" title="Ansprechpartner" length="114" type="text" escapeHTML="true" canEdit="false" canSave="false" />
          
          		<field name="ADDRESS_STREET" title="Straße" length="50" type="text" escapeHTML="true" />
          		<field name="ADDRESS_ADDRESSLINE1" title="Zusatz 1" length="50" type="text" escapeHTML="true" />
          		<field name="ADDRESS_ADDRESSLINE2" title="Zusatz 2" length="50" type="text" escapeHTML="true" />
          		<field name="ADDRESS_ZIPCODE" title="Postleitzahl" length="10" type="text" escapeHTML="true" />
          		<field name="ADDRESS_CITY" title="Stadt" length="50" type="text" escapeHTML="true" />
          		<field foreignKey="T_COUNTRY.ID" name="ADDRESS_COUNTRY_ID" title="Land" type="integer" />
          		<field name="ADDRESS_ZIPCODEPLUSCITY" title="Stadt" length="61" type="text" escapeHTML="true" canSave="false" canEdit="false" />
          
          		<!-- TENANT_IDs for WHERE-clause generation -->
          		<field name="WONLOST_TENANT_ID" includeFrom="T_WONLOST.TENANT_ID" hidden="true" />
          		<field name="STATUS_TENANT_ID" includeFrom="T_STATUS.TENANT_ID" hidden="true" />
          		<field name="USER_CREATED_BY_TENANT_ID" includeFrom="V_USER_CREATED_BY.TENANT_ID" hidden="true" />
          
          		<field name="CATEGORY1_TENANT_ID" includeFrom="T_CATEGORY1.TENANT_ID" hidden="true" />
          		<field name="CATEGORY2_TENANT_ID" includeFrom="T_CATEGORY2.TENANT_ID" hidden="true" />
          		<field name="CATEGORY3_TENANT_ID" includeFrom="T_CATEGORY3.TENANT_ID" hidden="true" />
          		<field name="CATEGORY4_TENANT_ID" includeFrom="T_CATEGORY4.TENANT_ID" hidden="true" />
          		<field name="CATEGORY5_TENANT_ID" includeFrom="T_CATEGORY5.TENANT_ID" hidden="true" />
          		<field name="CATEGORY6_TENANT_ID" includeFrom="T_CATEGORY6.TENANT_ID" hidden="true" />
          		<field name="CATEGORY7_TENANT_ID" includeFrom="T_CATEGORY7.TENANT_ID" hidden="true" />
          		<field name="CATEGORY8_TENANT_ID" includeFrom="T_CATEGORY8.TENANT_ID" hidden="true" />
          		<field name="CATEGORY9_TENANT_ID" includeFrom="T_CATEGORY9.TENANT_ID" hidden="true" />
          	</fields>
          	<serverObject lookupStyle="new" className="com.lmscompany.lms.server.worker.V_LEAD_CURRENT" />
          	<operationBindings>
          		<!-- Called from V_LEAD_PICKED.assignStatus, V_LEAD_MATCHED_UNDISMISSED.declineLead -->
          		<operationBinding operationType="update" operationId="checkedStatusUpdate" serverMethod="checkedStatusUpdate" />
          
          		<operationBinding operationType="custom" operationId="assignStatus" serverMethod="assignStatus"
          			requiresRole="pickLead, editPickedLeadOwn, editPickedLeadSameLE, moveLeadToPicklistOwn, moveLeadToPicklistSameLE" />
          
          		<operationBinding operationType="add" operationId="addContact" cacheSyncOperation="fetchContact" />
          		<operationBinding operationType="fetch" operationId="fetchContact"
          			outputs="LEAD_ADDRESS_ID, LEAD_CATEGORY_ID, LEAD_CONTACT_ID, LEAD_ID, CUST_CONTACTPERS_EMAIL, CUST_CONTACTPERS_EMAILENTRY, CUST_CONTACTPERS_EMAIL_DOMAIN, CUST_CONTACTPERS_GENDER_SN, CUST_CONTACTPERS_GIVENNAME, CUST_CONTACTPERS_POSITION, CUST_CONTACTPERS_SURNAME, CUST_CONTACTPERS_TELEPHONE, CUST_NAME"></operationBinding>
          		<operationBinding operationType="update" operationId="updateContact" cacheSyncOperation="fetchContact" />
          
          		<operationBinding operationType="add" operationId="addAddress" cacheSyncOperation="fetchAddress" />
          		<operationBinding operationType="fetch" operationId="fetchAddress"
          			outputs="LEAD_ADDRESS_ID, LEAD_CATEGORY_ID, LEAD_CONTACT_ID, LEAD_ID, ADDRESS_ADDRESSLINE1, ADDRESS_ADDRESSLINE2, ADDRESS_CITY, ADDRESS_COUNTRY_ID, ADDRESS_STREET, ADDRESS_ZIPCODE, ADDRESS_ZIPCODEPLUSCITY"></operationBinding>
          		<operationBinding operationType="update" operationId="updateAddress" cacheSyncOperation="fetchAddress" />
          
          		<operationBinding operationType="add" operationId="addCategory" cacheSyncOperation="fetchCategory" />
          		<operationBinding operationType="fetch" operationId="fetchCategory"
          			outputs="LEAD_ADDRESS_ID, LEAD_CATEGORY_ID, LEAD_CONTACT_ID, LEAD_ID, CATEGORY1_ID, CATEGORY2_ID, CATEGORY3_ID, CATEGORY4_ID, CATEGORY5_ID, CATEGORY6_ID, CATEGORY7_ID, CATEGORY8_ID, CATEGORY9_ID, MAXDISTANCE"></operationBinding>
          		<operationBinding operationType="update" operationId="updateCategory" cacheSyncOperation="fetchCategory" />
          	</operationBindings>
          </DataSource>
          Best regards,
          Blama
          Attached Files

          Comment


            #6
            That was very helpful - thanks. Problem fixed and will be in the April 9, 2015 build!

            Comment


              #7
              Hi Isomorphic,

              both (loud warnings and null being passed in for the HttpServletRequest argument) are fixed for me using the current nightly.

              Thank you & Best regards,
              Blama

              Comment

              Working...
              X