Autoformat of UiBinderWriter, XMLElement and XMLAttribute in anticipation of pending changes. git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@10523 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/user/src/com/google/gwt/uibinder/rebind/UiBinderWriter.java b/user/src/com/google/gwt/uibinder/rebind/UiBinderWriter.java index 2cbe8f8..6b3232e 100644 --- a/user/src/com/google/gwt/uibinder/rebind/UiBinderWriter.java +++ b/user/src/com/google/gwt/uibinder/rebind/UiBinderWriter.java
@@ -1,12 +1,12 @@ /* * Copyright 2008 Google Inc. - * + * * 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 @@ -134,7 +134,7 @@ /** * Returns a list of the given type and all its superclasses and implemented * interfaces in a breadth-first traversal. - * + * * @param type the base type * @return a breadth-first collection of its type hierarchy */ @@ -184,9 +184,9 @@ } /** - * Scans a class for a method named "render". Returns its parameters except for the - * first one. See {@link #validateRenderParameters(JClassType)} for a method that - * guarantees this method will succeed. + * Scans a class for a method named "render". Returns its parameters except + * for the first one. See {@link #validateRenderParameters(JClassType)} for a + * method that guarantees this method will succeed. */ private static JParameter[] findRenderParameters(JClassType owner) { JMethod[] methods = owner.getMethods(); @@ -194,7 +194,7 @@ for (JMethod jMethod : methods) { if (jMethod.getName().equals("render")) { - renderMethod = jMethod; + renderMethod = jMethod; } } @@ -203,8 +203,8 @@ } /** - * Determine the field name a getter is trying to retrieve. Assumes getters begin with - * "get". + * Determine the field name a getter is trying to retrieve. Assumes getters + * begin with "get". */ private static String getterToFieldName(String name) { String fieldName = name.substring(3); @@ -305,12 +305,10 @@ private final String binderUri; private final boolean isRenderer; - public UiBinderWriter(JClassType baseClass, String implClassName, - String templatePath, TypeOracle oracle, MortalLogger logger, - FieldManager fieldManager, MessagesWriter messagesWriter, - DesignTimeUtils designTime, UiBinderContext uiBinderCtx, - boolean useSafeHtmlTemplates, boolean useLazyWidgetBuilders, - String binderUri) + public UiBinderWriter(JClassType baseClass, String implClassName, String templatePath, + TypeOracle oracle, MortalLogger logger, FieldManager fieldManager, + MessagesWriter messagesWriter, DesignTimeUtils designTime, UiBinderContext uiBinderCtx, + boolean useSafeHtmlTemplates, boolean useLazyWidgetBuilders, String binderUri) throws UnableToCompleteException { this.baseClass = baseClass; this.implClassName = implClassName; @@ -335,8 +333,7 @@ JClassType[] uiBinderTypes = baseClass.getImplementedInterfaces(); if (uiBinderTypes.length == 0) { - throw new RuntimeException("No implemented interfaces for " - + baseClass.getName()); + throw new RuntimeException("No implemented interfaces for " + baseClass.getName()); } JClassType uiBinderType = uiBinderTypes[0]; @@ -347,18 +344,15 @@ JClassType uiRendererClass = getOracle().findType(UiRenderer.class.getName()); if (uiBinderType.isAssignableTo(uibinderItself)) { if (typeArgs.length < 2) { - throw new RuntimeException( - "Root and owner type parameters are required for type %s" - + binderType); + throw new RuntimeException("Root and owner type parameters are required for type %s" + + binderType); } uiRootType = typeArgs[0]; uiOwnerType = typeArgs[1]; isRenderer = false; } else if (uiBinderType.isAssignableTo(uiRendererClass)) { if (typeArgs.length < 1) { - throw new RuntimeException( - "Owner type parameter is required for type %s" - + binderType); + throw new RuntimeException("Owner type parameter is required for type %s" + binderType); } if (!useSafeHtmlTemplates) { die("Configuration property UiBinder.useSafeHtmlTemplates\n" @@ -382,10 +376,10 @@ lazyDomElementClass = oracle.findType(LazyDomElement.class.getCanonicalName()); ownerClass = new OwnerClass(uiOwnerType, logger, uiBinderCtx); - bundleClass = new ImplicitClientBundle(baseClass.getPackage().getName(), - this.implClassName, CLIENT_BUNDLE_FIELD, logger); - handlerEvaluator = new HandlerEvaluator( - ownerClass, logger, oracle, useLazyWidgetBuilders); + bundleClass = + new ImplicitClientBundle(baseClass.getPackage().getName(), this.implClassName, + CLIENT_BUNDLE_FIELD, logger); + handlerEvaluator = new HandlerEvaluator(ownerClass, logger, oracle, useLazyWidgetBuilders); attributeParsers = new AttributeParsers(oracle, fieldManager, logger); } @@ -394,7 +388,7 @@ * Add a statement to be executed right after the current attached element is * detached. This is useful for doing things that might be expensive while the * element is attached to the DOM. - * + * * @param format * @param args * @see #beginAttachedSection(String) @@ -421,9 +415,9 @@ if (useLazyWidgetBuilders) { /** * I'm intentionally over-simplifying this and assuming that the input - * comes always in the format: field.somestatement(); - * Thus, field can be extracted easily and the element parsers don't - * need to be changed all at once. + * comes always in the format: field.somestatement(); Thus, field can be + * extracted easily and the element parsers don't need to be changed all + * at once. */ int idx = code.indexOf("."); String fieldName = code.substring(0, idx); @@ -442,7 +436,7 @@ * Succeeding calls made to {@link #ensureAttached} and * {@link #ensureCurrentFieldAttached} must refer to children of this element, * until {@link #endAttachedSection} is called. - * + * * @param element Java expression for the generated code that will return the * dom element to be attached. */ @@ -460,7 +454,7 @@ * generate a unique dom id at runtime. Further code will be generated to be * run after widgets are instantiated, to use that dom id in a getElementById * call and assign the Element instance to its field. - * + * * @param fieldName The name of the field being declared * @param ancestorField The name of fieldName parent */ @@ -479,14 +473,12 @@ * called in its ancestral. */ if (isOwnerFieldLazyDomElement(fieldName)) { - field.setInitializer(formatCode("new %s(%s)", - field.getQualifiedSourceName(), + field.setInitializer(formatCode("new %s(%s)", field.getQualifiedSourceName(), fieldManager.convertFieldToGetter(name))); } else { field.setInitializer(formatCode("new %s(%s).get().cast()", - LazyDomElement.class.getCanonicalName(), - fieldManager.convertFieldToGetter(name))); + LazyDomElement.class.getCanonicalName(), fieldManager.convertFieldToGetter(name))); // The dom must be created by its ancestor. fieldManager.require(ancestorField).addAttachStatement( @@ -494,8 +486,7 @@ } } else { setFieldInitializer(fieldName, "null"); - addInitStatement( - "%s = com.google.gwt.dom.client.Document.get().getElementById(%s).cast();", + addInitStatement("%s = com.google.gwt.dom.client.Document.get().getElementById(%s).cast();", fieldName, name); addInitStatement("%s.removeAttribute(\"id\");", fieldName); } @@ -506,17 +497,18 @@ /** * Declare a variable that will be filled at runtime with a unique id, safe * for use as a dom element's id attribute. For {@code UiRenderer} based code, - * elements corresponding to a ui:field, need and id initialized to a - * value that depends on the {@code fieldName}. For all other cases let {@code fieldName} - * be {@code null}. - * + * elements corresponding to a ui:field, need and id initialized to a value + * that depends on the {@code fieldName}. For all other cases let + * {@code fieldName} be {@code null}. + * * @param fieldName name of the field corresponding to this variable. * @return that variable's name. */ public String declareDomIdHolder(String fieldName) throws UnableToCompleteException { String domHolderName = "domId" + domId++; - FieldWriter domField = fieldManager.registerField(FieldWriterType.DOM_ID_HOLDER, - oracle.findType(String.class.getName()), domHolderName); + FieldWriter domField = + fieldManager.registerField(FieldWriterType.DOM_ID_HOLDER, + oracle.findType(String.class.getName()), domHolderName); if (isRenderer && fieldName != null) { domField.setInitializer("UiRendererUtilsImpl.buildInnerId(\"" + fieldName + "\", uiId)"); } else { @@ -531,8 +523,7 @@ * field. If the element has a field or id attribute, use its value. * Otherwise, create and return a new, private field name for it. */ - public String declareField(String typeName, XMLElement elem) - throws UnableToCompleteException { + public String declareField(String typeName, XMLElement elem) throws UnableToCompleteException { JClassType type = oracle.findType(typeName); if (type == null) { die(elem, "Unknown type %s", typeName); @@ -555,11 +546,10 @@ * If this element has a gwt:field attribute, create a field for it of the * appropriate type, and return the field name. If no gwt:field attribute is * found, do nothing and return null - * + * * @return The new field name, or null if no field is created */ - public String declareFieldIfNeeded(XMLElement elem) - throws UnableToCompleteException { + public String declareFieldIfNeeded(XMLElement elem) throws UnableToCompleteException { String fieldName = getFieldName(elem); if (fieldName != null) { @@ -568,7 +558,8 @@ * respective owner field is a LazyDomElement. */ if (useLazyWidgetBuilders && isOwnerFieldLazyDomElement(fieldName)) { - fieldManager.registerFieldForLazyDomElement(findFieldType(elem), ownerClass.getUiField(fieldName)); + fieldManager.registerFieldForLazyDomElement(findFieldType(elem), + ownerClass.getUiField(fieldName)); } else { fieldManager.registerField(findFieldType(elem), fieldName); } @@ -578,14 +569,16 @@ /** * Declare a {@link RenderableStamper} instance that will be filled at runtime - * with a unique token. This instance can then be used to stamp a single {@link IsRenderable}. - * + * with a unique token. This instance can then be used to stamp a single + * {@link IsRenderable}. + * * @return that variable's name. */ public String declareRenderableStamper() throws UnableToCompleteException { String renderableStamperName = "renderableStamper" + renderableStamper++; - FieldWriter domField = fieldManager.registerField(FieldWriterType.RENDERABLE_STAMPER, - oracle.findType(RenderableStamper.class.getName()), renderableStamperName); + FieldWriter domField = + fieldManager.registerField(FieldWriterType.RENDERABLE_STAMPER, + oracle.findType(RenderableStamper.class.getName()), renderableStamperName); domField.setInitializer(formatCode( "new %s(com.google.gwt.dom.client.Document.get().createUniqueId())", RenderableStamper.class.getName())); @@ -595,12 +588,11 @@ /** * Writes a new SafeHtml template to the generated BinderImpl. - * + * * @return The invocation of the SafeHtml template function with the arguments - * filled in + * filled in */ - public String declareTemplateCall(String html, String fieldName) - throws IllegalArgumentException { + public String declareTemplateCall(String html, String fieldName) throws IllegalArgumentException { if (!useSafeHtmlTemplates) { return '"' + html + '"'; } @@ -610,12 +602,12 @@ } /** - * Given a string containing tokens returned by {@link #tokenForStringExpression}, - * {@link #tokenForSafeHtmlExpression} or {@link #declareDomField}, return a - * string with those tokens replaced by the appropriate expressions. (It is - * not normally necessary for an {@link XMLElement.Interpreter} or - * {@link ElementParser} to make this call, as the tokens are typically - * replaced by the TemplateWriter itself.) + * Given a string containing tokens returned by + * {@link #tokenForStringExpression}, {@link #tokenForSafeHtmlExpression} or + * {@link #declareDomField}, return a string with those tokens replaced by the + * appropriate expressions. (It is not normally necessary for an + * {@link XMLElement.Interpreter} or {@link ElementParser} to make this call, + * as the tokens are typically replaced by the TemplateWriter itself.) */ public String detokenate(String betokened) { return tokenator.detokenate(betokened); @@ -633,8 +625,7 @@ * Post an error message and halt processing. This method always throws an * {@link UnableToCompleteException} */ - public void die(String message, Object... params) - throws UnableToCompleteException { + public void die(String message, Object... params) throws UnableToCompleteException { logger.die(message, params); } @@ -650,7 +641,7 @@ /** * End the current attachable section. This will detach the element if it was * ever attached and execute any detach statements. - * + * * @see #beginAttachedSection(String) */ public void endAttachedSection() { @@ -667,15 +658,14 @@ /** * Ensure that the specified element is attached to the DOM. - * + * * @see #beginAttachedSection(String) */ public void ensureAttached() { String attachSectionElement = attachSectionElements.getFirst(); if (!attachedVars.containsKey(attachSectionElement)) { String attachedVar = "attachRecord" + nextAttachVar; - addInitStatement( - "UiBinderUtil.TempAttachment %s = UiBinderUtil.attachToDom(%s);", + addInitStatement("UiBinderUtil.TempAttachment %s = UiBinderUtil.attachToDom(%s);", attachedVar, attachSectionElement); attachedVars.put(attachSectionElement, attachedVar); nextAttachVar++; @@ -686,7 +676,7 @@ * Ensure that the specified field is attached to the DOM. The field must hold * an object that responds to Element getElement(). Convenience wrapper for * {@link #ensureAttached}<code>(field + ".getElement()")</code>. - * + * * @see #beginAttachedSection(String) */ public void ensureCurrentFieldAttached() { @@ -696,12 +686,11 @@ /** * Finds the JClassType that corresponds to this XMLElement, which must be a * Widget or an Element. - * + * * @throws UnableToCompleteException If no such widget class exists * @throws RuntimeException if asked to handle a non-widget, non-DOM element */ - public JClassType findFieldType(XMLElement elem) - throws UnableToCompleteException { + public JClassType findFieldType(XMLElement elem) throws UnableToCompleteException { String tagName = elem.getLocalName(); if (!isImportedElement(elem)) { @@ -739,15 +728,13 @@ * Java expression). */ public void genPropertySet(String fieldName, String propName, String value) { - addStatement("%1$s.set%2$s(%3$s);", fieldName, - capitalizePropName(propName), value); + addStatement("%1$s.set%2$s(%3$s);", fieldName, capitalizePropName(propName), value); } /** * Generates the code to set a string property. */ - public void genStringPropertySet(String fieldName, String propName, - String value) { + public void genStringPropertySet(String fieldName, String propName, String value) { genPropertySet(fieldName, propName, "\"" + value + "\""); } @@ -817,7 +804,7 @@ public boolean isElementAssignableTo(XMLElement elem, JClassType possibleSupertype) throws UnableToCompleteException { /* - * Things like <W extends IsWidget & IsPlaid> + * Things like <W extends IsWidget & IsPlaid> */ JTypeParameter typeParameter = possibleSupertype.isTypeParameter(); if (typeParameter != null) { @@ -829,12 +816,11 @@ } return true; } - + /* - * Binder fields are always declared raw, so we're cheating if the - * user is playing with parameterized types. We're happy enough if the - * raw types match, and rely on them to make sure the specific types - * really do work. + * Binder fields are always declared raw, so we're cheating if the user is + * playing with parameterized types. We're happy enough if the raw types + * match, and rely on them to make sure the specific types really do work. */ JParameterizedType parameterized = possibleSupertype.isParameterized(); if (parameterized != null) { @@ -850,7 +836,7 @@ public boolean isImportedElement(XMLElement elem) { String uri = elem.getNamespaceUri(); - return uri != null && uri.startsWith(PACKAGE_URI_SCHEME); + return uri != null && uri.startsWith(PACKAGE_URI_SCHEME); } /** @@ -865,8 +851,7 @@ return lazyDomElementClass.isAssignableFrom(ownerField.getType().getRawType()); } - public boolean isRenderableElement(XMLElement elem) - throws UnableToCompleteException { + public boolean isRenderableElement(XMLElement elem) throws UnableToCompleteException { return findFieldType(elem).isAssignableTo(isRenderableClassType); } @@ -883,19 +868,18 @@ * name of the field (possibly private) that will hold it. The element is * likely to make recursive calls back to this method to have its children * parsed. - * + * * @param elem the xml element to be parsed * @return the name of the field containing the parsed widget */ - public String parseElementToField(XMLElement elem) - throws UnableToCompleteException { + public String parseElementToField(XMLElement elem) throws UnableToCompleteException { /** * TODO(hermes,rjrjr,rdcastro): seems bad we have to run - * parseElementToFieldWriter(), get the field writer and - * then call fieldManager.convertFieldToGetter(). - * + * parseElementToFieldWriter(), get the field writer and then call + * fieldManager.convertFieldToGetter(). + * * Can't we move convertFieldToGetter() to FieldWriter? - * + * * The current answer is no because convertFieldToGetter() might be called * before a given FieldWriter is actually created. */ @@ -907,12 +891,11 @@ * Parses the object associated with the specified element, and returns the * field writer that will hold it. The element is likely to make recursive * calls back to this method to have its children parsed. - * + * * @param elem the xml element to be parsed * @return the field holder just created */ - public FieldWriter parseElementToFieldWriter(XMLElement elem) - throws UnableToCompleteException { + public FieldWriter parseElementToFieldWriter(XMLElement elem) throws UnableToCompleteException { if (elementParsers.isEmpty()) { registerParsers(); } @@ -942,7 +925,7 @@ /** * Gives the writer the initializer to use for this field instead of the * default GWT.create call. - * + * * @throws IllegalStateException if an initializer has already been set */ public void setFieldInitializer(String fieldName, String factoryMethod) { @@ -952,15 +935,14 @@ /** * Instructs the writer to initialize the field with a specific constructor * invocation, instead of the default GWT.create call. - * + * * @param fieldName the field to initialize * @param type the type of the field * @param args arguments to the constructor call */ - public void setFieldInitializerAsConstructor(String fieldName, - JClassType type, String... args) { - setFieldInitializer(fieldName, formatCode("new %s(%s)", - type.getQualifiedSourceName(), asCommaSeparatedList(args))); + public void setFieldInitializerAsConstructor(String fieldName, JClassType type, String... args) { + setFieldInitializer(fieldName, formatCode("new %s(%s)", type.getQualifiedSourceName(), + asCommaSeparatedList(args))); } /** @@ -969,7 +951,7 @@ * like translated messages with simple formatting. Wrapped in a call to * {@link com.google.gwt.safehtml.shared.SafeHtmlUtils#fromSafeConstant} to * keep the expression from being escaped by the SafeHtml template. - * + * * @param expression must resolve to trusted HTML string */ public String tokenForSafeConstant(String expression) { @@ -1004,7 +986,7 @@ * token, surrounded by plus signs. This is useful in strings to be handed to * setInnerHTML() and setText() calls, to allow a unique dom id attribute or * other runtime expression in the string. - * + * * @param expression must resolve to String */ public String tokenForStringExpression(String expression) { @@ -1047,16 +1029,15 @@ * Entry point for the code generation logic. It generates the * implementation's superstructure, and parses the root widget (leading to all * of its children being parsed as well). - * + * * @param doc TODO */ - void parseDocument(Document doc, PrintWriter printWriter) - throws UnableToCompleteException { + void parseDocument(Document doc, PrintWriter printWriter) throws UnableToCompleteException { Element documentElement = doc.getDocumentElement(); gwtPrefix = documentElement.lookupPrefix(binderUri); - XMLElement elem = new XMLElementProviderImpl(attributeParsers, - oracle, logger, designTime).get(documentElement); + XMLElement elem = + new XMLElementProviderImpl(attributeParsers, oracle, logger, designTime).get(documentElement); this.rendered = tokenator.detokenate(parseDocumentElement(elem)); printWriter.print(rendered); } @@ -1067,31 +1048,28 @@ private void addWidgetParser(String className) { String gwtClass = "com.google.gwt.user.client.ui." + className; - String parser = "com.google.gwt.uibinder.elementparsers." + className - + "Parser"; + String parser = "com.google.gwt.uibinder.elementparsers." + className + "Parser"; addElementParser(gwtClass, parser); } /** * Ensures that all of the internal data structures are cleaned up correctly * at the end of parsing the document. - * + * * @throws IllegalStateException */ private void ensureAttachmentCleanedUp() { if (!attachSectionElements.isEmpty()) { - throw new IllegalStateException("Attachments not cleaned up: " - + attachSectionElements); + throw new IllegalStateException("Attachments not cleaned up: " + attachSectionElements); } if (!detachStatementsStack.isEmpty()) { - throw new IllegalStateException("Detach not cleaned up: " - + detachStatementsStack); + throw new IllegalStateException("Detach not cleaned up: " + detachStatementsStack); } } /** - * Evaluate whether all @UiField attributes are also defined in the - * template. Dies if not. + * Evaluate whether all @UiField attributes are also defined in the template. + * Dies if not. */ private void evaluateUiFields() throws UnableToCompleteException { if (designTime.isDesignTime()) { @@ -1103,8 +1081,8 @@ if (fieldWriter == null) { die("Template %s has no %s attribute for %s.%s#%s", templatePath, - getUiFieldAttributeName(), uiOwnerType.getPackage().getName(), - uiOwnerType.getName(), fieldName); + getUiFieldAttributeName(), uiOwnerType.getPackage().getName(), uiOwnerType.getName(), + fieldName); } } } @@ -1140,7 +1118,7 @@ /** * Inspects this element for a gwt:field attribute. If one is found, the * attribute is consumed and its value returned. - * + * * @return The field name declared by an element, or null if none is declared */ private String getFieldName(XMLElement elem) throws UnableToCompleteException { @@ -1151,8 +1129,8 @@ // If an id is specified on the element, use that. fieldName = elem.consumeRawAttribute("id"); warn(elem, "Deprecated use of id=\"%1$s\" for field name. " - + "Please switch to gwt:field=\"%1$s\" instead. " - + "This will soon be a compile error!", fieldName); + + "Please switch to gwt:field=\"%1$s\" instead. " + "This will soon be a compile error!", + fieldName); } if (elem.hasAttribute(getUiFieldAttributeName())) { if (hasOldSchoolId) { @@ -1183,7 +1161,7 @@ /** * Find a set of element parsers for the given ui type. - * + * * The list of parsers will be returned in order from most- to least-specific. */ private Iterable<ElementParser> getParsersForClass(JClassType type) { @@ -1192,7 +1170,7 @@ /* * Let this non-widget parser go first (it finds <m:attribute/> elements). * Any other such should land here too. - * + * * TODO(rjrjr) Need a scheme to associate these with a namespace uri or * something? */ @@ -1207,11 +1185,9 @@ parsers.add(parser); } } catch (InstantiationException e) { - throw new RuntimeException( - "Unable to instantiate " + curType.getName(), e); + throw new RuntimeException("Unable to instantiate " + curType.getName(), e); } catch (IllegalAccessException e) { - throw new RuntimeException( - "Unable to instantiate " + curType.getName(), e); + throw new RuntimeException("Unable to instantiate " + curType.getName(), e); } } @@ -1225,9 +1201,8 @@ * Writes a field setter if the field is not provided and the field class is * compatible with its respective template field. */ - private void maybeWriteFieldSetter(IndentedWriter niceWriter, - OwnerField ownerField, JClassType templateClass, String templateField) - throws UnableToCompleteException { + private void maybeWriteFieldSetter(IndentedWriter niceWriter, OwnerField ownerField, + JClassType templateClass, String templateField) throws UnableToCompleteException { JClassType fieldType = ownerField.getType().getRawType(); if (!ownerField.isProvided()) { @@ -1236,27 +1211,23 @@ * the @UiField annotated field in the owning class */ if (!templateClass.isAssignableTo(fieldType)) { - die( - "In @UiField %s, template field and owner field types don't match: %s is not assignable to %s", + die("In @UiField %s, template field and owner field types don't match: %s is not assignable to %s", ownerField.getName(), templateClass.getQualifiedSourceName(), fieldType.getQualifiedSourceName()); } /* * And initialize the field */ - niceWriter.write("owner.%1$s = %2$s;", ownerField.getName(), - templateField); + niceWriter.write("owner.%1$s = %2$s;", ownerField.getName(), templateField); } else { /* * But with @UiField(provided=true) the user builds it, so reverse the * direction of the assignability check and do no init. */ if (!fieldType.isAssignableTo(templateClass)) { - die( - "In UiField(provided = true) %s, template field and field types don't match: " - + "@UiField(provided=true)%s is not assignable to %s", - ownerField.getName(), fieldType.getQualifiedSourceName(), - templateClass.getQualifiedSourceName()); + die("In UiField(provided = true) %s, template field and field types don't match: " + + "@UiField(provided=true)%s is not assignable to %s", ownerField.getName(), + fieldType.getQualifiedSourceName(), templateClass.getQualifiedSourceName()); } } } @@ -1272,23 +1243,19 @@ * Parse the document element and return the source of the Java class that * will implement its UiBinder. */ - private String parseDocumentElement(XMLElement elem) - throws UnableToCompleteException { - fieldManager.registerFieldOfGeneratedType( - oracle.findType(ClientBundle.class.getName()), - bundleClass.getPackageName(), bundleClass.getClassName(), - bundleClass.getFieldName()); + private String parseDocumentElement(XMLElement elem) throws UnableToCompleteException { + fieldManager.registerFieldOfGeneratedType(oracle.findType(ClientBundle.class.getName()), + bundleClass.getPackageName(), bundleClass.getClassName(), bundleClass.getFieldName()); // Allow GWT.create() to init the field, the default behavior - String rootField = new UiBinderParser(this, messages, fieldManager, oracle, - bundleClass, binderUri).parse(elem); + String rootField = + new UiBinderParser(this, messages, fieldManager, oracle, bundleClass, binderUri).parse(elem); fieldManager.validate(); StringWriter stringWriter = new StringWriter(); - IndentedWriter niceWriter = new IndentedWriter( - new PrintWriter(stringWriter)); + IndentedWriter niceWriter = new IndentedWriter(new PrintWriter(stringWriter)); if (isRenderer) { writeRenderer(niceWriter, rootField); @@ -1308,11 +1275,10 @@ /** * Parses a package uri (e.g., package://com.google...). - * + * * @throws UnableToCompleteException on bad package name */ - private JPackage parseNamespacePackage(String ns) - throws UnableToCompleteException { + private JPackage parseNamespacePackage(String ns) throws UnableToCompleteException { if (ns.startsWith(PACKAGE_URI_SCHEME)) { String pkgName = ns.substring(PACKAGE_URI_SCHEME.length()); @@ -1369,26 +1335,25 @@ /** * Scan the base class for the getter methods. Assumes getters begin with - * "get" and validates that each corresponds to a field declared with {@code ui:field}, - * it has a single parameter, the parameter type is assignable to {@code Element} and - * its return type is assignable to {@code Element}. + * "get" and validates that each corresponds to a field declared with + * {@code ui:field}, it has a single parameter, the parameter type is + * assignable to {@code Element} and its return type is assignable to + * {@code Element}. */ private void validateRendererGetters(JClassType owner) throws UnableToCompleteException { for (JMethod jMethod : owner.getMethods()) { String getterName = jMethod.getName(); if (getterName.startsWith("get")) { if (jMethod.getParameterTypes().length != 1) { - die("Getter %s must have exactly one parameter", - getterName); + die("Getter %s must have exactly one parameter", getterName); } String elementClassName = com.google.gwt.dom.client.Element.class.getCanonicalName(); JClassType elementType = oracle.findType(elementClassName); - JClassType getterParamType = jMethod.getParameterTypes()[0].getErasedType() - .isClassOrInterface(); + JClassType getterParamType = + jMethod.getParameterTypes()[0].getErasedType().isClassOrInterface(); if (!elementType.isAssignableFrom(getterParamType)) { - die("Getter %s must have exactly one parameter of type assignable to %s", - getterName, + die("Getter %s must have exactly one parameter of type assignable to %s", getterName, elementClassName); } String fieldName = getterToFieldName(getterName); @@ -1416,8 +1381,7 @@ if (renderMethod == null) { renderMethod = jMethod; } else { - die("%s declares more than one method named render", - baseClass.getQualifiedSourceName()); + die("%s declares more than one method named render", baseClass.getQualifiedSourceName()); } } } @@ -1430,8 +1394,7 @@ baseClass.getQualifiedSourceName()); } if (!JPrimitiveType.VOID.equals(renderMethod.getReturnType())) { - die("%s#render(SafeHtmlBuilder ...) does not return void", - baseClass.getQualifiedSourceName()); + die("%s#render(SafeHtmlBuilder ...) does not return void", baseClass.getQualifiedSourceName()); } } @@ -1449,8 +1412,7 @@ /** * Writes the UiBinder's source. */ - private void writeBinder(IndentedWriter w, String rootField) - throws UnableToCompleteException { + private void writeBinder(IndentedWriter w, String rootField) throws UnableToCompleteException { writePackage(w); writeImports(w); @@ -1497,11 +1459,10 @@ } /** - * Writes a different optimized UiBinder's source for the renderable - * strategy. + * Writes a different optimized UiBinder's source for the renderable strategy. */ - private void writeBinderForRenderableStrategy( - IndentedWriter w, String rootField) throws UnableToCompleteException { + private void writeBinderForRenderableStrategy(IndentedWriter w, String rootField) + throws UnableToCompleteException { writePackage(w); writeImports(w); @@ -1554,8 +1515,7 @@ evaluateUiFields(); - fieldManager.writeFieldDefinitions( - w, getOracle(), getOwnerClass(), getDesignTime()); + fieldManager.writeFieldDefinitions(w, getOracle(), getOwnerClass(), getDesignTime()); w.outdent(); w.write("}"); @@ -1573,8 +1533,7 @@ baseClass.getParameterizedQualifiedSourceName()); } else { w.write("public class %s extends %s<%s> implements %s {", implClassName, - AbstractUiRenderer.class.getName(), - uiOwnerType.getParameterizedQualifiedSourceName(), + AbstractUiRenderer.class.getName(), uiOwnerType.getParameterizedQualifiedSourceName(), baseClass.getParameterizedQualifiedSourceName()); } w.indent(); @@ -1582,8 +1541,7 @@ private void writeCssInjectors(IndentedWriter w) { for (ImplicitCssResource css : bundleClass.getCssMethods()) { - w.write("%s.%s().ensureInjected();", bundleClass.getFieldName(), - css.getName()); + w.write("%s.%s().ensureInjected();", bundleClass.getFieldName(), css.getName()); } w.newline(); } @@ -1593,11 +1551,10 @@ * gwt:field in the template. For those that have not had constructor * generation suppressed, emit GWT.create() calls instantiating them (or die * if they have no default constructor). - * + * * @throws UnableToCompleteException on constructor problem */ - private void writeGwtFields(IndentedWriter niceWriter) - throws UnableToCompleteException { + private void writeGwtFields(IndentedWriter niceWriter) throws UnableToCompleteException { // For each provided field in the owner class, initialize from the owner Collection<OwnerField> ownerFields = getOwnerClass().getUiFields(); for (OwnerField ownerField : ownerFields) { @@ -1610,8 +1567,7 @@ String initializer; if (designTime.isDesignTime()) { String typeName = ownerField.getType().getRawType().getQualifiedSourceName(); - initializer = designTime.getProvidedField(typeName, - ownerField.getName()); + initializer = designTime.getProvidedField(typeName, ownerField.getName()); } else { initializer = formatCode("owner.%1$s", fieldName); } @@ -1644,8 +1600,7 @@ if (!isRenderer) { w.write("import com.google.gwt.uibinder.client.UiBinder;"); w.write("import com.google.gwt.uibinder.client.UiBinderUtil;"); - w.write("import %s.%s;", uiRootType.getPackage().getName(), - uiRootType.getName()); + w.write("import %s.%s;", uiRootType.getPackage().getName(), uiRootType.getName()); } else { w.write("import com.google.gwt.text.shared.AbstractSafeHtmlRenderer;"); w.write("import com.google.gwt.uibinder.client.UiRendererUtilsImpl;"); @@ -1665,8 +1620,7 @@ /** * Write the statements to fill in the fields of the UI owner. */ - private void writeOwnerFieldSetters(IndentedWriter niceWriter) - throws UnableToCompleteException { + private void writeOwnerFieldSetters(IndentedWriter niceWriter) throws UnableToCompleteException { if (designTime.isDesignTime()) { return; } @@ -1678,8 +1632,8 @@ // ownerField is a widget. JClassType type = fieldWriter.getInstantiableType(); if (type != null) { - maybeWriteFieldSetter(niceWriter, ownerField, - fieldWriter.getInstantiableType(), fieldName); + maybeWriteFieldSetter(niceWriter, ownerField, fieldWriter.getInstantiableType(), + fieldName); } else { // Must be a generated type if (!ownerField.isProvided()) { @@ -1690,8 +1644,8 @@ } else { // ownerField was not found as bundle resource or widget, must die. die("Template %s has no %s attribute for %s.%s#%s", templatePath, - getUiFieldAttributeName(), uiOwnerType.getPackage().getName(), - uiOwnerType.getName(), fieldName); + getUiFieldAttributeName(), uiOwnerType.getPackage().getName(), uiOwnerType.getName(), + fieldName); } } } @@ -1705,8 +1659,7 @@ } /** - * Writes the UiRenderer's source for the renderable - * strategy. + * Writes the UiRenderer's source for the renderable strategy. */ private void writeRenderer(IndentedWriter w, String rootField) throws UnableToCompleteException { validateRendererGetters(baseClass); @@ -1732,8 +1685,7 @@ String renderParameterDeclarations = renderMethodParameters(renderParameters); w.write("public void render(final %s sb%s%s) {", SafeHtmlBuilder.class.getName(), - renderParameterDeclarations.length() != 0 ? ", " : "", - renderParameterDeclarations); + renderParameterDeclarations.length() != 0 ? ", " : "", renderParameterDeclarations); w.indent(); w.newline(); @@ -1749,8 +1701,10 @@ String rootFieldName = rootField.substring(4, rootField.length() - 2); String safeHtml = fieldManager.lookup(rootFieldName).getSafeHtml(); - // TODO(rchandia) it should be possible to add the attribute when parsing the UiBinder file - w.write("sb.append(UiRendererUtilsImpl.stampUiRendererAttribute(%s, RENDERED_ATTRIBUTE, uiId));", + // TODO(rchandia) it should be possible to add the attribute when parsing + // the UiBinder file + w.write( + "sb.append(UiRendererUtilsImpl.stampUiRendererAttribute(%s, RENDERED_ATTRIBUTE, uiId));", safeHtml); w.outdent();
diff --git a/user/src/com/google/gwt/uibinder/rebind/XMLAttribute.java b/user/src/com/google/gwt/uibinder/rebind/XMLAttribute.java index e584ac2..39862ce 100644 --- a/user/src/com/google/gwt/uibinder/rebind/XMLAttribute.java +++ b/user/src/com/google/gwt/uibinder/rebind/XMLAttribute.java
@@ -1,12 +1,12 @@ /* * Copyright 2008 Google Inc. - * + * * 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 @@ -21,8 +21,8 @@ import org.w3c.dom.Attr; /** - * Like {@link XMLElement}, a wrapper around {@link Attr} to keep - * parser writers out of trouble. + * Like {@link XMLElement}, a wrapper around {@link Attr} to keep parser writers + * out of trouble. */ public class XMLAttribute { private XMLElement xmlElem; @@ -36,11 +36,11 @@ public String consumeRawValue() { return xmlElem.consumeRawAttribute(w3cAttr.getName()); } - + public String consumeSafeHtmlValue() throws UnableToCompleteException { return xmlElem.consumeSafeHtmlAttribute(w3cAttr.getName()); } - + public String consumeStringValue() throws UnableToCompleteException { return xmlElem.consumeStringAttribute(w3cAttr.getName()); } @@ -75,7 +75,7 @@ @Override public String toString() { - return String.format("<%s:%s ... %s=%s ...>", xmlElem.getPrefix(), - xmlElem.getLocalName(), w3cAttr.getName(), w3cAttr.getValue()); + return String.format("<%s:%s ... %s=%s ...>", xmlElem.getPrefix(), xmlElem.getLocalName(), + w3cAttr.getName(), w3cAttr.getValue()); } }
diff --git a/user/src/com/google/gwt/uibinder/rebind/XMLElement.java b/user/src/com/google/gwt/uibinder/rebind/XMLElement.java index dfa4e9d..64a9629 100644 --- a/user/src/com/google/gwt/uibinder/rebind/XMLElement.java +++ b/user/src/com/google/gwt/uibinder/rebind/XMLElement.java
@@ -1,12 +1,12 @@ /* * Copyright 2008 Google Inc. - * + * * 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 @@ -57,7 +57,7 @@ public interface Interpreter<T> { /** * Given an XMLElement, return its filtered value. - * + * * @throws UnableToCompleteException on error */ T interpretElement(XMLElement elem) throws UnableToCompleteException; @@ -144,7 +144,7 @@ private JType intType; private JType stringType; private JType safeHtmlType; - + { // from com/google/gxp/compiler/schema/html.xml NO_END_TAG.add("area"); @@ -163,10 +163,7 @@ NO_END_TAG.add("wbr"); } - XMLElement( - Element elem, - AttributeParsers attributeParsers, - TypeOracle oracle, + XMLElement(Element elem, AttributeParsers attributeParsers, TypeOracle oracle, MortalLogger logger, DesignTimeUtils designTime, XMLElementProvider provider) { this.elem = elem; this.attributeParsers = attributeParsers; @@ -180,7 +177,7 @@ /** * Ensure that the receiver has no attributes left. - * + * * @throws UnableToCompleteException if it does */ public void assertNoAttributes() throws UnableToCompleteException { @@ -201,13 +198,12 @@ /** * Require that the receiver's body is empty of text and has no child nodes. - * + * * @throws UnableToCompleteException if it isn't */ public void assertNoBody() throws UnableToCompleteException { consumeChildElements(new Interpreter<Boolean>() { - public Boolean interpretElement(XMLElement elem) - throws UnableToCompleteException { + public Boolean interpretElement(XMLElement elem) throws UnableToCompleteException { logger.die(elem, "Found unexpected child element"); return false; // unreachable } @@ -217,12 +213,11 @@ /** * Require that the receiver's body is empty of text. - * + * * @throws UnableToCompleteException if it isn't */ public void assertNoText() throws UnableToCompleteException { - NoBrainInterpeter<String> nullInterpreter = new NoBrainInterpeter<String>( - null); + NoBrainInterpeter<String> nullInterpreter = new NoBrainInterpeter<String>(null); String s = consumeInnerTextEscapedAsHtmlStringLiteral(nullInterpreter); if (!"".equals(s)) { logger.die(this, "Unexpected text in element: \"%s\"", s); @@ -232,22 +227,21 @@ /** * Consumes the given attribute as a literal or field reference. The type * parameter is required to determine how the value is parsed and validated. - * + * * @param name the attribute's full name (including prefix) * @param type the type this attribute is expected to provide * @return the attribute's value as a Java expression, or null if it is not * set * @throws UnableToCompleteException on parse failure */ - public String consumeAttribute(String name, JType type) - throws UnableToCompleteException { + public String consumeAttribute(String name, JType type) throws UnableToCompleteException { return consumeAttributeWithDefault(name, null, type); } /** * Consumes the given attribute as a literal or field reference. The type * parameter is required to determine how the value is parsed and validated. - * + * * @param name the attribute's full name (including prefix) * @param defaultValue the value to @return if the attribute was unset * @param type the type this attribute is expected to provide @@ -255,8 +249,8 @@ * it was unset * @throws UnableToCompleteException on parse failure */ - public String consumeAttributeWithDefault(String name, String defaultValue, - JType type) throws UnableToCompleteException { + public String consumeAttributeWithDefault(String name, String defaultValue, JType type) + throws UnableToCompleteException { return consumeAttributeWithDefault(name, defaultValue, new JType[]{type}); } @@ -264,8 +258,8 @@ * Like {@link #consumeAttributeWithDefault(String, String, JType)}, but * accommodates more complex type signatures. */ - public String consumeAttributeWithDefault(String name, String defaultValue, - JType[] types) throws UnableToCompleteException { + public String consumeAttributeWithDefault(String name, String defaultValue, JType[] types) + throws UnableToCompleteException { XMLAttribute attribute = getAttribute(name); if (attribute == null) { if (defaultValue != null) { @@ -292,45 +286,42 @@ /** * Convenience method for parsing the named attribute as a boolean value or * reference. - * + * * @return an expression that will evaluate to a boolean value in the * generated code, or null if there is no such attribute - * + * * @throws UnableToCompleteException on unparseable value */ - public String consumeBooleanAttribute(String name) - throws UnableToCompleteException { + public String consumeBooleanAttribute(String name) throws UnableToCompleteException { return consumeAttribute(name, getBooleanType()); } /** * Convenience method for parsing the named attribute as a boolean value or * reference. - * + * * @param defaultValue value to return if attribute was not set * @return an expression that will evaluate to a boolean value in the * generated code, or defaultValue if there is no such attribute - * + * * @throws UnableToCompleteException on unparseable value */ public String consumeBooleanAttribute(String name, boolean defaultValue) throws UnableToCompleteException { - return consumeAttributeWithDefault(name, Boolean.toString(defaultValue), - getBooleanType()); + return consumeAttributeWithDefault(name, Boolean.toString(defaultValue), getBooleanType()); } /** * Consumes the named attribute as a boolean expression. This will not accept * {field.reference} expressions. Useful for values that must be resolved at * compile time, such as generated annotation values. - * + * * @return {@link Boolean#TRUE}, {@link Boolean#FALSE}, or null if no such * attribute - * + * * @throws UnableToCompleteException on unparseable value */ - public Boolean consumeBooleanConstantAttribute(String name) - throws UnableToCompleteException { + public Boolean consumeBooleanConstantAttribute(String name) throws UnableToCompleteException { String value = consumeRawAttribute(name); if (value == null) { return null; @@ -344,11 +335,10 @@ /** * Consumes and returns all child elements. - * + * * @throws UnableToCompleteException if extra text nodes are found */ - public Iterable<XMLElement> consumeChildElements() - throws UnableToCompleteException { + public Iterable<XMLElement> consumeChildElements() throws UnableToCompleteException { Iterable<XMLElement> rtn = consumeChildElementsNoEmptyCheck(); assertNoText(); return rtn; @@ -358,13 +348,13 @@ * Consumes and returns all child elements selected by the interpreter. Note * that text nodes are not elements, and so are not presented for * interpretation, and are not consumed. - * + * * @param interpreter Should return true for any child that should be consumed * and returned by the consumeChildElements call * @throws UnableToCompleteException */ - public Collection<XMLElement> consumeChildElements( - Interpreter<Boolean> interpreter) throws UnableToCompleteException { + public Collection<XMLElement> consumeChildElements(Interpreter<Boolean> interpreter) + throws UnableToCompleteException { List<XMLElement> elements = new ArrayList<XMLElement>(); List<Node> doomed = new ArrayList<Node>(); @@ -389,13 +379,12 @@ /** * Convenience method for parsing the named attribute as an ImageResource * value or reference. - * + * * @return an expression that will evaluate to an ImageResource value in the * generated code, or null if there is no such attribute * @throws UnableToCompleteException on unparseable value */ - public String consumeImageResourceAttribute(String name) - throws UnableToCompleteException { + public String consumeImageResourceAttribute(String name) throws UnableToCompleteException { return consumeAttribute(name, getImageResourceType()); } @@ -409,16 +398,14 @@ * <p> * This call requires an interpreter to make sense of any special children. * The odds are you want to use - * {@link com.google.gwt.uibinder.elementparsers.HtmlInterpreter} - * for an HTML value, or - * {@link com.google.gwt.uibinder.elementparsers.TextInterpreter} + * {@link com.google.gwt.uibinder.elementparsers.HtmlInterpreter} for an HTML + * value, or {@link com.google.gwt.uibinder.elementparsers.TextInterpreter} * for text. - * + * * @param interpreter Called for each element, expected to return a string * replacement for it, or null if it should be left as is */ - public String consumeInnerHtml(Interpreter<String> interpreter) - throws UnableToCompleteException { + public String consumeInnerHtml(Interpreter<String> interpreter) throws UnableToCompleteException { if (interpreter == null) { throw new NullPointerException("interpreter must not be null"); } @@ -458,26 +445,25 @@ * This call requires an interpreter to make sense of any special children. * The odds are you want to use * {@link com.google.gwt.uibinder.elementparsers.TextInterpreter} - * + * * @throws UnableToCompleteException If any elements present are not consumed * by the interpreter */ - public String consumeInnerTextEscapedAsHtmlStringLiteral( - Interpreter<String> interpreter) throws UnableToCompleteException { + public String consumeInnerTextEscapedAsHtmlStringLiteral(Interpreter<String> interpreter) + throws UnableToCompleteException { if (interpreter == null) { throw new NullPointerException("interpreter must not be null"); } StringBuffer buf = new StringBuffer(); - GetEscapedInnerTextVisitor.getEscapedInnerText(elem, buf, interpreter, - provider); + GetEscapedInnerTextVisitor.getEscapedInnerText(elem, buf, interpreter, provider); // Make sure there are no children left but empty husks for (XMLElement child : consumeChildElementsNoEmptyCheck()) { if (child.hasChildNodes() || child.getAttributeCount() > 0) { logger.die(this, "Illegal child %s in a text-only context. " - + "Perhaps you are trying to use unescaped HTML " - + "where text is required, as in a HasText widget?", child); + + "Perhaps you are trying to use unescaped HTML " + + "where text is required, as in a HasText widget?", child); } } @@ -487,17 +473,15 @@ /** * Convenience method for parsing the named attribute as a CSS length value. - * + * * @return a (double, Unit) pair literal, an expression that will evaluate to * such a pair in the generated code, or null if there is no such * attribute - * + * * @throws UnableToCompleteException on unparseable value */ - public String consumeLengthAttribute(String name) - throws UnableToCompleteException { - return consumeAttributeWithDefault(name, null, new JType[]{ - getDoubleType(), getUnitType()}); + public String consumeLengthAttribute(String name) throws UnableToCompleteException { + return consumeAttributeWithDefault(name, null, new JType[]{getDoubleType(), getUnitType()}); } /** @@ -517,7 +501,7 @@ * Consumes the named attribute and parses it to an unparsed, unescaped array * of Strings. The strings in the attribute may be comma or space separated * (or a mix of both). - * + * * @return array of String, empty if the attribute was not set. */ public String[] consumeRawArrayAttribute(String name) { @@ -532,7 +516,7 @@ /** * Consumes the given attribute and returns its trimmed value, or null if it * was unset. The returned string is not escaped. - * + * * @param name the attribute's full name (including prefix) * @return the attribute's value, or "" */ @@ -548,7 +532,7 @@ /** * Consumes the given attribute and returns its trimmed value, or the given * default value if it was unset. The returned string is not escaped. - * + * * @param name the attribute's full name (including prefix) * @param defaultValue the value to return if the attribute was unset * @return the attribute's value, or defaultValue @@ -565,7 +549,7 @@ * Consumes the given required attribute as a literal or field reference. The * types parameters are required to determine how the value is parsed and * validated. - * + * * @param name the attribute's full name (including prefix) * @param types the type(s) this attribute is expected to provide * @return the attribute's value as a Java expression @@ -594,72 +578,68 @@ /** * Convenience method for parsing the named required attribute as a double * value or reference. - * + * * @return a double literal, an expression that will evaluate to a double * value in the generated code - * + * * @throws UnableToCompleteException on unparseable value, or if the attribute * is empty or unspecified */ - public String consumeRequiredDoubleAttribute(String name) - throws UnableToCompleteException { + public String consumeRequiredDoubleAttribute(String name) throws UnableToCompleteException { return consumeRequiredAttribute(name, getDoubleType()); } /** * Convenience method for parsing the named required attribute as a integer * value or reference. - * + * * @return a integer literal, an expression that will evaluate to a integer * value in the generated code - * + * * @throws UnableToCompleteException on unparseable value, or if the attribute * is empty or unspecified */ - public String consumeRequiredIntAttribute(String name) - throws UnableToCompleteException { + public String consumeRequiredIntAttribute(String name) throws UnableToCompleteException { return consumeRequiredAttribute(name, getIntType()); } /** * Consumes the named attribute, or dies if it is missing. */ - public String consumeRequiredRawAttribute(String name) - throws UnableToCompleteException { + public String consumeRequiredRawAttribute(String name) throws UnableToCompleteException { String value = consumeRawAttribute(name); if (value == null) { failRequired(name); } return value; } - + /** - * Convenience method for parsing the named attribute as a - * {@link com.google.gwt.safehtml.shared.SafeHtml SafeHtml} value or reference. - * - * @return an expression that will evaluate to a - * {@link com.google.gwt.safehtml.shared.SafeHtml SafeHtml} value in - * the generated code, or null if there is no such attribute - * @throws UnableToCompleteException on unparseable value - */ - public String consumeSafeHtmlAttribute(String name) - throws UnableToCompleteException { + * Convenience method for parsing the named attribute as a + * {@link com.google.gwt.safehtml.shared.SafeHtml SafeHtml} value or + * reference. + * + * @return an expression that will evaluate to a + * {@link com.google.gwt.safehtml.shared.SafeHtml SafeHtml} value in + * the generated code, or null if there is no such attribute + * @throws UnableToCompleteException on unparseable value + */ + public String consumeSafeHtmlAttribute(String name) throws UnableToCompleteException { return consumeAttribute(name, getSafeHtmlType()); } + /** * Consumes a single child element, ignoring any text nodes and throwing an * exception if no child is found, or more than one child element is found. - * + * * @throws UnableToCompleteException on no children, or too many */ - public XMLElement consumeSingleChildElement() - throws UnableToCompleteException { + public XMLElement consumeSingleChildElement() throws UnableToCompleteException { XMLElement ret = null; for (XMLElement child : consumeChildElements()) { if (ret != null) { - logger.die(this, - "Element may only contain a single child element, but " - + "found %s and %s.", ret, child); + logger.die(this, "Element may only contain a single child element, but " + + "found %s and %s.", ret, child); } ret = child; @@ -676,12 +656,11 @@ * Consumes the named attribute and parses it to an array of String * expressions. The strings in the attribute may be comma or space separated * (or a mix of both). - * + * * @return array of String expressions, empty if the attribute was not set. * @throws UnableToCompleteException on unparseable value */ - public String[] consumeStringArrayAttribute(String name) - throws UnableToCompleteException { + public String[] consumeStringArrayAttribute(String name) throws UnableToCompleteException { AttributeParser parser = attributeParsers.get(getStringType()); String[] strings = consumeRawArrayAttribute(name); @@ -700,20 +679,19 @@ /** * Convenience method for parsing the named attribute as a String value or * reference. - * + * * @return an expression that will evaluate to a String value in the generated * code, or null if there is no such attribute * @throws UnableToCompleteException on unparseable value */ - public String consumeStringAttribute(String name) - throws UnableToCompleteException { + public String consumeStringAttribute(String name) throws UnableToCompleteException { return consumeAttribute(name, getStringType()); } /** * Convenience method for parsing the named attribute as a String value or * reference. - * + * * @return an expression that will evaluate to a String value in the generated * code, or the given defaultValue if there is no such attribute * @throws UnableToCompleteException on unparseable value @@ -729,7 +707,7 @@ * <p> * You probably want to use * {@link #consumeInnerTextEscapedAsHtmlStringLiteral} instead. - * + * * @return the text * @throws UnableToCompleteException if it held anything other than text nodes */ @@ -738,8 +716,7 @@ if (children.getLength() < 1) { return ""; } - if (children.getLength() > 1 - || Node.TEXT_NODE != children.item(0).getNodeType()) { + if (children.getLength() > 1 || Node.TEXT_NODE != children.item(0).getNodeType()) { logger.die(this, "Element must contain only text"); } Text t = (Text) children.item(0); @@ -751,13 +728,12 @@ * remember to traverse them in reverse. */ public XMLAttribute getAttribute(int i) { - return new XMLAttribute(XMLElement.this, - (Attr) elem.getAttributes().item(i)); + return new XMLAttribute(XMLElement.this, (Attr) elem.getAttributes().item(i)); } /** * Get the attribute with the given name. - * + * * @return the attribute, or null if there is none of that name */ public XMLAttribute getAttribute(String name) { @@ -855,8 +831,7 @@ private Iterable<XMLElement> consumeChildElementsNoEmptyCheck() { try { - Iterable<XMLElement> rtn = consumeChildElements(new NoBrainInterpeter<Boolean>( - true)); + Iterable<XMLElement> rtn = consumeChildElements(new NoBrainInterpeter<Boolean>(true)); return rtn; } catch (UnableToCompleteException e) { throw new RuntimeException("Impossible exception", e); @@ -930,7 +905,7 @@ } return safeHtmlType; } - + private JType getStringType() { if (stringType == null) { stringType = oracle.findType(String.class.getCanonicalName());