Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
import org.jboss.ide.eclipse.as.core.server.IDelegatingServerBehavior;
import org.jboss.ide.eclipse.as.core.server.IJBossBehaviourDelegate;
import org.jboss.ide.eclipse.as.core.server.IModulePathFilter;
import org.jboss.ide.eclipse.as.core.server.IServerModeDetails;

/**
* A complete stub implementation of the interface
Expand Down Expand Up @@ -104,4 +105,13 @@ public void dispose() {
// TODO Auto-generated method stub

}

/*
* Not added to the interface, but is added to the abstract class.
* Subclasses may override to return the proper information.
*/
public IServerModeDetails getServerModeDetails() {
return null;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@

import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.Platform;
import org.eclipse.core.runtime.Status;
import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.wst.server.core.IModule;
Expand All @@ -22,6 +24,7 @@
import org.jboss.ide.eclipse.as.core.server.IDeployableServer;
import org.jboss.ide.eclipse.as.core.server.IDeploymentScannerModifier;
import org.jboss.ide.eclipse.as.core.server.IJBossServerPublishMethodType;
import org.jboss.ide.eclipse.as.core.server.IServerModeDetails;
import org.jboss.ide.eclipse.as.core.util.DeploymentPreferenceLoader;
import org.jboss.ide.eclipse.as.core.util.IJBossToolingConstants;
import org.jboss.ide.eclipse.as.core.util.ServerConverter;
Expand Down Expand Up @@ -115,13 +118,16 @@ public String[] getDeployLocationFolders(IServer server) {

// custom
if( type.equals(JBossServer.DEPLOY_CUSTOM)) {
String serverHome = null;
if (server != null && server.getRuntime()!= null && server.getRuntime().getLocation() != null) {
serverHome = server.getRuntime().getLocation().toString();
IServerModeDetails det = (IServerModeDetails)Platform.getAdapterManager().getAdapter(server, IServerModeDetails.class);
String serverHome = det.getProperty(IServerModeDetails.PROP_SERVER_HOME);

String custom1 = server.getAttribute(IDeployableServer.DEPLOY_DIRECTORY, (String)null);
if( !new Path(custom1).isAbsolute()) {
custom1 = new Path(serverHome).append(custom1).toString();
}
String custom = JBossServer.getDeployFolder(ds, JBossServer.DEPLOY_CUSTOM);
if( !folders.contains(custom) && !custom.equals(serverHome))
folders.add(custom);

if( custom1 != null && !folders.contains(custom1) && !serverHome.equals(custom1))
folders.add(custom1);
}

IModule[] modules2 = org.eclipse.wst.server.core.ServerUtil.getModules(server.getServerType().getRuntimeType().getModuleTypes());
Expand All @@ -148,8 +154,8 @@ public String[] getDeployLocationFolders(IServer server) {
* standalone/deployments
*/
protected String getInsideServerDeployFolder(IServer server) {
JBossServer ds = (JBossServer)ServerConverter.getJBossServer(server);
return ds.getDeployFolder(IDeployableServer.DEPLOY_SERVER);
IServerModeDetails det = (IServerModeDetails)Platform.getAdapterManager().getAdapter(server, IServerModeDetails.class);
return det.getProperty(IServerModeDetails.PROP_SERVER_DEPLOYMENTS_FOLDER);
}

/*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,6 @@
import org.jboss.ide.eclipse.as.core.server.internal.BehaviourModel.Behaviour;
import org.jboss.ide.eclipse.as.core.server.internal.BehaviourModel.BehaviourImpl;
import org.jboss.ide.eclipse.as.core.server.internal.launch.DelegatingStartLaunchConfiguration;
import org.jboss.ide.eclipse.as.core.util.DeploymentPreferenceLoader;
import org.jboss.ide.eclipse.as.core.util.ServerConverter;
import org.jboss.ide.eclipse.as.wtp.core.util.ServerModelUtilities;

Expand All @@ -54,10 +53,13 @@ public DelegatingServerBehavior() {
}

public synchronized IJBossBehaviourDelegate getDelegate() {
IJBossServerPublishMethodType type = DeploymentPreferenceLoader.getCurrentDeploymentMethodType(getServer());
String id = type == null ? LocalPublishMethod.LOCAL_PUBLISH_METHOD : type.getId();
IJBossServerPublishMethodType type = BehaviourModel.getPublishMethodType(getServer(), LocalPublishMethod.LOCAL_PUBLISH_METHOD);
String id = type == null ? null : type.getId();
IJBossBehaviourDelegate ret = null;
if( id.equals(lastModeId) && delegate != null && delegate.getBehaviourTypeId().equals(id))
if( id == null ) {
lastModeId = null;
ret = null;
} else if( id.equals(lastModeId) && delegate != null && delegate.getBehaviourTypeId().equals(id))
ret = delegate;
else {
Behaviour b = BehaviourModel.getModel().getBehaviour(getServer().getServerType().getId());
Expand All @@ -83,37 +85,42 @@ public IModulePathFilter getPathFilter(IModule[] moduleTree) {

public void stop(boolean force) {
Trace.trace(Trace.STRING_FINER, "DelegatingServerBehavior initiating stop for server " + getServer().getName()); //$NON-NLS-1$
getDelegate().stop(force);
if( getDelegate() != null )
getDelegate().stop(force);
}

@Override
public void setServerStarting() {
synchronized(serverStateLock) {
super.setServerStarting();
getDelegate().onServerStarting();
if( getDelegate() != null )
getDelegate().onServerStarting();
}
}

@Override
public void setServerStarted() {
synchronized(serverStateLock) {
super.setServerStarted();
getDelegate().onServerStarted();
if( getDelegate() != null )
getDelegate().onServerStarted();
}
}

@Override
public void setServerStopping() {
synchronized(serverStateLock) {
super.setServerStopping();
getDelegate().onServerStopping();
if( getDelegate() != null )
getDelegate().onServerStopping();
}
}

public void setServerStopped() {
synchronized(serverStateLock) {
super.setServerStopped();
getDelegate().onServerStopped();
if( getDelegate() != null )
getDelegate().onServerStopped();
}
IModule[] mods = getServer().getModules();
setModulesStopped(new IModule[]{}, mods);
Expand Down Expand Up @@ -148,15 +155,18 @@ public void setRunMode(String mode) {

protected void publishStart(final IProgressMonitor monitor) throws CoreException {
super.publishStart(monitor);
getDelegate().publishStart(monitor);
if( getDelegate() != null )
getDelegate().publishStart(monitor);
}

protected void publishFinish(final IProgressMonitor monitor) throws CoreException {
Trace.trace(Trace.STRING_FINER, "PublishFinish in DelegatingServerBehavior"); //$NON-NLS-1$
try {
getDelegate().publishFinish(monitor);
} finally {
super.publishFinish(monitor);
if( getDelegate() != null ) {
try {
getDelegate().publishFinish(monitor);
} finally {
super.publishFinish(monitor);
}
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@
import org.jboss.ide.eclipse.as.core.publishers.LocalPublishMethod;
import org.jboss.ide.eclipse.as.core.server.IJBossServerRuntime;
import org.jboss.ide.eclipse.as.core.server.IProcessProvider;
import org.jboss.ide.eclipse.as.core.server.IServerModeDetails;
import org.jboss.ide.eclipse.as.core.server.IServerStatePoller;
import org.jboss.ide.eclipse.as.core.server.internal.launch.configuration.LocalStopLaunchConfigurator;
import org.jboss.ide.eclipse.as.core.util.IEventCodes;
Expand All @@ -55,7 +56,8 @@
* launch configuration may all try to change these details at varying times.
*
*/
public class LocalJBossBehaviorDelegate extends AbstractJBossBehaviourDelegate implements IProcessProvider {
public class LocalJBossBehaviorDelegate extends AbstractJBossBehaviourDelegate
implements IProcessProvider {

private static final String STOP_LAUNCH_TYPE = "org.jboss.ide.eclipse.as.core.server.stopLaunchConfiguration"; //$NON-NLS-1$

Expand Down Expand Up @@ -410,4 +412,9 @@ protected void pollServer(final boolean expectedState) {
pollServer(expectedState, poller);
}
}

@Override
public IServerModeDetails getServerModeDetails() {
return new LocalServerModeDetails(getServer());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
/*******************************************************************************
* Copyright (c) 2013 Red Hat, Inc.
* Distributed under license by Red Hat, Inc. All rights reserved.
* This program is 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:
* Red Hat, Inc. - initial API and implementation
******************************************************************************/
package org.jboss.ide.eclipse.as.core.server.internal;

import org.eclipse.core.runtime.Path;
import org.eclipse.wst.server.core.IRuntime;
import org.eclipse.wst.server.core.IServer;
import org.jboss.ide.eclipse.as.core.server.IJBossServerRuntime;
import org.jboss.ide.eclipse.as.core.server.IServerModeDetails;
import org.jboss.ide.eclipse.as.core.server.internal.extendedproperties.JBossExtendedProperties;
import org.jboss.ide.eclipse.as.core.server.internal.extendedproperties.ServerExtendedProperties;
import org.jboss.ide.eclipse.as.core.server.internal.v7.LocalJBoss7ServerRuntime;
import org.jboss.ide.eclipse.as.core.util.IJBossRuntimeResourceConstants;
import org.jboss.ide.eclipse.as.core.util.RuntimeUtils;

/**
* Local servers pull most of their critical configuration locations from the runtime.
* Technically the server is not required, only the runtime is. But for other types
* like RSE, which store their data in the server object, the server itself is needed.
*
* Eventually even this class will be broken up on a per-version basis,
* but at this point it is not necessary.
*/
public class LocalServerModeDetails implements IServerModeDetails {

private IServer server;
public LocalServerModeDetails(IServer server) {
this.server = server;
}

@Override
public String getProperty(String prop) {
IRuntime rt = server.getRuntime();
if( PROP_SERVER_HOME.equals(prop)) {
return rt == null ? null : rt.getLocation().toOSString();
}
IJBossServerRuntime jbrt = RuntimeUtils.getJBossServerRuntime(rt);
if( PROP_CONFIG_NAME.equals(prop)) {
return jbrt == null ? null : jbrt.getJBossConfiguration();
}
if( PROP_CONFIG_LOCATION.equals(prop)) {
return jbrt == null ? null : jbrt.getConfigLocation();
}
if( PROP_AS7_CONFIG_FILE.equals(prop)) {
if( isAS7Structure()) {
return ((LocalJBoss7ServerRuntime)jbrt).getConfigurationFile();
}
}
if( PROP_SERVER_DEPLOYMENTS_FOLDER.equals(prop)) {
ServerExtendedProperties sep = ExtendedServerPropertiesAdapterFactory.getServerExtendedProperties(server);
return ((JBossExtendedProperties)sep).getServerDeployLocation();
}
return null;
}
private boolean isAS7Structure() {
ServerExtendedProperties sep = ExtendedServerPropertiesAdapterFactory.getServerExtendedProperties(server);
if (sep != null && sep.getFileStructure() == ServerExtendedProperties.FILE_STRUCTURE_CONFIG_DEPLOYMENTS) {
return true;
}
return false;
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
/*******************************************************************************
* Copyright (c) 2013 Red Hat, Inc.
* Distributed under license by Red Hat, Inc. All rights reserved.
* This program is 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:
* Red Hat, Inc. - initial API and implementation
******************************************************************************/
package org.jboss.ide.eclipse.as.core.server.internal;

import org.eclipse.core.runtime.IAdapterFactory;
import org.eclipse.wst.server.core.IServer;
import org.eclipse.wst.server.core.model.ServerBehaviourDelegate;
import org.jboss.ide.eclipse.as.core.publishers.LocalPublishMethod;
import org.jboss.ide.eclipse.as.core.server.IDelegatingServerBehavior;
import org.jboss.ide.eclipse.as.core.server.IJBossBehaviourDelegate;
import org.jboss.ide.eclipse.as.core.server.IServerModeDetails;
import org.jboss.ide.eclipse.as.core.util.DeploymentPreferenceLoader;
import org.jboss.ide.eclipse.as.core.util.IJBossToolingConstants;

public class ServerModeDetailsAdapterFactory implements IAdapterFactory, IJBossToolingConstants {

public ServerModeDetailsAdapterFactory() {
}

public Object getAdapter(Object adaptableObject, Class adapterType) {
IServerModeDetails props = getModeDetails(adaptableObject);
if( props != null && adapterType.isAssignableFrom(props.getClass()))
return props;
return null;
}

public IServerModeDetails getModeDetails(Object adaptableObject) {
if( adaptableObject instanceof IServer ) {
IServer ao = (IServer)adaptableObject;
ServerBehaviourDelegate del = (ServerBehaviourDelegate)ao.loadAdapter(ServerBehaviourDelegate.class, null);
if( del instanceof IDelegatingServerBehavior) {
IJBossBehaviourDelegate del2 = ((IDelegatingServerBehavior)del).getDelegate();
if( del2 instanceof AbstractJBossBehaviourDelegate) {
return ((AbstractJBossBehaviourDelegate)del2).getServerModeDetails();
}
}
}
return null;
}

public Class[] getAdapterList() {
return new Class[]{ IServerModeDetails.class};
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,9 @@
******************************************************************************/
package org.jboss.ide.eclipse.as.core.server.internal.extendedproperties;

import static org.jboss.ide.eclipse.as.core.util.IJBossRuntimeResourceConstants.AS7_DEPLOYMENTS;
import static org.jboss.ide.eclipse.as.core.util.IJBossRuntimeResourceConstants.AS7_STANDALONE;

import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.core.runtime.IPath;
Expand All @@ -18,13 +21,15 @@
import org.eclipse.osgi.util.NLS;
import org.eclipse.wst.server.core.IRuntime;
import org.jboss.ide.eclipse.as.core.Messages;
import org.jboss.ide.eclipse.as.core.resolvers.ConfigNameResolver;
import org.jboss.ide.eclipse.as.core.server.IDefaultLaunchArguments;
import org.jboss.ide.eclipse.as.core.server.IDeploymentScannerModifier;
import org.jboss.ide.eclipse.as.core.server.IServerModuleStateVerifier;
import org.jboss.ide.eclipse.as.core.server.internal.v7.JBoss7ModuleStateVerifier;
import org.jboss.ide.eclipse.as.core.server.internal.v7.LocalJBoss7DeploymentScannerAdditions;
import org.jboss.ide.eclipse.as.core.server.internal.v7.LocalJBoss7ServerRuntime;
import org.jboss.ide.eclipse.as.core.util.IJBossRuntimeResourceConstants;
import org.jboss.ide.eclipse.as.core.util.ServerUtil;
import org.jboss.ide.eclipse.as.management.core.IJBoss7ManagerService;
import org.jboss.ide.eclipse.as.management.core.IJBossManagerServiceProvider;
import org.jboss.ide.eclipse.as.management.core.JBoss7ManagerUtil;
Expand Down Expand Up @@ -116,4 +121,15 @@ public IJBoss7ManagerService getManagerService() {
public String getManagerServiceId() {
return IJBoss7ManagerService.AS_VERSION_710_Beta;
}

/**
* Returns the full path of a local server's server/{config}/deploy folder
*/
@Override
public String getServerDeployLocation() {
if( runtime == null )
return null;
IPath p = runtime.getLocation().append(AS7_STANDALONE).append(AS7_DEPLOYMENTS);
return ServerUtil.makeGlobal(runtime, p).toString();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@
import org.eclipse.jdt.internal.launching.environments.EnvironmentsManager;
import org.eclipse.jdt.launching.environments.IExecutionEnvironment;
import org.eclipse.osgi.util.NLS;
import org.eclipse.wst.server.core.IRuntimeType;
import org.jboss.ide.eclipse.as.core.JBossServerCorePlugin;
import org.jboss.ide.eclipse.as.core.Messages;
import org.jboss.ide.eclipse.as.core.resolvers.ConfigNameResolver;
Expand All @@ -31,7 +30,6 @@
import org.jboss.ide.eclipse.as.core.server.internal.JBossLT6ModuleStateVerifier;
import org.jboss.ide.eclipse.as.core.server.internal.JBossServer;
import org.jboss.ide.eclipse.as.core.server.internal.JMXServerDeploymentScannerAdditions;
import org.jboss.ide.eclipse.as.core.util.IConstants;
import org.jboss.ide.eclipse.as.core.util.IJBossRuntimeResourceConstants;
import org.jboss.ide.eclipse.as.core.util.IJBossToolingConstants;
import org.jboss.ide.eclipse.as.core.util.ServerUtil;
Expand Down Expand Up @@ -69,6 +67,7 @@ protected ServerBeanLoader getServerBeanLoader() {

/**
* Returns the full path of a local server's server/{config}/deploy folder
* or standalone/deployments folder depending on configuration location
*/
public String getServerDeployLocation() {
String original = ConfigNameResolver.getVariablePattern(ConfigNameResolver.JBOSS_CONFIG_DIR) +
Expand Down
Loading