[seam-issues] [JBoss JIRA] (SOLDER-126) Solder Property couldn't get property value if the property type is primitive.

Vivian Steller (Commented) (JIRA) jira-events at lists.jboss.org
Mon Dec 12 04:54:09 EST 2011


    [ https://issues.jboss.org/browse/SOLDER-126?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12649882#comment-12649882 ] 

Vivian Steller commented on SOLDER-126:
---------------------------------------

added pull request with patch to avoid class cast exception
                
> Solder Property couldn't get property value if the property type is primitive.
> ------------------------------------------------------------------------------
>
>                 Key: SOLDER-126
>                 URL: https://issues.jboss.org/browse/SOLDER-126
>             Project: Solder
>          Issue Type: Bug
>    Affects Versions: 3.0.0.Final
>            Reporter: Miyazawa Yasushi
>         Attachments: solder-properties-primitive-boolean-fix.patch
>
>
> Property couldn't get property value if the property type is primitive.
> Simplest Test
> ===================================================================================================
> package org.miyazyss;
> import org.jboss.seam.solder.properties.Property;
> import org.jboss.seam.solder.properties.query.NamedPropertyCriteria;
> import org.jboss.seam.solder.properties.query.PropertyQueries;
> import org.jboss.seam.solder.properties.query.PropertyQuery;
> import org.junit.Assert;
> import org.junit.Test;
> /**
>  *
>  */
> public class SolderMethodTest {
> 	public static class Bean {
> 		public long longValue = 1;		
> 		public Long longClassValue = 3L;
> 		
> 		public long getLongValueMethod(){
> 			return(2);
> 		}
> 	}
> 	
> 	private Bean bean = new Bean();
> 	
> 	@Test
> 	public void testPrimitiveField(){
> 		PropertyQuery<Bean> query = PropertyQueries.createQuery(Bean.class);		
> 		Property<Bean> prop = query.addCriteria(new NamedPropertyCriteria("longValue")).getFirstResult();
> 	
> 		Assert.assertEquals(1, prop.getValue(this.bean));
> 	}
> 	
> 	@Test
> 	public void testPrimitiveReturnTypeMethod(){
> 		PropertyQuery<Bean> query = PropertyQueries.createQuery(Bean.class);		
> 		Property<Bean> propValue = query.addCriteria(new NamedPropertyCriteria("longValueMethod")).getFirstResult();
> 	
> 		Assert.assertEquals(2, propValue.getValue(this.bean));
> 	}	
> 	
> 	
> 	@Test
> 	public void testClassField(){
> 		PropertyQuery<Bean> query = PropertyQueries.createQuery(Bean.class);		
> 		Property<Bean> propValue = query.addCriteria(new NamedPropertyCriteria("longClassValue")).getFirstResult();
> 	
> 		Assert.assertEquals(3L, propValue.getValue(this.bean));
> 	}	
> }
> Result
> =========================================================================================================
> SolderMethodTest
> org.miyazyss.SolderMethodTest
> testPrimitiveField(org.miyazyss.SolderMethodTest)
> java.lang.ClassCastException
> 	at java.lang.Class.cast(Unknown Source)
> 	at org.jboss.seam.solder.reflection.Reflections.getFieldValue(Reflections.java:682)
> 	at org.jboss.seam.solder.properties.FieldPropertyImpl.getValue(FieldPropertyImpl.java:75)
> 	at org.miyazyss.SolderMethodTest.testPrimitiveField(SolderMethodTest.java:37)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
> 	at java.lang.reflect.Method.invoke(Unknown Source)
> 	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
> 	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
> 	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
> 	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
> 	at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79)
> 	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71)
> 	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49)
> 	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
> 	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
> 	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
> 	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
> 	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
> 	at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
> 	at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:49)
> 	at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
> 	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
> 	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
> 	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
> 	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
> testPrimitiveReturnTypeMethod(org.miyazyss.SolderMethodTest)
> java.lang.ClassCastException
> 	at java.lang.Class.cast(Unknown Source)
> 	at org.jboss.seam.solder.properties.MethodPropertyImpl.getValue(MethodPropertyImpl.java:136)
> 	at org.miyazyss.SolderMethodTest.testPrimitiveReturnTypeMethod(SolderMethodTest.java:45)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
> 	at java.lang.reflect.Method.invoke(Unknown Source)
> 	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
> 	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
> 	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
> 	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
> 	at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79)
> 	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71)
> 	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49)
> 	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
> 	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
> 	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
> 	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
> 	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
> 	at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
> 	at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:49)
> 	at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
> 	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
> 	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
> 	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
> 	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.jboss.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


More information about the seam-issues mailing list