/**
* Copyright (c) 2000-present Liferay, Inc. All rights reserved.
*
* This library is free software; you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by the Free
* Software Foundation; either version 2.1 of the License, or (at your option)
* any later version.
*
* This library is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
* details.
*/
package com.liferay.portal.tools;
import com.liferay.portal.kernel.util.FileUtil;
import com.liferay.portal.kernel.util.StringPool;
import com.liferay.portal.kernel.util.StringUtil;
import com.liferay.portal.kernel.xml.Document;
import com.liferay.portal.kernel.xml.Element;
import com.liferay.portal.kernel.xml.UnsecureSAXReaderUtil;
import java.io.File;
/**
* @author Brian Wing Shun Chan
* @author Zsigmond Rab
*/
public class EARBuilder {
public static void main(String[] args) {
ToolDependencies.wireBasic();
if (args.length == 3) {
new EARBuilder(args[0], StringUtil.split(args[1]), args[2]);
}
else {
throw new IllegalArgumentException();
}
}
public EARBuilder(
String originalApplicationXML, String[] pluginFileNames,
String portalContextPath) {
try {
Document document = UnsecureSAXReaderUtil.read(
new File(originalApplicationXML));
Element rootElement = document.getRootElement();
for (String pluginFileName : pluginFileNames) {
Element moduleElement = rootElement.addElement("module");
Element webElement = moduleElement.addElement("web");
Element webURIElement = webElement.addElement("web-uri");
webURIElement.addText(pluginFileName);
Element contextRootElement = webElement.addElement(
"context-root");
String contextRoot = _getContextRoot(
pluginFileName, portalContextPath);
contextRootElement.addText(contextRoot);
}
FileUtil.write(
originalApplicationXML, document.formattedString(), true);
}
catch (Exception e) {
e.printStackTrace();
}
}
private String _getContextRoot(
String pluginFileName, String portalContextPath) {
String contextRoot = pluginFileName;
int pos = contextRoot.lastIndexOf(".war");
if (pos != -1) {
contextRoot = contextRoot.substring(0, pos);
}
if (contextRoot.equals("liferay-portal")) {
contextRoot = portalContextPath;
if (contextRoot.equals(StringPool.SLASH)) {
contextRoot = StringPool.BLANK;
}
else if (contextRoot.startsWith(StringPool.SLASH)) {
contextRoot = contextRoot.substring(1);
}
}
return StringPool.SLASH.concat(contextRoot);
}
}