Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
Copyright 2011-2014 The Kuali Foundation Licensed under the Educational Community License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.opensource.org/licenses/ecl2.php Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
 
 package org.kuali.maven.plugins.externals;
 
 import java.io.Reader;
 import java.util.List;
 
 
 
 public class POMUtils {
 	private static final Logger logger = LoggerFactory.getLogger(POMUtils.class);
 
 	private static final String FORMAT_PRETTY_PRINT = "format-pretty-print";
 	private static final String XML_DECLARATION = "xml-declaration";
 	private static final String DOM_IMPLEMENTATION = "LS";
 	private static final String GROUP_ID = "groupId";
 	private static final String ARTIFACT_ID = "artifactId";
 	private static final String VERSION = "version";
 	private static final String PARENT = "parent";
 	private static final String PROJECT = "project";
 	private static final String SCM = "scm";
 	private static final String DEVELOPER_CONNECTION = "developerConnection";
 	private static final String CONNECTION = "connection";
 	private static final String PROPERTIES = "properties";
 	private static final String URL = "url";
 
 	public String format(String xml) {
 		try {
 			Reader reader = new StringReader(xml);
 			InputSource src = new InputSource(reader);
 			DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
 			DocumentBuilder builder = factory.newDocumentBuilder();
 			Document document = builder.parse(src);
 			return getFormattedXml(document);
 		} catch (Exception e) {
 			throw new IllegalStateException(e);
 		}
 	}
 
 	public String getFormattedXml(Document document) {
 		try {
 			Element element = document.getDocumentElement();
 			DOMImplementationRegistry registry = DOMImplementationRegistry.newInstance();
 			LSSerializer writer = impl.createLSSerializer();
 			DOMConfiguration configuration = writer.getDomConfig();
 			configuration.setParameter(true);
 			configuration.setParameter(false);
 			return writer.writeToString(element);
 		} catch (Exception e) {
 			throw new IllegalStateException(e);
 		}
 	}
 
 	public GAV getParentGAV(String xml) {
 		Document document = getDocument(xml);
 		return getParentGav(document);
 	}
 
 	public GAV getGAV(String xml) {
 		Document document = getDocument(xml);
 		NodeList nodeList = document.getChildNodes();
 		if (nodeList == null || nodeList.getLength() == 0) {
 			throw new IllegalArgumentException("Invalid xml for a Maven pom:\n " + xml);
 		}
 		if (nodeList.getLength() > 1) {
 			throw new IllegalArgumentException("Invalid xml for a Maven pom.  Expected exactly 1 top level node:\n " + xml);
 		}
		Node projectNode = nodeList.item(0);
		if (!projectNode.getNodeName().equals()) {
			throw new IllegalArgumentException("Invalid xml for a Maven pom.  Must start with a <project> tag:\n " + xml);
		}
		return getGAV(projectNode.getChildNodes());
	}
	public Document getDocument(String xml) {
		try {
			Reader reader = new StringReader(xml);
			InputSource src = new InputSource(reader);
			DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
			DocumentBuilder builder = factory.newDocumentBuilder();
			return builder.parse(src);
catch (Exception e) {
			throw new IllegalStateException(e);
		}
	}
	public String updateScm(String xmlString prefixString url) {
		Document document = getDocument(xml);
		NodeList nodeList = document.getElementsByTagName();
		Node scmNode = nodeList.item(0);
		NodeList scmNodeList = scmNode.getChildNodes();
		int childCount = scmNodeList.getLength();
		for (int i = 0; i < childCounti++) {
			Node node = scmNodeList.item(i);
				node.setTextContent(prefix + url);
else if (node.getNodeName().equals()) {
				node.setTextContent(prefix + url);
else if (node.getNodeName().equals()) {
				node.setTextContent(url);
			}
		}
		return getFormattedXml(document);
	}
	public String updateParentVersion(String xmlString version) {
		Document document = getDocument(xml);
		NodeList nodeList = document.getElementsByTagName();
		Node parentNode = nodeList.item(0);
		NodeList gavNodeList = parentNode.getChildNodes();
		updateVersion(gavNodeListversion);
		return getFormattedXml(document);
	}
	public String updateVersion(String xmlString version) {
		Document document = getDocument(xml);
		NodeList nodeList = document.getChildNodes();
		Node projectNode = nodeList.item(0);
		updateVersion(projectNode.getChildNodes(), version);
		return getFormattedXml(document);
	}
	public String updateProperties(String xmlProperties properties) {
		Document document = getDocument(xml);
		NodeList propertiesNodeList = getTopLevelProperties(document);
		List<Stringkeys = new ArrayList<String>(properties.stringPropertyNames());
		Collections.sort(keys);
		for (String key : keys) {
			String value = properties.getProperty(key);
			Node node = findNode(propertiesNodeListkey);
			node.setTextContent(value);
		}
		return getFormattedXml(document);
	}
		NodeList nodeList = document.getElementsByTagName();
		Node projectNode = nodeList.item(0);
		Node topLevelPropertiesNode = this.findNode(projectNode.getChildNodes(), );
		return topLevelPropertiesNode.getChildNodes();
	}
	protected Node findNode(NodeList nodeListString key) {
		int childCount = nodeList.getLength();
		for (int i = 0; i < childCounti++) {
			Node node = nodeList.item(i);
			String name = node.getNodeName();
			if (name.equals(key)) {
				return node;
			}
		}
		throw new IllegalArgumentException("Unable to locate property '" + key + "'");
	}
	protected void updateVersion(NodeList nodeListString version) {
		int childCount = nodeList.getLength();
		for (int i = 0; i < childCounti++) {
			Node node = nodeList.item(i);
			if (node.getNodeName().equals()) {
				node.setTextContent(version);
				return;
			}
		}
		throw new IllegalStateException("No <" +  + "> tag was found");
	}
	public GAV getGAV(NodeList nodeList) {
		GAV gav = new GAV();
		int childCount = nodeList.getLength();
		for (int i = 0; i < childCounti++) {
			Node node = nodeList.item(i);
			if (node.getNodeName().equals()) {
			}
			}
			if (node.getNodeName().equals()) {
			}
		}
		return gav;
	}
	public GAV getParentGav(Document document) {
		NodeList nodeList = document.getElementsByTagName();
		if (nodeList == null || nodeList.getLength() == 0) {
			return null;
		}
		if (nodeList.getLength() > 1) {
			throw new IllegalStateException("There should only be one <" +  + "> tag in a pom");
		}
		Node parentNode = nodeList.item(0);
		NodeList gavNodeList = parentNode.getChildNodes();
		return getGAV(gavNodeList);
	}
	public void display(NodeList nodeListint level) {
		String content = getDisplayString(nodeListlevel);
		.info(content);
	}
	protected String getDisplayString(NodeList nodeListint level) {
		int childCount = nodeList.getLength();
		level++;
		for (int i = 0; i < childCounti++) {
			Node node = nodeList.item(i);
			sb.append(getDisplayString(nodelevel) + "\n");
		}
		return sb.toString();
	}
	protected String getDisplayString(Node node) {
		return getDisplayString(node, -1);
	}
	protected String getDisplayString(Node nodeint level) {
		String name = node.getNodeName();
		int type = node.getNodeType();
		String value = node.getNodeValue();
		if (level != -1) {
			sb.append(level + ":");
			sb.append(StringUtils.repeat(" "level));
		}
		sb.append("[");
		sb.append(name);
		sb.append(",");
		sb.append(type);
		sb.append(",");
		sb.append(flatten(value));
		sb.append("]");
		return sb.toString();
	}
	protected String nullSafeTrim(String s) {
		if (s == null) {
			return null;
else {
			return s.trim();
		}
	}
	protected String flatten(String s) {
		if (s == null) {
			return null;
else {
			return s.replace("\n""LF").replace("\r""CR");
		}
	}
New to GrepCode? Check out our FAQ X