You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by jc...@apache.org on 2007/05/02 15:06:02 UTC

svn commit: r534445 - /incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/lang/PropertyResolver.java

Author: jcompagner
Date: Wed May  2 06:06:01 2007
New Revision: 534445

URL: http://svn.apache.org/viewvc?view=rev&rev=534445
Log:
special thing for matej, getTargetClass method!

Modified:
    incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/lang/PropertyResolver.java

Modified: incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/lang/PropertyResolver.java
URL: http://svn.apache.org/viewvc/incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/lang/PropertyResolver.java?view=diff&rev=534445&r1=534444&r2=534445
==============================================================================
--- incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/lang/PropertyResolver.java (original)
+++ incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/lang/PropertyResolver.java Wed May  2 06:06:01 2007
@@ -133,6 +133,22 @@
 		setter.setValue(value, converter == null ? new PropertyResolverConverter(Session.get(),
 				Session.get().getLocale()) : converter);
 	}
+	
+	/**
+	 * @param expression
+	 * @param object
+	 * @return
+	 */
+	public final static Class getTargetClass(String expression, Object object)
+	{
+		ObjectAndGetSetter setter = getObjectAndGetSetter(expression, object, true);
+		if (setter == null)
+		{
+			throw new WicketRuntimeException("Null object returned for expression: " + expression
+					+ " for getting the target classs of: " + object);
+		}
+		return setter.getTargetClass();
+	}
 
 	private static ObjectAndGetSetter getObjectAndGetSetter(final String expression,
 			final Object object, boolean tryToCreateNull)
@@ -465,6 +481,11 @@
 		{
 			return getAndSetter.getValue(value);
 		}
+		
+		public Class getTargetClass()
+		{	
+			return getAndSetter.getTargetClass(this.value);
+		}
 
 	}
 
@@ -480,6 +501,11 @@
 		public Object getValue(final Object object);
 
 		/**
+		 * @return
+		 */
+		public Class getTargetClass(final Object object);
+
+		/**
 		 * @param object
 		 *            The object where the new value must be set on.
 		 *
@@ -532,6 +558,14 @@
 			// map and try to make one of the class if finds?
 			return null;
 		}
+		
+		/**
+		 * @see org.apache.wicket.util.lang.PropertyResolver.IGetAndSet#getTargetClass(Object)
+		 */
+		public Class getTargetClass(Object object)
+		{
+			return null;
+		}
 	}
 
 	private static final class ListGetSet implements IGetAndSet
@@ -586,6 +620,14 @@
 			// list and try to make one of the class if finds?
 			return null;
 		}
+		
+		/**
+		 * @see org.apache.wicket.util.lang.PropertyResolver.IGetAndSet#getTargetClass(Object)
+		 */
+		public Class getTargetClass(Object object)
+		{
+			return null;
+		}
 	}
 
 	private static final class ArrayGetSet implements IGetAndSet
@@ -634,6 +676,14 @@
 			}
 			return value;
 		}
+		
+		/**
+		 * @see org.apache.wicket.util.lang.PropertyResolver.IGetAndSet#getTargetClass(Object)
+		 */
+		public Class getTargetClass(Object object)
+		{
+			return object.getClass().getComponentType();
+		}
 	}
 
 	private static final class ArrayLengthGetSet implements IGetAndSet
@@ -666,6 +716,14 @@
 		{
 			throw new WicketRuntimeException("Cant get a new value from a length of an array");
 		}
+		
+		/**
+		 * @see org.apache.wicket.util.lang.PropertyResolver.IGetAndSet#getTargetClass(java.lang.Object)
+		 */
+		public Class getTargetClass(Object object)
+		{
+			return null;
+		}
 	}
 
 	private static final class ArrayPropertyGetSet implements IGetAndSet
@@ -757,6 +815,14 @@
 						+ " on object: " + object);
 			}
 		}
+		
+		/**
+		 * @see org.apache.wicket.util.lang.PropertyResolver.IGetAndSet#getTargetClass(java.lang.Object)
+		 */
+		public Class getTargetClass(Object object)
+		{
+			return getMethod.getReturnType();
+		}
 
 		/**
 		 * @see org.apache.wicket.util.lang.PropertyResolver.IGetAndSet#newValue(java.lang.Object)
@@ -929,6 +995,13 @@
 			return value;
 		}
 
+		/**
+		 * @see org.apache.wicket.util.lang.PropertyResolver.IGetAndSet#getTargetClass(java.lang.Object)
+		 */
+		public Class getTargetClass(Object object)
+		{
+			return getMethod.getReturnType();
+		}
 	}
 
 	/**
@@ -1002,6 +1075,14 @@
 				throw new WicketRuntimeException("Error setting field value of field " + field
 						+ " on object " + object + ", value " + value, ex);
 			}
+		}
+		
+		/**
+		 * @see org.apache.wicket.util.lang.PropertyResolver.IGetAndSet#getTargetClass(java.lang.Object)
+		 */
+		public Class getTargetClass(Object object)
+		{
+			return field.getType();
 		}
 	}
 }