List of usage examples for org.apache.commons.digester SetPropertiesRule SetPropertiesRule
public SetPropertiesRule(String[] attributeNames, String[] propertyNames)
Constructor allows attribute->property mapping to be overriden.
Two arrays are passed in.
From source file:com.googlecode.osde.internal.gadgets.parser.GadgetXMLParser.java
protected void initialize(Digester digester) { digester.addRule("Module", new ObjectCreateRule(Module.class)); digester.addFactoryCreate("Module/ModulePrefs", new ObjectFactory(Module.ModulePrefs.class)); digester.addRule("Module/ModulePrefs", new SetNextRule("setModulePrefs")); digester.addRule("*/Param", new ObjectCreateRule(Param.class)); digester.addRule("*/Param", new SetPropertiesRule("name", "name")); digester.addRule("*/Param", new CallMethodRule("setValue", 0)); digester.addRule("*/Param", new SetNextRule("addParam")); digester.addFactoryCreate("Module/ModulePrefs/Require", new ObjectFactory(Module.ModulePrefs.Require.class)); digester.addRule("Module/ModulePrefs/Require", new SetNextRule("addRequire")); digester.addFactoryCreate("Module/ModulePrefs/Optional", new ObjectFactory(Module.ModulePrefs.Optional.class)); digester.addRule("Module/ModulePrefs/Optional", new SetNextRule("addOptional")); digester.addFactoryCreate("Module/ModulePrefs/Icon", new ObjectFactory(Module.ModulePrefs.Icon.class)); digester.addRule("Module/ModulePrefs/Icon", new CallMethodRule("setValue", 0)); digester.addRule("Module/ModulePrefs/Icon", new SetNextRule("addIcon")); digester.addFactoryCreate("Module/ModulePrefs/Link", new ObjectFactory(Module.ModulePrefs.Link.class)); digester.addRule("Module/ModulePrefs/Link", new SetNextRule("addLink")); digester.addFactoryCreate("Module/ModulePrefs/Locale", new ObjectFactory(Module.ModulePrefs.Locale.class)); digester.addRule("Module/ModulePrefs/Locale", new SetNextRule("addLocale")); digester.addFactoryCreate("Module/ModulePrefs/Locale/msg", new ObjectFactory(MessageBundle.Msg.class)); digester.addRule("Module/ModulePrefs/Locale/msg", new CallMethodRule("setContent", 0)); digester.addRule("Module/ModulePrefs/Locale/msg", new SetNextRule("addInlineMessage")); digester.addFactoryCreate("Module/ModulePrefs/OAuth", new ObjectFactory(Module.ModulePrefs.OAuth.class)); digester.addRule("Module/ModulePrefs/OAuth", new SetNextRule("addOAuth")); digester.addFactoryCreate("Module/ModulePrefs/OAuth/Service", new ObjectFactory(Module.ModulePrefs.OAuth.Service.class)); digester.addRule("Module/ModulePrefs/OAuth/Service", new SetNextRule("addService")); digester.addFactoryCreate("Module/ModulePrefs/OAuth/Service/Request", new ObjectFactory(Module.ModulePrefs.OAuth.Service.Request.class)); digester.addRule("Module/ModulePrefs/OAuth/Service/Request", new SetNextRule("setRequest")); digester.addFactoryCreate("Module/ModulePrefs/OAuth/Service/Access", new ObjectFactory(Module.ModulePrefs.OAuth.Service.Access.class)); digester.addRule("Module/ModulePrefs/OAuth/Service/Access", new SetNextRule("setAccess")); digester.addFactoryCreate("Module/ModulePrefs/OAuth/Service/Authorization", new ObjectFactory(Module.ModulePrefs.OAuth.Service.Authorization.class)); digester.addRule("Module/ModulePrefs/OAuth/Service/Authorization", new SetNextRule("setAuthorization")); digester.addFactoryCreate("Module/ModulePrefs/Preload", new ObjectFactory(Module.ModulePrefs.Preload.class)); digester.addRule("Module/ModulePrefs/Preload", new SetNextRule("addPreload")); digester.addFactoryCreate("Module/UserPref", new ObjectFactory(Module.UserPref.class)); digester.addRule("Module/UserPref", new SetNextRule("addUserPref")); digester.addFactoryCreate("Module/UserPref/EnumValue", new ObjectFactory(Module.UserPref.EnumValue.class)); digester.addRule("Module/UserPref/EnumValue", new SetNextRule("addEnumValue")); digester.addFactoryCreate("Module/Content", new ObjectFactory(Module.Content.class)); digester.addRule("Module/Content", new CallMethodRule("setValue", 0)); digester.addRule("Module/Content", new SetNextRule("addContent")); }
From source file:net.sf.jasperreports.engine.xml.JRPrintXmlLoader.java
/** * *//* ww w . j av a 2 s. com*/ protected JRXmlDigester prepareDigester() throws ParserConfigurationException, SAXException { JRXmlDigester digester = new JRXmlDigester(createParser()); // use a classloader that resolves both JR classes and classes from the context classloader CompositeClassloader digesterClassLoader = new CompositeClassloader(JRPrintXmlLoader.class.getClassLoader(), Thread.currentThread().getContextClassLoader()); digester.setClassLoader(digesterClassLoader); digester.setNamespaceAware(true); digester.setRuleNamespaceURI(JRXmlConstants.JASPERPRINT_NAMESPACE); digester.push(this); //digester.setDebug(3); digester.setErrorHandler(this); digester.setValidating(true); /* */ digester.addFactoryCreate("jasperPrint", JasperPrintFactory.class.getName()); digester.addSetNext("jasperPrint", "setJasperPrint", JasperPrint.class.getName()); /* */ digester.addFactoryCreate("*/property", JRPropertyFactory.class.getName()); digester.addCallMethod("*/property", "setValue", 0); /* */ digester.addFactoryCreate("jasperPrint/origin", JROriginFactory.class.getName()); digester.addSetNext("jasperPrint/origin", "addOrigin", JROrigin.class.getName()); /* */ digester.addFactoryCreate("jasperPrint/reportFont", JRStyleFactory.class.getName()); digester.addSetNext("jasperPrint/reportFont", "addStyle", JRStyle.class.getName()); /* */ digester.addFactoryCreate("jasperPrint/style", JRPrintStyleFactory.class.getName()); digester.addSetNext("jasperPrint/style", "addStyle", JRStyle.class.getName()); /* */ digester.addFactoryCreate("*/style/pen", JRPenFactory.Style.class.getName()); /* */ digester.addFactoryCreate("*/bookmark", PrintBookmarkFactory.class.getName()); digester.addSetNext("*/bookmark", "addBookmark", PrintBookmark.class.getName()); /* */ digester.addFactoryCreate("jasperPrint/part", PrintPartFactory.class.getName()); /* */ digester.addFactoryCreate("jasperPrint/page", JRPrintPageFactory.class.getName()); digester.addSetNext("jasperPrint/page", "addPage", JRPrintPage.class.getName()); /* */ digester.addFactoryCreate("*/line", JRPrintLineFactory.class.getName()); digester.addSetNext("*/line", "addElement", JRPrintElement.class.getName()); /* */ digester.addFactoryCreate("*/reportElement", JRPrintElementFactory.class.getName()); /* */ digester.addFactoryCreate("*/graphicElement", JRPrintGraphicElementFactory.class.getName()); /* */ digester.addFactoryCreate("*/pen", JRPenFactory.class.getName()); /* */ digester.addFactoryCreate("*/rectangle", JRPrintRectangleFactory.class.getName()); digester.addSetNext("*/rectangle", "addElement", JRPrintElement.class.getName()); /* */ digester.addFactoryCreate("*/ellipse", JRPrintEllipseFactory.class.getName()); digester.addSetNext("*/ellipse", "addElement", JRPrintElement.class.getName()); /* */ digester.addFactoryCreate("*/image", JRPrintImageFactory.class.getName()); digester.addSetNext("*/image", "addElement", JRPrintElement.class.getName()); /* */ digester.addFactoryCreate("*/box", JRBoxFactory.class.getName()); /* */ digester.addFactoryCreate("*/box/pen", JRPenFactory.Box.class.getName()); digester.addFactoryCreate("*/box/topPen", JRPenFactory.Top.class.getName()); digester.addFactoryCreate("*/box/leftPen", JRPenFactory.Left.class.getName()); digester.addFactoryCreate("*/box/bottomPen", JRPenFactory.Bottom.class.getName()); digester.addFactoryCreate("*/box/rightPen", JRPenFactory.Right.class.getName()); /* */ digester.addFactoryCreate("*/paragraph", JRParagraphFactory.class.getName()); digester.addFactoryCreate("*/paragraph/tabStop", TabStopFactory.class.getName()); digester.addSetNext("*/paragraph/tabStop", "addTabStop", TabStop.class.getName()); /* */ digester.addFactoryCreate("*/image/imageSource", JRPrintImageSourceFactory.class.getName()); digester.addCallMethod("*/image/imageSource", "setImageSource", 0); /* */ digester.addFactoryCreate("*/text", JRPrintTextFactory.class.getName()); digester.addSetNext("*/text", "addElement", JRPrintElement.class.getName()); SetNestedPropertiesRule textRule = new SetNestedPropertiesRule(new String[] { "textContent", "textTruncateSuffix", "reportElement", "box", "font", JRXmlConstants.ELEMENT_lineBreakOffsets }, new String[] { "text", "textTruncateSuffix" }); textRule.setTrimData(false); textRule.setAllowUnknownChildElements(true); digester.addRule("*/text", textRule); digester.addRule("*/text/textContent", new SetPropertiesRule(JRXmlConstants.ATTRIBUTE_truncateIndex, "textTruncateIndex")); /* */ digester.addFactoryCreate("*/text/font", JRPrintFontFactory.class.getName()); digester.addSetNext("*/text/font", "setFont", JRFont.class.getName()); digester.addRule("*/text/" + JRXmlConstants.ELEMENT_lineBreakOffsets, new TextLineBreakOffsetsRule()); addFrameRules(digester); addHyperlinkParameterRules(digester); addGenericElementRules(digester); return digester; }
From source file:ca.sqlpower.architect.ProjectLoader.java
protected Digester setupDigester() throws ParserConfigurationException, SAXException { Digester d = new Digester(new UnescapingSaxParser()); final ArchitectSession messageOwner = (siblingSession == null ? session : siblingSession); d.setValidating(false);//from w ww .j av a2 s. co m d.push(session); d.addRule("architect-enterprise-project", new Rule() { @Override public void begin(String namespace, String name, Attributes attributes) throws Exception { UserPrompter loadingWarningPrompt = messageOwner.createUserPrompter( "This file contains an Enterprise project and can only\n" + "be opened in the Architect Enterprise Edition.", UserPromptType.BOOLEAN, UserPromptOptions.OK_CANCEL, UserPromptResponse.CANCEL, UserPromptResponse.CANCEL, "Get Enterprise", "Cancel"); UserPromptResponse upr = loadingWarningPrompt.promptUser(); if (upr == UserPromptResponse.OK) { try { BrowserUtil.launch("http://www.sqlpower.ca/page/architect-e"); } catch (IOException e) { throw new DigesterCancelledException(); } } throw new DigesterCancelledException(); } }); //app version number d.addRule("architect-project", new Rule() { @Override public void begin(String namespace, String name, Attributes attributes) throws Exception { fileVersion = attributes.getValue("appversion"); String loadingMessage; try { if (fileVersion == null) { loadingMessage = "The version of the file cannot be found."; fileVersion = "0"; } else if (ArchitectVersion.APP_FULL_VERSION.compareTo(new ArchitectVersion(fileVersion)) < 0) { loadingMessage = "This file was last saved with a newer version.\n" + "Loading with an older version may cause data loss."; } else { return; } } catch (Exception e) { loadingMessage = "The version of the file cannot be understood."; } UserPrompter loadingWarningPrompt = messageOwner.createUserPrompter( loadingMessage + "\nDo you wish to try and open the file?", UserPromptType.BOOLEAN, UserPromptOptions.OK_NOTOK_CANCEL, UserPromptResponse.OK, UserPromptResponse.OK, "Try loading", "Upgrade...", "Cancel"); UserPromptResponse response = loadingWarningPrompt.promptUser(); if (response == UserPromptResponse.OK) { //continue to try loading } else if (response == UserPromptResponse.NOT_OK) { BrowserUtil.launch(SPSUtils.SQLP_ARCHITECT_URL); throw new DigesterCancelledException(); } else if (response == UserPromptResponse.CANCEL) { throw new DigesterCancelledException(); } } }); // project name d.addCallMethod("architect-project/project-name", "setName", 0); // argument is element body text // source DB connection specs (deprecated in favour of project-data-sources; this is only here for backward compatibility) DBCSFactory dbcsFactory = new DBCSFactory(); d.addFactoryCreate("architect-project/project-connection-specs/dbcs", dbcsFactory); d.addSetProperties("architect-project/project-connection-specs/dbcs", new String[] { "connection-name", "driver-class", "jdbc-url", "user-name", "user-pass", "sequence-number", "single-login" }, new String[] { "displayName", "driverClass", "url", "user", "pass", "seqNo", "singleLogin" }); d.addCallMethod("architect-project/project-connection-specs/dbcs", "setName", 0); // these instances get picked out of the dbcsIdMap by the SQLDatabase factory // project data sources (replaces project connection specs) d.addFactoryCreate("architect-project/project-data-sources/data-source", dbcsFactory); d.addCallMethod("architect-project/project-data-sources/data-source/property", "put", 2); d.addCallParam("architect-project/project-data-sources/data-source/property", 0, "key"); d.addCallParam("architect-project/project-data-sources/data-source/property", 1, "value"); // for the project-data-sources, these instances get picked out of the dbcsIdMap by the SQLDatabase factory // but for the create kettle job settings, we add them explicitly // source database hierarchy d.addObjectCreate("architect-project/source-databases", LinkedList.class); d.addSetNext("architect-project/source-databases", "setSourceDatabaseList"); SQLDatabaseFactory dbFactory = new SQLDatabaseFactory(); d.addFactoryCreate("architect-project/source-databases/database", dbFactory); d.addSetProperties("architect-project/source-databases/database"); d.addSetNext("architect-project/source-databases/database", "add"); d.addObjectCreate("architect-project/source-databases/database/catalog", SQLCatalog.class); d.addSetProperties("architect-project/source-databases/database/catalog"); d.addSetNext("architect-project/source-databases/database/catalog", "addChild"); SQLSchemaFactory schemaFactory = new SQLSchemaFactory(); d.addFactoryCreate("*/schema", schemaFactory); d.addSetProperties("*/schema"); d.addSetNext("*/schema", "addChild"); SQLTableFactory tableFactory = new SQLTableFactory(); d.addFactoryCreate("*/table", tableFactory); d.addSetProperties("*/table"); d.addCallMethod("*/remarks", "setRemarks", 0); d.addSetNext("*/table", "addChild"); d.addFactoryCreate("*/folder", new SQLFolderFactory()); SQLColumnFactory columnFactory = new SQLColumnFactory(); d.addFactoryCreate("*/column", columnFactory); d.addSetProperties("*/column"); d.addCallMethod("*/remarks", "setRemarks", 0); // this needs to be manually set last to prevent generic types // from overwriting database specific types // Old name (it has been updated to sourceDataTypeName) d.addCallMethod("*/column", "setSourceDataTypeName", 1); d.addCallParam("*/column", 0, "sourceDBTypeName"); // new name d.addCallMethod("*/column", "setSourceDataTypeName", 1); d.addCallParam("*/column", 0, "sourceDataTypeName"); d.addSetNext("*/column", "addChild"); SQLRelationshipFactory relationshipFactory = new SQLRelationshipFactory(); d.addFactoryCreate("*/relationship", relationshipFactory); d.addSetProperties("*/relationship"); // the factory adds the relationships to the correct PK and FK tables ColumnMappingFactory columnMappingFactory = new ColumnMappingFactory(); d.addFactoryCreate("*/column-mapping", columnMappingFactory); d.addSetProperties("*/column-mapping"); d.addSetNext("*/column-mapping", "addChild"); SQLIndexFactory indexFactory = new SQLIndexFactory(); d.addFactoryCreate("*/index", indexFactory); d.addSetProperties("*/index"); d.addSetNext("*/index", "addChild"); SQLIndexColumnFactory indexColumnFactory = new SQLIndexColumnFactory(); d.addFactoryCreate("*/index-column", indexColumnFactory); d.addSetProperties("*/index-column"); d.addSetNext("*/index-column", "addChild"); SQLExceptionFactory exceptionFactory = new SQLExceptionFactory(); d.addFactoryCreate("*/sql-exception", exceptionFactory); d.addSetProperties("*/sql-exception"); d.addSetNext("*/sql-exception", "setChildrenInaccessibleReason"); TargetDBFactory targetDBFactory = new TargetDBFactory(); // target database hierarchy d.addFactoryCreate("architect-project/target-database", targetDBFactory); d.addSetProperties("architect-project/target-database"); DDLGeneratorFactory ddlgFactory = new DDLGeneratorFactory(); d.addFactoryCreate("architect-project/ddl-generator", ddlgFactory); d.addSetProperties("architect-project/ddl-generator"); d.addSetNext("architect-project/ddl-generator", "setDDLGenerator"); LiquibaseSettingsFactory lbFactory = new LiquibaseSettingsFactory(); d.addFactoryCreate("architect-project/liquibase-settings", lbFactory); d.addSetProperties("architect-project/liquibase-settings"); d.addSetNext("architect-project/liquibase-settings", "setLiquibaseSettings"); ProfileManagerFactory profileManagerFactory = new ProfileManagerFactory(); d.addFactoryCreate("*/profiles", profileManagerFactory); d.addSetProperties("*/profiles"); /* * Backward compatibility: the table and column profiles used to be * stored as siblings to each other, with the parent of a column result * being the last table result that was read. */ ProfileResultFactory profileResultFactory = new ProfileResultFactory(); d.addFactoryCreate("*/profiles/profile-result", profileResultFactory); /* * backward compatibility: the exception property used to be a boolean, and now it's an actual exception. * this causes an IllegalArgumentException when parsing old files. * this workaround tells the digester not to auto-map the exception property. */ d.addRule("*/profiles/profile-result", new SetPropertiesRule(new String[] { "exception" }, new String[] {})); d.addSetNext("*/profiles/profile-result", "loadResult"); d.addFactoryCreate("*/profiles/table-profile-result", new TableProfileResultFactory()); d.addRule("*/profiles/table-profile-result", new SetPropertiesRule(new String[] { "exception" }, new String[] {})); d.addSetNext("*/profiles/table-profile-result", "addTableProfileResult"); d.addFactoryCreate("*/profiles/table-profile-result/column-profile-result", new ColumnProfileResultFactory()); d.addRule("*/profiles/table-profile-result/column-profile-result", new SetPropertiesRule(new String[] { "exception" }, new String[] {})); d.addSetNext("*/profiles/table-profile-result/column-profile-result", "addColumnProfileResult"); ProfileResultValueFactory profileResultValueFactory = new ProfileResultValueFactory(); d.addFactoryCreate("*/profiles/table-profile-result/column-profile-result/avgValue", profileResultValueFactory); d.addSetNext("*/profiles/table-profile-result/column-profile-result/avgValue", "setAvgValue"); d.addFactoryCreate("*/profiles/table-profile-result/column-profile-result/minValue", profileResultValueFactory); d.addSetNext("*/profiles/table-profile-result/column-profile-result/minValue", "setMinValue"); d.addFactoryCreate("*/profiles/table-profile-result/column-profile-result/maxValue", profileResultValueFactory); d.addSetNext("*/profiles/table-profile-result/column-profile-result/maxValue", "setMaxValue"); ProfileResultTopNValueFactory topNValueFactory = new ProfileResultTopNValueFactory(); d.addFactoryCreate("*/profiles/table-profile-result/column-profile-result/topNvalue", topNValueFactory); d.addSetNext("*/profiles/table-profile-result/column-profile-result/topNvalue", "addValueCount"); FileFactory fileFactory = new FileFactory(); d.addFactoryCreate("*/file", fileFactory); d.addSetNext("*/file", "setFile"); return d; }
From source file:org.ajax4jsf.renderkit.compiler.HtmlCompiler.java
/** * Build custom rules for parse special tags and attributes. * For most tags, value can be in next forms ( for resource, preffixed with f: ): * <ul>/*from w w w. jav a 2 s. co m*/ * <li><b>value</b> as string or EL-expression</li> * <li><b>property</b> name for property of current component</li> * <li><b>baseSkin</b> name for property of base skin</li> * <li><b>skin</b> name for property of current skin</li> * <li><b>context</b> name for property of {@link TemplateContext} for trmplate encoding</li> * <li><b>default</b> use as value if main property <code>null</code></li> * </ul> * Supported : * <ul> * <li>Call renderer or utils method <f:call name='xxx' /></li> * <li>Call method parameter <f:parameter name='xxx' (value='....' | property='style' | baseSkin='paramName' | skin='paramName' | context='propertyName ) /></li> * <li>Encode plain text <f:verbatim [value='....' | property='style' | baseSkin='paramName' | skin='paramName' | context='propertyName ] >Some Text</f:text></li> * <li>Encode as text in HTML CSS parameter format <u:style name='background' (value='....' | property='style' | baseSkin='paramName' | skin='paramName' | context='propertyName )/></li> * <li>Get and encode resource <f:resource f:key='images/spacer.gif' [ ... any attributes ... ] /></li> * <li>Encode custom attribute <f:attribute name='style' (value='....' | property='style' | baseSkin='paramName' | skin='paramName' | context='propertyName ) [endorsed='true'] /></li> * <li>Template breakpoint <f:break name='xxxxx' /></li> * <li>Encode named facet <u:facet ( name='head | property='style' | baseSkin='paramName' | skin='paramName' | context='propertyName )' /></li> * <li>Encode children components for current <u:children /></li> * <li>Encode one child component for enclosed u:facet or u:children <u:child /'></li> * </ul> * @param digestr */ protected void setCustomRules(Digester digestr) { // Root element. not instantiate - already set by compile method. String pattern = NS_PREFIX + ROOT_TAG; digestr.addSetProperties(pattern); // call renderer method <f:call methodName='xxx' [methodParam='yyy'] /> pattern = ANY_PARENT + NS_PREFIX + CALL_TAG; digestr.addObjectCreate(pattern, MethodCallElement.class); digestr.addSetNext(pattern, CHILD_METHOD); digestr.addSetProperties(pattern); // for value of parent call renderer method <f:valueCall methodName='xxx' [methodParam='yyy'] /> pattern = ANY_PARENT + NS_PREFIX + VALUE_CALL_TAG; digestr.addObjectCreate(pattern, ValueMethodCallElement.class); digestr.addSetNext(pattern, CHILD_METHOD); digestr.addSetProperties(pattern); // call parameter <f:parapeter methodName='xxx' [methodParam='yyy'] /> // pattern = ANY_PARENT+NS_PREFIX+CALL_TAG+"/"+NS_PREFIX+CALL_PARAM_TAG; pattern = ANY_PARENT + NS_PREFIX + CALL_PARAM_TAG; digestr.addObjectCreate(pattern, MethodParameterElement.class); digestr.addSetNext(pattern, CHILD_PARAM_METHOD); digestr.addSetProperties(pattern); // Encode plain text <f:text>Some Text</f:text> pattern = ANY_PARENT + NS_PREFIX + VERBATUM_TAG; digestr.addObjectCreate(pattern, TextElement.class); digestr.addSetNext(pattern, CHILD_METHOD); digestr.addSetProperties(pattern); digestr.addBeanPropertySetter(pattern, "text"); // resource <f:resource f:key='images/spacer.gif' [f:data='...'] [ ... any attributes ... ] /> pattern = ANY_PARENT + NS_PREFIX + RESOURCE_TAG; digestr.addObjectCreate(pattern, ResourceElement.class); digestr.addSetNext(pattern, CHILD_METHOD); { Rule rule = new PutAttributesRule(digestr, new String[] { NS_PREFIX + "key", NS_PREFIX + "property", NS_PREFIX + "baseSkin", NS_PREFIX + "skin", NS_PREFIX + "context" }); digestr.addRule(pattern, rule); } { SetPropertiesRule rule = new SetPropertiesRule( new String[] { NS_PREFIX + "key", NS_PREFIX + "property", NS_PREFIX + "baseSkin", NS_PREFIX + "skin", NS_PREFIX + "context" }, new String[] { "value", "property", "baseSkin", "skin", "context" }); digestr.addRule(pattern, rule); } // custom attribute <f:attribute name='style' (value='....' | property='style' | skin='paramName' | call='methodName' | utilCall='methodName') [notNull='true'] /> pattern = ANY_PARENT + NS_PREFIX + ATTRIBUTE_TAG; digestr.addObjectCreate(pattern, AttributeElement.class); digestr.addSetNext(pattern, CHILD_METHOD); digestr.addSetProperties(pattern); // component clientId <f:id [f:required='true'] /> // breakpoint <f:break name="name"> pattern = ANY_PARENT + NS_PREFIX + BREAK_TAG; digestr.addObjectCreate(pattern, BreakPoint.class); digestr.addSetProperties(pattern); digestr.addSetNext(pattern, CHILD_METHOD); // conditional rendering <f:if then="true"> pattern = ANY_PARENT + NS_PREFIX + IF_TAG; digestr.addObjectCreate(pattern, IfElement.class); digestr.addSetProperties(pattern); digestr.addSetNext(pattern, CHILD_METHOD); // resources import <f:importResource src="..."> pattern = ANY_PARENT + NS_PREFIX + IMPORT_RESOURCE_TAG; digestr.addFactoryCreate(pattern, new AbstractObjectCreationFactory() { public Object createObject(Attributes attributes) throws Exception { if (attributes == null) { throw new IllegalArgumentException("Attributes set is null for " + IMPORT_RESOURCE_TAG + " element. Can not obtain required 'src' attribute!"); } String value = attributes.getValue("src"); if (value == null || value.length() == 0) { throw new IllegalArgumentException( "Missing required 'src' attribute for " + IMPORT_RESOURCE_TAG + " element!"); } return new ImportResourceElement(value); } }); digestr.addSetNext(pattern, CHILD_METHOD); // facet <u:insertFacet name="name"> pattern = ANY_PARENT + NS_UTIL_PREFIX + FACET_TAG; digestr.addObjectCreate(pattern, FacetElement.class); digestr.addSetProperties(pattern); digestr.addSetNext(pattern, CHILD_METHOD); // childrens <u:insertChildren> pattern = ANY_PARENT + NS_UTIL_PREFIX + CHILDREN_TAG; digestr.addObjectCreate(pattern, ChildrensElement.class); digestr.addSetNext(pattern, CHILD_METHOD); // { // Rule rule = new PutAttributesRule(digestr,new String[]{NS_PREFIX+"key",NS_PREFIX+"property",NS_PREFIX+"skin",NS_PREFIX+"context"}); // digestr.addRule(pattern,rule); // } { SetPropertiesRule rule = new SetPropertiesRule(new String[] { NS_PREFIX + "key", NS_PREFIX + "property", NS_PREFIX + "skin", NS_PREFIX + "context" }, new String[] { "value", "property", "skin", "context" }); digestr.addRule(pattern, rule); } // style(sheet) property <u:style> pattern = ANY_PARENT + NS_UTIL_PREFIX + STYLE_TAG; digestr.addObjectCreate(pattern, ClassElement.class); digestr.addSetProperties(pattern); digestr.addSetNext(pattern, CHILD_METHOD); // breakpoint <f:break name="name"> pattern = ANY_PARENT + NS_UTIL_PREFIX + CHILD_TAG; digestr.addObjectCreate(pattern, ChildElement.class); digestr.addSetProperties(pattern); digestr.addSetNext(pattern, CHILD_METHOD); //Selector element <u:selector></u:selector> pattern = ANY_PARENT + NS_UTIL_PREFIX + SELECTOR_TAG; digestr.addObjectCreate(pattern, SelectorElement.class); digestr.addSetProperties(pattern); digestr.addSetNext(pattern, CHILD_METHOD); }