blob: 1a797f702fd368df325382324a2c9777592d259e [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2010 Boeing.
* 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:
* Boeing - initial API and implementation
*******************************************************************************/
package org.eclipse.osee.ote.server.internal;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.logging.Level;
import org.eclipse.osee.framework.logging.OseeLog;
import org.eclipse.osee.ote.connection.jini.JiniServiceSideConnector;
import org.eclipse.osee.ote.properties.OtePropertiesCore;
import org.eclipse.osee.ote.server.OteServiceStarter;
import org.eclipse.osee.ote.server.PropertyParamter;
import org.eclipse.osee.ote.server.TestEnvironmentServiceConfigImpl;
import org.osgi.framework.Bundle;
import org.osgi.framework.BundleContext;
import org.osgi.framework.FrameworkUtil;
public class OTEServerCreationComponent {
private OteServiceStarter oteServiceStart;
public void bindOteServiceStarter(OteServiceStarter oteServiceStart){
this.oteServiceStart = oteServiceStart;
}
public void unbindOteServiceStarter(OteServiceStarter oteServiceStart){
this.oteServiceStart = null;
}
public void start() {
final String oteServerFactoryClass = OtePropertiesCore.serverFactoryClass.getValue();
if (oteServerFactoryClass != null) {
try{
String outfileLocation = OtePropertiesCore.outfilesLocation.getValue();
if (outfileLocation == null) {
outfileLocation = OtePropertiesCore.javaIoTmpdir.getValue();
}
String title = OtePropertiesCore.serverTitle.getValue();
String name = OtePropertiesCore.userName.getValue();
String keepEnvAliveWithNoUsersStr = OtePropertiesCore.serverKeepalive.getValue();
boolean keepEnvAliveWithNoUsers = true;
if (keepEnvAliveWithNoUsersStr != null) {
keepEnvAliveWithNoUsers = Boolean.parseBoolean(keepEnvAliveWithNoUsersStr);
}
final TestEnvironmentServiceConfigImpl config =
new TestEnvironmentServiceConfigImpl(keepEnvAliveWithNoUsers, title, name, outfileLocation, null);
String version = "unknown";
String comment = "";
Bundle bundle = FrameworkUtil.getBundle(OTEServerCreationComponent.class);
if(bundle != null){
BundleContext context = bundle.getBundleContext();
if(context != null){
version = context.getBundle().getHeaders().get("Bundle-Version").toString();
comment = context.getBundle().getHeaders().get("Bundle-Description").toString();
}
}
String station = "unknown";
try {
station = InetAddress.getLocalHost().getHostName();
} catch (UnknownHostException ex) {
OseeLog.log(OTEServerCreationComponent.class, Level.SEVERE, ex);
}
boolean useJiniLookup = OtePropertiesCore.useLookup.getValue() != null;
boolean isLocalConnector = false;
int index = oteServerFactoryClass.indexOf('.');
String type = oteServerFactoryClass.substring(index > 0 ? index + 1 : 0);
final PropertyParamter propertyParameter =
new PropertyParamter(version, comment, station, type, useJiniLookup, isLocalConnector);
Thread th = new Thread(new Runnable(){
@Override
public void run(){
try {
oteServiceStart.start(new JiniServiceSideConnector(), config, propertyParameter, oteServerFactoryClass);
} catch (Exception e) {
e.printStackTrace();
}
}
});
th.start();
} catch (Exception ex){
OseeLog.log(getClass(), Level.SEVERE, ex);
}
}
}
public void stop() {
try {
oteServiceStart.stop();
} catch (Exception ex) {
OseeLog.log(getClass(), Level.SEVERE, ex);
}
}
}