diff options
18 files changed, 60 insertions, 65 deletions
diff --git a/server/src/com/vaadin/ui/AbsoluteLayout.java b/server/src/com/vaadin/ui/AbsoluteLayout.java index 39f00901fc..12aa8ea9a6 100644 --- a/server/src/com/vaadin/ui/AbsoluteLayout.java +++ b/server/src/com/vaadin/ui/AbsoluteLayout.java @@ -685,7 +685,7 @@ public class AbsoluteLayout extends AbstractLayout implements // handle children for (Element childComponent : design.children()) { Attributes attr = childComponent.attributes(); - Component newChild = designContext.createChild(childComponent); + Component newChild = designContext.readDesign(childComponent); StringBuilder css = new StringBuilder(); if (attr.hasKey(ATTR_TOP)) { css.append("top:").append(attr.get(ATTR_TOP)).append(";"); diff --git a/server/src/com/vaadin/ui/AbstractComponent.java b/server/src/com/vaadin/ui/AbstractComponent.java index 8517c216e3..a41d1b4056 100644 --- a/server/src/com/vaadin/ui/AbstractComponent.java +++ b/server/src/com/vaadin/ui/AbstractComponent.java @@ -930,7 +930,7 @@ public abstract class AbstractComponent extends AbstractClientConnector } // handle immediate if (attr.hasKey("immediate")) { - setImmediate(DesignAttributeHandler.getBoolean(attr + setImmediate(DesignAttributeHandler.parseBoolean(attr .get("immediate"))); } @@ -955,7 +955,7 @@ public abstract class AbstractComponent extends AbstractClientConnector // handle responsive if (attr.hasKey("responsive")) { - setResponsive(DesignAttributeHandler.getBoolean(attr + setResponsive(DesignAttributeHandler.parseBoolean(attr .get("responsive"))); } // check for unsupported attributes diff --git a/server/src/com/vaadin/ui/AbstractOrderedLayout.java b/server/src/com/vaadin/ui/AbstractOrderedLayout.java index 77c7e3c826..67bcfc904c 100644 --- a/server/src/com/vaadin/ui/AbstractOrderedLayout.java +++ b/server/src/com/vaadin/ui/AbstractOrderedLayout.java @@ -485,7 +485,7 @@ public abstract class AbstractOrderedLayout extends AbstractLayout implements // handle children for (Element childComponent : design.children()) { Attributes attr = childComponent.attributes(); - Component newChild = designContext.createChild(childComponent); + Component newChild = designContext.readDesign(childComponent); addComponent(newChild); // handle alignment int bitMask = 0; diff --git a/server/src/com/vaadin/ui/AbstractSingleComponentContainer.java b/server/src/com/vaadin/ui/AbstractSingleComponentContainer.java index 24c36fd0cf..244feb3bb9 100644 --- a/server/src/com/vaadin/ui/AbstractSingleComponentContainer.java +++ b/server/src/com/vaadin/ui/AbstractSingleComponentContainer.java @@ -297,7 +297,7 @@ public abstract class AbstractSingleComponentContainer extends + " can have only one child component."); } else if (childCount == 1) { Element childElement = design.children().get(0); - Component newChild = designContext.createChild(childElement); + Component newChild = designContext.readDesign(childElement); setContent(newChild); } } diff --git a/server/src/com/vaadin/ui/AbstractSplitPanel.java b/server/src/com/vaadin/ui/AbstractSplitPanel.java index e366c33593..62e4d9ec11 100644 --- a/server/src/com/vaadin/ui/AbstractSplitPanel.java +++ b/server/src/com/vaadin/ui/AbstractSplitPanel.java @@ -610,7 +610,7 @@ public abstract class AbstractSplitPanel extends AbstractComponentContainer { "A split panel can contain at most two components."); } for (Element childElement : design.children()) { - Component childComponent = designContext.createChild(childElement); + Component childComponent = designContext.readDesign(childElement); if (childElement.hasAttr(":second")) { setSecondComponent(childComponent); } else { diff --git a/server/src/com/vaadin/ui/CssLayout.java b/server/src/com/vaadin/ui/CssLayout.java index 528b34a28f..dbedfa53ff 100644 --- a/server/src/com/vaadin/ui/CssLayout.java +++ b/server/src/com/vaadin/ui/CssLayout.java @@ -369,7 +369,7 @@ public class CssLayout extends AbstractLayout implements LayoutClickNotifier { super.readDesign(design, designContext); // handle children for (Element childComponent : design.children()) { - Component newChild = designContext.createChild(childComponent); + Component newChild = designContext.readDesign(childComponent); addComponent(newChild); } } diff --git a/server/src/com/vaadin/ui/TabSheet.java b/server/src/com/vaadin/ui/TabSheet.java index 5528ea2ee9..aa9b0cc455 100644 --- a/server/src/com/vaadin/ui/TabSheet.java +++ b/server/src/com/vaadin/ui/TabSheet.java @@ -1492,7 +1492,7 @@ public class TabSheet extends AbstractComponentContainer implements Focusable, } // create the component that is in tab content Element content = tabElement.child(0); - Component child = designContext.createChild(content); + Component child = designContext.readDesign(content); Tab tab = this.addTab(child); if (attr.hasKey("visible")) { tab.setVisible(DesignAttributeHandler.readAttribute("visible", diff --git a/server/src/com/vaadin/ui/declarative/Design.java b/server/src/com/vaadin/ui/declarative/Design.java index cd9a21bc15..59393a7815 100644 --- a/server/src/com/vaadin/ui/declarative/Design.java +++ b/server/src/com/vaadin/ui/declarative/Design.java @@ -177,9 +177,9 @@ public class Design implements Serializable { * id/local id/caption */ private static DesignContext designToComponentTree(Document doc, - Component componentRoot, Class<? extends Component> classWithFields) { + Component componentRoot, Class<?> classWithFields) { DesignContext designContext = new DesignContext(doc); - designContext.getPrefixes(doc); + designContext.readPackageMappings(doc); // No special handling for a document without a body element - should be // taken care of by jsoup. Element root = doc.body(); @@ -210,7 +210,7 @@ public class Design implements Serializable { }; designContext.addComponentCreationListener(creationListener); // create subtree - designContext.synchronizeAndRegister(componentRoot, element); + designContext.readDesign(element, componentRoot); // make sure that all the member fields are bound Collection<String> unboundFields = binder.getUnboundFields(); if (!unboundFields.isEmpty()) { @@ -222,7 +222,7 @@ public class Design implements Serializable { designContext.removeComponentCreationListener(creationListener); } else { // createChild creates the entire component hierarchy - componentRoot = designContext.createChild(element); + componentRoot = designContext.readDesign(element); } designContext.setRootComponent(componentRoot); return designContext; @@ -257,7 +257,7 @@ public class Design implements Serializable { Component root = designContext.getRootComponent(); Node rootNode = designContext.createElement(root); body.appendChild(rootNode); - designContext.storePrefixes(doc); + designContext.writePackageMappings(doc); return doc; } diff --git a/server/src/com/vaadin/ui/declarative/DesignAttributeHandler.java b/server/src/com/vaadin/ui/declarative/DesignAttributeHandler.java index fbfe024c00..1fc89c965d 100644 --- a/server/src/com/vaadin/ui/declarative/DesignAttributeHandler.java +++ b/server/src/com/vaadin/ui/declarative/DesignAttributeHandler.java @@ -61,7 +61,7 @@ import com.vaadin.ui.Component; */ public class DesignAttributeHandler implements Serializable { - protected static Logger getLogger() { + private static Logger getLogger() { return Logger.getLogger(DesignAttributeHandler.class.getName()); } @@ -423,7 +423,7 @@ public class DesignAttributeHandler implements Serializable { // it is present and the value is not "false" or "FALSE". Thus empty // value evaluates to true. if (targetType == Boolean.TYPE || targetType == Boolean.class) { - return !value.equalsIgnoreCase("false"); + return parseBoolean(value); } if (targetType == Integer.TYPE || targetType == Integer.class) { return Integer.valueOf(value); @@ -716,15 +716,14 @@ public class DesignAttributeHandler implements Serializable { * Converts the given string attribute value to its corresponding boolean. * * An empty string and "true" are considered to represent a true value and - * "false" to represent a false value. All other input will throw an - * exception + * "false" to represent a false value. * * @param booleanValue * the boolean value from an attribute * @return the parsed boolean */ - public static boolean getBoolean(String booleanValue) { - return "".equals(booleanValue) ? true : Boolean.valueOf(booleanValue); + public static boolean parseBoolean(String booleanValue) { + return !booleanValue.equalsIgnoreCase("false"); } }
\ No newline at end of file diff --git a/server/src/com/vaadin/ui/declarative/DesignContext.java b/server/src/com/vaadin/ui/declarative/DesignContext.java index 0ce269261b..ade2494638 100644 --- a/server/src/com/vaadin/ui/declarative/DesignContext.java +++ b/server/src/com/vaadin/ui/declarative/DesignContext.java @@ -29,7 +29,6 @@ import org.jsoup.nodes.Element; import org.jsoup.nodes.Node; import com.vaadin.annotations.DesignRoot; -import com.vaadin.ui.AbstractComponent; import com.vaadin.ui.Component; import com.vaadin.ui.HasComponents; @@ -261,19 +260,18 @@ public class DesignContext implements Serializable { * @return the default instance for the given class. The return value must * not be modified by the caller */ - public <T> T getDefaultInstance(AbstractComponent abstractComponent) { + public <T> T getDefaultInstance(Component component) { // If the root is a @DesignRoot component, it can't use itself as a // reference or the written design will be empty // If the root component in some other way initializes itself in the // constructor - if (getRootComponent() == abstractComponent - && abstractComponent.getClass().isAnnotationPresent( - DesignRoot.class)) { - return (T) getDefaultInstance((Class<? extends Component>) abstractComponent + if (getRootComponent() == component + && component.getClass().isAnnotationPresent(DesignRoot.class)) { + return (T) getDefaultInstance((Class<? extends Component>) component .getClass().getSuperclass()); } - return (T) getDefaultInstance(abstractComponent.getClass()); + return (T) getDefaultInstance(component.getClass()); } private Component getDefaultInstance( @@ -295,11 +293,10 @@ public class DesignContext implements Serializable { } /** - * Get and store the mappings from prefixes to package names from meta tags - * located under <head> in the html document. - * + * Reads and stores the mappings from prefixes to package names from meta + * tags located under <head> in the html document. */ - protected void getPrefixes(Document doc) { + protected void readPackageMappings(Document doc) { Element head = doc.head(); if (head == null) { return; @@ -329,14 +326,15 @@ public class DesignContext implements Serializable { } /** - * Stores the package mappings (prefix -> package name) of this object to - * the specified document. The prefixes are stored as <meta> tags under - * <head> in the document. + * Writes the package mappings (prefix -> package name) of this object to + * the specified document. + * <p> + * The prefixes are stored as <meta> tags under <head> in the document. * * @param doc - * the Jsoup document tree where the package mappings are stored + * the Jsoup document tree where the package mappings are written */ - public void storePrefixes(Document doc) { + public void writePackageMappings(Document doc) { Element head = doc.head(); for (String prefix : prefixToPackage.keySet()) { // Only store the prefix-name mapping if it is not a default mapping @@ -348,7 +346,6 @@ public class DesignContext implements Serializable { + prefixToPackage.get(prefix); newNode.attr("content", prefixToPackageName); head.appendChild(newNode); - } } } @@ -414,38 +411,36 @@ public class DesignContext implements Serializable { } /** - * Creates a Component corresponding to the given html node. Also calls - * readDesign() for the created node, in effect creating the entire - * component hierarchy rooted at the returned component. + * Reads the given design node and creates the corresponding component tree * * @param componentDesign - * The html tree node containing the description of the component - * to be created. - * @return a Component corresponding to componentDesign + * The design element containing the description of the component + * to be created + * @return the root component of component tree */ - public Component createChild(Element componentDesign) { + public Component readDesign(Element componentDesign) { // Create the component. Component component = instantiateComponent(componentDesign); - synchronizeAndRegister(component, componentDesign); + readDesign(componentDesign, component); fireComponentCreatedEvent(componentToLocalId.get(component), component); return component; } /** - * Calls readDesign() for the given component and passes the given component - * design as a parameter. This creates the entire component hierarchy rooted - * at the given component. Also registers the componentid, localId and - * caption of the given component and all its children to the context * - * @param component - * The component to be synchronized from design + * Reads the given design node and populates the given component with the + * corresponding component tree + * <p> + * Additionally registers the component id, local id and caption of the + * given component and all its children in the context + * * @param componentDesign - * The html tree node containing the description of the component - * @throws DesignException - * if the design contains duplicate local or global ids + * The design element containing the description of the component + * to be created + * @param component + * The component which corresponds to the design element */ - public void synchronizeAndRegister(Component component, - Element componentDesign) { + public void readDesign(Element componentDesign, Component component) { component.readDesign(componentDesign, this); // Get the ids and the caption of the component and store them in the // maps of this design context. diff --git a/server/tests/src/com/vaadin/tests/design/TestLocale.java b/server/tests/src/com/vaadin/tests/design/TestLocale.java index 273e611dcf..a4100f7d71 100644 --- a/server/tests/src/com/vaadin/tests/design/TestLocale.java +++ b/server/tests/src/com/vaadin/tests/design/TestLocale.java @@ -114,7 +114,7 @@ public class TestLocale extends TestCase { html.appendChild(doc.createElement("head")); Element body = doc.createElement("body"); html.appendChild(body); - dc.storePrefixes(doc); + dc.writePackageMappings(doc); // Append the design under <body> in the html tree. createNode // creates the entire component hierarchy rooted at the diff --git a/server/tests/src/com/vaadin/tests/server/component/absolutelayout/TestReadDesign.java b/server/tests/src/com/vaadin/tests/server/component/absolutelayout/TestReadDesign.java index 5f9674e554..f8af0a992e 100644 --- a/server/tests/src/com/vaadin/tests/server/component/absolutelayout/TestReadDesign.java +++ b/server/tests/src/com/vaadin/tests/server/component/absolutelayout/TestReadDesign.java @@ -78,7 +78,7 @@ public class TestReadDesign extends TestCase { private AbsoluteLayout createLayout() { DesignContext ctx = new DesignContext(); Element design = createDesign(); - Component child = ctx.createChild(design); + Component child = ctx.readDesign(design); return (AbsoluteLayout) child; } diff --git a/server/tests/src/com/vaadin/tests/server/component/abstractcomponent/TestReadDesign.java b/server/tests/src/com/vaadin/tests/server/component/abstractcomponent/TestReadDesign.java index 8fe4d9c220..43a050ba80 100644 --- a/server/tests/src/com/vaadin/tests/server/component/abstractcomponent/TestReadDesign.java +++ b/server/tests/src/com/vaadin/tests/server/component/abstractcomponent/TestReadDesign.java @@ -110,6 +110,7 @@ public class TestReadDesign extends TestCase { // Synchronize with a design having no immediate attribute - // explicitImmediate should then be null. design = createDesign("description", "test-description"); + component = getComponent(); component.readDesign(design, ctx); // Synchronize with a design having immediate = false design = createDesign("immediate", "false"); diff --git a/server/tests/src/com/vaadin/tests/server/component/abstractorderedlayout/TestReadDesign.java b/server/tests/src/com/vaadin/tests/server/component/abstractorderedlayout/TestReadDesign.java index f52a04496a..874fbd83b2 100644 --- a/server/tests/src/com/vaadin/tests/server/component/abstractorderedlayout/TestReadDesign.java +++ b/server/tests/src/com/vaadin/tests/server/component/abstractorderedlayout/TestReadDesign.java @@ -80,7 +80,7 @@ public class TestReadDesign extends TestCase { String... alignments) { DesignContext ctx = new DesignContext(); Element design = createDesign(expandRatio, margin, alignments); - Component child = ctx.createChild(design); + Component child = ctx.readDesign(design); return (VerticalLayout) child; } diff --git a/server/tests/src/com/vaadin/tests/server/component/button/TestReadDesign.java b/server/tests/src/com/vaadin/tests/server/component/button/TestReadDesign.java index 48b228a35a..e194232742 100644 --- a/server/tests/src/com/vaadin/tests/server/component/button/TestReadDesign.java +++ b/server/tests/src/com/vaadin/tests/server/component/button/TestReadDesign.java @@ -76,7 +76,7 @@ public class TestReadDesign extends TestCase { attributes.put("icon-alt", "OK"); attributes.put("click-shortcut", "ctrl-shift-o"); Button button = (Button) ctx - .createChild(createButtonWithAttributes(attributes)); + .readDesign(createButtonWithAttributes(attributes)); assertEquals(3, button.getTabIndex()); assertEquals(false, button.isHtmlContentAllowed()); assertEquals("OK", button.getIconAlternateText()); @@ -94,9 +94,9 @@ public class TestReadDesign extends TestCase { */ private void createAndTestButtons(String content, String caption) { Element e1 = createElement("v-button", content, caption); - Button b1 = (Button) ctx.createChild(e1); + Button b1 = (Button) ctx.readDesign(e1); Element e2 = createElement("v-native-button", content, caption); - NativeButton b2 = (NativeButton) ctx.createChild(e2); + NativeButton b2 = (NativeButton) ctx.readDesign(e2); if (content != null) { assertEquals("The button has the wrong text content.", content, b1.getCaption()); diff --git a/server/tests/src/com/vaadin/tests/server/component/checkbox/TestReadDesign.java b/server/tests/src/com/vaadin/tests/server/component/checkbox/TestReadDesign.java index 529dd911e9..c58b3b6bdd 100644 --- a/server/tests/src/com/vaadin/tests/server/component/checkbox/TestReadDesign.java +++ b/server/tests/src/com/vaadin/tests/server/component/checkbox/TestReadDesign.java @@ -43,7 +43,7 @@ public class TestReadDesign extends TestCase { @Test public void testChecked() { Element e = createElement(true); - CheckBox box = (CheckBox) ctx.createChild(e); + CheckBox box = (CheckBox) ctx.readDesign(e); assertEquals("The checkbox must be checked", Boolean.TRUE, box.getValue()); } @@ -51,7 +51,7 @@ public class TestReadDesign extends TestCase { @Test public void testUnchecked() { Element e = createElement(false); - CheckBox box = (CheckBox) ctx.createChild(e); + CheckBox box = (CheckBox) ctx.readDesign(e); assertEquals("The checkbox must be unchecked", Boolean.FALSE, box.getValue()); } diff --git a/server/tests/src/com/vaadin/tests/server/component/csslayout/TestReadDesign.java b/server/tests/src/com/vaadin/tests/server/component/csslayout/TestReadDesign.java index 51f763bf14..bac3dc70eb 100644 --- a/server/tests/src/com/vaadin/tests/server/component/csslayout/TestReadDesign.java +++ b/server/tests/src/com/vaadin/tests/server/component/csslayout/TestReadDesign.java @@ -47,7 +47,7 @@ public class TestReadDesign extends TestCase { private CssLayout createLayout() { DesignContext ctx = new DesignContext(); Element design = createDesign(); - Component child = ctx.createChild(design); + Component child = ctx.readDesign(design); return (CssLayout) child; } diff --git a/server/tests/src/com/vaadin/tests/server/component/label/TestReadDesign.java b/server/tests/src/com/vaadin/tests/server/component/label/TestReadDesign.java index 1a02ed98cc..3e577b5578 100644 --- a/server/tests/src/com/vaadin/tests/server/component/label/TestReadDesign.java +++ b/server/tests/src/com/vaadin/tests/server/component/label/TestReadDesign.java @@ -70,7 +70,7 @@ public class TestReadDesign extends TestCase { */ private void createAndTestLabel(String content, String caption) { Element e = createElement("v-label", content, caption); - Label l = (Label) ctx.createChild(e); + Label l = (Label) ctx.readDesign(e); if (content != null) { assertEquals("The label has wrong text content.", content, l.getValue()); |