diff options
author | Jouni Koivuviita <jouni@jounikoivuviita.com> | 2012-05-18 20:59:25 +0300 |
---|---|---|
committer | Jouni Koivuviita <jouni@jounikoivuviita.com> | 2012-05-18 20:59:25 +0300 |
commit | 1b5dae24a39944b657ad1fa82a8952adc1c4abd3 (patch) | |
tree | e63f568836f9171a7861843445cc14fde6fa92ca /src/com/vaadin/ui/AbstractComponent.java | |
parent | 612443937cdd054b53287c1c2760a48bb2624eec (diff) | |
parent | 2ad73a7b9aedd38b14b0e40195e557dc4b097edd (diff) | |
download | vaadin-framework-1b5dae24a39944b657ad1fa82a8952adc1c4abd3.tar.gz vaadin-framework-1b5dae24a39944b657ad1fa82a8952adc1c4abd3.zip |
Merge branch 'master' into layoutgraph
Diffstat (limited to 'src/com/vaadin/ui/AbstractComponent.java')
-rw-r--r-- | src/com/vaadin/ui/AbstractComponent.java | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/src/com/vaadin/ui/AbstractComponent.java b/src/com/vaadin/ui/AbstractComponent.java index 79a07ae00e..554d7806f9 100644 --- a/src/com/vaadin/ui/AbstractComponent.java +++ b/src/com/vaadin/ui/AbstractComponent.java @@ -18,7 +18,6 @@ import java.util.LinkedList; import java.util.List; import java.util.Locale; import java.util.Map; -import java.util.logging.Level; import java.util.logging.Logger; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -821,19 +820,27 @@ public abstract class AbstractComponent implements Component, MethodEventSource */ protected ComponentState createState() { try { + return getStateType().newInstance(); + } catch (Exception e) { + throw new RuntimeException( + "Error creating state of type " + getStateType().getName() + + " for " + getClass().getName(), e); + } + } + + /* (non-Javadoc) + * @see com.vaadin.terminal.gwt.server.ClientConnector#getStateType() + */ + public Class<? extends ComponentState> getStateType() { + try { Method m = getClass().getMethod("getState", (Class[]) null); Class<? extends ComponentState> type = (Class<? extends ComponentState>) m .getReturnType(); - return type.newInstance(); + return type; } catch (Exception e) { - getLogger().log( - Level.INFO, - "Error determining state object class for " - + getClass().getName()); + throw new RuntimeException("Error finding state type for " + + getClass().getName(), e); } - - // Fall back to ComponentState if detection fails for some reason. - return new ComponentState(); } /* Documentation copied from interface */ |