/*L * Copyright Washington University in St.Louis * Copyright Information Management Services, Inc. * Copyright Sapient * Copyright Booz Allen Hamilton * * Distributed under the OSI-approved BSD 3-Clause License. * See http://ncip.github.com/common-biorepository-model/LICENSE.txt for details. */ package org.cagrid.CBM.marshaller; import gov.nih.nci.cbm.domain.MarshallerModel.CbmNode; import java.io.File; import java.io.IOException; import javax.xml.bind.JAXBContext; import javax.xml.bind.SchemaOutputResolver; import javax.xml.transform.Result; import javax.xml.transform.stream.StreamResult; public class SchemaGenerator { private static final String XML_SCHEMA = "CBM.xsd"; public SchemaGenerator() { } public static void main(String args[]) throws Exception { SchemaGenerator impl = new SchemaGenerator(); impl.generateSchema(); } public void generateSchema() { Class[] classes = new Class[1]; classes[0] = CbmNode.class; JAXBContext jaxbContext; try { jaxbContext = JAXBContext.newInstance(classes); SchemaOutputResolver sor = new MySchemaOutputResolver(); jaxbContext.generateSchema(sor); } catch (Throwable e) { System.err .println("An error has occurred while generating the schema: " + e.getMessage()); e.printStackTrace(); } System.out .println("Schema generation complete. \nThe schema has been written to " + XML_SCHEMA); } private class MySchemaOutputResolver extends SchemaOutputResolver { public Result createOutput(String namespaceURI, String suggestedFileName) throws IOException { // Write schema to CBM.xsd File file = new File(XML_SCHEMA); StreamResult result = new StreamResult(file); result.setSystemId(file.toURI().toURL().toString()); return result; } } }