Thursday, 22 February 2018

ObjToXMLConverter And schemaValidation & JodaDateTime

static {
try {

dataTypeFactory = DatatypeFactory.newInstance();
} catch (final DatatypeConfigurationException dce) {
}
}

static {
try {
final InputStream requestXsdPath = Demo.class
.getResourceAsStream("/META-INF/wsdl/Demo/Demo.xsd");
final InputStream faultXsdPath = Demo.class
.getResourceAsStream("/META-INF/wsdl/Demo/Fault.2.0.xsd");

final SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);

schema = factory
.newSchema(new Source[] { new StreamSource(faultXsdPath), new StreamSource(requestXsdPath) });
} catch (final Exception e) {
}
}

public static XMLGregorianCalendar getXMLGregorianCalendar() {
return dataTypeFactory.newXMLGregorianCalendar(new GregorianCalendar());
}

public static void schemaValidation(
final DemoRequest requestBody) {

try {
final String objToXML = objToXMLConverter(requestBody);
final Source xmlFile = new StreamSource(new StringReader(objToXML));
final Validator validator = schema.newValidator();
validator.validate(xmlFile);

} catch (final Exception e) { }
}

private static String objToXMLConverter(final DemoRequest request)
throws JAXBException, IOException {

final java.io.StringWriter sw = new java.io.StringWriter();
final javax.xml.bind.JAXBContext jaxbCtx = javax.xml.bind.JAXBContext
.newInstance(request.getClass().getPackage().getName());

final javax.xml.bind.Marshaller marshaller = jaxbCtx.createMarshaller();

marshaller.setProperty(javax.xml.bind.Marshaller.JAXB_ENCODING, "UTF-8");
marshaller.setProperty(javax.xml.bind.Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
final QName qname = new QName("http://demo/schema/DemoDetails/1/0",
"DemoDetailsRequest");
final JAXBElement root = new JAXBElement<>(qname,
DemoDetailsRequest.class, request);
marshaller.marshal(root, sw);
sw.close();
return sw.toString();
}

DateTime now = new DateTime(DateTimeZone.UTC);
return ISODateTimeFormat.dateHourMinuteSecond().print(now);

No comments: