private XmlConfigHandler parseAndAssertInstance(String xmlInstance) throws SAXException, IOException { InputStream schemaStream = XmlConfigHandlerTest.class.getResourceAsStream(CONFIG_TEST_2_XSD); XMLSchemaFactory xmlSchemaFactory = new XMLSchemaFactory(); Schema schema = xmlSchemaFactory.newSchema(new StreamSource(schemaStream)); ValidatorHandler validatorHandler = schema.newValidatorHandler(); final TypeInfoProvider typeInfoProvider = validatorHandler.getTypeInfoProvider(); XmlConfigHandler xmlConfigHandler = new XmlConfigHandler(typeInfoProvider); validatorHandler.setContentHandler(xmlConfigHandler); XMLReader parser = XMLReaderFactory.createXMLReader(); parser.setContentHandler(validatorHandler); InputStream xmlStream = XmlConfigHandlerTest.class.getResourceAsStream(xmlInstance); parser.parse(new InputSource(xmlStream)); assertInstance(validatorHandler, xmlConfigHandler, xmlInstance); return xmlConfigHandler; }
private TypeInfo readTypeForProperty(final String propertyName) throws SAXException, IOException { InputStream schemaStream = XmlConfigHandlerTest.class.getResourceAsStream(CONFIG_TEST_2_XSD); XMLSchemaFactory xmlSchemaFactory = new XMLSchemaFactory(); Schema schema = xmlSchemaFactory.newSchema(new StreamSource(schemaStream)); final AtomicReference<TypeInfo> propertyTypeInfo = new AtomicReference<TypeInfo>(); ValidatorHandler validatorHandler = schema.newValidatorHandler(); final TypeInfoProvider typeInfoProvider = validatorHandler.getTypeInfoProvider(); validatorHandler.setContentHandler(new DefaultHandler() { @Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { if (propertyName.equals(localName)) { propertyTypeInfo.set(typeInfoProvider.getElementTypeInfo()); } } }); XMLReader parser = XMLReaderFactory.createXMLReader(); parser.setContentHandler(validatorHandler); InputStream xmlStream = XmlConfigHandlerTest.class.getResourceAsStream(CONFIG_TEST_2_XML); parser.parse(new InputSource(xmlStream)); return propertyTypeInfo.get(); }
@Test public void test() throws Exception { XMLReader xmlReader = createXMLReader(); final ValidatorHandler validatorHandler = createValidatorHandler(XSD); xmlReader.setContentHandler(validatorHandler); DefaultHandler handler = new DefaultHandler() { public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { if (!"ns:test".equals(qName)) { return; } TypeInfoProvider infoProvider = validatorHandler.getTypeInfoProvider(); if (infoProvider == null) { throw new SAXException("Can't obtain TypeInfoProvider object."); } int index = attributes.getIndex("id"); if (index == -1) { throw new SAXException("The attribute 'id' is not in the list."); } Assert.assertTrue(infoProvider.isSpecified(index)); index = attributes.getIndex("date"); if (index == -1) { throw new SAXException("The attribute 'date' is not in the list."); } Assert.assertFalse(infoProvider.isSpecified(index)); System.out.println("OK"); } }; validatorHandler.setContentHandler(handler); parse(xmlReader, XML); }
@Test public void test1() throws Exception { XMLReader xmlReader = createXMLReader(); final ValidatorHandler validatorHandler = createValidatorHandler(XSD); xmlReader.setContentHandler(validatorHandler); DefaultHandler handler = new DefaultHandler() { public void characters(char[] ch, int start, int length) throws SAXException { TypeInfoProvider infoProvider = null; synchronized (validatorHandler) { infoProvider = validatorHandler.getTypeInfoProvider(); } if (infoProvider == null) { Assert.fail("Can't obtain TypeInfo object."); } try { infoProvider.getElementTypeInfo(); Assert.fail("IllegalStateException was not thrown."); } catch (IllegalStateException e) { // as expected System.out.println("OK"); } } }; validatorHandler.setContentHandler(handler); parse(xmlReader, XML); }
public void startElement(String namespaceURI, String localName, String qName, Attributes atts) throws SAXException { TypeInfoProvider typeInfoProvider = validatorHandler.getTypeInfoProvider(); int index = atts.getIndex("orderid"); if (index != -1) { System.out.println(" Index " + index); System.out.println(" ElementType " + typeInfoProvider.getElementTypeInfo().getTypeName()); assertEquals(typeInfoProvider.getAttributeTypeInfo(index).getTypeName(), "string"); assertTrue(typeInfoProvider.isSpecified(index)); assertFalse(typeInfoProvider.isIdAttribute(index)); } }
public TypeInfoProvider getTypeInfoProvider() { return fTypeInfoProvider; }
/** * @param validatorHandler may not be null. */ public JAXPValidatorComponent( ValidatorHandler validatorHandler ) { this.validator = validatorHandler; TypeInfoProvider tip = validatorHandler.getTypeInfoProvider(); if(tip==null) tip = noInfoProvider; this.typeInfoProvider = tip; // configure wiring between internal components. xni2sax.setContentHandler(validator); validator.setContentHandler(sax2xni); this.setSide(xni2sax); // configure validator with proper EntityResolver/ErrorHandler. validator.setErrorHandler(new ErrorHandlerProxy() { protected XMLErrorHandler getErrorHandler() { XMLErrorHandler handler = fErrorReporter.getErrorHandler(); if(handler!=null) return handler; return new ErrorHandlerWrapper(DraconianErrorHandler.getInstance()); } }); validator.setResourceResolver(new LSResourceResolver() { public LSInput resolveResource(String type,String ns, String publicId, String systemId, String baseUri) { if(fEntityResolver==null) return null; try { XMLInputSource is = fEntityResolver.resolveEntity( new XMLResourceIdentifierImpl(publicId,systemId,baseUri,null)); if(is==null) return null; LSInput di = new DOMInputImpl(); di.setBaseURI(is.getBaseSystemId()); di.setByteStream(is.getByteStream()); di.setCharacterStream(is.getCharacterStream()); di.setEncoding(is.getEncoding()); di.setPublicId(is.getPublicId()); di.setSystemId(is.getSystemId()); return di; } catch( IOException e ) { // erors thrown by the callback is not supposed to be // reported to users. throw new XNIException(e); } } }); }
public TypeInfoProvider getTypeInfoProvider() { return typeInfoProvider; }
public TypeInfoProvider getTypeInfoProvider() { return null; }
/** Sets the TypeInfoProvider used by this writer. */ protected void setTypeInfoProvider(TypeInfoProvider provider) { fTypeInfoProvider = provider; }
public XmlConfigHandler(TypeInfoProvider typeInfoProvider) { this.typeInfoProvider = typeInfoProvider; }