From: Artur Signell Date: Tue, 4 Sep 2012 05:27:07 +0000 (+0300) Subject: Moved ReflectTools to com.vaadin.util (#4294) X-Git-Tag: 7.0.0.beta1~195^2~11 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=112572a700c288fc49df60ea23a2ade7c51c5165;p=vaadin-framework.git Moved ReflectTools to com.vaadin.util (#4294) --- diff --git a/server/src/com/vaadin/Application.java b/server/src/com/vaadin/Application.java index 7af5852512..fd8c73aa8f 100644 --- a/server/src/com/vaadin/Application.java +++ b/server/src/com/vaadin/Application.java @@ -69,12 +69,12 @@ import com.vaadin.server.WrappedRequest; import com.vaadin.server.WrappedRequest.BrowserDetails; import com.vaadin.server.WrappedResponse; import com.vaadin.shared.ui.ui.UIConstants; -import com.vaadin.tools.ReflectTools; import com.vaadin.ui.AbstractComponent; import com.vaadin.ui.AbstractField; import com.vaadin.ui.Table; import com.vaadin.ui.UI; import com.vaadin.ui.Window; +import com.vaadin.util.ReflectTools; /** *

diff --git a/server/src/com/vaadin/data/fieldgroup/FieldGroup.java b/server/src/com/vaadin/data/fieldgroup/FieldGroup.java index d79697f548..9fe99610b2 100644 --- a/server/src/com/vaadin/data/fieldgroup/FieldGroup.java +++ b/server/src/com/vaadin/data/fieldgroup/FieldGroup.java @@ -29,10 +29,10 @@ import com.vaadin.data.Item; import com.vaadin.data.Property; import com.vaadin.data.Validator.InvalidValueException; import com.vaadin.data.util.TransactionalPropertyWrapper; -import com.vaadin.tools.ReflectTools; import com.vaadin.ui.DefaultFieldFactory; import com.vaadin.ui.Field; import com.vaadin.ui.Form; +import com.vaadin.util.ReflectTools; /** * FieldGroup provides an easy way of binding fields to data and handling diff --git a/server/src/com/vaadin/event/FieldEvents.java b/server/src/com/vaadin/event/FieldEvents.java index 10df08291e..3da60ee466 100644 --- a/server/src/com/vaadin/event/FieldEvents.java +++ b/server/src/com/vaadin/event/FieldEvents.java @@ -21,12 +21,12 @@ import java.lang.reflect.Method; import com.vaadin.shared.EventId; import com.vaadin.shared.communication.FieldRpc.FocusAndBlurServerRpc; -import com.vaadin.tools.ReflectTools; import com.vaadin.ui.Component; import com.vaadin.ui.Component.Event; import com.vaadin.ui.Field; import com.vaadin.ui.Field.ValueChangeEvent; import com.vaadin.ui.TextField; +import com.vaadin.util.ReflectTools; /** * Interface that serves as a wrapper for {@link Field} related events. diff --git a/server/src/com/vaadin/event/LayoutEvents.java b/server/src/com/vaadin/event/LayoutEvents.java index 7f88ddc640..c113ff1595 100644 --- a/server/src/com/vaadin/event/LayoutEvents.java +++ b/server/src/com/vaadin/event/LayoutEvents.java @@ -21,9 +21,9 @@ import java.lang.reflect.Method; import com.vaadin.event.MouseEvents.ClickEvent; import com.vaadin.shared.Connector; import com.vaadin.shared.MouseEventDetails; -import com.vaadin.tools.ReflectTools; import com.vaadin.ui.Component; import com.vaadin.ui.ComponentContainer; +import com.vaadin.util.ReflectTools; public interface LayoutEvents { diff --git a/server/src/com/vaadin/event/MouseEvents.java b/server/src/com/vaadin/event/MouseEvents.java index 0fe9902b2e..6712ef79a5 100644 --- a/server/src/com/vaadin/event/MouseEvents.java +++ b/server/src/com/vaadin/event/MouseEvents.java @@ -19,8 +19,8 @@ package com.vaadin.event; import java.lang.reflect.Method; import com.vaadin.shared.MouseEventDetails; -import com.vaadin.tools.ReflectTools; import com.vaadin.ui.Component; +import com.vaadin.util.ReflectTools; /** * Interface that serves as a wrapper for mouse related events. diff --git a/server/src/com/vaadin/server/AddonContext.java b/server/src/com/vaadin/server/AddonContext.java index b3cd5ea226..c9f2ac07eb 100644 --- a/server/src/com/vaadin/server/AddonContext.java +++ b/server/src/com/vaadin/server/AddonContext.java @@ -24,7 +24,7 @@ import java.util.ServiceLoader; import com.vaadin.Application; import com.vaadin.event.EventRouter; -import com.vaadin.tools.ReflectTools; +import com.vaadin.util.ReflectTools; /** * Point of entry for add-ons for integrating into various aspects of the diff --git a/server/src/com/vaadin/server/JavaScriptCallbackHelper.java b/server/src/com/vaadin/server/JavaScriptCallbackHelper.java index 19b19ce824..d17ae71114 100644 --- a/server/src/com/vaadin/server/JavaScriptCallbackHelper.java +++ b/server/src/com/vaadin/server/JavaScriptCallbackHelper.java @@ -27,10 +27,10 @@ import java.util.Set; import com.vaadin.external.json.JSONArray; import com.vaadin.external.json.JSONException; import com.vaadin.shared.JavaScriptConnectorState; -import com.vaadin.tools.ReflectTools; import com.vaadin.ui.AbstractJavaScriptComponent; import com.vaadin.ui.JavaScript.JavaScriptCallbackRpc; import com.vaadin.ui.JavaScriptFunction; +import com.vaadin.util.ReflectTools; /** * Internal helper class used to implement functionality common to diff --git a/server/src/com/vaadin/server/Page.java b/server/src/com/vaadin/server/Page.java index da172ed837..b5718d10bb 100644 --- a/server/src/com/vaadin/server/Page.java +++ b/server/src/com/vaadin/server/Page.java @@ -28,10 +28,10 @@ import com.vaadin.server.WrappedRequest.BrowserDetails; import com.vaadin.shared.ui.BorderStyle; import com.vaadin.shared.ui.ui.PageClientRpc; import com.vaadin.shared.ui.ui.UIConstants; -import com.vaadin.tools.ReflectTools; import com.vaadin.ui.JavaScript; import com.vaadin.ui.Notification; import com.vaadin.ui.UI; +import com.vaadin.util.ReflectTools; public class Page implements Serializable { diff --git a/server/src/com/vaadin/tools/ReflectTools.java b/server/src/com/vaadin/tools/ReflectTools.java deleted file mode 100644 index fcfe00564e..0000000000 --- a/server/src/com/vaadin/tools/ReflectTools.java +++ /dev/null @@ -1,138 +0,0 @@ -/* - * Copyright 2011 Vaadin Ltd. - * - * Licensed 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. - */ -package com.vaadin.tools; - -import java.beans.IntrospectionException; -import java.beans.PropertyDescriptor; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; - -/** - * An util class with helpers for reflection operations. Used internally by - * Vaadin and should not be used by application developers. Subject to change at - * any time. - * - * @since 6.2 - */ -public class ReflectTools { - /** - * Locates the method in the given class. Returns null if the method is not - * found. Throws an ExceptionInInitializerError if there is a problem - * locating the method as this is mainly called from static blocks. - * - * @param cls - * Class that contains the method - * @param methodName - * The name of the method - * @param parameterTypes - * The parameter types for the method. - * @return A reference to the method - * @throws ExceptionInInitializerError - * Wraps any exception in an {@link ExceptionInInitializerError} - * so this method can be called from a static initializer. - */ - public static Method findMethod(Class cls, String methodName, - Class... parameterTypes) throws ExceptionInInitializerError { - try { - return cls.getDeclaredMethod(methodName, parameterTypes); - } catch (Exception e) { - throw new ExceptionInInitializerError(e); - } - } - - /** - * Returns the value of the java field. - *

- * Uses getter if present, otherwise tries to access even private fields - * directly. - * - * @param object - * The object containing the field - * @param field - * The field we want to get the value for - * @return The value of the field in the object - * @throws InvocationTargetException - * If the value could not be retrieved - * @throws IllegalAccessException - * If the value could not be retrieved - * @throws IllegalArgumentException - * If the value could not be retrieved - */ - public static Object getJavaFieldValue(Object object, - java.lang.reflect.Field field) throws IllegalArgumentException, - IllegalAccessException, InvocationTargetException { - PropertyDescriptor pd; - try { - pd = new PropertyDescriptor(field.getName(), object.getClass()); - Method getter = pd.getReadMethod(); - if (getter != null) { - return getter.invoke(object, (Object[]) null); - } - } catch (IntrospectionException e1) { - // Ignore this and try to get directly using the field - } - - // Try to get the value or throw an exception - if (!field.isAccessible()) { - // Try to gain access even if field is private - field.setAccessible(true); - } - return field.get(object); - } - - /** - * Sets the value of a java field. - *

- * Uses setter if present, otherwise tries to access even private fields - * directly. - * - * @param object - * The object containing the field - * @param field - * The field we want to set the value for - * @param value - * The value to set - * @throws IllegalAccessException - * If the value could not be assigned to the field - * @throws IllegalArgumentException - * If the value could not be assigned to the field - * @throws InvocationTargetException - * If the value could not be assigned to the field - */ - public static void setJavaFieldValue(Object object, - java.lang.reflect.Field field, Object value) - throws IllegalAccessException, IllegalArgumentException, - InvocationTargetException { - PropertyDescriptor pd; - try { - pd = new PropertyDescriptor(field.getName(), object.getClass()); - Method setter = pd.getWriteMethod(); - if (setter != null) { - // Exceptions are thrown forward if this fails - setter.invoke(object, value); - } - } catch (IntrospectionException e1) { - // Ignore this and try to set directly using the field - } - - // Try to set the value directly to the field or throw an exception - if (!field.isAccessible()) { - // Try to gain access even if field is private - field.setAccessible(true); - } - field.set(object, value); - } -} diff --git a/server/src/com/vaadin/ui/AbstractComponent.java b/server/src/com/vaadin/ui/AbstractComponent.java index 97883b780f..37ca9f1a03 100644 --- a/server/src/com/vaadin/ui/AbstractComponent.java +++ b/server/src/com/vaadin/ui/AbstractComponent.java @@ -41,7 +41,7 @@ import com.vaadin.server.Terminal; import com.vaadin.shared.ComponentConstants; import com.vaadin.shared.ComponentState; import com.vaadin.shared.ui.ComponentStateUtil; -import com.vaadin.tools.ReflectTools; +import com.vaadin.util.ReflectTools; /** * An abstract class that defines default implementation for the diff --git a/server/src/com/vaadin/ui/AbstractSplitPanel.java b/server/src/com/vaadin/ui/AbstractSplitPanel.java index c5df57b36f..93c4ec4f59 100644 --- a/server/src/com/vaadin/ui/AbstractSplitPanel.java +++ b/server/src/com/vaadin/ui/AbstractSplitPanel.java @@ -28,7 +28,7 @@ import com.vaadin.shared.MouseEventDetails; import com.vaadin.shared.ui.splitpanel.AbstractSplitPanelRpc; import com.vaadin.shared.ui.splitpanel.AbstractSplitPanelState; import com.vaadin.shared.ui.splitpanel.AbstractSplitPanelState.SplitterState; -import com.vaadin.tools.ReflectTools; +import com.vaadin.util.ReflectTools; /** * AbstractSplitPanel. diff --git a/server/src/com/vaadin/ui/Button.java b/server/src/com/vaadin/ui/Button.java index bbed7d540f..ec75d2da9b 100644 --- a/server/src/com/vaadin/ui/Button.java +++ b/server/src/com/vaadin/ui/Button.java @@ -33,8 +33,8 @@ import com.vaadin.event.ShortcutListener; import com.vaadin.shared.MouseEventDetails; import com.vaadin.shared.ui.button.ButtonServerRpc; import com.vaadin.shared.ui.button.ButtonState; -import com.vaadin.tools.ReflectTools; import com.vaadin.ui.Component.Focusable; +import com.vaadin.util.ReflectTools; /** * A generic button component. diff --git a/server/src/com/vaadin/ui/Tree.java b/server/src/com/vaadin/ui/Tree.java index 03895a12bb..ad3674fe1e 100644 --- a/server/src/com/vaadin/ui/Tree.java +++ b/server/src/com/vaadin/ui/Tree.java @@ -56,7 +56,7 @@ import com.vaadin.server.Resource; import com.vaadin.shared.MouseEventDetails; import com.vaadin.shared.ui.dd.VerticalDropLocation; import com.vaadin.shared.ui.tree.TreeConstants; -import com.vaadin.tools.ReflectTools; +import com.vaadin.util.ReflectTools; /** * Tree component. A Tree can be used to select an item (or multiple items) from diff --git a/server/src/com/vaadin/ui/UI.java b/server/src/com/vaadin/ui/UI.java index 0f914d3947..4b861d7a25 100644 --- a/server/src/com/vaadin/ui/UI.java +++ b/server/src/com/vaadin/ui/UI.java @@ -49,7 +49,7 @@ import com.vaadin.shared.ui.BorderStyle; import com.vaadin.shared.ui.ui.UIConstants; import com.vaadin.shared.ui.ui.UIServerRpc; import com.vaadin.shared.ui.ui.UIState; -import com.vaadin.tools.ReflectTools; +import com.vaadin.util.ReflectTools; /** * The topmost component in any component hierarchy. There is one UI for every diff --git a/server/src/com/vaadin/util/ReflectTools.java b/server/src/com/vaadin/util/ReflectTools.java new file mode 100644 index 0000000000..285d876e1c --- /dev/null +++ b/server/src/com/vaadin/util/ReflectTools.java @@ -0,0 +1,138 @@ +/* + * Copyright 2011 Vaadin Ltd. + * + * Licensed 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. + */ +package com.vaadin.util; + +import java.beans.IntrospectionException; +import java.beans.PropertyDescriptor; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; + +/** + * An util class with helpers for reflection operations. Used internally by + * Vaadin and should not be used by application developers. Subject to change at + * any time. + * + * @since 6.2 + */ +public class ReflectTools { + /** + * Locates the method in the given class. Returns null if the method is not + * found. Throws an ExceptionInInitializerError if there is a problem + * locating the method as this is mainly called from static blocks. + * + * @param cls + * Class that contains the method + * @param methodName + * The name of the method + * @param parameterTypes + * The parameter types for the method. + * @return A reference to the method + * @throws ExceptionInInitializerError + * Wraps any exception in an {@link ExceptionInInitializerError} + * so this method can be called from a static initializer. + */ + public static Method findMethod(Class cls, String methodName, + Class... parameterTypes) throws ExceptionInInitializerError { + try { + return cls.getDeclaredMethod(methodName, parameterTypes); + } catch (Exception e) { + throw new ExceptionInInitializerError(e); + } + } + + /** + * Returns the value of the java field. + *

+ * Uses getter if present, otherwise tries to access even private fields + * directly. + * + * @param object + * The object containing the field + * @param field + * The field we want to get the value for + * @return The value of the field in the object + * @throws InvocationTargetException + * If the value could not be retrieved + * @throws IllegalAccessException + * If the value could not be retrieved + * @throws IllegalArgumentException + * If the value could not be retrieved + */ + public static Object getJavaFieldValue(Object object, + java.lang.reflect.Field field) throws IllegalArgumentException, + IllegalAccessException, InvocationTargetException { + PropertyDescriptor pd; + try { + pd = new PropertyDescriptor(field.getName(), object.getClass()); + Method getter = pd.getReadMethod(); + if (getter != null) { + return getter.invoke(object, (Object[]) null); + } + } catch (IntrospectionException e1) { + // Ignore this and try to get directly using the field + } + + // Try to get the value or throw an exception + if (!field.isAccessible()) { + // Try to gain access even if field is private + field.setAccessible(true); + } + return field.get(object); + } + + /** + * Sets the value of a java field. + *

+ * Uses setter if present, otherwise tries to access even private fields + * directly. + * + * @param object + * The object containing the field + * @param field + * The field we want to set the value for + * @param value + * The value to set + * @throws IllegalAccessException + * If the value could not be assigned to the field + * @throws IllegalArgumentException + * If the value could not be assigned to the field + * @throws InvocationTargetException + * If the value could not be assigned to the field + */ + public static void setJavaFieldValue(Object object, + java.lang.reflect.Field field, Object value) + throws IllegalAccessException, IllegalArgumentException, + InvocationTargetException { + PropertyDescriptor pd; + try { + pd = new PropertyDescriptor(field.getName(), object.getClass()); + Method setter = pd.getWriteMethod(); + if (setter != null) { + // Exceptions are thrown forward if this fails + setter.invoke(object, value); + } + } catch (IntrospectionException e1) { + // Ignore this and try to set directly using the field + } + + // Try to set the value directly to the field or throw an exception + if (!field.isAccessible()) { + // Try to gain access even if field is private + field.setAccessible(true); + } + field.set(object, value); + } +}