Skip to content
Open
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
6 changes: 4 additions & 2 deletions as/plugins/org.jboss.ide.eclipse.as.core/META-INF/MANIFEST.MF
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,8 @@ Require-Bundle: org.apache.ant;bundle-version="1.7.1",
org.jboss.tools.foundation.core;bundle-version="1.1.0",
org.jboss.tools.jmx.core;bundle-version="1.6.0";visibility:=reexport,
org.eclipse.jdt.debug;bundle-version="3.8.100",
org.jboss.tools.common.jdt.debug;bundle-version="3.10.2"
org.jboss.tools.common.jdt.debug;bundle-version="3.10.2",
org.eclipse.m2e.launching
Bundle-ActivationPolicy: lazy
Export-Package: org.jboss.ide.eclipse.as.core,
org.jboss.ide.eclipse.as.core.extensions.descriptors,
Expand All @@ -59,7 +60,8 @@ Export-Package: org.jboss.ide.eclipse.as.core,
org.jboss.tools.as.core.server.controllable.subsystems,
org.jboss.tools.as.core.server.controllable.subsystems.internal;x-friends:="org.jboss.tools.as.test.core,org.jboss.ide.eclipse.as.ui",
org.jboss.tools.as.core.server.controllable.systems,
org.jboss.tools.as.core.server.controllable.util
org.jboss.tools.as.core.server.controllable.util,
org.jboss.tools.as.core.server.wildflyjar
Bundle-ClassPath: dom4j-1.6.1.jar,
jaxen-1.1-beta-6.jar,
getopt.jar,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
/*******************************************************************************
* Copyright (c) 2021 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.tools.as.core.server.wildflyjar;

import org.eclipse.m2e.internal.launch.MavenLaunchDelegate;

public class WildflyJarLaunchConfigurationDelegate extends MavenLaunchDelegate {
public static final String ID = "org.jboss.tools.as.core.server.wildflyjar.WildflyJarLaunchConfiguration";
public static final String DEFAULT_GOAL = "wildfly-jar:dev-watch";
}
13 changes: 13 additions & 0 deletions as/plugins/org.jboss.ide.eclipse.as.core/plugin.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3021,4 +3021,17 @@
</supported>
</extension>
<!-- AUTOGEN_SERVER_ADAPTER_CHUNK -->


<extension
point="org.eclipse.debug.core.launchConfigurationTypes">
<launchConfigurationType
delegate="org.jboss.tools.as.core.server.wildflyjar.WildflyJarLaunchConfigurationDelegate"
id="org.jboss.tools.as.core.server.wildflyjar.WildflyJarLaunchConfiguration"
sourceLocatorId="org.eclipse.m2e.launching.MavenSourceLocator"
sourcePathComputerId="org.eclipse.m2e.launching.MavenSourceComputer"
modes="run, debug"
name="WildFly Jar">
</launchConfigurationType>
</extension>
</plugin>
5 changes: 4 additions & 1 deletion as/plugins/org.jboss.ide.eclipse.as.ui/META-INF/MANIFEST.MF
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,10 @@ Require-Bundle: com.ibm.icu;bundle-version="4.2.1",
org.jboss.tools.foundation.ui;bundle-version="1.1.0",
org.jboss.tools.jmx.core;bundle-version="1.7.0",
org.eclipse.jst.server.ui;bundle-version="1.1.100",
org.eclipse.swt
org.eclipse.swt,
org.eclipse.m2e.core,
org.eclipse.m2e.maven.runtime,
org.eclipse.m2e.launching
Bundle-ActivationPolicy: lazy
Export-Package: org.jboss.ide.eclipse.as.ui,
org.jboss.ide.eclipse.as.ui.actions,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,131 @@
package org.jboss.ide.eclipse.as.ui.wildflyjar;

import java.util.ArrayList;

import org.eclipse.core.resources.IContainer;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Path;
import org.eclipse.debug.core.DebugPlugin;
import org.eclipse.debug.core.ILaunchConfiguration;
import org.eclipse.debug.core.ILaunchConfigurationType;
import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
import org.eclipse.debug.core.ILaunchManager;
import org.eclipse.debug.ui.DebugUITools;
import org.eclipse.debug.ui.ILaunchGroup;
import org.eclipse.debug.ui.ILaunchShortcut;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.m2e.actions.MavenLaunchConstants;
import org.eclipse.m2e.internal.launch.LaunchingUtils;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.PlatformUI;
import org.jboss.tools.as.core.server.wildflyjar.WildflyJarLaunchConfigurationDelegate;

public class RunAsWildflyJar implements ILaunchShortcut {
public static final String ID_EXTERNAL_TOOLS_LAUNCH_GROUP = "org.eclipse.ui.externaltools.launchGroup"; //$NON-NLS-1$

@Override
public void launch(IEditorPart editor, String mode) {
// Do nothing
}

@Override
public void launch(ISelection selection, String mode) {
IContainer basedir = getBaseDir(selection);
if (basedir == null)
return;

ILaunchConfiguration launchConfiguration = getLaunchConfiguration(basedir, mode);
if (launchConfiguration == null) {
return;
}

ILaunchGroup group = DebugUITools.getLaunchGroup(launchConfiguration, mode);
String groupId = group != null ? group.getIdentifier() : ID_EXTERNAL_TOOLS_LAUNCH_GROUP;
DebugUITools.openLaunchConfigurationDialog(getShell(), launchConfiguration, groupId, null);
}

private ILaunchConfiguration getLaunchConfiguration(IContainer basedir, String mode) {
ILaunchManager launchManager = DebugPlugin.getDefault().getLaunchManager();
ILaunchConfigurationType launchConfigurationType = launchManager
.getLaunchConfigurationType(WildflyJarLaunchConfigurationDelegate.ID);

try {
ArrayList<ILaunchConfiguration> match = findMatchingConfigs(launchManager, launchConfigurationType, basedir.getLocation());
if( match != null && match.size() > 0 )
return match.get(0);

String newName = launchManager.generateLaunchConfigurationName(basedir.getLocation().lastSegment());
ILaunchConfigurationWorkingCopy workingCopy = launchConfigurationType.newInstance(null, newName);
workingCopy.setAttribute(MavenLaunchConstants.ATTR_POM_DIR,
LaunchingUtils.generateProjectLocationVariableExpression(basedir.getProject()));
workingCopy.setAttribute(MavenLaunchConstants.ATTR_GOALS, WildflyJarLaunchConfigurationDelegate.DEFAULT_GOAL);
return workingCopy.doSave();
} catch (Exception ex) {
}
return null;
}

private ArrayList<ILaunchConfiguration> findMatchingConfigs(ILaunchManager manager, ILaunchConfigurationType type,
IPath basedirLocation) throws CoreException {
ILaunchConfiguration[] launchConfigurations = manager.getLaunchConfigurations(type);
ArrayList<ILaunchConfiguration> matchingConfigs = new ArrayList<ILaunchConfiguration>();
for (ILaunchConfiguration configuration : launchConfigurations) {
try {
// substitute variables (may throw exceptions)
String workDir = LaunchingUtils
.substituteVar(configuration.getAttribute(MavenLaunchConstants.ATTR_POM_DIR, (String) null));
if (workDir == null) {
continue;
}
IPath workPath = new Path(workDir);
if (basedirLocation.equals(workPath)) {
matchingConfigs.add(configuration);
}
} catch (CoreException e) {
}
}
return matchingConfigs;
}

private Shell getShell() {
return PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
}

protected IContainer getBaseDir(ISelection selection) {
IContainer basedir = null;
if (selection instanceof IStructuredSelection) {
IStructuredSelection structuredSelection = (IStructuredSelection) selection;
Object object = structuredSelection.getFirstElement();

if (object instanceof IProject || object instanceof IFolder) {
basedir = (IContainer) object;
} else if (object instanceof IFile) {
basedir = ((IFile) object).getParent();
} else if (object instanceof IAdaptable) {
IAdaptable adaptable = (IAdaptable) object;
Object adapter = adaptable.getAdapter(IProject.class);
if (adapter != null) {
basedir = (IContainer) adapter;
} else {
adapter = adaptable.getAdapter(IFolder.class);
if (adapter != null) {
basedir = (IContainer) adapter;
} else {
adapter = adaptable.getAdapter(IFile.class);
if (adapter != null) {
basedir = ((IFile) object).getParent();
}
}
}
}
}
return basedir;
}
}
Loading