Note: This bug is displayed in read-only format because the product is no longer active in Red Hat Bugzilla.

Bug 896640

Summary: JBpmObjectMapper doesn't handle missing variables properly
Product: [JBoss] JBoss Enterprise SOA Platform 5 Reporter: Rick Wagner <rwagner>
Component: JBossESBAssignee: tcunning
Status: CLOSED UPSTREAM QA Contact: Marek Baluch <mbaluch>
Severity: high Docs Contact:
Priority: unspecified    
Version: 5.3.0 GACC: ldimaggi, mbaluch, soa-p-jira
Target Milestone: ER4   
Target Release: 5.3.1   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
If one of the jBPM variables was missing when mapping from jBPM to ESB an exception was thrown. Now if a jBPM variable is missing (has a null value), the user will receive a log warning, not an exception.
Story Points: ---
Clone Of: 896634 Environment:
Last Closed: 2025-02-10 03:27:19 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On: 896634    
Bug Blocks:    

Description Rick Wagner 2013-01-17 16:35:01 UTC
+++ This bug was initially created as a clone of Bug #896634 +++

Description of problem:

Customer has raised the point that JBpmObjectMapper doesn't make it to what appears to be the intended log statement when a jBPM-side variable is not present.

This can be validated by inserting the following method into JBpmObjectMapperUnitTest.java:

// Same as existing test, just commented out setting v1.

    @Test
	public void testMissingObject() throws Exception
	// Things to look for:
	// 1) If the variable does not exist in the jbpm variable map, the execution context is tested, but if not present there, an exception is thrown.
        // It looks like the intention was to arrive at "log.warn("The object " + mapping.getBpm() + " is null and cannot not be set on the message")"
	{
        SAXReader reader = new SAXReader();
        Document document = reader.read(this.getClass().getResourceAsStream("/" + PROCESS_DEF_XML));
        Element element = document.getRootElement();
        DefaultElement bpmToEsbVars = (DefaultElement) element.element("start-state").element("transition").element("action").element("bpmToEsbVars");

		String helloWorldTokenScope  = "Hello world token scope";
        String helloWorldGlobalScope = "Hello world process-instance scope";
        TestJBPMVariable objectTokenScope = new TestJBPMVariable("Object token scope") ;
        TestJBPMVariable objectGlobalScope = new TestJBPMVariable("Object global scope") ;

		Token token = processInstance.getRootToken();
        // Don't set v1, see what happens
        //processInstance.getContextInstance().setVariable("v1", helloWorldTokenScope, token);
        processInstance.getContextInstance().setVariable("g2", helloWorldGlobalScope);
        processInstance.getContextInstance().setVariable("h3", objectTokenScope, token);
        processInstance.getContextInstance().setVariable("i4", objectGlobalScope);
        ExecutionContext executionContext = new ExecutionContext(token);

        JBpmObjectMapper mapper = new JBpmObjectMapper();
        Message message = mapper.mapFromJBpmToEsbMessage(bpmToEsbVars, Boolean.FALSE, executionContext);

        assertEquals(helloWorldTokenScope,String.valueOf(message.getBody().get("esbObj1")));
        assertEquals(helloWorldGlobalScope,String.valueOf(message.getBody().get("esbObj2")));
        assertEquals(objectTokenScope.getInternal(), String.valueOf(message.getBody().get("esbObj3")));
        assertEquals(objectGlobalScope.getInternal(), String.valueOf(message.getBody().get("esbObj4")));
	}

Comment 1 Marek Baluch 2013-02-01 12:13:07 UTC
Unit Test Passed.

Comment 2 Marek Baluch 2013-02-04 08:13:36 UTC
Tested also on bpm_orchestration1. Added

<bpmToEsbVars>
    <!-- ... -->
    <mapping bpm="theBody1" esb="BODY_CONTENT1"/>
<bpmToEsbVars>

to the process definition. The output of the process contained the following warning and no exception.

09:08:23,897 WARN  [JBpmObjectMapper] The object theBody1 is null and cannot not be set on the message

Comment 10 Red Hat Bugzilla 2025-02-10 03:27:19 UTC
This product has been discontinued or is no longer tracked in Red Hat Bugzilla.