blob: 4e268a4434a6cdee149e77a078ec6586ad8594dc [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2010 Eteration A.S. and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Naci Dai and Murat Yener, Eteration A.S. - Initial API and implementation
*******************************************************************************/
package org.eclipse.libra.framework.jonas;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.jdt.launching.JavaRuntime;
import org.eclipse.libra.framework.jonas.internal.util.ZipUtil;
import org.eclipse.wst.server.core.IModule;
public class JonasHandler implements IJonasVersionHandler {
public IStatus verifyInstallPath(IPath location) {
File f = location.append("conf/jonas.properties").toFile();
if (f == null || !f.exists())
return new Status(IStatus.ERROR, JonasPlugin.PLUGIN_ID, 0,
Messages.warningCantReadConfig, null);
File[] conf = f.listFiles();
if (conf != null) {
int size = conf.length;
for (int i = 0; i < size; i++) {
if (!f.canRead())
return new Status(IStatus.WARNING, JonasPlugin.PLUGIN_ID,
0, Messages.warningCantReadConfig, null);
}
}
return Status.OK_STATUS;
}
public String getFrameworkClass() {
return "org.ow2.jonas.commands.admin.ClientAdmin";
}
@SuppressWarnings({ "rawtypes", "unchecked" })
public List getFrameworkClasspath(IPath installPath, IPath configPath) {
List cp = new ArrayList();
IPath binPath = installPath.append("/lib/bootstrap");
if (binPath.toFile().exists()) {
IPath path = binPath.append("/felix-launcher.jar");
cp.add(JavaRuntime.newArchiveRuntimeClasspathEntry(path));
IPath path2 = binPath.append("/jonas-commands.jar");
cp.add(JavaRuntime.newArchiveRuntimeClasspathEntry(path2));
IPath path3 = binPath.append("/jonas-version.jar");
cp.add(JavaRuntime.newArchiveRuntimeClasspathEntry(path3));
}
return cp;
}
public String[] getFrameworkProgramArguments(IPath configPath, boolean debug,
boolean starting) {
return new String[] { "-start" };
}
public String[] getExcludedFrameworkProgramArguments(boolean debug,
boolean starting) {
return null;
}
public String[] getFrameworkVMArguments(IPath installPath, IPath configPath,
IPath deployPath, boolean isTestEnv) {
String jonasRoot = installPath.toOSString();
String jonasBase = deployPath.append("/jonasbase").toOSString();
return new String[] {
"-Djonas.root=" + jonasRoot,
"-Djonas.base=" + jonasBase,
"-Dipojo.log.level=ERROR",
"-Djava.security.policy=" + jonasBase + "/conf/java.policy",
"-Djava.security.auth.login.config=" + jonasBase
+ "/conf/jaas.config",
"-Djava.endorsed.dirs=" + jonasRoot + "/lib/endorsed",
"-Dorg.omg.CORBA.ORBClass=org.jacorb.orb.ORB",
"-Dorg.omg.CORBA.ORBSingletonClass=org.jacorb.orb.ORBSingleton",
"-Dorg.omg.PortableInterceptor.ORBInitializerClass.standard_init=org.jacorb.orb.standardInterceptors.IORInterceptorInitializer",
"-Dcom.sun.CORBA.ORBDynamicStubFactoryFactoryClass=com.sun.corba.se.impl.presentation.rmi.StubFactoryFactoryStaticImpl",
"-Djavax.xml.soap.SOAPConnectionFactory=com.sun.xml.messaging.saaj.client.p2p.HttpSOAPConnectionFactory",
"-Djavax.xml.soap.SOAPFactory=com.sun.xml.messaging.saaj.soap.ver1_1.SOAPFactory1_1Impl",
"-Djavax.xml.soap.MetaFactory=com.sun.xml.messaging.saaj.soap.SAAJMetaFactoryImpl",
"-Djavax.xml.soap.MessageFactory=com.sun.xml.messaging.saaj.soap.ver1_1.SOAPMessageFactory1_1Impl",
"-Djonas.felix.tui.enabled=true", "-Djonas.cache.clean=true" };
}
public IStatus canAddModule(IModule module) {
String id = module.getModuleType().getId();
// String version = module.getModuleType().getVersion();
if ("osgi.bundle".equals(id))
return Status.OK_STATUS;
return new Status(IStatus.ERROR, JonasPlugin.PLUGIN_ID, 0,
Messages.errorNotBundle, null);
}
public IStatus prepareFrameworkInstanceDirectory(IPath baseDir) {
return Status.OK_STATUS;// TomcatVersionHelper.createCatalinaInstanceDirectory(baseDir);
}
public IStatus prepareDeployDirectory(IPath deployPath) {
// if (Trace.isTraceEnabled())
// Trace.trace(Trace.FINER, "Creating runtime directory at "
// + deployPath.toOSString());
//
// // Prepare a felix directory structure
// File temp = deployPath.append("plugins").toFile();
// if (!temp.exists())
// temp.mkdirs();
// temp = deployPath.append("auto").toFile();
// if (!temp.exists())
// temp.mkdirs();
// temp = deployPath.append("cache").toFile();
// if (!temp.exists())
// temp.mkdirs();
return Status.OK_STATUS;
}
public boolean supportsServeModulesWithoutPublish() {
return true;
}
public void prepareFrameworkConfigurationFile(IPath configPath,
String workspaceBundles, String kernelBundles) {
// Properties properties = new Properties();
//
// properties.setProperty("felix.auto.deploy.dir",
// configPath.append("auto").makeAbsolute().toPortableString());
// properties.setProperty("felix.auto.deploy.action", "install,start");
// properties.setProperty("org.osgi.framework.startlevel.beginning",
// "2");
// properties.setProperty("felix.auto.install.1", kernelBundles);
// properties.setProperty("felix.auto.start.1", kernelBundles);
// properties.setProperty("felix.auto.install.2", workspaceBundles);
// properties.setProperty("felix.auto.start.2", workspaceBundles);
// properties.setProperty("org.osgi.framework.storage", "file:"
// + configPath.append("auto").makeAbsolute().toPortableString());
// properties.setProperty("org.osgi.framework.storage.clean",
// "onFirstInit");
//
// try {
// properties.store(
// new FileOutputStream(configPath.append("config.properties")
// .makeAbsolute().toFile()), "## AUTO GENERATED ##");
// } catch (IOException e) {
// e.printStackTrace();
// }
}
static final int BUFFER = 2048;
public void createJonasBase(IPath location, String instanceDirectory) {
try {
ZipUtil.unzip(
this.getClass().getResourceAsStream("/jonasbase.zip"),
new File(instanceDirectory));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}