/** * Returns the <code>localRepository</code> settings as indicated by the * <code>settings.xml</code> file. * * @return local repository as indicated by a Maven settings.xml file */ String getMavenSettingsLocalRepository(Resource m2Settings) { // no file found, return null to continue the discovery process if (!m2Settings.exists()) { return null; } try { DocumentLoader docLoader = new DefaultDocumentLoader(); Document document = docLoader.loadDocument(new InputSource(m2Settings.getInputStream()), null, null, XmlValidationModeDetector.VALIDATION_NONE, false); return (DomUtils.getChildElementValueByTagName(document.getDocumentElement(), LOCAL_REPOSITORY_ELEM)); } catch (Exception ex) { throw new RuntimeException(new ParserConfigurationException("error parsing resource=" + m2Settings).initCause(ex)); } }
/** * Returns the <code>localRepository</code> settings as indicated by the * <code>settings.xml</code> file. * * @return local repository as indicated by a Maven settings.xml file */ String getMavenSettingsLocalRepository(Resource m2Settings) { // no file found, return null to continue the discovery process if (!m2Settings.exists()) return null; try { DocumentLoader docLoader = new DefaultDocumentLoader(); Document document = docLoader.loadDocument(new InputSource(m2Settings.getInputStream()), null, null, XmlValidationModeDetector.VALIDATION_NONE, false); return (DomUtils.getChildElementValueByTagName(document.getDocumentElement(), LOCAL_REPOSITORY_ELEM)); } catch (Exception ex) { throw (RuntimeException) new RuntimeException(new ParserConfigurationException("error parsing resource=" + m2Settings).initCause(ex)); } }
/** * Returns the <tt>groupId</tt> setting in a <tt>pom.xml</tt> file. * * @return a <tt>pom.xml</tt> <tt>groupId</tt>. */ String getGroupIdFromPom(Resource pomXml) { try { DocumentLoader docLoader = new DefaultDocumentLoader(); Document document = docLoader.loadDocument(new InputSource(pomXml.getInputStream()), null, null, XmlValidationModeDetector.VALIDATION_NONE, false); String groupId = DomUtils.getChildElementValueByTagName(document.getDocumentElement(), GROUP_ID_ELEM); // no groupId specified, try the parent definition if (groupId == null) { if (log.isTraceEnabled()) log.trace("No groupId defined; checking for the parent definition"); Element parent = DomUtils.getChildElementByTagName(document.getDocumentElement(), "parent"); if (parent != null) return DomUtils.getChildElementValueByTagName(parent, GROUP_ID_ELEM); } else { return groupId; } } catch (Exception ex) { throw (RuntimeException) new RuntimeException(new ParserConfigurationException("error parsing resource=" + pomXml).initCause(ex)); } throw new IllegalArgumentException("no groupId or parent/groupId defined by resource [" + pomXml.getDescription() + "]"); }
/** * Create the {@link DocumentBuilderFactory} instance. * @param validationMode the type of validation: {@link XmlValidationModeDetector#VALIDATION_DTD DTD} * or {@link XmlValidationModeDetector#VALIDATION_XSD XSD}) * @param namespaceAware whether the returned factory is to provide support for XML namespaces * @return the JAXP DocumentBuilderFactory * @throws ParserConfigurationException if we failed to build a proper DocumentBuilderFactory */ protected DocumentBuilderFactory createDocumentBuilderFactory(int validationMode, boolean namespaceAware) throws ParserConfigurationException { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); factory.setNamespaceAware(namespaceAware); if (validationMode != XmlValidationModeDetector.VALIDATION_NONE) { factory.setValidating(true); if (validationMode == XmlValidationModeDetector.VALIDATION_XSD) { // Enforce namespace aware for XSD... factory.setNamespaceAware(true); try { factory.setAttribute(SCHEMA_LANGUAGE_ATTRIBUTE, XSD_SCHEMA_LANGUAGE); } catch (IllegalArgumentException ex) { ParserConfigurationException pcex = new ParserConfigurationException( "Unable to validate using XSD: Your JAXP provider [" + factory + "] does not support XML Schema. Are you running on Java 1.4 with Apache Crimson? " + "Upgrade to Apache Xerces (or Java 1.5) for full XSD support."); pcex.initCause(ex); throw pcex; } } } return factory; }
@Override public Iterator<Void> doInTemplateResource(Resource resource, final NamedTemplateCallback callback) throws Exception { InputSource inputSource = new InputSource(resource.getInputStream()); inputSource.setEncoding(encoding); Document doc = documentLoader.loadDocument(inputSource, entityResolver, errorHandler, XmlValidationModeDetector.VALIDATION_XSD, false); final List<Element> sqes = DomUtils.getChildElementsByTagName(doc.getDocumentElement(), "sql"); return new Iterator<Void>() { int index = 0, total = sqes.size(); @Override public boolean hasNext() { return index < total; } @Override public Void next() { Element sqle = sqes.get(index); callback.process(sqle.getAttribute("name"), sqle.getTextContent()); index++; return null; } @Override public void remove() { //ignore } }; }
@Override public void validate(final InputStream xmlStream) throws ValidationFailedException { try { if (xsdSchema == null) { // get the source final InputSource inputSource = new InputSource(xmlStream); final EntityResolver resolver = new DelegatingEntityResolver(getClass() .getClassLoader()); // use the DocumentLoader for validation, the DocumentLoader uses the // defined XSD of the document, it tries to use the one distributed via // the jar, otherwise it looks up the URL documentLoader.loadDocument(inputSource, resolver, errorHandler, XmlValidationModeDetector.VALIDATION_XSD, true); } else { // get the sources final Source xmlSource = new StreamSource(xmlStream); final Validator validator = xsdSchema.newValidator(); // validate the document using the default Validator validator.validate(xmlSource); } } catch (final Exception e) { throw new ValidationFailedException("The loaded or the validation failed.", e); } }
/** * Loads the <code>Document</code> from the specified * {@link org.springframework.core.io.Resource Resource}. * * @param res * the resource to load the {@link Document} from * * @return the <code>Document</code> specified by the passed * <code>Resource</code> */ protected Document loadDocument( final org.springframework.core.io.Resource res) { // get the resource as encoded one final EncodedResource encRes = new EncodedResource(res); // read the XML document and replace the placeholders InputStream inputStream = null; InputSource inputSource = null; Document doc = null; try { inputStream = encRes.getResource().getInputStream(); inputSource = new InputSource(inputStream); if (encRes.getEncoding() != null) { inputSource.setEncoding(encRes.getEncoding()); } // get the Document final DefaultDocumentLoader loader = new DefaultDocumentLoader(); doc = loader.loadDocument(inputSource, null, null, XmlValidationModeDetector.VALIDATION_NONE, false); } catch (final Exception e) { // log it if (LOG.isWarnEnabled()) { LOG.warn( "Unable to parse the passed ByteArrayResource '" + res.getDescription() + "'.", e); } throw new IllegalArgumentException( "The passed resource contains an invalid document.", e); } finally { // close the streams Streams.closeIO(inputSource); Streams.closeIO(inputStream); } return doc; }