use of org.eclipse.wst.server.core.internal.Server in project liferay-ide by liferay.
the class ServerStartup method importGlobalServers.
private void importGlobalServers(File serversFile) {
try {
final IMemento serversMemento = XMLMemento.loadMemento(new FileInputStream(serversFile));
if (serversMemento != null) {
final ResourceManager resourceManager = ResourceManager.getInstance();
final IMemento[] mementos = serversMemento.getChildren("server");
if (ListUtil.isNotEmpty(mementos)) {
for (IMemento memento : mementos) {
final Server server = new Server(null);
try {
final Method loadFromMemento = Base.class.getDeclaredMethod("loadFromMemento", IMemento.class, IProgressMonitor.class);
if (loadFromMemento != null) {
loadFromMemento.setAccessible(true);
loadFromMemento.invoke(server, memento, null);
if (ServerCore.findServer(server.getId()) == null) {
final Method addServer = ResourceManager.class.getDeclaredMethod("addServer", IServer.class);
if (addServer != null) {
addServer.setAccessible(true);
addServer.invoke(resourceManager, server);
final IServerWorkingCopy wc = server.createWorkingCopy();
ServerDelegate delegate = (ServerDelegate) wc.loadAdapter(ServerDelegate.class, null);
delegate.importRuntimeConfiguration(wc.getRuntime(), null);
wc.save(true, null);
}
}
}
} catch (Exception e) {
LiferayServerUI.logError("Unable to load server from memento", e);
}
}
}
}
} catch (FileNotFoundException e) {
}
}
use of org.eclipse.wst.server.core.internal.Server in project liferay-ide by liferay.
the class PortalPublishTask method getTasks.
@SuppressWarnings("rawtypes")
public PublishOperation[] getTasks(IServer server, int kind, List modules, List kindList) {
List<BundlePublishOperation> tasks = new ArrayList<BundlePublishOperation>();
PortalServerBehavior serverBehavior = (PortalServerBehavior) server.loadAdapter(PortalServerBehavior.class, null);
if (ListUtil.isNotEmpty(modules)) {
final int size = modules.size();
for (int i = 0; i < size; i++) {
IModule[] module = (IModule[]) modules.get(i);
Integer deltaKind = (Integer) kindList.get(i);
boolean needClean = false;
IModuleResourceDelta[] deltas = ((Server) server).getPublishedResourceDelta(module);
for (IModuleResourceDelta delta : deltas) {
final IModuleResource resource = delta.getModuleResource();
final IFile resourceFile = (IFile) resource.getAdapter(IFile.class);
if (resourceFile != null && resourceFile.getName().equals("bnd.bnd")) {
needClean = true;
break;
}
}
switch(kind) {
case IServer.PUBLISH_FULL:
case IServer.PUBLISH_INCREMENTAL:
case IServer.PUBLISH_AUTO:
final IProject project = module[0].getProject();
switch(deltaKind) {
case ServerBehaviourDelegate.ADDED:
addOperation(BundlePublishFullAddCleanBuild.class, tasks, server, module);
break;
case ServerBehaviourDelegate.CHANGED:
if (needClean) {
addOperation(BundlePublishFullAddCleanBuild.class, tasks, server, module);
} else {
addOperation(BundlePublishFullAdd.class, tasks, server, module);
}
break;
case ServerBehaviourDelegate.REMOVED:
addOperation(BundlePublishFullRemove.class, tasks, server, module);
break;
case ServerBehaviourDelegate.NO_CHANGE:
final IBundleProject bundleProject = LiferayCore.create(IBundleProject.class, project);
if (bundleProject != null) {
try {
if (isUserRedeploy(serverBehavior, module[0]) || !isDeployed(server, serverBehavior, bundleProject.getSymbolicName())) {
addOperation(BundlePublishFullAddCleanBuild.class, tasks, server, module);
}
} catch (CoreException e) {
LiferayServerCore.logError("Unable to get bsn for project " + project.getName(), e);
}
}
break;
default:
break;
}
break;
default:
break;
}
}
}
return tasks.toArray(new PublishOperation[0]);
}
use of org.eclipse.wst.server.core.internal.Server in project liferay-ide by liferay.
the class PortalServerBehavior method stop.
@Override
public void stop(boolean force) {
if (force) {
terminate();
return;
}
int state = getServer().getServerState();
// If stopped or stopping, no need to run stop command again
if (state == IServer.STATE_STOPPED || state == IServer.STATE_STOPPING) {
return;
} else if (state == IServer.STATE_STARTING) {
terminate();
return;
}
try {
if (state != IServer.STATE_STOPPED) {
setServerState(IServer.STATE_STOPPING);
}
final ILaunchConfiguration launchConfig = ((Server) getServer()).getLaunchConfiguration(false, null);
final ILaunchConfigurationWorkingCopy wc = launchConfig.getWorkingCopy();
final String args = renderCommandLine(getRuntimeStopProgArgs(), " ");
// Remove JMX arguments if present
final String existingVMArgs = wc.getAttribute(IJavaLaunchConfigurationConstants.ATTR_VM_ARGUMENTS, (String) null);
if (existingVMArgs.indexOf(JMX_EXCLUDE_ARGS[0]) >= 0) {
wc.setAttribute(IJavaLaunchConfigurationConstants.ATTR_VM_ARGUMENTS, mergeArguments(existingVMArgs, getRuntimeStopVMArguments(), JMX_EXCLUDE_ARGS, false));
} else {
wc.setAttribute(IJavaLaunchConfigurationConstants.ATTR_VM_ARGUMENTS, mergeArguments(existingVMArgs, getRuntimeStopVMArguments(), null, true));
}
wc.setAttribute(IJavaLaunchConfigurationConstants.ATTR_PROGRAM_ARGUMENTS, args);
wc.setAttribute("org.eclipse.debug.ui.private", true);
wc.setAttribute(ATTR_STOP, "true");
wc.launch(ILaunchManager.RUN_MODE, new NullProgressMonitor());
} catch (Exception e) {
LiferayServerCore.logError("Error stopping portal", e);
}
}
use of org.eclipse.wst.server.core.internal.Server in project webtools.servertools by eclipse.
the class GlobalCommandManager method getReadOnlyFiles.
/**
* Return an array of read-only files.
*
* @param server a server
* @return a possibly empty array of files
*/
public static IFile[] getReadOnlyFiles(IServerAttributes server) {
try {
List<IFile> list = new ArrayList<IFile>();
IFile file = ((Server) server).getFile();
if (file != null)
list.add(file);
IFile[] files = new IFile[list.size()];
list.toArray(files);
return files;
} catch (Exception e) {
if (Trace.SEVERE) {
Trace.trace(Trace.STRING_SEVERE, "getReadOnlyFiles", e);
}
}
return null;
}
use of org.eclipse.wst.server.core.internal.Server in project webtools.servertools by eclipse.
the class ServerTableViewer method addListeners.
protected void addListeners() {
serverResourceListener = new IServerLifecycleListener() {
public void serverAdded(IServer server) {
addServer(server);
server.addServerListener(serverListener);
((Server) server).addPublishListener(publishListener);
}
public void serverChanged(IServer server) {
refreshServer(server);
}
public void serverRemoved(IServer server) {
removeServer(server);
server.removeServerListener(serverListener);
((Server) server).removePublishListener(publishListener);
}
};
ServerCore.addServerLifecycleListener(serverResourceListener);
publishListener = new PublishAdapter() {
public void publishStarted(IServer server) {
handlePublishChange(server, true);
}
public void publishFinished(IServer server, IStatus status) {
handlePublishChange(server, false);
}
};
serverListener = new IServerListener() {
public void serverChanged(ServerEvent event) {
if (event == null)
return;
int eventKind = event.getKind();
IServer server = event.getServer();
if ((eventKind & ServerEvent.SERVER_CHANGE) != 0) {
// server change event
if ((eventKind & ServerEvent.STATE_CHANGE) != 0) {
refreshServer(server);
int state = event.getState();
String id = server.getId();
if (state == IServer.STATE_STARTING || state == IServer.STATE_STOPPING) {
boolean startThread = false;
synchronized (starting) {
if (!starting.contains(id)) {
if (starting.isEmpty())
startThread = true;
starting.add(id);
}
}
if (startThread)
startThread();
} else {
boolean stopThread = false;
synchronized (starting) {
if (starting.contains(id)) {
starting.remove(id);
if (starting.isEmpty())
stopThread = true;
}
}
if (stopThread)
stopThread();
}
} else
refreshServer(server);
} else if ((eventKind & ServerEvent.MODULE_CHANGE) != 0) {
// module change event
if ((eventKind & ServerEvent.STATE_CHANGE) != 0 || (eventKind & ServerEvent.PUBLISH_STATE_CHANGE) != 0) {
refreshServer(server);
}
}
}
};
// add listeners to servers
IServer[] servers = ServerCore.getServers();
if (servers != null) {
int size = servers.length;
for (int i = 0; i < size; i++) {
servers[i].addServerListener(serverListener);
((Server) servers[i]).addPublishListener(publishListener);
}
}
}
Aggregations