sca-assembly message
[Date Prev]
| [Thread Prev]
| [Thread Next]
| [Date Next]
--
[Date Index]
| [Thread Index]
| [List Home]
Subject: Re: [sca-assembly] NEW ISSUE: Test 6019 assumed injection behavior
- From: Mike Edwards <mike_edwards@uk.ibm.com>
- To: OASIS Assembly <sca-assembly@lists.oasis-open.org>
- Date: Tue, 12 Jan 2010 09:19:37 +0000
Logged as: http://www.osoa.org/jira/browse/ASSEMBLY-201
Yours, Mike.
Strategist - Emerging Technologies, SCA & SDO.
Co Chair OASIS SCA Assembly TC.
IBM Hursley Park, Mail Point 146, Winchester, SO21 2JN, Great Britain.
Phone & FAX: +44-1962-818014 Mobile: +44-7802-467431
Email: mike_edwards@uk.ibm.com
From:
| Jim Marino <jim.marino@gmail.com>
|
To:
| OASIS Assembly <sca-assembly@lists.oasis-open.org>
|
Date:
| 11/01/2010 18:16
|
Subject:
| [sca-assembly] NEW ISSUE: Test 6019
assumed injection behavior |
TARGET: SCA Assembly Conformance Tests
DESCRIPTION:
Test case ASM_6019 verifies an autowire reference with multiplicity
0..n that has no matching services still runs. The component
implementation, org.oasisopen.sca.test.service1Impl4, has an array
type for the autowire reference. The operation that is invoked on that
implementation iterates the array and invokes wired services without
checking for null. Some runtimes may not inject the reference if no
matching wires are found. Consequently, this results in an NPE since
the reference member variable is not set:
@Service(Service1.class)
public class service1Impl4 implements Service1 {
@Property
public String serviceName = "service1";
// Required = false + an array -> multiplicity 0..n
@Reference(required=false)
public Service1[] reference1 = null;
public String operation1(String input) {
String
result = serviceName + " operation1 invoked";
//
Call each of the references in the array, concatenating the results
for(
int i=0 ; i < reference1.length; i++ ) {
result = result.concat(" ");
result = result.concat( reference1[i].operation1(input) );
}
// end for
return
result;
}
}
SVN Version: 426
PROPOSAL:
Code defensively, assuming the reference may not be injected. A
potential replacement is:
@Service(Service1.class)
public class service1Impl4 implements Service1 {
@Property
public String serviceName = "service1";
@Reference(required=false)
public Service1[] reference1;
public String operation1(String input) {
StringBuilder
result = new StringBuilder(serviceName).append("
operation1 invoked");
for (Service1 aReference1 : reference1) {
String value = aReference1.operation1(input);
result = result.append("
").append(value);
}
return
result.toString();
}
}
---------------------------------------------------------------------
To unsubscribe from this mail list, you must leave the OASIS TC that
generates this mail. Follow this link to all your TCs in OASIS at:
https://www.oasis-open.org/apps/org/workgroup/portal/my_workgroups.php
Unless stated otherwise above:
IBM United Kingdom Limited - Registered in England and Wales with number
741598.
Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6
3AU
[Date Prev]
| [Thread Prev]
| [Thread Next]
| [Date Next]
--
[Date Index]
| [Thread Index]
| [List Home]