
org.rzo.yajsw.config.jnlp.JnlpSupport Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of wrapper Show documentation
Show all versions of wrapper Show documentation
YAJSW is a java centric implementation of the java service wrapper by tanuki (JSW).
It aims at being mostly configuration compliant with the original. It should therefore be easy to switch from JSW to YAJSW.
The newest version!
package org.rzo.yajsw.config.jnlp;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.PropertiesConfiguration;
import org.apache.commons.vfs2.FileObject;
import org.rzo.yajsw.util.Utils;
import org.rzo.yajsw.util.VFSUtils;
import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
public class JnlpSupport
{
Document _doc = null;
public JnlpSupport(String file) throws ParserConfigurationException, SAXException, IOException
{
FileObject fo = VFSUtils.resolveFile(".", file);
if (fo == null || !fo.exists())
throw new FileNotFoundException(file);
InputStream in = fo.getContent().getInputStream();
_doc = parseJnlp(in);
in.close();
}
public PropertiesConfiguration toConfiguration(String defaultsFile) throws ConfigurationException, IOException
{
int i = 1;
PropertiesConfiguration jnlpConf = new PropertiesConfiguration();
List jars = getJars(_doc);
for (Iterator it = jars.listIterator(); it.hasNext();)
{
jnlpConf.setProperty("wrapper.java.classpath." + i++, it.next());
}
jnlpConf.setProperty("wrapper.base", getCodebase(_doc));
jnlpConf.setProperty("wrapper.java.app.mainclass", getMainClass(_doc));
i = 1;
for (Iterator it = getArguments(_doc).listIterator(); it.hasNext();)
{
jnlpConf.setProperty("wrapper.app.parameter." + i++, it.next());
}
i = 1;
List props = getResourceProperties(_doc);
for (Iterator it = props.listIterator(); it.hasNext();)
{
jnlpConf.setProperty("wrapper.java.additional." + i++, it.next());
}
i = 1;
List resources = getResources(_doc);
for (Iterator it = resources.listIterator(); it.hasNext();)
{
jnlpConf.setProperty("wrapper.resource." + i++, it.next());
}
if (defaultsFile == null || "".equals(defaultsFile))
return jnlpConf;
// jnlpConf.addProperty("include", defaultsFile);
if (defaultsFile != null)
{
PropertiesConfiguration defaultsConf = new PropertiesConfiguration();
FileObject fo = VFSUtils.resolveFile(".", defaultsFile);
InputStream in = fo.getContent().getInputStream();
defaultsConf.load(in);
in.close();
for (Iterator it = defaultsConf.getKeys(); it.hasNext();)
{
String key = (String) it.next();
if (jnlpConf.containsKey(key))
System.out.println("configuration conflict: " + key);
else
jnlpConf.addProperty(key, defaultsConf.getProperty(key));
}
}
return jnlpConf;
}
private Document parseJnlp(InputStream in) throws ParserConfigurationException, SAXException, IOException
{
Document doc = null;
// Get Document Builder Factory
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
// Turn off validation, and turn off namespaces
factory.setValidating(false);
factory.setNamespaceAware(false);
DocumentBuilder builder = factory.newDocumentBuilder();
doc = builder.parse(in);
return doc;
}
private static List getJars(Document doc)
{
ArrayList result = new ArrayList();
NodeList args = doc.getElementsByTagName("jar");
for (int i = 0; i < args.getLength(); i++)
{
result.add(args.item(i).getAttributes().getNamedItem("href").getTextContent());
}
return result;
}
private static List getResources(Document doc)
{
ArrayList result = new ArrayList();
NodeList args = doc.getElementsByTagName("icon");
for (int i = 0; i < args.getLength(); i++)
{
result.add(args.item(i).getAttributes().getNamedItem("href").getTextContent());
}
return result;
}
private static List getResourceProperties(Document doc)
{
ArrayList result = new ArrayList();
NodeList args = doc.getElementsByTagName("property");
for (int i = 0; i < args.getLength(); i++)
{
String key = args.item(i).getAttributes().getNamedItem("name").getTextContent();
String value = args.item(i).getAttributes().getNamedItem("value").getTextContent();
result.add(Utils.getDOption(key, value));
}
return result;
}
private static List getArguments(Document doc)
{
ArrayList result = new ArrayList();
NodeList args = doc.getElementsByTagName("argument");
for (int i = 0; i < args.getLength(); i++)
{
result.add(args.item(i).getTextContent());
}
return result;
}
private static Object getMainClass(Document doc)
{
return doc.getElementsByTagName("application-desc").item(0).getAttributes().getNamedItem("main-class").getTextContent();
}
private static String getCodebase(Document doc)
{
return doc.getElementsByTagName("jnlp").item(0).getAttributes().getNamedItem("codebase").getTextContent();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy