/** * Return the schema type as a string for a given QName and Schema. The schema's * namespace resolver will be used to determine the prefix (if any) to use. * * @param schemaType * @param workingSchema * @return */ protected String getSchemaTypeString(QName schemaType, Schema workingSchema) { String schemaTypeString = schemaType.getLocalPart(); String uri = schemaType.getNamespaceURI(); String prefix = workingSchema.getNamespaceResolver().resolveNamespaceURI(uri); if (prefix == null && !areNamespacesEqual(uri, workingSchema.getDefaultNamespace())) { if (uri.equals(XMLConstants.SCHEMA_URL)) { prefix = workingSchema.getNamespaceResolver().generatePrefix(XMLConstants.SCHEMA_PREFIX); } else if (uri.equals(XMLConstants.SCHEMA_INSTANCE_URL)) { prefix = workingSchema.getNamespaceResolver().generatePrefix(XMLConstants.SCHEMA_INSTANCE_PREFIX); } else if (uri.equals(XMLConstants.REF_URL)) { prefix = workingSchema.getNamespaceResolver().generatePrefix(XMLConstants.REF_PREFIX); } else { prefix = workingSchema.getNamespaceResolver().generatePrefix(); } workingSchema.getNamespaceResolver().put(prefix, uri); } if (prefix != null) { schemaTypeString = prefix + XMLConstants.COLON + schemaTypeString; } return schemaTypeString; }
/** * Return the schema type as a string for a given QName and Schema. The schema's * namespace resolver will be used to determine the prefix (if any) to use. * * @param schemaType * @param workingSchema * @return */ protected String getSchemaTypeString(QName schemaType, Schema workingSchema) { String schemaTypeString = schemaType.getLocalPart(); String uri = schemaType.getNamespaceURI(); String prefix = workingSchema.getNamespaceResolver().resolveNamespaceURI(uri); if (prefix == null && !areNamespacesEqual(uri, workingSchema.getDefaultNamespace())) { if (uri.equals(javax.xml.XMLConstants.W3C_XML_SCHEMA_NS_URI)) { prefix = workingSchema.getNamespaceResolver().generatePrefix(Constants.SCHEMA_PREFIX); } else if (uri.equals(javax.xml.XMLConstants.W3C_XML_SCHEMA_INSTANCE_NS_URI)) { prefix = workingSchema.getNamespaceResolver().generatePrefix(Constants.SCHEMA_INSTANCE_PREFIX); } else if (uri.equals(Constants.REF_URL)) { prefix = workingSchema.getNamespaceResolver().generatePrefix(Constants.REF_PREFIX); } else { prefix = workingSchema.getNamespaceResolver().generatePrefix(); } workingSchema.getNamespaceResolver().put(prefix, uri); } if (prefix != null) { schemaTypeString = prefix + Constants.COLON + schemaTypeString; } return schemaTypeString; }
public String getPrefixForNamespace(Schema schema, String URI) { //add Import if necessary Schema referencedSchema = this.getSchemaForNamespace(URI); addImportIfRequired(schema, referencedSchema, URI); NamespaceResolver namespaceResolver = schema.getNamespaceResolver(); Enumeration keys = namespaceResolver.getPrefixes(); while (keys.hasMoreElements()) { String next = (String) keys.nextElement(); String nextUri = namespaceResolver.resolveNamespacePrefix(next); if (nextUri.equals(URI)) { return next; } } return null; }
public String getPrefixForNamespace(Schema schema, String URI) { //add Import if necessary Schema referencedSchema = this.getSchemaForNamespace(URI); addImportIfRequired(schema, referencedSchema, URI); NamespaceResolver namespaceResolver = schema.getNamespaceResolver(); Enumeration keys = namespaceResolver.getPrefixes(); while (keys.hasMoreElements()) { String next = (String) keys.nextElement(); String nextUri = namespaceResolver.resolveNamespacePrefix(next); if (nextUri.equals(URI)) { return next; } } return null; }
/** * Attempt to resolve the given URI to a prefix. If this is unsuccessful, one * will be generated and added to the resolver. * * @param URI * @param schema * @return */ public String getOrGeneratePrefixForNamespace(String URI, Schema schema) { String prefix = schema.getNamespaceResolver().resolveNamespaceURI(URI); if (prefix == null) { if (URI.equals(javax.xml.XMLConstants.W3C_XML_SCHEMA_NS_URI)) { prefix = schema.getNamespaceResolver().generatePrefix(Constants.SCHEMA_PREFIX); } else if (URI.equals(Constants.REF_URL)) { prefix = schema.getNamespaceResolver().generatePrefix(Constants.REF_PREFIX); if(!importExists(schema, URI, SWA_REF_IMPORT)){ Import schemaImport = new Import(); schemaImport.setSchemaLocation(SWA_REF_IMPORT); schemaImport.setNamespace(URI); schema.getImports().add(schemaImport); } } else { prefix = schema.getNamespaceResolver().generatePrefix(); } schema.getNamespaceResolver().put(prefix, URI); } return prefix; }
/** * Create and return a SimpleType for a given XMLDescriptor. * * @param desc * @param workingSchema * @return */ protected SimpleType buildSimpleType(Descriptor desc, Schema workingSchema, boolean global) { SimpleType st; if (global) { st = buildNewSimpleType(desc.getSchemaReference().getSchemaContextAsQName(workingSchema.getNamespaceResolver()).getLocalPart()); } else { st = new SimpleType(); } CoreMapping mapping = (CoreMapping)desc.getMappings().get(0); QName qname = conversionManager.schemaType(mapping.getAttributeClassification()); String baseType = qname.getLocalPart(); if (qname.getNamespaceURI() != null) { String prefix = workingSchema.getNamespaceResolver().resolveNamespaceURI(qname.getNamespaceURI()); if (prefix == null) { prefix = workingSchema.getNamespaceResolver().generatePrefix(); workingSchema.getNamespaceResolver().put(prefix, qname.getNamespaceURI()); } baseType = prefix + Constants.COLON + baseType; } Restriction restriction = new Restriction(); restriction.setBaseType(baseType); st.setRestriction(restriction); return st; }
/** * Adds each namespace in the given resolver to the schema. * * @param nr * @param workingSchema */ protected void addNamespacesToWorkingSchema(NamespaceResolver nr, Schema workingSchema) { if (nr != null) { Vector<Namespace> descNamespaces = nr.getNamespaces(); for (Namespace nextNamespace : descNamespaces) { workingSchema.getNamespaceResolver().put(nextNamespace.getPrefix(), nextNamespace.getNamespaceURI()); } } }
/** * Adds each namespace in the given resolver to the schema. * * @param nr * @param workingSchema */ protected void addNamespacesToWorkingSchema(NamespaceResolver nr, Schema workingSchema) { if (nr != null) { Vector<Namespace> descNamespaces = nr.getNamespaces(); for (Namespace nextNamespace : descNamespaces) { workingSchema.getNamespaceResolver().put(nextNamespace.getPrefix(), nextNamespace.getNamespaceURI()); } } }
/** * Adds each namespace in the given resolver to the schema. * * @param nr * @param workingSchema */ protected void addNamespacesToWorkingSchema(NamespaceResolver nr, Schema workingSchema) { if (nr != null) { Vector<Namespace> descNamespaces = nr.getNamespaces(); for (Namespace nextNamespace : descNamespaces) { workingSchema.getNamespaceResolver().put(nextNamespace.getPrefix(), nextNamespace.getNamespaceURI()); } } }
/** * <p>INTERNAL: * */ public void loadXMLSchema(InputStream xrSchemaStream) { SchemaModelProject schemaProject = new SchemaModelProject(); XMLContext xmlContext = new XMLContext(schemaProject); XMLUnmarshaller unmarshaller = xmlContext.createUnmarshaller(); Schema schema = (Schema)unmarshaller.unmarshal(xrSchemaStream); NamespaceResolver nr = schema.getNamespaceResolver(); String targetNamespace = schema.getTargetNamespace(); nr.put(TARGET_NAMESPACE_PREFIX, targetNamespace); xrService.schema = schema; xrService.schemaNamespace = targetNamespace; }
private void processSchema(Schema parsedSchema) { rootSchema = parsedSchema; initialize(); namespaceResolvers.add(rootSchema.getNamespaceResolver()); processIncludes(rootSchema.getIncludes()); processImports(rootSchema.getImports()); preprocessGlobalTypes(rootSchema); processGlobalAttributes(rootSchema); processGlobalElements(rootSchema); processGlobalSimpleTypes(rootSchema); processGlobalComplexTypes(rootSchema); postProcessing(); }
private void processSchema(Schema parsedSchema) { rootSchema = parsedSchema; initialize(); namespaceResolvers.add(rootSchema.getNamespaceResolver()); processIncludes(rootSchema.getIncludes()); processImports(rootSchema.getImports()); preprocessGlobalTypes(rootSchema); processGlobalAttributes(rootSchema); processGlobalElements(rootSchema); processGlobalSimpleTypes(rootSchema); processGlobalComplexTypes(rootSchema); postProcessing(); }
/** * Create and return an Element for a given XMLDescriptor. * * @param desc * @param schemaForNamespace * @param workingSchema * @param properties * @param descriptors * @param simple * @return */ protected Element buildElement(Descriptor desc, HashMap<String, Schema> schemaForNamespace, Schema workingSchema, SchemaModelGeneratorProperties properties, List<Descriptor> descriptors, boolean simple) { Element element = new Element(); element.setName(desc.getSchemaReference().getSchemaContextAsQName(workingSchema.getNamespaceResolver()).getLocalPart()); if (simple) { if (isComplexTypeWithSimpleContentRequired(desc)) { element.setComplexType(buildComplexTypeWithSimpleContent(desc, schemaForNamespace, workingSchema, properties, descriptors)); } else { element.setSimpleType(buildSimpleType(desc, workingSchema, false)); } } else { element.setComplexType(buildComplexType(true, desc, schemaForNamespace, workingSchema, properties, descriptors)); } return element; }
/** * Create and return an Element for a given XMLDescriptor. * * @param desc * @param schemaForNamespace * @param workingSchema * @param properties * @param descriptors * @param simple * @return */ protected Element buildElement(Descriptor desc, HashMap<String, Schema> schemaForNamespace, Schema workingSchema, SchemaModelGeneratorProperties properties, List<Descriptor> descriptors, boolean simple) { Element element = new Element(); element.setName(desc.getSchemaReference().getSchemaContextAsQName(workingSchema.getNamespaceResolver()).getLocalPart()); if (simple) { if (isComplexTypeWithSimpleContentRequired(desc)) { element.setComplexType(buildComplexTypeWithSimpleContent(desc, schemaForNamespace, workingSchema, properties, descriptors)); } else { element.setSimpleType(buildSimpleType(desc, workingSchema, false)); } } else { element.setComplexType(buildComplexType(true, desc, schemaForNamespace, workingSchema, properties, descriptors)); } return element; }
/** * Create and return an Element for a given XMLDescriptor. * * @param desc * @param schemaForNamespace * @param workingSchema * @param properties * @param descriptors * @param simple * @return */ protected Element buildElement(XMLDescriptor desc, HashMap<String, Schema> schemaForNamespace, Schema workingSchema, SchemaModelGeneratorProperties properties, List<XMLDescriptor> descriptors, boolean simple) { Element element = new Element(); element.setName(desc.getSchemaReference().getSchemaContextAsQName(workingSchema.getNamespaceResolver()).getLocalPart()); if (simple) { if (isComplexTypeWithSimpleContentRequired(desc)) { element.setComplexType(buildComplexTypeWithSimpleContent(desc, schemaForNamespace, workingSchema, properties, descriptors)); } else { element.setSimpleType(buildSimpleType(desc, workingSchema, false)); } } else { element.setComplexType(buildComplexType(true, desc, schemaForNamespace, workingSchema, properties, descriptors)); } return element; }
public Map<String, SchemaTypeInfo> generateSchemaFiles(String schemaPath, Map<QName, Type> additionalGlobalElements) throws FileNotFoundException { // process any additional global elements processAdditionalElements(additionalGlobalElements, annotationsProcessor); schemaGenerator.generateSchema(annotationsProcessor.getTypeInfoClasses(), annotationsProcessor.getTypeInfos(), annotationsProcessor.getUserDefinedSchemaTypes(), annotationsProcessor.getPackageToPackageInfoMappings(), annotationsProcessor.getGlobalElements(), annotationsProcessor.getArrayClassesToGeneratedClasses()); CoreProject proj = new SchemaModelProject(); XMLContext context = new XMLContext((Project)proj); XMLMarshaller marshaller = context.createMarshaller(); Descriptor schemaDescriptor = (Descriptor)proj.getDescriptor(Schema.class); java.util.Collection<Schema> schemas = schemaGenerator.getAllSchemas(); for(Schema schema : schemas) { File file = new File(schemaPath + "/" + schema.getName()); NamespaceResolver schemaNamespaces = schema.getNamespaceResolver(); schemaNamespaces.put(Constants.SCHEMA_PREFIX, XMLConstants.W3C_XML_SCHEMA_NS_URI); schemaDescriptor.setNamespaceResolver(schemaNamespaces); marshaller.marshal(schema, new FileOutputStream(file)); } return schemaGenerator.getSchemaTypeInfo(); }
public Map<String, SchemaTypeInfo> generateSchemaFiles(String schemaPath, Map<QName, Type> additionalGlobalElements) throws FileNotFoundException { // process any additional global elements processAdditionalElements(additionalGlobalElements, annotationsProcessor); schemaGenerator.generateSchema(annotationsProcessor.getTypeInfoClasses(), annotationsProcessor.getTypeInfos(), annotationsProcessor.getUserDefinedSchemaTypes(), annotationsProcessor.getPackageToPackageInfoMappings(), annotationsProcessor.getGlobalElements(), annotationsProcessor.getArrayClassesToGeneratedClasses()); CoreProject proj = new SchemaModelProject(); XMLContext context = new XMLContext((Project)proj); XMLMarshaller marshaller = context.createMarshaller(); Descriptor schemaDescriptor = (Descriptor)proj.getDescriptor(Schema.class); java.util.Collection<Schema> schemas = schemaGenerator.getAllSchemas(); for(Schema schema : schemas) { File file = new File(schemaPath + "/" + schema.getName()); NamespaceResolver schemaNamespaces = schema.getNamespaceResolver(); schemaNamespaces.put(Constants.SCHEMA_PREFIX, XMLConstants.W3C_XML_SCHEMA_NS_URI); schemaDescriptor.setNamespaceResolver(schemaNamespaces); marshaller.marshal(schema, new FileOutputStream(file)); } return schemaGenerator.getSchemaTypeInfo(); }
/** * <p>INTERNAL: * Read and unmarshal <code>XRService</code>'s <tt>.xsd</tt> file. * @param xrSchemaStream Stream resource for the <code>XRService</code>'s <tt>.xsd</tt> file. */ public void loadXMLSchema(InputStream xrSchemaStream) { SchemaModelProject schemaProject = new SchemaModelProject(); XMLContext xmlContext = new XMLContext(schemaProject); XMLUnmarshaller unmarshaller = xmlContext.createUnmarshaller(); Schema schema; try { schema = (Schema)unmarshaller.unmarshal(xrSchemaStream); } catch (XMLMarshalException e) { xmlContext.getSession().getSessionLog().log( SessionLog.WARNING, SessionLog.DBWS, "dbws_xml_schema_read_error", e.getLocalizedMessage()); throw new DBWSException(OXM_PROCESSING_SCH, e); } NamespaceResolver nr = schema.getNamespaceResolver(); String targetNamespace = schema.getTargetNamespace(); nr.put(TARGET_NAMESPACE_PREFIX, targetNamespace); xrService.schema = schema; xrService.schemaNamespace = targetNamespace; }
public Map<String, SchemaTypeInfo> generateSchemaFiles(SchemaOutputResolver outputResolver, Map<QName, Type> additionalGlobalElements) { // process any additional global elements processAdditionalElements(additionalGlobalElements, annotationsProcessor); schemaGenerator.generateSchema(annotationsProcessor.getTypeInfoClasses(), annotationsProcessor.getTypeInfos(), annotationsProcessor.getUserDefinedSchemaTypes(), annotationsProcessor.getPackageToPackageInfoMappings(), annotationsProcessor.getGlobalElements(), annotationsProcessor.getArrayClassesToGeneratedClasses(), outputResolver); CoreProject proj = new SchemaModelProject(); XMLContext context = new XMLContext((Project)proj); XMLMarshaller marshaller = context.createMarshaller(); Descriptor schemaDescriptor = (Descriptor)proj.getDescriptor(Schema.class); java.util.Collection<Schema> schemas = schemaGenerator.getAllSchemas(); for(Schema schema : schemas) { try { NamespaceResolver schemaNamespaces = schema.getNamespaceResolver(); schemaNamespaces.put(Constants.SCHEMA_PREFIX, XMLConstants.W3C_XML_SCHEMA_NS_URI); schemaDescriptor.setNamespaceResolver(schemaNamespaces); // make sure we don't call into the provided output resolver more than once javax.xml.transform.Result target; if (schema.hasResult()) { target = schema.getResult(); } else { target = outputResolver.createOutput(schema.getTargetNamespace(), schema.getName()); } marshaller.marshal(schema, target); } catch (IOException ex) { ex.printStackTrace(); } } return schemaGenerator.getSchemaTypeInfo(); }
public Map<String, SchemaTypeInfo> generateSchemaFiles(SchemaOutputResolver outputResolver, Map<QName, Type> additionalGlobalElements) { // process any additional global elements processAdditionalElements(additionalGlobalElements, annotationsProcessor); schemaGenerator.generateSchema(annotationsProcessor.getTypeInfoClasses(), annotationsProcessor.getTypeInfos(), annotationsProcessor.getUserDefinedSchemaTypes(), annotationsProcessor.getPackageToPackageInfoMappings(), annotationsProcessor.getGlobalElements(), annotationsProcessor.getArrayClassesToGeneratedClasses(), outputResolver); CoreProject proj = new SchemaModelProject(); XMLContext context = new XMLContext((Project)proj); XMLMarshaller marshaller = context.createMarshaller(); Descriptor schemaDescriptor = (Descriptor)proj.getDescriptor(Schema.class); java.util.Collection<Schema> schemas = schemaGenerator.getAllSchemas(); for(Schema schema : schemas) { try { NamespaceResolver schemaNamespaces = schema.getNamespaceResolver(); schemaNamespaces.put(Constants.SCHEMA_PREFIX, XMLConstants.W3C_XML_SCHEMA_NS_URI); schemaDescriptor.setNamespaceResolver(schemaNamespaces); // make sure we don't call into the provided output resolver more than once javax.xml.transform.Result target; if (schema.hasResult()) { target = schema.getResult(); } else { target = outputResolver.createOutput(schema.getTargetNamespace(), schema.getName()); } marshaller.marshal(schema, target); } catch (IOException ex) { ex.printStackTrace(); } } return schemaGenerator.getSchemaTypeInfo(); }