<%@ jet package="org.geotools.xml.codegen.templates" imports="java.util.* org.eclipse.xsd.*" class="BindingConfigurationTemplate" %> <% Object[] arguments = (Object[])argument; XSDSchema schema = (XSDSchema)arguments[0]; List components = (List)arguments[1]; String ns = schema.getTargetNamespace(); Map pre2ns = schema.getQNamePrefixToNamespaceMap(); String prefix = null; for (Iterator itr = pre2ns.entrySet().iterator(); itr.hasNext();) { Map.Entry entry = (Map.Entry)itr.next(); if (entry.getValue().equals(ns)) { prefix = (String)entry.getKey(); break; } } List types = new ArrayList(); List elements = new ArrayList(); List attributes = new ArrayList(); for (Iterator itr = components.iterator(); itr.hasNext();) { XSDNamedComponent component = (XSDNamedComponent)itr.next(); if (component instanceof XSDTypeDefinition) { types.add(component); } else if (component instanceof XSDElementDeclaration) { elements.add(component); } else if (component instanceof XSDAttributeDeclaration) { attributes.add(component); } } %> import org.geotools.xml.BindingConfiguration; import org.picocontainer.MutablePicoContainer; /** * Binding configuration for the <%=schema.getTargetNamespace()%> schema. * * @generated */ public final class <%=prefix.toUpperCase()%>BindingConfiguration implements BindingConfiguration { /** * @generated modifiable */ public void configure(MutablePicoContainer container) { <% if (!types.isEmpty()) { %> //Types <% for (Iterator itr = types.iterator(); itr.hasNext();) { XSDTypeDefinition type = (XSDTypeDefinition)itr.next(); if (type.getName() == null) continue; String typeQName = prefix.toUpperCase()+"."+type.getName().toUpperCase(); String binding = type.getName().substring(0,1).toUpperCase() + type.getName().substring(1) + "Binding.class"; %> container.registerComponentImplementation(<%=typeQName%>,<%=binding%>); <% } } %> <% if (!elements.isEmpty()) { %> //Elements <% for (Iterator itr = elements.iterator(); itr.hasNext();) { XSDNamedComponent named = (XSDNamedComponent)itr.next(); if (named.getName() == null) continue; String nQName = prefix.toUpperCase()+"."+named.getName().toUpperCase(); String binding = named.getName().substring(0,1).toUpperCase() + named.getName().substring(1) + "Binding.class"; %> container.registerComponentImplementation(<%=nQName%>,<%=binding%>); <% } } %> <% if (!attributes.isEmpty()) { %> //Attributes <% for (Iterator itr = attributes.iterator(); itr.hasNext();) { XSDNamedComponent named = (XSDNamedComponent)itr.next(); if (named.getName() == null) continue; String nQName = prefix.toUpperCase()+"."+named.getName().toUpperCase(); String binding = named.getName().substring(0,1).toUpperCase() + named.getName().substring(1) + "Binding.class"; %> container.registerComponentImplementation(<%=nQName%>,<%=binding%>); <% } } %> } }