You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by si...@apache.org on 2012/02/13 23:16:22 UTC
svn commit: r1243717 - in /commons/sandbox/beanutils2/trunk/src: changes/
main/java/org/apache/commons/beanutils2/
test/java/org/apache/commons/beanutils2/
Author: simonetripodi
Date: Mon Feb 13 22:16:21 2012
New Revision: 1243717
URL: http://svn.apache.org/viewvc?rev=1243717&view=rev
Log:
[SANDBOX-387] Implement possibility to find out if a property readable and/or wirtable - patch submitted by Benedikt Ritter
Added:
commons/sandbox/beanutils2/trunk/src/test/java/org/apache/commons/beanutils2/IsReadableTestCase.java (with props)
commons/sandbox/beanutils2/trunk/src/test/java/org/apache/commons/beanutils2/IsWritableTestCase.java (with props)
Modified:
commons/sandbox/beanutils2/trunk/src/changes/changes.xml
commons/sandbox/beanutils2/trunk/src/main/java/org/apache/commons/beanutils2/BeanAccessor.java
commons/sandbox/beanutils2/trunk/src/main/java/org/apache/commons/beanutils2/DefaultBeanAccessor.java
Modified: commons/sandbox/beanutils2/trunk/src/changes/changes.xml
URL: http://svn.apache.org/viewvc/commons/sandbox/beanutils2/trunk/src/changes/changes.xml?rev=1243717&r1=1243716&r2=1243717&view=diff
==============================================================================
--- commons/sandbox/beanutils2/trunk/src/changes/changes.xml (original)
+++ commons/sandbox/beanutils2/trunk/src/changes/changes.xml Mon Feb 13 22:16:21 2012
@@ -26,6 +26,9 @@
<action dev="simonetripodi" type="update" issue="SANDBOX-390" due-to="Benedikt Ritter">
Make sure that the internal package does not get exported when packaging as OSGi bundle
</action>
+ <action dev="simonetripodi" type="update" issue="SANDBOX-387" due-to="Benedikt Ritter">
+ Implement possibility to find out if a property readable and/or wirtable
+ </action>
<action dev="simonetripodi" type="update" issue="SANDBOX-379" due-to="Benedikt Ritter">
Implement describe() on DefaultBeanAccessor
</action>
Modified: commons/sandbox/beanutils2/trunk/src/main/java/org/apache/commons/beanutils2/BeanAccessor.java
URL: http://svn.apache.org/viewvc/commons/sandbox/beanutils2/trunk/src/main/java/org/apache/commons/beanutils2/BeanAccessor.java?rev=1243717&r1=1243716&r2=1243717&view=diff
==============================================================================
--- commons/sandbox/beanutils2/trunk/src/main/java/org/apache/commons/beanutils2/BeanAccessor.java (original)
+++ commons/sandbox/beanutils2/trunk/src/main/java/org/apache/commons/beanutils2/BeanAccessor.java Mon Feb 13 22:16:21 2012
@@ -52,6 +52,28 @@ public interface BeanAccessor<B>
IndexedPropertySetterAccessor<B> setMapped( String propertyName )
throws IllegalAccessException, IntrospectionException, InvocationTargetException, NoSuchMethodException;
+ // checks
+
+ /**
+ * Checks if the specified property name identifies a readable property.
+ *
+ * @param propertyName the name of the property to be checked.
+ * @return {@code true}, if the property is readable.
+ * @throws IntrospectionException TODO
+ */
+ boolean isReadable( String propertyName )
+ throws IntrospectionException;
+
+ /**
+ * Checks if the specified property name identifies a writable property.
+ *
+ * @param propertyName the name of the property to be checked.
+ * @return {@code true}, if the property is writable.
+ * @throws IntrospectionException TODO
+ */
+ boolean isWritable( String propertyName )
+ throws IntrospectionException;
+
// clone
B cloneBean()
Modified: commons/sandbox/beanutils2/trunk/src/main/java/org/apache/commons/beanutils2/DefaultBeanAccessor.java
URL: http://svn.apache.org/viewvc/commons/sandbox/beanutils2/trunk/src/main/java/org/apache/commons/beanutils2/DefaultBeanAccessor.java?rev=1243717&r1=1243716&r2=1243717&view=diff
==============================================================================
--- commons/sandbox/beanutils2/trunk/src/main/java/org/apache/commons/beanutils2/DefaultBeanAccessor.java (original)
+++ commons/sandbox/beanutils2/trunk/src/main/java/org/apache/commons/beanutils2/DefaultBeanAccessor.java Mon Feb 13 22:16:21 2012
@@ -44,7 +44,7 @@ final class DefaultBeanAccessor<B>
this.bean = bean;
}
- // set
+ // get
/**
* {@inheritDoc}
@@ -158,6 +158,52 @@ final class DefaultBeanAccessor<B>
return null;
}
+ // checks
+
+ /**
+ * {@inheritDoc}
+ */
+ public boolean isReadable( String propertyName )
+ throws IntrospectionException
+ {
+ PropertyDescriptor propertyDescriptor = registry.getPropertyDescriptor( bean.getClass(), propertyName );
+ propertyDescriptor = checkNotNull( propertyDescriptor, "Property '%s' does not exist in bean of type %s",
+ propertyName,
+ bean.getClass().getName() );
+
+ if ( propertyDescriptor instanceof IndexedPropertyDescriptor )
+ {
+ IndexedPropertyDescriptor indexed = (IndexedPropertyDescriptor) propertyDescriptor;
+ return indexed.getIndexedReadMethod() != null ? true : false;
+ }
+ else // TODO what about mapped properties?
+ {
+ return propertyDescriptor.getReadMethod() != null ? true : false;
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public boolean isWritable( String propertyName )
+ throws IntrospectionException
+ {
+ PropertyDescriptor propertyDescriptor = registry.getPropertyDescriptor( bean.getClass(), propertyName );
+ propertyDescriptor = checkNotNull( propertyDescriptor, "Property '%s' does not exist in bean of type %s",
+ propertyName,
+ bean.getClass().getName() );
+
+ if ( propertyDescriptor instanceof IndexedPropertyDescriptor )
+ {
+ IndexedPropertyDescriptor indexed = (IndexedPropertyDescriptor) propertyDescriptor;
+ return indexed.getIndexedWriteMethod() != null ? true : false;
+ }
+ else // TODO what about mapped properties?
+ {
+ return propertyDescriptor.getWriteMethod() != null ? true : false;
+ }
+ }
+
/**
* {@inheritDoc}
*/
Added: commons/sandbox/beanutils2/trunk/src/test/java/org/apache/commons/beanutils2/IsReadableTestCase.java
URL: http://svn.apache.org/viewvc/commons/sandbox/beanutils2/trunk/src/test/java/org/apache/commons/beanutils2/IsReadableTestCase.java?rev=1243717&view=auto
==============================================================================
--- commons/sandbox/beanutils2/trunk/src/test/java/org/apache/commons/beanutils2/IsReadableTestCase.java (added)
+++ commons/sandbox/beanutils2/trunk/src/test/java/org/apache/commons/beanutils2/IsReadableTestCase.java Mon Feb 13 22:16:21 2012
@@ -0,0 +1,107 @@
+package org.apache.commons.beanutils2;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import static org.apache.commons.beanutils2.BeanUtils.on;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+public class IsReadableTestCase
+{
+
+ private TestBean testBean;
+
+ @Before
+ public void setUp()
+ {
+ testBean = new TestBean();
+ }
+
+ @After
+ public void tearDown()
+ {
+ testBean = null;
+ }
+
+ @Test( expected = NullPointerException.class )
+ public void isReadableNull()
+ throws Exception
+ {
+ on( testBean ).isReadable( null );
+ }
+
+ @Test( expected = NullPointerException.class )
+ public void isReadbleUnknown()
+ throws Exception
+ {
+ on( testBean ).isReadable( "unknown" );
+ }
+
+ @Test
+ public void isReadbleIntProperty()
+ throws Exception
+ {
+ assertTrue( "isReadable returned false for a read/write int property!",
+ on( testBean ).isReadable( "intProperty" ) );
+ }
+
+ @Test
+ public void isReadbleIntArray()
+ throws Exception
+ {
+ assertTrue( "isReadable returned false for a read/write array property!",
+ on( testBean ).isReadable( "intArray" ) );
+ }
+
+ @Test
+ public void isReadableIntIndexed()
+ throws Exception
+ {
+ assertTrue( "isReadable returned false for a read/write indexed property!",
+ on( testBean ).isReadable( "intIndexed" ) );
+ }
+
+ @Test
+ public void isReadbleMapProperty()
+ throws Exception
+ {
+ assertTrue( "isReadable returned false for a read/write map property!",
+ on( testBean ).isReadable( "mapProperty" ) );
+ }
+
+ @Test
+ public void isReadableReadOnlyProperty()
+ throws Exception
+ {
+ assertTrue( "isReadble returned false for a read only property!",
+ on( testBean ).isReadable( "readOnlyProperty" ) );
+ }
+
+ @Test
+ public void isReadableWriteOnlyProperty()
+ throws Exception
+ {
+ assertFalse( "isReadable returned true for a write only property!",
+ on( testBean ).isReadable( "writeOnlyProperty" ) );
+ }
+
+}
Propchange: commons/sandbox/beanutils2/trunk/src/test/java/org/apache/commons/beanutils2/IsReadableTestCase.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: commons/sandbox/beanutils2/trunk/src/test/java/org/apache/commons/beanutils2/IsReadableTestCase.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: commons/sandbox/beanutils2/trunk/src/test/java/org/apache/commons/beanutils2/IsReadableTestCase.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: commons/sandbox/beanutils2/trunk/src/test/java/org/apache/commons/beanutils2/IsWritableTestCase.java
URL: http://svn.apache.org/viewvc/commons/sandbox/beanutils2/trunk/src/test/java/org/apache/commons/beanutils2/IsWritableTestCase.java?rev=1243717&view=auto
==============================================================================
--- commons/sandbox/beanutils2/trunk/src/test/java/org/apache/commons/beanutils2/IsWritableTestCase.java (added)
+++ commons/sandbox/beanutils2/trunk/src/test/java/org/apache/commons/beanutils2/IsWritableTestCase.java Mon Feb 13 22:16:21 2012
@@ -0,0 +1,107 @@
+package org.apache.commons.beanutils2;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import static org.apache.commons.beanutils2.BeanUtils.on;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+public class IsWritableTestCase
+{
+
+ private TestBean testBean;
+
+ @Before
+ public void setUp()
+ {
+ testBean = new TestBean();
+ }
+
+ @After
+ public void tearDown()
+ {
+ testBean = null;
+ }
+
+ @Test( expected = NullPointerException.class )
+ public void isWritableNull()
+ throws Exception
+ {
+ on( testBean ).isWritable( null );
+ }
+
+ @Test( expected = NullPointerException.class )
+ public void isWritbleUnknown()
+ throws Exception
+ {
+ on( testBean ).isWritable( "unknown" );
+ }
+
+ @Test
+ public void isWritbleIntProperty()
+ throws Exception
+ {
+ assertTrue( "isWritable returned false for a read/write int property!",
+ on( testBean ).isWritable( "intProperty" ) );
+ }
+
+ @Test
+ public void isWritbleIntArray()
+ throws Exception
+ {
+ assertTrue( "isWritable returned false for a read/write array property!",
+ on( testBean ).isWritable( "intArray" ) );
+ }
+
+ @Test
+ public void isWritableIntIndexed()
+ throws Exception
+ {
+ assertTrue( "isWritable returned false for a read/write indexed property!",
+ on( testBean ).isWritable( "intIndexed" ) );
+ }
+
+ @Test
+ public void isWritbleMapProperty()
+ throws Exception
+ {
+ assertTrue( "isWritable returned false for a read/write map property!",
+ on( testBean ).isWritable( "mapProperty" ) );
+ }
+
+ @Test
+ public void isWritableReadOnlyProperty()
+ throws Exception
+ {
+ assertFalse( "isWriteable returned true for a read only property!",
+ on( testBean ).isWritable( "readOnlyProperty" ) );
+ }
+
+ @Test
+ public void isWritableWriteOnlyProperty()
+ throws Exception
+ {
+ assertTrue( "isWritable returned false for a write only property!",
+ on( testBean ).isWritable( "writeOnlyProperty" ) );
+ }
+
+}
Propchange: commons/sandbox/beanutils2/trunk/src/test/java/org/apache/commons/beanutils2/IsWritableTestCase.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: commons/sandbox/beanutils2/trunk/src/test/java/org/apache/commons/beanutils2/IsWritableTestCase.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: commons/sandbox/beanutils2/trunk/src/test/java/org/apache/commons/beanutils2/IsWritableTestCase.java
------------------------------------------------------------------------------
svn:mime-type = text/plain