List of usage examples for org.w3c.dom.ls LSParser setFilter
public void setFilter(LSParserFilter filter);
From source file:com.consol.citrus.admin.service.spring.SpringBeanService.java
/** * Reads file import locations from Spring bean application context. * @param project/*w w w . j av a 2s . c o m*/ * @return */ public List<File> getConfigImports(File configFile, Project project) { LSParser parser = XMLUtils.createLSParser(); GetSpringImportsFilter filter = new GetSpringImportsFilter(configFile); parser.setFilter(filter); parser.parseURI(configFile.toURI().toString()); return filter.getImportedFiles(); }
From source file:com.consol.citrus.admin.service.spring.SpringBeanService.java
/** * Finds bean definition element by id and type in Spring application context and * performs unmarshalling in order to return JaxB object. * @param project//from w w w. j a v a 2 s . c o m * @param id * @param type * @return */ public <T> T getBeanDefinition(File configFile, Project project, String id, Class<T> type) { LSParser parser = XMLUtils.createLSParser(); GetSpringBeanFilter filter = new GetSpringBeanFilter(id, type); parser.setFilter(filter); List<File> configFiles = new ArrayList<>(); configFiles.add(configFile); configFiles.addAll(getConfigImports(configFile, project)); for (File file : configFiles) { parser.parseURI(file.toURI().toString()); if (filter.getBeanDefinition() != null) { return createJaxbObjectFromElement(filter.getBeanDefinition()); } } return null; }
From source file:com.consol.citrus.admin.service.spring.SpringBeanService.java
/** * Finds all bean definition elements by type and attribute values in Spring application context and * performs unmarshalling in order to return a list of JaxB object. * @param project//w w w .j ava2 s . co m * @param type * @param attributes * @return */ public <T> List<T> getBeanDefinitions(File configFile, Project project, Class<T> type, Map<String, String> attributes) { List<T> beanDefinitions = new ArrayList<T>(); List<File> importedFiles = getConfigImports(configFile, project); for (File importLocation : importedFiles) { beanDefinitions.addAll(getBeanDefinitions(importLocation, project, type, attributes)); } LSParser parser = XMLUtils.createLSParser(); GetSpringBeansFilter filter = new GetSpringBeansFilter(type, attributes); parser.setFilter(filter); parser.parseURI(configFile.toURI().toString()); for (Element element : filter.getBeanDefinitions()) { beanDefinitions.add(createJaxbObjectFromElement(element)); } return beanDefinitions; }
From source file:com.consol.citrus.admin.service.spring.SpringBeanService.java
/** * Method updates existing Spring bean definitions in a XML application context file. Bean definition is * identified by its type defining class. * * @param project// www. j a va2 s. com * @param type * @param jaxbElement */ public void updateBeanDefinitions(File configFile, Project project, Class<?> type, Object jaxbElement) { Source xsltSource; Source xmlSource; try { xsltSource = new StreamSource(new ClassPathResource("transform/update-bean-type.xsl").getInputStream()); xsltSource.setSystemId("update-bean"); List<File> configFiles = new ArrayList<>(); configFiles.add(configFile); configFiles.addAll(getConfigImports(configFile, project)); LSParser parser = XMLUtils.createLSParser(); GetSpringBeansFilter getBeanFilter = new GetSpringBeansFilter(type, null); parser.setFilter(getBeanFilter); for (File file : configFiles) { parser.parseURI(file.toURI().toString()); if (!CollectionUtils.isEmpty(getBeanFilter.getBeanDefinitions())) { xmlSource = new StringSource(FileUtils.readToString(new FileInputStream(file))); String beanElement = type.getAnnotation(XmlRootElement.class).name(); String beanNamespace = type.getPackage().getAnnotation(XmlSchema.class).namespace(); //create transformer Transformer transformer = transformerFactory.newTransformer(xsltSource); transformer.setParameter("bean_element", beanElement); transformer.setParameter("bean_namespace", beanNamespace); transformer.setParameter("bean_content", getXmlContent(jaxbElement) .replaceAll("(?m)^(\\s<)", getTabs(1, project.getSettings().getTabSize()) + "$1") .replaceAll("(?m)^(</)", getTabs(1, project.getSettings().getTabSize()) + "$1")); //transform StringResult result = new StringResult(); transformer.transform(xmlSource, result); FileUtils.writeToFile(format(result.toString(), project.getSettings().getTabSize()), file); return; } } } catch (IOException e) { throw new ApplicationRuntimeException(UNABLE_TO_READ_TRANSFORMATION_SOURCE, e); } catch (TransformerException e) { throw new ApplicationRuntimeException(FAILED_TO_UPDATE_BEAN_DEFINITION, e); } }
From source file:com.consol.citrus.admin.service.spring.SpringBeanService.java
/** * Method updates an existing Spring bean definition in a XML application context file. Bean definition is * identified by its id or bean name./*from www. j a va 2 s . co m*/ * @param project * @param id * @param jaxbElement */ public void updateBeanDefinition(File configFile, Project project, String id, Object jaxbElement) { Source xsltSource; Source xmlSource; try { xsltSource = new StreamSource(new ClassPathResource("transform/update-bean.xsl").getInputStream()); xsltSource.setSystemId("update-bean"); List<File> configFiles = new ArrayList<>(); configFiles.add(configFile); configFiles.addAll(getConfigImports(configFile, project)); LSParser parser = XMLUtils.createLSParser(); GetSpringBeanFilter getBeanFilter = new GetSpringBeanFilter(id, jaxbElement.getClass()); parser.setFilter(getBeanFilter); for (File file : configFiles) { parser.parseURI(file.toURI().toString()); if (getBeanFilter.getBeanDefinition() != null) { xmlSource = new StringSource(FileUtils.readToString(new FileInputStream(file))); //create transformer Transformer transformer = transformerFactory.newTransformer(xsltSource); transformer.setParameter("bean_id", id); transformer.setParameter("bean_content", getXmlContent(jaxbElement) .replaceAll("(?m)^(\\s<)", getTabs(1, project.getSettings().getTabSize()) + "$1") .replaceAll("(?m)^(</)", getTabs(1, project.getSettings().getTabSize()) + "$1")); //transform StringResult result = new StringResult(); transformer.transform(xmlSource, result); FileUtils.writeToFile(format(result.toString(), project.getSettings().getTabSize()), file); return; } } } catch (IOException e) { throw new ApplicationRuntimeException(UNABLE_TO_READ_TRANSFORMATION_SOURCE, e); } catch (TransformerException e) { throw new ApplicationRuntimeException(FAILED_TO_UPDATE_BEAN_DEFINITION, e); } }
From source file:com.haulmont.cuba.restapi.XMLConverter.java
@Override public CommitRequest parseCommitRequest(String content) { try {/*w ww .ja va2 s .c o m*/ DOMImplementationRegistry registry = DOMImplementationRegistry.newInstance(); DOMImplementationLS lsImpl = (DOMImplementationLS) registry.getDOMImplementation("LS"); LSParser requestConfigParser = lsImpl.createLSParser(DOMImplementationLS.MODE_SYNCHRONOUS, null); // Set options on the parser DOMConfiguration config = requestConfigParser.getDomConfig(); config.setParameter("validate", Boolean.TRUE); config.setParameter("element-content-whitespace", Boolean.FALSE); config.setParameter("comments", Boolean.FALSE); requestConfigParser.setFilter(new LSParserFilter() { @Override public short startElement(Element elementArg) { return LSParserFilter.FILTER_ACCEPT; } @Override public short acceptNode(Node nodeArg) { return StringUtils.isBlank(nodeArg.getTextContent()) ? LSParserFilter.FILTER_REJECT : LSParserFilter.FILTER_ACCEPT; } @Override public int getWhatToShow() { return NodeFilter.SHOW_TEXT; } }); LSInput lsInput = lsImpl.createLSInput(); lsInput.setStringData(content); Document commitRequestDoc = requestConfigParser.parse(lsInput); Node rootNode = commitRequestDoc.getFirstChild(); if (!"CommitRequest".equals(rootNode.getNodeName())) throw new IllegalArgumentException("Not a CommitRequest xml passed: " + rootNode.getNodeName()); CommitRequest result = new CommitRequest(); NodeList children = rootNode.getChildNodes(); for (int i = 0; i < children.getLength(); i++) { Node child = children.item(i); String childNodeName = child.getNodeName(); if ("commitInstances".equals(childNodeName)) { NodeList entitiesNodeList = child.getChildNodes(); Set<String> commitIds = new HashSet<>(entitiesNodeList.getLength()); for (int j = 0; j < entitiesNodeList.getLength(); j++) { Node idNode = entitiesNodeList.item(j).getAttributes().getNamedItem("id"); if (idNode == null) continue; String id = idNode.getTextContent(); if (id.startsWith("NEW-")) id = id.substring(id.indexOf('-') + 1); commitIds.add(id); } result.setCommitIds(commitIds); result.setCommitInstances(parseNodeList(result, entitiesNodeList)); } else if ("removeInstances".equals(childNodeName)) { NodeList entitiesNodeList = child.getChildNodes(); List removeInstances = parseNodeList(result, entitiesNodeList); result.setRemoveInstances(removeInstances); } else if ("softDeletion".equals(childNodeName)) { result.setSoftDeletion(Boolean.parseBoolean(child.getTextContent())); } } return result; } catch (Exception e) { throw new RuntimeException(e); } }