List of usage examples for org.apache.commons.digester AbstractObjectCreationFactory AbstractObjectCreationFactory
AbstractObjectCreationFactory
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 ww w . j a va2 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); }
From source file:org.eclipse.wb.internal.core.model.description.helpers.ComponentDescriptionHelper.java
/** * Adds {@link Rule}'s for parsing {@link CreationDescription}'s. *///from w w w . j a v a2s .c om private static void addCreationRules(Digester digester, final ILoadingContext context, String basePattern, String setCreationMethod) { digester.addFactoryCreate(basePattern, new AbstractObjectCreationFactory() { @Override public Object createObject(Attributes attributes) throws Exception { ComponentDescription componentDescription = (ComponentDescription) getDigester().peek(); // prepare creation String id = attributes.getValue("id"); String name = attributes.getValue("name"); CreationDescription creation = new CreationDescription(componentDescription, id, name); // set optional specific icon if (id != null) { Class<?> componentClass = componentDescription.getComponentClass(); String suffix = "_" + id; creation.setIcon(DescriptionHelper.getIconImage(context, componentClass, suffix)); } // OK, configured creation return creation; } }); digester.addSetNext(basePattern, setCreationMethod); // description { String pattern = basePattern + "/description"; digester.addCallMethod(pattern, "setDescription", 1); digester.addCallParam(pattern, 0); } // source { String pattern = basePattern + "/source"; digester.addCallMethod(pattern, "setSource", 1); digester.addCallParam(pattern, 0); } // invocation { String pattern = basePattern + "/invocation"; digester.addRule(pattern, new ObjectCreateRule(CreationInvocationDescription.class)); digester.addRule(pattern, new SetListedPropertiesRule(new String[] { "signature" })); // arguments digester.addCallMethod(pattern, "setArguments", 1); digester.addCallParam(pattern, 0); // add digester.addSetNext(pattern, "addInvocation"); } // untyped parameters { String pattern = basePattern + "/parameter"; digester.addCallMethod(pattern, "addParameter", 2); digester.addCallParam(pattern, 0, "name"); digester.addCallParam(pattern, 1); } }
From source file:org.eclipse.wb.internal.core.xml.model.description.ComponentDescriptionHelper.java
/** * Adds {@link Rule}'s for parsing {@link CreationDescription}'s. */// www . j ava 2 s . com private static void addCreationRules(Digester digester, final EditorContext context, String basePattern, String setCreationMethod) { digester.addFactoryCreate(basePattern, new AbstractObjectCreationFactory() { @Override public Object createObject(Attributes attributes) throws Exception { ComponentDescription componentDescription = (ComponentDescription) getDigester().peek(); // prepare creation String id = attributes.getValue("id"); String name = attributes.getValue("name"); CreationDescription creation = new CreationDescription(componentDescription, id, name); // set optional specific icon if (id != null) { Class<?> componentClass = componentDescription.getComponentClass(); String suffix = "_" + id; Image icon = getIcon(context, componentClass, suffix); creation.setIcon(icon); } // OK, configured creation return creation; } }); digester.addSetNext(basePattern, setCreationMethod); // description { String pattern = basePattern + "/description"; digester.addCallMethod(pattern, "setDescription", 1); digester.addCallParam(pattern, 0); } // attribute { String pattern = basePattern + "/x-attribute"; digester.addFactoryCreate(pattern, new AbstractObjectCreationFactory() { @Override public Object createObject(Attributes attributes) throws Exception { String space = attributes.getValue("ns"); String name = attributes.getValue("name"); String value = attributes.getValue("value"); return new CreationAttributeDescription(space, name, value); } }); digester.addSetNext(pattern, "addAttribute"); } // content { String pattern = basePattern + "/x-content"; digester.addCallMethod(pattern, "setContent", 1); digester.addCallParam(pattern, 0); } // untyped parameters { String pattern = basePattern + "/parameter"; digester.addCallMethod(pattern, "addParameter", 2); digester.addCallParam(pattern, 0, "name"); digester.addCallParam(pattern, 1); } }
From source file:org.kineticsystem.commons.data.model.parser.conversions.ConversionsParser.java
/** Default constructor. */ public ConversionsParser() { // Instantiate the parser to read the xml file. digester = new Digester(); digester.setValidating(false);//from w w w . j av a 2 s. c o m // Configure the parser. final AbstractObjectCreationFactory eventFactory = new AbstractObjectCreationFactory() { public Object createObject(Attributes attributes) throws Exception { String typeAttr = attributes.getValue("type"); String x = attributes.getValue("x"); String y = attributes.getValue("y"); int type = ActiveListEvent.INTERVAL_ADDED; if (typeAttr.equals("add")) { type = ActiveListEvent.INTERVAL_ADDED; } else if (typeAttr.equals("del")) { type = ActiveListEvent.INTERVAL_REMOVED; } else if (typeAttr.equals("mod")) { type = ActiveListEvent.CONTENTS_CHANGED; } ActiveListEvent event = new ActiveListEvent(this); event.setType(type); event.setX(Integer.parseInt(x)); event.setY(Integer.parseInt(y)); return event; } }; digester.addObjectCreate("document", ConversionsDocument.class); digester.addObjectCreate("document/conversions", Conversions.class); digester.addObjectCreate("document/conversions/conversion", Conversion.class); digester.addObjectCreate("document/conversions/conversion/input-sequence", EventSequence.class); digester.addObjectCreate("document/conversions/conversion/output-sequence", EventSequence.class); digester.addFactoryCreate("document/conversions/conversion/input-sequence/event", eventFactory); digester.addFactoryCreate("document/conversions/conversion/output-sequence/event", eventFactory); digester.addSetNext("document/conversions", "setConversions"); digester.addSetNext("document/conversions/conversion/input-sequence/event", "add"); digester.addSetNext("document/conversions/conversion/output-sequence/event", "add"); digester.addSetNext("document/conversions/conversion/input-sequence", "setInputSequence"); digester.addSetNext("document/conversions/conversion/output-sequence", "setOutputSequence"); digester.addSetNext("document/conversions/conversion", "add"); }