/*******************************************************************************
* Copyright (c) 2013 BREDEX GmbH.
* 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:
* BREDEX GmbH - initial API and implementation and/or initial documentation
*******************************************************************************/
package org.eclipse.jubula.autagent.commands;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Vector;
import org.eclipse.jubula.tools.internal.constants.AutConfigConstants;
import org.eclipse.jubula.tools.internal.constants.CommandConstants;
import org.eclipse.jubula.tools.internal.utils.MonitoringUtil;
import org.osgi.framework.Bundle;
/**
* @author BREDEX GmbH
* @created September 25, 2013
*
*/
public class StartJavaFXAutServerCommand extends AbstractStartJavaAutServer {
/** the classpath of the AUT Server */
private String m_autServerClasspath = "AutServerClasspath"; //$NON-NLS-1$
/**
* {@inheritDoc}
*/
protected String[] createCmdArray(String baseCmd,
Map<String, String> parameters) {
List<String> cmds = new Vector<String>();
cmds.add(baseCmd);
StringBuffer autServerClasspath = new StringBuffer();
createServerClasspath(autServerClasspath);
List<String> autAgentArgs = new ArrayList<String>();
autAgentArgs.add(String.valueOf(parameters
.get(AutConfigConstants.AUT_AGENT_HOST)));
autAgentArgs.add(String.valueOf(parameters
.get(AutConfigConstants.AUT_AGENT_PORT)));
autAgentArgs.add(String.valueOf(parameters
.get(AutConfigConstants.AUT_NAME)));
if (!isRunningFromExecutable(parameters)) {
createAutServerLauncherClasspath(cmds, autServerClasspath,
parameters);
createAutServerClasspath(autServerClasspath, cmds, parameters);
cmds.addAll(autAgentArgs);
// information for AUT server that agent is not used
cmds.add(CommandConstants.RC_COMMON_AGENT_INACTIVE);
} else {
String serverBasePath = createServerBasePath();
autServerClasspath.append(PATH_SEPARATOR).append(serverBasePath)
.append(PATH_SEPARATOR).append(getRcBundleClassPath());
m_autServerClasspath = autServerClasspath.toString();
}
cmds.addAll(createAutArguments(parameters));
return cmds.toArray(new String[cmds.size()]);
}
/**
* {@inheritDoc}
*/
protected String getServerClassName() {
return CommandConstants.AUT_JAVAFX_SERVER;
}
/**
* {@inheritDoc}
*/
public String getRcBundleId() {
return CommandConstants.RC_JAVAFX_BUNDLE_ID;
}
@Override
protected String[] createEnvArray(Map<String, String> parameters,
boolean isAgentSet) {
if (isRunningFromExecutable(parameters)
|| MonitoringUtil.shouldAndCanRunWithMonitoring(parameters)) {
setEnv(parameters, m_autServerClasspath);
boolean agentActive = true;
return super.createEnvArray(parameters, agentActive);
}
return super.createEnvArray(parameters, isAgentSet);
}
/**
*
* @return the class path corresponding to the receiver's RC bundle.
*/
protected String getRcBundleClassPath() {
Bundle rcBundle = AbstractStartToolkitAut
.getBundleForID(getRcBundleId());
List<String> classList = AbstractStartToolkitAut
.getPathforBundle(rcBundle);
return AbstractStartToolkitAut.createClassPath(classList
.toArray(new String[classList.size()]));
}
@Override
protected String getMainClassFromManifest(Map parameters) {
String jarFile = createAbsoluteJarPath(parameters);
String attr = getAttributeFromManifest("main-class", jarFile); //$NON-NLS-1$
/*
* Replacing "/" with "." because, in the Manifest file of an
* Application that was build with JavaFX-Ant-Tasks, the path to the
* JavaFX loader class has slashes but for the Classloader we need the
* qualified class name with dots.
*/
return attr.replace("/", "."); //$NON-NLS-1$//$NON-NLS-2$
}
}