|
Description:
|
Due to changes in Oracle java 7 bug was exposed in process of providing components by
Guice
MockComponentProvider
. Possible constructor are checked in order provided by JVM but should check for exact match instead.
Test case - {{info.magnolia.test.mock.MockComponentProviderTest.testThrowsExceptionWhenEncounteringConstructorTakingStringArgument()}} With Oracle JDK 1.6.0_39 - test passes Constructors order for String type: {noformat} [public java.lang.String(), public java.lang.String(java.lang.String), public java.lang.String(char[]), public java.lang.String(char[],int,int), public java.lang.String(int[],int,int), public java.lang.String(byte[],int,int,int), public java.lang.String(byte[],int), public java.lang.String(byte[],int,int,java.lang.String) throws java.io.UnsupportedEncodingException, public java.lang.String(byte[],int,int,java.nio.charset.Charset), public java.lang.String(byte[],java.lang.String) throws java.io.UnsupportedEncodingException, public java.lang.String(byte[],java.nio.charset.Charset), public java.lang.String(byte[],int,int), public java.lang.String(byte[]), public java.lang.String(java.lang.StringBuffer), public java.lang.String(java.lang.StringBuilder), java.lang.String(int,int,char[])] {noformat}
With Oracle JDK 1.7.0_13 - test fails Constructors order for String type: {noformat} [public java.lang.String(byte[]), public java.lang.String(byte[],int,int), public java.lang.String(byte[],java.nio.charset.Charset), public java.lang.String(byte[],java.lang.String) throws java.io.UnsupportedEncodingException, public java.lang.String(byte[],int,int,java.nio.charset.Charset), java.lang.String(int,int,char[]), java.lang.String(char[],boolean), public java.lang.String(java.lang.StringBuilder), public java.lang.String(java.lang.StringBuffer), public java.lang.String(int[],int,int), public java.lang.String(char[],int,int), public java.lang.String(char[]), public java.lang.String(java.lang.String), public java.lang.String(), public java.lang.String(byte[],int,int,java.lang.String) throws java.io.UnsupportedEncodingException, public java.lang.String(byte[],int), public java.lang.String(byte[],int,int,int)] {noformat}
Point of this test case is to catch {{CircularDependencyException}} (re-thrown as {{MgnlInstantiationException}}) thrown when certain type is checked for more times but with new order of possible constructors exception with message "No suitable constructor found for class" is thrown when wrong constructor is used to instantiate the object.
|