[ 
https://issues.apache.org/jira/browse/CONFIGURATION-603?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14583414#comment-14583414
 ] 

Richard Tearle commented on CONFIGURATION-603:
----------------------------------------------

Many thanks for getting back to us on this issue. For now we're hiding the 
warnings that are getting logged by the FluentPropertyBeanIntrospector, but 
this isn't ideal.

If you could move this ticket to BeanUtils that would be great, as you say it 
really belongs there.

Again many thanks.

> Warnings from FluentPropertyBeanIntrospector when creating a 
> CombinedConfiguration from a CombinedConfigurationBuilder
> ----------------------------------------------------------------------------------------------------------------------
>
>                 Key: CONFIGURATION-603
>                 URL: https://issues.apache.org/jira/browse/CONFIGURATION-603
>             Project: Commons Configuration
>          Issue Type: Bug
>    Affects Versions: 2.0
>         Environment: Windows 7 x64, Java 1.7, Apache Commons Configuration 
> 2.0-alpha2
>            Reporter: Richard Tearle
>              Labels: newbie
>
> When creating a CombinedConfiguration from a CombinedConfigurationBuilder we 
> get a number of warnings from FluentPropertyBeanIntrospector whilst it's 
> trying to get PropertyDescriptors for the following methods: 
> AbstractConfiguration.setProperty and MultiWrapDynaBean.set. 
> Is there a way to suppress these warnings or some other fix, as our testers 
> keep reporting the warnings as errors.
> The following is a simple example of the code that should reproduce this 
> issue:
> {code}
>     @Test
>     public void configurationTestExample() {
>         List<FileLocationStrategy> subs = Arrays.asList(
>                 new ProvidedURLLocationStrategy(),
>                 new FileSystemLocationStrategy(),
>                 new ClasspathLocationStrategy());
>         FileLocationStrategy strategy = new CombinedLocationStrategy(subs);
>         
>         Parameters params = new Parameters();
>         CombinedConfigurationBuilder builder = new 
> CombinedConfigurationBuilder()
>             .configure(
>                     params.fileBased()
>                         .setFile(new File("Configuration.unitTest.xml"))
>                         .setLocationStrategy(strategy)
>                         .setListDelimiterHandler(new 
> DefaultListDelimiterHandler(';'))
>                     );
>         try {
>             CombinedConfiguration config = builder.getConfiguration();
>             config.hashCode();
>         } catch (org.apache.commons.configuration2.ex.ConfigurationException 
> e) {
>             e.printStackTrace();
>         }
>         
>         assertTrue(true);
>     }
> {code}
> and here is the stack trace
> {code}
> 16:16:54,037  WARN xxx:[main] (FluentPropertyBeanIntrospector.java:146) - 
> Error when creating PropertyDescriptor for public final void 
> org.apache.commons.configuration2.AbstractConfiguration.setProperty(java.lang.String,java.lang.Object)!
>  Ignoring this property.
> java.beans.IntrospectionException: bad write method arg count: public final 
> void 
> org.apache.commons.configuration2.AbstractConfiguration.setProperty(java.lang.String,java.lang.Object)
>       at 
> java.beans.PropertyDescriptor.findPropertyType(PropertyDescriptor.java:670)
>       at 
> java.beans.PropertyDescriptor.setWriteMethod(PropertyDescriptor.java:325)
>       at java.beans.PropertyDescriptor.<init>(PropertyDescriptor.java:138)
>       at 
> org.apache.commons.beanutils.FluentPropertyBeanIntrospector.createFluentPropertyDescritor(FluentPropertyBeanIntrospector.java:177)
>       at 
> org.apache.commons.beanutils.FluentPropertyBeanIntrospector.introspect(FluentPropertyBeanIntrospector.java:140)
>       at 
> org.apache.commons.beanutils.PropertyUtilsBean.fetchIntrospectionData(PropertyUtilsBean.java:2234)
>       at 
> org.apache.commons.beanutils.PropertyUtilsBean.getIntrospectionData(PropertyUtilsBean.java:2215)
>       at 
> org.apache.commons.beanutils.PropertyUtilsBean.getPropertyDescriptor(PropertyUtilsBean.java:950)
>       at 
> org.apache.commons.beanutils.PropertyUtilsBean.isWriteable(PropertyUtilsBean.java:1466)
>       at 
> org.apache.commons.configuration2.beanutils.BeanHelper.isPropertyWriteable(BeanHelper.java:521)
>       at 
> org.apache.commons.configuration2.beanutils.BeanHelper.initProperty(BeanHelper.java:357)
>       at 
> org.apache.commons.configuration2.beanutils.BeanHelper.initBeanProperties(BeanHelper.java:273)
>       at 
> org.apache.commons.configuration2.beanutils.BeanHelper.initBean(BeanHelper.java:192)
>       at 
> org.apache.commons.configuration2.beanutils.BeanHelper$BeanCreationContextImpl.initBean(BeanHelper.java:669)
>       at 
> org.apache.commons.configuration2.beanutils.DefaultBeanFactory.initBeanInstance(DefaultBeanFactory.java:162)
>       at 
> org.apache.commons.configuration2.beanutils.DefaultBeanFactory.createBean(DefaultBeanFactory.java:116)
>       at 
> org.apache.commons.configuration2.beanutils.BeanHelper.createBean(BeanHelper.java:459)
>       at 
> org.apache.commons.configuration2.beanutils.BeanHelper.createBean(BeanHelper.java:479)
>       at 
> org.apache.commons.configuration2.beanutils.BeanHelper.createBean(BeanHelper.java:492)
>       at 
> org.apache.commons.configuration2.builder.BasicConfigurationBuilder.createResultInstance(BasicConfigurationBuilder.java:447)
>       at 
> org.apache.commons.configuration2.builder.BasicConfigurationBuilder.createResult(BasicConfigurationBuilder.java:417)
>       at 
> org.apache.commons.configuration2.builder.BasicConfigurationBuilder.getConfiguration(BasicConfigurationBuilder.java:285)
>       at 
> org.apache.commons.configuration2.builder.combined.CombinedConfigurationBuilder.getDefinitionConfiguration(CombinedConfigurationBuilder.java:746)
>       at 
> org.apache.commons.configuration2.builder.combined.CombinedConfigurationBuilder.createResultDeclaration(CombinedConfigurationBuilder.java:776)
>       at 
> org.apache.commons.configuration2.builder.BasicConfigurationBuilder.getResultDeclaration(BasicConfigurationBuilder.java:485)
>       at 
> org.apache.commons.configuration2.builder.BasicConfigurationBuilder.createResultInstance(BasicConfigurationBuilder.java:447)
>       at 
> org.apache.commons.configuration2.builder.BasicConfigurationBuilder.createResult(BasicConfigurationBuilder.java:417)
>       at 
> org.apache.commons.configuration2.builder.BasicConfigurationBuilder.getConfiguration(BasicConfigurationBuilder.java:285)
>       at 
> com.northgateps.nds.platform.util.configuration.ConfigurationFactoryTest.testSingletonPattern(ConfigurationFactoryTest.java:55)
>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>       at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>       at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>       at java.lang.reflect.Method.invoke(Method.java:606)
>       at junit.framework.TestCase.runTest(TestCase.java:176)
>       at junit.framework.TestCase.runBare(TestCase.java:141)
>       at junit.framework.TestResult$1.protect(TestResult.java:122)
>       at junit.framework.TestResult.runProtected(TestResult.java:142)
>       at junit.framework.TestResult.run(TestResult.java:125)
>       at junit.framework.TestCase.run(TestCase.java:129)
>       at junit.framework.TestSuite.runTest(TestSuite.java:252)
>       at junit.framework.TestSuite.run(TestSuite.java:247)
>       at 
> org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:86)
>       at 
> org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
>       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)
> 16:16:54,150  WARN xxx:[main] (FluentPropertyBeanIntrospector.java:146) - 
> Error when creating PropertyDescriptor for public final void 
> org.apache.commons.configuration2.AbstractConfiguration.setProperty(java.lang.String,java.lang.Object)!
>  Ignoring this property.
> java.beans.IntrospectionException: bad write method arg count: public final 
> void 
> org.apache.commons.configuration2.AbstractConfiguration.setProperty(java.lang.String,java.lang.Object)
>       at 
> java.beans.PropertyDescriptor.findPropertyType(PropertyDescriptor.java:670)
>       at 
> java.beans.PropertyDescriptor.setWriteMethod(PropertyDescriptor.java:325)
>       at java.beans.PropertyDescriptor.<init>(PropertyDescriptor.java:138)
>       at 
> org.apache.commons.beanutils.FluentPropertyBeanIntrospector.createFluentPropertyDescritor(FluentPropertyBeanIntrospector.java:177)
>       at 
> org.apache.commons.beanutils.FluentPropertyBeanIntrospector.introspect(FluentPropertyBeanIntrospector.java:140)
>       at 
> org.apache.commons.beanutils.PropertyUtilsBean.fetchIntrospectionData(PropertyUtilsBean.java:2234)
>       at 
> org.apache.commons.beanutils.PropertyUtilsBean.getIntrospectionData(PropertyUtilsBean.java:2215)
>       at 
> org.apache.commons.beanutils.PropertyUtilsBean.getPropertyDescriptor(PropertyUtilsBean.java:950)
>       at 
> org.apache.commons.beanutils.PropertyUtilsBean.isWriteable(PropertyUtilsBean.java:1466)
>       at 
> org.apache.commons.configuration2.beanutils.BeanHelper.isPropertyWriteable(BeanHelper.java:521)
>       at 
> org.apache.commons.configuration2.beanutils.BeanHelper.initProperty(BeanHelper.java:357)
>       at 
> org.apache.commons.configuration2.beanutils.BeanHelper.initBeanProperties(BeanHelper.java:273)
>       at 
> org.apache.commons.configuration2.beanutils.BeanHelper.initBean(BeanHelper.java:192)
>       at 
> org.apache.commons.configuration2.beanutils.BeanHelper$BeanCreationContextImpl.initBean(BeanHelper.java:669)
>       at 
> org.apache.commons.configuration2.beanutils.DefaultBeanFactory.initBeanInstance(DefaultBeanFactory.java:162)
>       at 
> org.apache.commons.configuration2.beanutils.DefaultBeanFactory.createBean(DefaultBeanFactory.java:116)
>       at 
> org.apache.commons.configuration2.beanutils.BeanHelper.createBean(BeanHelper.java:459)
>       at 
> org.apache.commons.configuration2.beanutils.BeanHelper.createBean(BeanHelper.java:479)
>       at 
> org.apache.commons.configuration2.beanutils.BeanHelper.createBean(BeanHelper.java:492)
>       at 
> org.apache.commons.configuration2.builder.BasicConfigurationBuilder.createResultInstance(BasicConfigurationBuilder.java:447)
>       at 
> org.apache.commons.configuration2.builder.BasicConfigurationBuilder.createResult(BasicConfigurationBuilder.java:417)
>       at 
> org.apache.commons.configuration2.builder.BasicConfigurationBuilder.getConfiguration(BasicConfigurationBuilder.java:285)
>       at 
> com.northgateps.nds.platform.util.configuration.ConfigurationFactoryTest.testSingletonPattern(ConfigurationFactoryTest.java:55)
>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>       at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>       at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>       at java.lang.reflect.Method.invoke(Method.java:606)
>       at junit.framework.TestCase.runTest(TestCase.java:176)
>       at junit.framework.TestCase.runBare(TestCase.java:141)
>       at junit.framework.TestResult$1.protect(TestResult.java:122)
>       at junit.framework.TestResult.runProtected(TestResult.java:142)
>       at junit.framework.TestResult.run(TestResult.java:125)
>       at junit.framework.TestCase.run(TestCase.java:129)
>       at junit.framework.TestSuite.runTest(TestSuite.java:252)
>       at junit.framework.TestSuite.run(TestSuite.java:247)
>       at 
> org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:86)
>       at 
> org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
>       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)
> {code}
> and finally, here is the Configuration.unitTest.xml
> {code:xml}
> <?xml version="1.0" encoding="ISO-8859-1" ?>
> <configuration>
>       <header>
>               <result throwExceptionOnMissing="true"/>
>       </header>
>       <!-- properties for the unit tests -->
>       <properties fileName="unitTest.properties" 
> throwExceptionOnMissing="true" config-name="properties">
>               <listDelimiterHandler
>               
> config-class="org.apache.commons.configuration2.convert.DefaultListDelimiterHandler">
>               <config-constrarg config-value=";"/>
>               </listDelimiterHandler>
>       </properties>
> </configuration>
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to