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

Reply via email to