List of usage examples for javax.xml.bind ValidationEvent getMessage
public String getMessage();
From source file:Main.java
public static void main(String[] args) throws Exception { JAXBContext jc = JAXBContext.newInstance(Foo.class); Unmarshaller unmarshaller = jc.createUnmarshaller(); StringReader xml = new StringReader("<foo><bar>toast</bar></foo>"); Foo foo = (Foo) unmarshaller.unmarshal(xml); unmarshaller.setEventHandler(new ValidationEventHandler() { @Override/* www . ja va2 s . c o m*/ public boolean handleEvent(ValidationEvent ve) { System.out.println(ve.getMessage()); return true; } }); System.out.println(foo.isBar()); }
From source file:Main.java
public static void main(String[] args) throws Exception { JAXBContext jc = JAXBContext.newInstance(Root.class); Unmarshaller unmarshaller = jc.createUnmarshaller(); Marshaller marshaller = jc.createMarshaller(); marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); // Unmarshal #1 = Default Unmarshal System.out.println("Unmarshal #1"); Root root = (Root) unmarshaller.unmarshal(new StringReader(XML)); marshaller.marshal(root, System.out); // Unmarshal #2 - Override Default ValidationEventHandler System.out.println("Unmarshal #2"); unmarshaller.setEventHandler(new ValidationEventHandler() { @Override/*ww w . ja v a2 s . c o m*/ public boolean handleEvent(ValidationEvent event) { System.out.println(event.getMessage()); return false; } }); unmarshaller.unmarshal(new StringReader(XML)); }
From source file:Main.java
@SuppressWarnings("rawtypes") public static void marshal(Object object, Writer w) throws JAXBException { Class clazz = object.getClass(); JAXBContext context = s_contexts.get(clazz); if (context == null) { context = JAXBContext.newInstance(clazz); s_contexts.put(clazz, context);/*from w w w . j av a2 s .c o m*/ } ValidationEventCollector valEventHndlr = new ValidationEventCollector(); Marshaller marshaller = context.createMarshaller(); marshaller.setSchema(null); marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); marshaller.setEventHandler(valEventHndlr); try { marshaller.marshal(object, w); } catch (Exception e) { if (e instanceof JAXBException) { throw (JAXBException) e; } else { throw new MarshalException(e.getMessage(), e); } } if (valEventHndlr.hasEvents()) { for (ValidationEvent valEvent : valEventHndlr.getEvents()) { if (valEvent.getSeverity() != ValidationEvent.WARNING) { // throw a new Marshall Exception if there is a parsing error throw new MarshalException(valEvent.getMessage(), valEvent.getLinkedException()); } } } }
From source file:com.rapid.server.RapidHttpServlet.java
public static Unmarshaller getUnmarshaller() throws JAXBException, IOException { // initialise the unmarshaller Unmarshaller unmarshaller = _jaxbContext.createUnmarshaller(); // add the encrypted xml adapter unmarshaller.setAdapter(_encryptedXmlAdapter); // add a validation listener (this makes for better error messages) unmarshaller.setEventHandler(new ValidationEventHandler() { @Override//from w w w . j ava 2s . c o m public boolean handleEvent(ValidationEvent event) { // get the location ValidationEventLocator location = event.getLocator(); // log _logger.debug("JAXB validation event - " + event.getMessage() + (location == null ? "" : " at line " + location.getLineNumber() + ", column " + location.getColumnNumber() + ", node " + location.getNode())); // messages with "unrecognized type name" are very useful they're not sever themselves must almost always followed by a severe with a less meaningful message if (event.getMessage().contains("unrecognized type name") || event.getSeverity() == ValidationEvent.FATAL_ERROR) { return false; } else { return true; } } }); // return return unmarshaller; }
From source file:main.java.refinement_class.Useful.java
public static boolean validation(String schema_file, String xml_file) { Object obj = null;//from w w w . j a v a 2 s . c om // create a JAXBContext capable of handling classes generated into // JAXBContext jc = JAXBContext.newInstance(ObjectFactory.class ); JAXBContext jc; try { jc = JAXBContext.newInstance(); // create an Unmarshaller Unmarshaller u = jc.createUnmarshaller(); SchemaFactory sf = SchemaFactory.newInstance(W3C_XML_SCHEMA_NS_URI); try { javax.xml.validation.Schema schema = sf.newSchema(new File(schema_file)); u.setSchema((javax.xml.validation.Schema) schema); u.setEventHandler(new ValidationEventHandler() { // allow unmarshalling to continue even if there are errors public boolean handleEvent(ValidationEvent ve) { // ignore warnings if (ve.getSeverity() != ValidationEvent.WARNING) { ValidationEventLocator vel = ve.getLocator(); System.out.println("Line:Col[" + vel.getLineNumber() + ":" + vel.getColumnNumber() + "]:" + ve.getMessage()); } return true; } }); } catch (org.xml.sax.SAXException se) { System.out.println("Unable to validate due to following error."); se.printStackTrace(); LOG.error(se.toString()); } } catch (JAXBException e) { // TODO Auto-generated catch block e.printStackTrace(); LOG.error(e.toString()); } return true; }
From source file:main.java.refinement_class.Useful.java
public static Object unmashal2(String schema_file, String xml_file, Class c) { Object obj = null;/* w w w . j av a2s. com*/ try { // create a JAXBContext capable of handling classes generated into // JAXBContext jc = JAXBContext.newInstance(ObjectFactory.class ); JAXBContext jc = JAXBContext.newInstance(c); // create an Unmarshaller Unmarshaller u = jc.createUnmarshaller(); SchemaFactory sf = SchemaFactory.newInstance(W3C_XML_SCHEMA_NS_URI); try { javax.xml.validation.Schema schema = sf.newSchema(new File(schema_file)); u.setSchema((javax.xml.validation.Schema) schema); u.setEventHandler(new ValidationEventHandler() { // allow unmarshalling to continue even if there are errors public boolean handleEvent(ValidationEvent ve) { // ignore warnings if (ve.getSeverity() != ValidationEvent.WARNING) { ValidationEventLocator vel = ve.getLocator(); System.out.println("Line:Col[" + vel.getLineNumber() + ":" + vel.getColumnNumber() + "]:" + ve.getMessage()); } return true; } }); } catch (org.xml.sax.SAXException se) { System.out.println("Unable to validate due to following error."); se.printStackTrace(); LOG.error(se.toString()); } obj = u.unmarshal(new File(xml_file)); // even though document was determined to be invalid unmarshalling, // marshal out result. // System.out.println(""); // System.out.println("Still able to marshal invalid document"); // javax.xml.bind.Marshaller m = jc.createMarshaller(); // m.setProperty( Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE ); // m.marshal(poe, System.out); } catch (UnmarshalException ue) { // The JAXB specification does not mandate how the JAXB provider // must behave when attempting to unmarshal invalid XML data. // those cases, the JAXB provider is allowed to terminate the // call to unmarshal with an UnmarshalException. System.out.println("Caught UnmarshalException"); } catch (JAXBException je) { je.printStackTrace(); LOG.error(je.toString()); } return obj; }
From source file:main.java.refinement_class.Useful.java
public static Object unmashal(String schema_file, String xml_file, Class c) { Object obj = null;/*from w ww. jav a2s.c o m*/ try { // create a JAXBContext capable of handling classes generated into // JAXBContext jc = JAXBContext.newInstance(ObjectFactory.class ); JAXBContext jc = JAXBContext.newInstance(c); // create an Unmarshaller Unmarshaller u = jc.createUnmarshaller(); SchemaFactory sf = SchemaFactory.newInstance(W3C_XML_SCHEMA_NS_URI); try { // LOG.info("\n\n XX -->> Schema file: " + schema_file); // LOG.info("\n\n XX -->> xml_file file: " + xml_file); //++ javax.xml.validation.Schema schema; if (schema_file.contains("/tmp/")) { schema = sf.newSchema(new File(schema_file)); } else { URL urlSchema = getUrl(H2mserviceImpl.class, schema_file); // LOG.info("\n\n XX -->> urlSchema: " + urlSchema.getPath()); schema = sf.newSchema(urlSchema); } //-- //javax.xml.validation.Schema schema = sf.newSchema(new File(schema_file)); // ++ u.setSchema((javax.xml.validation.Schema) schema); u.setEventHandler(new ValidationEventHandler() { // allow unmarshalling to continue even if there are errors public boolean handleEvent(ValidationEvent ve) { // ignore warnings if (ve.getSeverity() != ValidationEvent.WARNING) { ValidationEventLocator vel = ve.getLocator(); System.out.println("Line:Col[" + vel.getLineNumber() + ":" + vel.getColumnNumber() + "]:" + ve.getMessage()); } return true; } }); } catch (org.xml.sax.SAXException se) { System.out.println("Unable to validate due to following error."); se.printStackTrace(); LOG.error("===>[1]ERROR Unmashaling \n\n" + se.toString()); LOG.error(Useful.getStackTrace(se)); } catch (Exception e) { LOG.error("===>[2]ERROR Unmashaling \n\n" + e.toString()); LOG.error(Useful.getStackTrace(e)); } if (xml_file.contains("/tmp/")) { obj = u.unmarshal(new File(xml_file)); } else { URL url_xml_file = getUrl(H2mserviceImpl.class, xml_file); LOG.info("\n\n XX -->> url_xml_file: " + url_xml_file.getPath()); obj = u.unmarshal(url_xml_file); } //-- //obj = u.unmarshal( new File( xml_file)); //++ // even though document was determined to be invalid unmarshalling, // marshal out result. // System.out.println(""); // System.out.println("Still able to marshal invalid document"); // javax.xml.bind.Marshaller m = jc.createMarshaller(); // m.setProperty( Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE ); // m.marshal(poe, System.out); } catch (UnmarshalException ue) { // The JAXB specification does not mandate how the JAXB provider // must behave when attempting to unmarshal invalid XML data. // those cases, the JAXB provider is allowed to terminate the // call to unmarshal with an UnmarshalException. System.out.println("Caught UnmarshalException"); LOG.error("===>[3]ERROR Unmashaling \n\n" + ue.toString()); } catch (JAXBException je) { je.printStackTrace(); LOG.error("===>[4]ERROR Unmashaling \n\n" + je.toString()); LOG.error(Useful.getStackTrace(je)); } catch (Exception e) { LOG.error("===>[5]ERROR Unmashaling \n\n" + e.toString()); LOG.error(Useful.getStackTrace(e)); } if (obj == null) { LOG.error("===>[6]ERROR Unmashaling Object NULL"); } return obj; }
From source file:org.openwms.core.configuration.file.ApplicationPreferenceTest.java
/** * Just test to validate the given XML file against the schema declaration. If the XML file is not compliant with the schema, the test * will fail.//from w w w . j av a 2 s . c om * * @throws Exception any error */ @Test public void testReadPreferences() throws Exception { SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI); Schema schema = schemaFactory.newSchema(ResourceUtils.getFile("classpath:preferences.xsd")); // Schema schema = schemaFactory.newSchema(new // URL("http://www.openwms.org/schema/preferences.xsd")); JAXBContext ctx = JAXBContext.newInstance("org.openwms.core.configuration.file"); Unmarshaller unmarshaller = ctx.createUnmarshaller(); unmarshaller.setSchema(schema); unmarshaller.setEventHandler(new ValidationEventHandler() { @Override public boolean handleEvent(ValidationEvent event) { RuntimeException ex = new RuntimeException(event.getMessage(), event.getLinkedException()); LOGGER.error(ex.getMessage()); throw ex; } }); Preferences prefs = Preferences.class.cast(unmarshaller .unmarshal(ResourceUtils.getFile("classpath:org/openwms/core/configuration/file/preferences.xml"))); for (AbstractPreference pref : prefs.getApplications()) { LOGGER.info(pref.toString()); } for (AbstractPreference pref : prefs.getModules()) { LOGGER.info(pref.toString()); } for (AbstractPreference pref : prefs.getUsers()) { LOGGER.info(pref.toString()); } }
From source file:org.anodyneos.jse.cron.CronDaemon.java
public CronDaemon(InputSource source) throws JseException { Schedule schedule;//from w w w . ja v a2s .c o m // parse source try { JAXBContext jc = JAXBContext.newInstance("org.anodyneos.jse.cron.config"); Unmarshaller u = jc.createUnmarshaller(); //Schedule Source schemaSource = new StreamSource(Thread.currentThread().getContextClassLoader() .getResourceAsStream("org/anodyneos/jse/cron/cron.xsd")); SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI); Schema schema = sf.newSchema(schemaSource); u.setSchema(schema); ValidationEventCollector vec = new ValidationEventCollector(); u.setEventHandler(vec); JAXBElement<?> rootElement; try { rootElement = ((JAXBElement<?>) u.unmarshal(source)); } catch (UnmarshalException ex) { if (!vec.hasEvents()) { throw ex; } else { for (ValidationEvent ve : vec.getEvents()) { ValidationEventLocator vel = ve.getLocator(); log.error("Line:Col[" + vel.getLineNumber() + ":" + vel.getColumnNumber() + "]:" + ve.getMessage()); } throw new JseException("Validation failed for source publicId='" + source.getPublicId() + "'; systemId='" + source.getSystemId() + "';"); } } schedule = (Schedule) rootElement.getValue(); if (vec.hasEvents()) { for (ValidationEvent ve : vec.getEvents()) { ValidationEventLocator vel = ve.getLocator(); log.warn("Line:Col[" + vel.getLineNumber() + ":" + vel.getColumnNumber() + "]:" + ve.getMessage()); } } } catch (JseException e) { throw e; } catch (Exception e) { throw new JseException("Cannot parse " + source + ".", e); } SpringHelper springHelper = new SpringHelper(); //////////////// // // Configure Spring and Create Beans // //////////////// TimeZone defaultTimeZone; if (schedule.isSetTimeZone()) { defaultTimeZone = getTimeZone(schedule.getTimeZone()); } else { defaultTimeZone = TimeZone.getDefault(); } if (schedule.isSetSpringContext() && schedule.getSpringContext().isSetConfig()) { for (Config config : schedule.getSpringContext().getConfig()) { springHelper.addXmlClassPathConfigLocation(config.getClassPathResource()); } } for (org.anodyneos.jse.cron.config.JobGroup jobGroup : schedule.getJobGroup()) { for (Job job : jobGroup.getJob()) { if (job.isSetBeanRef()) { if (job.isSetBean() || job.isSetClassName()) { throw new JseException("Cannot set bean or class attribute for job when beanRef is set."); } // else config ok } else { if (!job.isSetClassName()) { throw new JseException("must set either class or beanRef for job."); } GenericBeanDefinition beanDef = new GenericBeanDefinition(); MutablePropertyValues propertyValues = new MutablePropertyValues(); if (!job.isSetBean()) { job.setBean(UUID.randomUUID().toString()); } if (springHelper.containsBean(job.getBean())) { throw new JseException( "Bean name already used; overriding not allowed here: " + job.getBean()); } beanDef.setBeanClassName(job.getClassName()); for (Property prop : job.getProperty()) { String value = null; if (prop.isSetSystemProperty()) { value = System.getProperty(prop.getSystemProperty()); } if (null == value) { value = prop.getValue(); } propertyValues.addPropertyValue(prop.getName(), value); } beanDef.setPropertyValues(propertyValues); springHelper.registerBean(job.getBean(), beanDef); job.setBeanRef(job.getBean()); } } } springHelper.init(); //////////////// // // Configure Timer Services // //////////////// for (org.anodyneos.jse.cron.config.JobGroup jobGroup : schedule.getJobGroup()) { String jobGroupName; JseTimerService service = new JseTimerService(); timerServices.add(service); if (jobGroup.isSetName()) { jobGroupName = jobGroup.getName(); } else { jobGroupName = UUID.randomUUID().toString(); } if (jobGroup.isSetMaxConcurrent()) { service.setMaxConcurrent(jobGroup.getMaxConcurrent()); } for (Job job : jobGroup.getJob()) { TimeZone jobTimeZone = defaultTimeZone; if (job.isSetTimeZone()) { jobTimeZone = getTimeZone(job.getTimeZone()); } else { jobTimeZone = defaultTimeZone; } Object obj; Date notBefore = null; Date notAfter = null; if (job.isSetNotBefore()) { notBefore = job.getNotBefore().toGregorianCalendar(jobTimeZone, null, null).getTime(); } if (job.isSetNotAfter()) { notAfter = job.getNotAfter().toGregorianCalendar(jobTimeZone, null, null).getTime(); } CronSchedule cs = new CronSchedule(job.getSchedule(), jobTimeZone, job.getMaxIterations(), job.getMaxQueue(), notBefore, notAfter); obj = springHelper.getBean(job.getBeanRef()); log.info("Adding job " + jobGroup.getName() + "/" + job.getName() + " using bean " + job.getBeanRef()); if (obj instanceof CronJob) { ((CronJob) obj).setCronContext(new CronContext(jobGroupName, job.getName(), cs)); } if (obj instanceof JseDateAwareJob) { service.createTimer((JseDateAwareJob) obj, cs); } else if (obj instanceof Runnable) { service.createTimer((Runnable) obj, cs); } else { throw new JseException("Job must implement Runnable or JseDateAwareJob"); } } } }
From source file:org.alfresco.repo.audit.model.AuditModelRegistryImpl.java
/** * Unmarshalls the Audit model from a stream. *//*from w ww . j a v a2 s.c o m*/ private static Audit unmarshallModel(InputStream is, final String source) { final Schema schema; final JAXBContext jaxbCtx; final Unmarshaller jaxbUnmarshaller; try { SchemaFactory sf = SchemaFactory.newInstance(javax.xml.XMLConstants.W3C_XML_SCHEMA_NS_URI); schema = sf.newSchema(ResourceUtils.getURL(AUDIT_SCHEMA_LOCATION)); jaxbCtx = JAXBContext.newInstance("org.alfresco.repo.audit.model._3"); jaxbUnmarshaller = jaxbCtx.createUnmarshaller(); jaxbUnmarshaller.setSchema(schema); jaxbUnmarshaller.setEventHandler(new ValidationEventHandler() { public boolean handleEvent(ValidationEvent ve) { if (ve.getSeverity() == ValidationEvent.FATAL_ERROR || ve.getSeverity() == ValidationEvent.ERROR) { ValidationEventLocator locator = ve.getLocator(); logger.error("Invalid Audit XML: \n" + " Source: " + source + "\n" + " Location: Line " + locator.getLineNumber() + " column " + locator.getColumnNumber() + "\n" + " Error: " + ve.getMessage()); } return false; } }); } catch (Throwable e) { throw new AlfrescoRuntimeException("Failed to load Alfresco Audit Schema from " + AUDIT_SCHEMA_LOCATION, e); } try { // Unmarshall with validation @SuppressWarnings("unchecked") JAXBElement<Audit> auditElement = (JAXBElement<Audit>) jaxbUnmarshaller.unmarshal(is); Audit audit = auditElement.getValue(); // Done return audit; } catch (Throwable e) { // Dig out a SAXParseException, if there is one Throwable saxError = ExceptionStackUtil.getCause(e, SAXParseException.class); if (saxError != null) { e = saxError; } throw new AuditModelException("Failed to read Audit model XML: \n" + " Source: " + source + "\n" + " Error: " + e.getMessage()); } finally { try { is.close(); } catch (IOException e) { } } }