1 19 20 package org.netbeans.modules.web.jsf.impl.facesmodel; 21 22 import java.util.logging.Logger ; 23 import javax.xml.namespace.QName ; 24 import org.netbeans.modules.web.jsf.api.facesmodel.Converter; 25 import org.netbeans.modules.web.jsf.api.facesmodel.FacesConfig; 26 import org.netbeans.modules.web.jsf.api.facesmodel.JSFConfigComponent; 27 import org.netbeans.modules.web.jsf.api.facesmodel.JSFConfigComponentFactory; 28 import org.netbeans.modules.web.jsf.api.facesmodel.JSFConfigVisitor; 29 import org.netbeans.modules.web.jsf.api.facesmodel.JSFVersion; 30 import org.netbeans.modules.web.jsf.api.facesmodel.ManagedBean; 31 import org.netbeans.modules.web.jsf.api.facesmodel.NavigationCase; 32 import org.netbeans.modules.web.jsf.api.facesmodel.NavigationRule; 33 import org.netbeans.modules.web.jsf.impl.facesmodel.ConverterImpl; 34 import org.netbeans.modules.xml.xam.dom.AbstractDocumentComponent; 35 import org.w3c.dom.Element ; 36 37 41 public class JSFConfigComponentFactoryImpl implements JSFConfigComponentFactory { 42 43 private static final Logger LOGGER = Logger.getLogger(JSFConfigComponentFactoryImpl.class.getName()); 44 45 private final JSFConfigModelImpl model; 46 47 48 public JSFConfigComponentFactoryImpl(JSFConfigModelImpl model) { 49 this.model = model; 50 } 51 52 public JSFConfigComponent create(Element element, JSFConfigComponent context) { 53 LOGGER.fine( "Element: " + element.getLocalName() +", JSFConfigComponent: " + context); 54 JSFConfigComponent configComponent = null; 55 if (context == null){ 56 if (areSameQName(JSFConfigQNames.FACES_CONFIG, element)){ 57 configComponent = new FacesConfigImpl(model, element); 58 } 59 } else { 60 configComponent = new CreateVisitor().create(element, context); 61 } 62 return configComponent; 63 } 64 65 public FacesConfig createFacesConfig() { 66 return new FacesConfigImpl(model); 67 } 68 69 public ManagedBean createManagedBean() { 70 return new ManagedBeanImpl(model); 71 } 72 73 public NavigationRule createNavigationRule(){ 74 return new NavigationRuleImpl(model); 75 } 76 77 public NavigationCase createNavigationCase() { 78 return new NavigationCaseImpl(model); 79 } 80 81 public Converter createConverter() { 82 return new ConverterImpl(model); 83 } 84 85 public static boolean areSameQName(JSFConfigQNames jsfqname,Element element) { 86 QName qname = AbstractDocumentComponent.getQName(element); 87 boolean aresame = false; 88 JSFVersion version = JSFVersion.JSF_1_1; 89 if (element.getNamespaceURI() != null && element.getNamespaceURI().length()>0) 90 version = JSFVersion.JSF_1_2; 91 if (element.getNamespaceURI() != null){ 92 aresame = jsfqname.getQName(version).equals(qname); 93 } else { 94 aresame = jsfqname.getLocalName().equals(qname.getLocalPart()); 95 } 96 return aresame; 97 } 98 99 public static class CreateVisitor extends JSFConfigVisitor.Default { 100 Element element; 101 JSFConfigComponent created; 102 103 JSFConfigComponent create(Element element, JSFConfigComponent context) { 104 this.element = element; 105 context.accept(this); 106 return created; 107 } 108 109 private boolean isElementQName(JSFConfigQNames jsfqname) { 110 return areSameQName(jsfqname, element); 111 } 112 113 public void visit(FacesConfig context) { 114 115 if (isElementQName(JSFConfigQNames.MANAGED_BEAN)) { 116 created = new ManagedBeanImpl((JSFConfigModelImpl) context.getModel(), element); 117 } else if (isElementQName(JSFConfigQNames.NAVIGATION_RULE)){ 118 created = new NavigationRuleImpl((JSFConfigModelImpl) context.getModel(), element); 119 } else if (isElementQName(JSFConfigQNames.CONVERTER)){ 120 created = new ConverterImpl((JSFConfigModelImpl) context.getModel(), element); 121 } 122 } 123 124 public void visit(ManagedBean context) { 125 if (isElementQName(JSFConfigQNames.MANAGED_BEAN)) { 126 created = new ManagedBeanImpl((JSFConfigModelImpl)context.getModel(), element); 127 } 128 } 129 130 public void visit(NavigationRule context) { 131 if (isElementQName(JSFConfigQNames.NAVIGATION_CASE)) { 132 created = new NavigationCaseImpl((JSFConfigModelImpl)context.getModel(), element); 133 } 134 } 135 136 public void visit(Converter context){ 137 if (isElementQName(JSFConfigQNames.NAVIGATION_CASE)) { 138 created = new ConverterImpl((JSFConfigModelImpl)context.getModel(), element); 139 } 140 } 141 } 142 } 143 | Popular Tags |