View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one or more
3    * contributor license agreements.  See the NOTICE file distributed with
4    * this work for additional information regarding copyright ownership.
5    * The ASF licenses this file to You under the Apache License, Version 2.0
6    * (the "License"); you may not use this file except in compliance with
7    * the License.  You may obtain a copy of the License at
8    *
9    *      http://www.apache.org/licenses/LICENSE-2.0
10   *
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS,
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   * See the License for the specific language governing permissions and
15   * limitations under the License.
16   */
17  package org.apache.commons.beanutils.bugs;
18  
19  import java.lang.reflect.Method;
20  
21  import junit.framework.Test;
22  import junit.framework.TestCase;
23  import junit.framework.TestSuite;
24  
25  import org.apache.commons.beanutils.MethodUtils;
26  import org.apache.commons.beanutils.PropertyUtils;
27  import org.apache.commons.beanutils.bugs.other.Jira298BeanFactory;
28  import org.apache.commons.beanutils.bugs.other.Jira298BeanFactory.IX;
29  import org.apache.commons.logging.Log;
30  import org.apache.commons.logging.LogFactory;
31  
32  /**
33   * @version $Id$
34   * @see <a href="https://issues.apache.org/jira/browse/BEANUTILS-298">https://issues.apache.org/jira/browse/BEANUTILS-298</a>
35   */
36  public class Jira298TestCase extends TestCase {
37  
38      private final Log log = LogFactory.getLog(Jira298TestCase.class);
39  
40      /**
41       * Create a test case with the specified name.
42       *
43       * @param name The name of the test
44       */
45      public Jira298TestCase(final String name) {
46          super(name);
47      }
48  
49      /**
50       * Run the Test.
51       *
52       * @param args Arguments
53       */
54      public static void main(final String[] args) {
55          junit.textui.TestRunner.run(suite());
56      }
57  
58      /**
59       * Create a test suite for this test.
60       *
61       * @return a test suite
62       */
63      public static Test suite() {
64          return (new TestSuite(Jira298TestCase.class));
65      }
66  
67      /**
68       * Set up.
69       *
70       * @throws java.lang.Exception
71       */
72      @Override
73      protected void setUp() throws Exception {
74          super.setUp();
75      }
76  
77      /**
78       * Tear Down.
79       *
80       * @throws java.lang.Exception
81       */
82      @Override
83      protected void tearDown() throws Exception {
84          super.tearDown();
85      }
86  
87      /**
88       * Test {@link PropertyUtils#getProperty(Object, String)}
89       */
90      public void testIssue_BEANUTILS_298_PropertyUtils_getProperty() {
91          final Object bean = Jira298BeanFactory.createImplX();
92          Object result = null;
93          try {
94              result = PropertyUtils.getProperty(bean, "name");
95          } catch (final Throwable t) {
96              log.error("Failed: " + t.getMessage(), t);
97              fail("Threw exception: " + t);
98          }
99          assertEquals("BaseX name value", result);
100     }
101 
102     /**
103      * Test {@link PropertyUtils#setProperty(Object, String, Object)}
104      */
105     public void testIssue_BEANUTILS_298_PropertyUtils_setProperty() {
106         final Object bean = Jira298BeanFactory.createImplX();
107         assertEquals("BaseX name value", ((IX)bean).getName());
108         try {
109             PropertyUtils.setProperty(bean, "name", "new name");
110         } catch (final Throwable t) {
111             log.error("Failed: " + t.getMessage(), t);
112             fail("Threw exception: " + t);
113         }
114         assertEquals("new name", ((IX)bean).getName());
115     }
116 
117     /**
118      * Test {@link MethodUtils#getAccessibleMethod(Class, Method)}
119      */
120     public void testIssue_BEANUTILS_298_MethodUtils_getAccessibleMethod() {
121         final Object bean = Jira298BeanFactory.createImplX();
122         Object result = null;
123         try {
124             final Method m2 = MethodUtils.getAccessibleMethod(bean.getClass(), "getName", new Class[0]);
125             result = m2.invoke(bean);
126         } catch (final Throwable t) {
127             log.error("Failed: " + t.getMessage(), t);
128             fail("Threw exception: " + t);
129         }
130         assertEquals("BaseX name value", result);
131     }
132 }