Properties of the stateOfComposite() returned Object return String UNSET for
all types
--------------------------------------------------------------------------------------
Key: QI-37
URL: http://issues.ops4j.org/jira/browse/QI-37
Project: Qi4j
Issue Type: Bug
Components: Core Runtime
Affects Versions: 0.1
Reporter: Sonny Gill
Assignee: Rickard Öberg
Not sure if this can be called a bug, or if anything can be done about this..
Calling Property.get() on the properties of the composite returned by
CompositeBuilder.stateOfComposite() returns the String "UNSET".
Also Property.get().getClass() throws a ClassCastException for properties that
are not of type String.
This makes it cumbersome to use the same GUI control for adding and modifying
objects, since the new objects require an explicit check against
ImmutablePropertyInstance.UNSET or literal String value "UNSET".
TestCase -
______________________________________________________________________________
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.CompositeBuilder;
import org.qi4j.composite.CompositeBuilderFactory;
import org.qi4j.composite.ObjectBuilderFactory;
import org.qi4j.composite.scope.Structure;
import org.qi4j.property.Property;
import org.qi4j.runtime.structure.ApplicationInstance;
public class TestCase
{
public static class Main
{
@Structure
CompositeBuilderFactory cbf;
public Main() throws Exception
{
SingletonAssembler assembler = new SingletonAssembler()
{
public void assemble( ModuleAssembly module ) throws
AssemblyException
{
module.addComposites( AComposite.class );
module.addObjects( Main.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( Main.class ).injectTo( this );
CompositeBuilder<AComposite> builder = cbf.newCompositeBuilder(
AComposite.class );
AComposite aComposite = builder.stateOfComposite();
System.out.println( aComposite.propA().get() );
System.out.println( aComposite.propA().get().getClass() );
}
public static void main( String[] args ) throws Exception
{
new Main();
}
}
}
interface A
{
Property<Integer> propA();
}
interface AComposite extends A, Composite
{
}
--
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