kelvin goodson wrote:
I'm homing in on the 9008 failure, and someone may be able to help me
shortcut my understanding.

The expected output of the test is ...

        config.output[0]                 = "JCA_9008 request service1 operation1
invoked getService" +
                                   " expected IllegalArgumentException
received for 0..n ref" +
                                   " expected IllegalArgumentException
received for invalid businessInterface" +
                                   " expected IllegalArgumentException
received for invalid reference name" +
                                   " expected null Service for unwired
0..1 reference" +
                                   " expected non-null Service for wired
1..1 reference" +
                                   " service2 operation1 invoked"
but I see deviation from this output here  in Service1CCgetServiceImpl
at line 69


where the call to getService erroneously succeeds instead of entering
the catch block

                try {
                    componentContext.getService(Service2.class, "requiredRef");
                    responseAccumulator += " did not get 
IllegalArgumentException
for invalid businessInterface";
                } catch ( IllegalArgumentException e ) {
                        responseAccumulator += " expected 
IllegalArgumentException received
for invalid businessInterface";
                } catch ( Exception e ) {
                        responseAccumulator += " other unexpected exception 
received for
invalid businessInterface: " + e.toString();
                } // end try


Kelvin.
Kelvin,

With all these API testcases, the responses are structured to indicate what was expected or unexpected about the outcome of each invocation of the relevant API method.

OK, in this case componentContext.getService is being invoked to test what happens if it is invoked for a specific named reference but the supplied business interface does not match the interface declared for the reference - as it says in the comment:

// JCA-TA-9013 - IllegalArgumentException thrown if named reference does not have the businessInterface specified

So, "requiredRef" is declared as follows:

        @Reference
        public Service1 requiredRef;            // 1..1 multiplicity

ie it has a business interface "Service1".

But the call to getService in this case supplies "Service2.class" as the business interface - deliberately incompatible with Service1.

getService MUST notice that the business interfaces don't match and throw the expected IllegalArgumentException if they don't. Clearly, the getService implementation in Tuscany is not checking correctly at the moment!!


Yours,  Mike.

Reply via email to