Exception raised when using a 'State of Composite' object with ObjectBuilder
----------------------------------------------------------------------------
Key: QI-60
URL: http://issues.ops4j.org/jira/browse/QI-60
Project: Qi4j
Issue Type: Bug
Components: Core Runtime
Reporter: Sonny Gill
Assignee: Rickard Öberg
Stack trace -
Exception in thread "main" java.lang.IllegalArgumentException: Method does not
represent state: public native int java.lang.Object.hashCode()
at
org.qi4j.runtime.structure.CompositeBuilderImpl$StateInvocationHandler.invoke(CompositeBuilderImpl.java:211)
at org.$Proxy9.hashCode(Unknown Source)
at java.util.HashMap.put(HashMap.java:418)
at java.util.HashSet.add(HashSet.java:194)
at
org.qi4j.runtime.structure.ObjectBuilderImpl.use(ObjectBuilderImpl.java:48)
at org.TestCase.<init>(TestCase.java:50)
at org.TestCase.main(TestCase.java:57)
Test case -
----------------------------------------------------------------------------------------------------------------------------------
import org.qi4j.bootstrap.ApplicationFactory;
import org.qi4j.bootstrap.AssemblyException;
import org.qi4j.bootstrap.ModuleAssembly;
import org.qi4j.bootstrap.SingletonAssembler;
import org.qi4j.composite.Composite;
import org.qi4j.composite.CompositeBuilderFactory;
import org.qi4j.composite.ObjectBuilder;
import org.qi4j.composite.ObjectBuilderFactory;
import org.qi4j.composite.scope.Structure;
import org.qi4j.composite.scope.Uses;
import org.qi4j.entity.memory.MemoryEntityStoreService;
import org.qi4j.property.Property;
import org.qi4j.runtime.structure.ApplicationInstance;
import org.qi4j.spi.entity.UuidIdentityGeneratorService;
import org.qi4j.structure.Visibility;
public class TestCase
{
@Structure CompositeBuilderFactory cbf;
@Structure ObjectBuilderFactory obf;
public TestCase() throws Exception
{
SingletonAssembler assembler = new SingletonAssembler()
{
public void assemble( ModuleAssembly module ) throws
AssemblyException
{
module.addServices( UuidIdentityGeneratorService.class,
MemoryEntityStoreService.class ).
visibleIn( Visibility.layer );
module.addObjects( TestCase.class, CompositeUser.class );
module.addComposites( AComposite.class );
}
};
final ApplicationInstance application = new
ApplicationFactory().newApplication(assembler).
newApplicationInstance( "Test" );
application.activate();
ObjectBuilderFactory obf = application.getLayerInstances().get( 0
).getModuleInstances().
get( 0 ).getStructureContext().getObjectBuilderFactory();
obf.newObjectBuilder( TestCase.class ).injectTo( this );
AComposite aComposite = cbf.newCompositeBuilder( AComposite.class
).stateOfComposite();
ObjectBuilder<CompositeUser> builder = obf.newObjectBuilder(
CompositeUser.class );
builder.use( aComposite );
builder.newInstance();
}
public static void main( String[] args ) throws Exception
{
new TestCase();
}
public static class CompositeUser
{
@Uses AComposite composite;
public CompositeUser()
{
}
}
static interface AComposite extends Composite
{
Property<String> name();
}
}
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.ops4j.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
_______________________________________________
qi4j-dev mailing list
[email protected]
http://lists.ops4j.org/mailman/listinfo/qi4j-dev