Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Incomplete
-
3.0.1, 2.7.14
-
None
-
JBPM 6.1.0.Final and CXF and wildfly 8.2.0
-
Needs James Gosling
Description
JBPM using the call like this below
I don't see any issue with the client code and the cxf not able to figure out that that two instance are same.
Cxf using the comparison method exactly at this place fails
ClientImpl.java
private void checkPart(MessagePartInfo part, Object object) {
if (part == null || part.getTypeClass() == null || object == null)
Class<?> typeClass = part.getTypeClass();
if (typeClass == null) { return; }
if (typeClass.isPrimitive()) {
if (typeClass == Long.TYPE)
else if (typeClass == Integer.TYPE)
{ typeClass = Integer.class; }else if (typeClass == Short.TYPE)
{ typeClass = Short.class; }else if (typeClass == Byte.TYPE)
{ typeClass = Byte.class; }else if (typeClass == Character.TYPE)
{ typeClass = Character.class; }else if (typeClass == Double.TYPE)
{ typeClass = Double.class; }else if (typeClass == Float.TYPE)
{ typeClass = Float.class; }else if (typeClass == Boolean.TYPE)
{ typeClass = Boolean.class; }} else if (typeClass.isArray() && object instanceof Collection)
{ //JAXB allows a pseudo [] <--> List equivalence return; }if (!typeClass.isInstance(object))
{ throw new IllegalArgumentException("Part " + part.getName() + " should be of type " + typeClass.getName() + ", not " + object.getClass().getName()); }}
-
-
-
-
-
-
- CODE SNIPPETS ########
-
-
-
-
-
public void executeWorkItem(WorkItem workItem, final WorkItemManager manager) {
Object[] parameters = null;
String interfaceRef = (String) workItem.getParameter("Interface");
String operationRef = (String) workItem.getParameter("Operation");
String endpointAddress = (String) workItem.getParameter("Endpoint");
if ( workItem.getParameter("Parameter") instanceof Object[])
else if (workItem.getParameter("Parameter") != null && workItem.getParameter("Parameter").getClass().isArray()) {
int length = Array.getLength(workItem.getParameter("Parameter"));
parameters = new Object[length];
for(int i = 0; i < length; i++)
} else {
parameters = new Object[]
;
}
String modeParam = (String) workItem.getParameter("Mode");
WSMode mode = WSMode.valueOf(modeParam == null ? "SYNC" : modeParam.toUpperCase());
try {
Client client = getWSClient(workItem, interfaceRef);
if (client == null)
//Override endpoint address if configured.
if (endpointAddress != null && !"".equals(endpointAddress))
switch (mode) {
case SYNC:
Object[] result = client.invoke(operationRef, parameters);
Map<String, Object> output = new HashMap<String, Object>();
if (result == null || result.length == 0)
{ output.put("Result", null); }else
{ output.put("Result", result[0]); } logger.debug("Received sync response {} completeing work item {}", result, workItem.getId());
manager.completeWorkItem(workItem.getId(), output);
break;
-------------------------------
protected synchronized Client getWSClient(WorkItem workItem, String interfaceRef) {
if (clients.containsKey(interfaceRef))
String importLocation = (String) workItem.getParameter("Url");
String importNamespace = (String) workItem.getParameter("Namespace");
if (importLocation != null && importLocation.trim().length() > 0
&& importNamespace != null && importNamespace.trim().length() > 0)
long processInstanceId = ((WorkItemImpl) workItem).getProcessInstanceId();
WorkflowProcessImpl process = ((WorkflowProcessImpl) ksession.getProcessInstance(processInstanceId).getProcess());
List<Bpmn2Import> typedImports = (List<Bpmn2Import>)process.getMetaData("Bpmn2Imports");
if (typedImports != null ){
Client client = null;
for (Bpmn2Import importObj : typedImports) {
if (WSDL_IMPORT_TYPE.equalsIgnoreCase(importObj.getType())) {
try
catch (Exception e)
{ logger.error("Error when creating WS Client", e); continue; } }
}
}
return null;
}
XXXXXXXXXXXXXX ERROR XXXXXXXXXXXXXXXXXXXXXXXXX
19:16:26,899 WARNING [org.apache.cxf.phase.PhaseInterceptorChain] (default task-29) Interceptor for
MdsOasisServiceService#
{http://mdsoasis.caiso.com/}saveOrUpdateOasisNoti
fication has thrown exception, unwinding now: java.lang.IllegalArgumentException: Part
arg0 should be of type com.caiso.mdsoasis.OasisNotificationCtlDto, not com.caiso.mdso
asis.OasisNotificationCtlDto
at org.apache.cxf.jaxb.io.DataWriterImpl.checkPart(DataWriterImpl.java:277) [cxf-rt-databinding-jaxb-3.0.1.jar:3.0.1]
at org.apache.cxf.jaxb.io.DataWriterImpl.write(DataWriterImpl.java:209) [cxf-rt-databinding-jaxb-3.0.1.jar:3.0.1]
at org.apache.cxf.interceptor.AbstractOutDatabindingInterceptor.writeParts(AbstractOutDatabindingInterceptor.java:121) [cxf-core-3.0.1.jar:3.0.1]
at org.apache.cxf.binding.soap.interceptor.RPCOutInterceptor.handleMessage(RPCOutInterceptor.java:112) [cxf-rt-bindings-soap-3.0.1.jar:3.0.1]
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307) [cxf-core-3.0.1.jar:3.0.1]
at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:514) [cxf-core-3.0.1.jar:3.0.1]
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:423) [cxf-core-3.0.1.jar:3.0.1]
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:326) [cxf-core-3.0.1.jar:3.0.1]
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:279) [cxf-core-3.0.1.jar:3.0.1]
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:299) [cxf-core-3.0.1.jar:3.0.1]
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:285) [cxf-core-3.0.1.jar:3.0.1]
at org.jbpm.process.workitem.webservice.WebServiceWorkItemHandler.executeWorkItem(WebServiceWorkItemHandler.java:113) [jbpm-workitems-6.1.0.Final.jar:6.1.0.Final]
at org.drools.persistence.jpa.processinstance.JPAWorkItemManager.internalExecuteWorkItem(JPAWorkItemManager.java:54) [drools-persistence-jpa-6.1.0.Final.jar:6.1.0.Final]
at org.jbpm.workflow.instance.node.WorkItemNodeInstance.internalTrigger(WorkItemNodeInstance.java:133) [jbpm-flow-6.1.0.Final.jar:6.1.0.Final]
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:162) [jbpm-flow-6.1.0.Final.jar:6.1.0.Final]
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerNodeInstance(NodeInstanceImpl.java:354) [jbpm-flow-6.1.0.Final.jar:6.1.0.Final]
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerCompleted(NodeInstanceImpl.java:313) [jbpm-flow-6.1.0.Final.jar:6.1.0.Final]
at org.jbpm.workflow.instance.node.ActionNodeInstance.triggerCompleted(ActionNodeInstance.java:61) [jbpm-flow-6.1.0.Final.jar:6.1.0.Final]
at org.jbpm.workflow.instance.node.ActionNodeInstance.internalTrigger(ActionNodeInstance.java:57) [jbpm-flow-6.1.0.Final.jar:6.1.0.Final]
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:162) [jbpm-flow-6.1.0.Final.jar:6.1.0.Final]
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerNodeInstance(NodeInstanceImpl.java:354) [jbpm-flow-6.1.0.Final.jar:6.1.0.Final]
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerConnection(NodeInstanceImpl.java:369) [jbpm-flow-6.1.0.Final.jar:6.1.0.Final]
at org.jbpm.workflow.instance.node.SplitInstance.executeStrategy(SplitInstance.java:117) [jbpm-flow-6.1.0.Final.jar:6.1.0.Final]
at org.jbpm.workflow.instance.node.SplitInstance.internalTrigger(SplitInstance.java:63) [jbpm-flow-6.1.0.Final.jar:6.1.0.Final]
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:162) [jbpm-flow-6.1.0.Final.jar:6.1.0.Final]
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerNodeInstance(NodeInstanceImpl.java:354) [jbpm-flow-6.1.0.Final.jar:6.1.0.Final]
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerCompleted(NodeInstanceImpl.java:313) [jbpm-flow-6.1.0.Final.jar:6.1.0.Final]
at org.jbpm.workflow.instance.node.ActionNodeInstance.triggerCompleted(ActionNodeInstance.java:61) [jbpm-flow-6.1.0.Final.jar:6.1.0.Final]
at org.jbpm.workflow.instance.node.ActionNodeInstance.internalTrigger(ActionNodeInstance.java:57) [jbpm-flow-6.1.0.Final.jar:6.1.0.Final]
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:162) [jbpm-flow-6.1.0.Final.jar:6.1.0.Final]
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerNodeInstance(NodeInstanceImpl.java:354) [jbpm-flow-6.1.0.Final.jar:6.1.0.Final]
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerCompleted(NodeInstanceImpl.java:313) [jbpm-flow-6.1.0.Final.jar:6.1.0.Final]
at org.jbpm.workflow.instance.node.StartNodeInstance.triggerCompleted(StartNodeInstance.java:66) [jbpm-flow-6.1.0.Final.jar:6.1.0.Final]
at org.jbpm.workflow.instance.node.StartNodeInstance.internalTrigger(StartNodeInstance.java:43) [jbpm-flow-6.1.0.Final.jar:6.1.0.Final]