Author: rombert Date: Fri Jul 19 15:02:22 2013 New Revision: 1504893 URL: http://svn.apache.org/r1504893 Log: SLING-2793 - [Tooling] Align Eclipse tooling to proposed structure
WST server definition complete, now working on getting modules to deploy on the Sling server. Added: sling/whiteboard/asanso/plugins/eclipse/slingclipse-wst/src/org/apache/sling/ide/eclipse/wst/internal/SlingContentFacetInstallDelegate.java - copied, changed from r1504892, sling/whiteboard/asanso/plugins/eclipse/slingclipse-wst/src/org/apache/sling/ide/eclipse/wst/internal/SlingLaunchpadBehaviour.java sling/whiteboard/asanso/plugins/eclipse/slingclipse-wst/src/org/apache/sling/ide/eclipse/wst/internal/SlingContentFacetUninstallDelegate.java (with props) sling/whiteboard/asanso/plugins/eclipse/slingclipse-wst/src/org/apache/sling/ide/eclipse/wst/internal/SlingLaunchpadLaunchConfigurationDelegate.java (with props) sling/whiteboard/asanso/plugins/eclipse/slingclipse-wst/src/org/apache/sling/ide/eclipse/wst/internal/SlingLaunchpadLaunchConfigurationTabGroup.java (with props) sling/whiteboard/asanso/plugins/eclipse/slingclipse-wst/src/org/apache/sling/ide/eclipse/wst/internal/SlingLaunchpadLaunchableAdapterDelegate.java - copied, changed from r1504892, sling/whiteboard/asanso/plugins/eclipse/slingclipse-wst/src/org/apache/sling/ide/eclipse/wst/internal/SlingLaunchpadBehaviour.java Modified: sling/whiteboard/asanso/plugins/eclipse/slingclipse-wst/META-INF/MANIFEST.MF sling/whiteboard/asanso/plugins/eclipse/slingclipse-wst/plugin.xml sling/whiteboard/asanso/plugins/eclipse/slingclipse-wst/src/org/apache/sling/ide/eclipse/wst/internal/SlingLaunchpadBehaviour.java sling/whiteboard/asanso/plugins/eclipse/slingclipse-wst/src/org/apache/sling/ide/eclipse/wst/internal/SlingLaunchpadRuntime.java sling/whiteboard/asanso/plugins/eclipse/slingclipse-wst/src/org/apache/sling/ide/eclipse/wst/internal/SlingLaunchpadServer.java Modified: sling/whiteboard/asanso/plugins/eclipse/slingclipse-wst/META-INF/MANIFEST.MF URL: http://svn.apache.org/viewvc/sling/whiteboard/asanso/plugins/eclipse/slingclipse-wst/META-INF/MANIFEST.MF?rev=1504893&r1=1504892&r2=1504893&view=diff ============================================================================== --- sling/whiteboard/asanso/plugins/eclipse/slingclipse-wst/META-INF/MANIFEST.MF (original) +++ sling/whiteboard/asanso/plugins/eclipse/slingclipse-wst/META-INF/MANIFEST.MF Fri Jul 19 15:02:22 2013 @@ -5,8 +5,18 @@ Bundle-SymbolicName: org.apache.sling.sl Bundle-Version: 0.0.1.qualifier Bundle-RequiredExecutionEnvironment: JavaSE-1.6 Bundle-ClassPath: . -Import-Package: org.eclipse.core.runtime;version="3.4.0", +Import-Package: org.eclipse.core.resources, + org.eclipse.core.runtime;version="3.4.0", + org.eclipse.core.runtime.jobs, + org.eclipse.debug.core, + org.eclipse.debug.core.model, + org.eclipse.debug.ui, + org.eclipse.debug.ui.sourcelookup, + org.eclipse.jdt.debug.ui.launchConfigurations, + org.eclipse.jdt.launching, org.eclipse.jface.viewers, + org.eclipse.jst.common.project.facet.core, + org.eclipse.jst.server.core, org.eclipse.swt, org.eclipse.swt.events, org.eclipse.swt.layout, @@ -14,8 +24,8 @@ Import-Package: org.eclipse.core.runtime org.eclipse.ui, org.eclipse.ui.forms, org.eclipse.ui.forms.widgets, + org.eclipse.wst.common.project.facet.core, org.eclipse.wst.server.core, org.eclipse.wst.server.core.model, - org.eclipse.wst.server.ui.editor, - org.eclipse.core.resources, - org.eclipse.core.runtime.jobs + org.eclipse.wst.server.ui, + org.eclipse.wst.server.ui.editor Modified: sling/whiteboard/asanso/plugins/eclipse/slingclipse-wst/plugin.xml URL: http://svn.apache.org/viewvc/sling/whiteboard/asanso/plugins/eclipse/slingclipse-wst/plugin.xml?rev=1504893&r1=1504892&r2=1504893&view=diff ============================================================================== --- sling/whiteboard/asanso/plugins/eclipse/slingclipse-wst/plugin.xml (original) +++ sling/whiteboard/asanso/plugins/eclipse/slingclipse-wst/plugin.xml Fri Jul 19 15:02:22 2013 @@ -2,63 +2,167 @@ <?eclipse version="3.0"?> <plugin> - <extension point="org.eclipse.wst.server.core.runtimeTypes"> + <!-- Define the sling module type. TODO needed ? --> + <extension point="org.eclipse.wst.server.core.moduleTypes"> + <moduleType + id="sling.content" + name="Sling module type"/> + </extension> + <!-- Define the sling facet we support --> + <extension point="org.eclipse.wst.common.project.facet.core.facets"> + <project-facet id="sling.content"> + <label>Sling content module</label> + <description>Sling content modules contain content which is installed into the repository as-is. Good examples are static files ( HTML, CSS, JS ), scripts ( JSP, ESP ) and any other form of content.</description> + </project-facet> + + <project-facet-version facet="sling.content" version="1.0"/> + <!-- TODO add image --> + + <action facet="sling.content" version="1.0" type="INSTALL"> + <delegate class="org.apache.sling.ide.eclipse.wst.internal.SlingContentFacetInstallDelegate"/> + </action> + + <action facet="sling.content" version="1.0" type="UNINSTALL"> + <delegate class="org.apache.sling.ide.eclipse.wst.internal.SlingContentFacetUninstallDelegate"/> + </action> + </extension> + + <!-- Define the Sling launchpad runtime type --> + <extension point="org.eclipse.wst.server.core.runtimeTypes"> <runtimeType - id="org.apache.sling.ide.eclipse.wst.slingLaunchpad" - name="Sling Launchpad" - description="Sling Launchpad" + id="org.apache.sling.launchpad.runtime" + name="Sling Launchpad (runtime name)" + description="Sling Launchpad (runtime description)" vendor="Sling" - version="2.4" + version="1.0" class="org.apache.sling.ide.eclipse.wst.internal.SlingLaunchpadRuntime"> - - <!-- TODO do we need a Sling module type ? --> - - <!-- - <moduleType - types="jst.web" - versions="2.2, 2.3, 2.4, 2.5"/> - <moduleType - types="jst.utility" - versions="1.0"/> - --> + <moduleType types="sling.content" versions="1.0"/> </runtimeType> </extension> - <!-- TODO remove launchConfigId for now ? --> + <!-- Define the Sling launchpad server type --> <extension point="org.eclipse.wst.server.core.serverTypes"> <serverType - id="org.apache.sling.ide.eclipse.wst.slingLaunchpad" - name="Sling Launchpad" - description="Sling Launchpad" + id="org.apache.sling.launchpad.server" + name="Sling Launchpad (server name)" + description="Sling Launchpad (server description)" supportsRemoteHosts="true" runtime="true" startTimeout="30000" stopTimeout="15000" initialState="stopped" hasConfiguration="true" - launchConfigId="org.apache.sling.ide.eclipse.wst.slingLaunchpadConfigurationType" - runtimeTypeId="org.apache.sling.ide.eclipse.wst.slingLaunchpad" + launchConfigId="org.apache.sling.ide.eclipse.launchpad.launchConfigurationType" + runtimeTypeId="org.apache.sling.launchpad.runtime" class="org.apache.sling.ide.eclipse.wst.internal.SlingLaunchpadServer" behaviourClass="org.apache.sling.ide.eclipse.wst.internal.SlingLaunchpadBehaviour"> </serverType> </extension> -<!-- TODO move to wst.ui bundle --> + <extension point="org.eclipse.wst.server.core.launchableAdapters"> + <launchableAdapter + class="org.apache.sling.ide.eclipse.wst.internal.SlingLaunchpadLaunchableAdapterDelegate" + id="org.sling.slingclipse.web"/> + </extension> + + <!-- Define the launch configuration type for the launchpad TODO do we need a sourcePathComputer ? --> + <extension point="org.eclipse.debug.core.launchConfigurationTypes"> + <launchConfigurationType + id="org.apache.sling.ide.eclipse.launchpad.launchConfigurationType" + name="Sling Launchpad" + delegate="org.apache.sling.ide.eclipse.wst.internal.SlingLaunchpadLaunchConfigurationDelegate" + modes="run" + sourceLocatorId="org.eclipse.jdt.launching.sourceLocator.JavaSourceLookupDirector"/> + </extension> + + <!-- Declare that the launchpad runtime type, supporting content modules --> + <extension point="org.eclipse.wst.common.project.facet.core.runtimes"> + <runtime-component-type id="org.apache.sling.launchpad"/> + <runtime-component-version type="org.apache.sling.launchpad" version="1.0"/> + + <adapter> + <runtime-component + id="org.apache.sling.launchpad"/> + <factory + class="org.eclipse.jst.server.core.internal.RuntimeClasspathProvider$Factory"/> + <type + class="org.eclipse.jst.common.project.facet.core.IClasspathProvider"/> + </adapter> + + <supported> + <runtime-component id="org.apache.sling.launchpad" version="1.0"/> + <facet id="sling.content" version="1.0"/> + </supported> + </extension> + + + <!-- Define default facets ( needed ? ) --> + <extension point="org.eclipse.wst.common.project.facet.core.defaultFacets"> + <default-facets> + <runtime-component id="org.apache.sling.launchpad"/> + <facet id="sling.content" version="1.0"/> + </default-facets> + </extension> + + <!-- Map from the launchpad runtime type to our runtime components --> + <extension point="org.eclipse.jst.server.core.runtimeFacetMappings"> + <runtimeFacetMapping + runtimeTypeId="org.apache.sling.launchpad.runtime" + runtime-component="org.apache.sling.launchpad" + version="1.0"/> + </extension> + + <!-- Define the launch configuration's tab group --> + <extension point="org.eclipse.debug.ui.launchConfigurationTabGroups"> + <launchConfigurationTabGroup + id="org.apache.sling.ide.eclipse.launchpad.launchConfigurationTabGroup" + type="org.apache.sling.ide.eclipse.launchpad.launchConfigurationType" + class="org.apache.sling.ide.eclipse.wst.internal.SlingLaunchpadLaunchConfigurationTabGroup"> + </launchConfigurationTabGroup> + </extension> + + + <!-- Define images --> + <!-- TODO move to ui bundle --> <extension point="org.eclipse.wst.server.ui.serverImages"> <image - id="org.apache.sling.ide.eclipse.wst.launchpad" icon="icons/obj16/sling.gif" - typeIds="org.apache.sling.ide.eclipse.wst.slingLaunchpad"/> + typeIds="org.apache.sling.launchpad.server"/> </extension> + <!-- Define the editor section(s) we contribute to the WST UI --> <extension point="org.eclipse.wst.server.ui.editorPageSections"> <section id="org.apache.sling.ide.eclipse.configuration.editor.port" order="10" insertionId="org.eclipse.wst.server.editor.overview.right" - typeIds="org.apache.sling.ide.eclipse.wst.*" + typeIds="org.apache.sling.launchpad.server" class="org.apache.sling.ide.eclipse.wst.ui.internal.ConnectionEditorSection"> </section> - </extension> + </extension> + + <!-- Runtime images --> + <extension point="org.eclipse.wst.common.project.facet.ui.images"> + <image runtime-component-type="org.apache.sling.launchpad" + path="icons/obj16/sling.gif"/> + </extension> + +<!-- + <extension point="org.eclipse.debug.ui.launchConfigurationTypeImages"> + <launchConfigurationTypeImage + id="org.eclipse.wst.server.preview.launchConfigurationTypeImage" + configTypeID="org.eclipse.wst.server.preview.launchConfigurationType" + icon="icons/obj16/preview.gif"> + </launchConfigurationTypeImage> + </extension> + + <extension point="org.eclipse.debug.ui.launchConfigurationTabGroups"> + <launchConfigurationTabGroup + id="org.eclipse.wst.server.preview.launchConfigurationTabGroup" + type="org.eclipse.wst.server.preview.launchConfigurationType" + class="org.eclipse.wst.server.preview.adapter.internal.ui.PreviewLaunchConfigurationTabGroup"> + </launchConfigurationTabGroup> + </extension> + --> </plugin> Copied: sling/whiteboard/asanso/plugins/eclipse/slingclipse-wst/src/org/apache/sling/ide/eclipse/wst/internal/SlingContentFacetInstallDelegate.java (from r1504892, sling/whiteboard/asanso/plugins/eclipse/slingclipse-wst/src/org/apache/sling/ide/eclipse/wst/internal/SlingLaunchpadBehaviour.java) URL: http://svn.apache.org/viewvc/sling/whiteboard/asanso/plugins/eclipse/slingclipse-wst/src/org/apache/sling/ide/eclipse/wst/internal/SlingContentFacetInstallDelegate.java?p2=sling/whiteboard/asanso/plugins/eclipse/slingclipse-wst/src/org/apache/sling/ide/eclipse/wst/internal/SlingContentFacetInstallDelegate.java&p1=sling/whiteboard/asanso/plugins/eclipse/slingclipse-wst/src/org/apache/sling/ide/eclipse/wst/internal/SlingLaunchpadBehaviour.java&r1=1504892&r2=1504893&rev=1504893&view=diff ============================================================================== --- sling/whiteboard/asanso/plugins/eclipse/slingclipse-wst/src/org/apache/sling/ide/eclipse/wst/internal/SlingLaunchpadBehaviour.java (original) +++ sling/whiteboard/asanso/plugins/eclipse/slingclipse-wst/src/org/apache/sling/ide/eclipse/wst/internal/SlingContentFacetInstallDelegate.java Fri Jul 19 15:02:22 2013 @@ -16,12 +16,19 @@ */ package org.apache.sling.ide.eclipse.wst.internal; -import org.eclipse.wst.server.core.model.ServerBehaviourDelegate; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.wst.common.project.facet.core.IDelegate; +import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion; -public class SlingLaunchpadBehaviour extends ServerBehaviourDelegate { +public class SlingContentFacetInstallDelegate implements IDelegate { @Override - public void stop(boolean arg0) { + public void execute(IProject project, IProjectFacetVersion facetVersion, Object config, IProgressMonitor monitor) + throws CoreException { + + // nothing for now } } Added: sling/whiteboard/asanso/plugins/eclipse/slingclipse-wst/src/org/apache/sling/ide/eclipse/wst/internal/SlingContentFacetUninstallDelegate.java URL: http://svn.apache.org/viewvc/sling/whiteboard/asanso/plugins/eclipse/slingclipse-wst/src/org/apache/sling/ide/eclipse/wst/internal/SlingContentFacetUninstallDelegate.java?rev=1504893&view=auto ============================================================================== --- sling/whiteboard/asanso/plugins/eclipse/slingclipse-wst/src/org/apache/sling/ide/eclipse/wst/internal/SlingContentFacetUninstallDelegate.java (added) +++ sling/whiteboard/asanso/plugins/eclipse/slingclipse-wst/src/org/apache/sling/ide/eclipse/wst/internal/SlingContentFacetUninstallDelegate.java Fri Jul 19 15:02:22 2013 @@ -0,0 +1,16 @@ +package org.apache.sling.ide.eclipse.wst.internal; + +import org.eclipse.core.resources.IProject; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.wst.common.project.facet.core.IDelegate; +import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion; + +public class SlingContentFacetUninstallDelegate implements IDelegate { + + @Override + public void execute(IProject arg0, IProjectFacetVersion arg1, Object arg2, IProgressMonitor arg3) + throws CoreException { + } + +} Propchange: sling/whiteboard/asanso/plugins/eclipse/slingclipse-wst/src/org/apache/sling/ide/eclipse/wst/internal/SlingContentFacetUninstallDelegate.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: sling/whiteboard/asanso/plugins/eclipse/slingclipse-wst/src/org/apache/sling/ide/eclipse/wst/internal/SlingContentFacetUninstallDelegate.java ------------------------------------------------------------------------------ svn:keywords = Author Date Id Revision Rev URL Modified: sling/whiteboard/asanso/plugins/eclipse/slingclipse-wst/src/org/apache/sling/ide/eclipse/wst/internal/SlingLaunchpadBehaviour.java URL: http://svn.apache.org/viewvc/sling/whiteboard/asanso/plugins/eclipse/slingclipse-wst/src/org/apache/sling/ide/eclipse/wst/internal/SlingLaunchpadBehaviour.java?rev=1504893&r1=1504892&r2=1504893&view=diff ============================================================================== --- sling/whiteboard/asanso/plugins/eclipse/slingclipse-wst/src/org/apache/sling/ide/eclipse/wst/internal/SlingLaunchpadBehaviour.java (original) +++ sling/whiteboard/asanso/plugins/eclipse/slingclipse-wst/src/org/apache/sling/ide/eclipse/wst/internal/SlingLaunchpadBehaviour.java Fri Jul 19 15:02:22 2013 @@ -16,12 +16,66 @@ */ package org.apache.sling.ide.eclipse.wst.internal; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.IStatus; +import org.eclipse.debug.core.ILaunch; +import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy; +import org.eclipse.wst.server.core.IModule; +import org.eclipse.wst.server.core.IServer; import org.eclipse.wst.server.core.model.ServerBehaviourDelegate; public class SlingLaunchpadBehaviour extends ServerBehaviourDelegate { @Override - public void stop(boolean arg0) { + public void stop(boolean force) { + // TODO stub + setServerState(IServer.STATE_STOPPED); } + public void start() { + // TODO stub + setServerState(IServer.STATE_STARTED); + } + + // TODO refine signature, visibility + protected void setupLaunch(ILaunch launch, String launchMode, IProgressMonitor monitor) throws CoreException { + // TODO check that ports are free + + setServerRestartState(false); + setServerState(IServer.STATE_STARTING); + setMode(launchMode); + } + + @Override + public IStatus canPublish() { + IStatus canPublish = super.canPublish(); + System.out.println("SlingLaunchpadBehaviour.canPublish() is " + canPublish); + return canPublish; + } + + @Override + public boolean canPublishModule(IModule[] module) { + System.out.println("SlingLaunchpadBehaviour.canPublishModule()"); + return super.canPublishModule(module); + } + + @Override + protected void publishServer(int kind, IProgressMonitor monitor) throws CoreException { + System.out.println("SlingLaunchpadBehaviour.publishServer()"); + super.publishServer(kind, monitor); + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.wst.server.core.model.ServerBehaviourDelegate#setupLaunchConfiguration(org.eclipse.debug.core. + * ILaunchConfigurationWorkingCopy, org.eclipse.core.runtime.IProgressMonitor) + */ + @Override + public void setupLaunchConfiguration(ILaunchConfigurationWorkingCopy workingCopy, IProgressMonitor monitor) + throws CoreException { + System.out.println("SlingLaunchpadBehaviour.setupLaunchConfiguration()"); + super.setupLaunchConfiguration(workingCopy, monitor); + } } Added: sling/whiteboard/asanso/plugins/eclipse/slingclipse-wst/src/org/apache/sling/ide/eclipse/wst/internal/SlingLaunchpadLaunchConfigurationDelegate.java URL: http://svn.apache.org/viewvc/sling/whiteboard/asanso/plugins/eclipse/slingclipse-wst/src/org/apache/sling/ide/eclipse/wst/internal/SlingLaunchpadLaunchConfigurationDelegate.java?rev=1504893&view=auto ============================================================================== --- sling/whiteboard/asanso/plugins/eclipse/slingclipse-wst/src/org/apache/sling/ide/eclipse/wst/internal/SlingLaunchpadLaunchConfigurationDelegate.java (added) +++ sling/whiteboard/asanso/plugins/eclipse/slingclipse-wst/src/org/apache/sling/ide/eclipse/wst/internal/SlingLaunchpadLaunchConfigurationDelegate.java Fri Jul 19 15:02:22 2013 @@ -0,0 +1,80 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.sling.ide.eclipse.wst.internal; + +import java.io.File; +import java.util.Map; + +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.Status; +import org.eclipse.debug.core.ILaunch; +import org.eclipse.debug.core.ILaunchConfiguration; +import org.eclipse.debug.core.ILaunchManager; +import org.eclipse.debug.core.model.LaunchConfigurationDelegate; +import org.eclipse.jdt.launching.AbstractJavaLaunchConfigurationDelegate; +import org.eclipse.jdt.launching.ExecutionArguments; +import org.eclipse.jdt.launching.IVMInstall; +import org.eclipse.jdt.launching.IVMRunner; +import org.eclipse.jdt.launching.VMRunnerConfiguration; +import org.eclipse.wst.server.core.IServer; +import org.eclipse.wst.server.core.ServerCore; +import org.eclipse.wst.server.core.ServerUtil; + +public class SlingLaunchpadLaunchConfigurationDelegate extends AbstractJavaLaunchConfigurationDelegate { + + /* (non-Javadoc) + * @see org.eclipse.debug.core.model.ILaunchConfigurationDelegate#launch(org.eclipse.debug.core.ILaunchConfiguration, java.lang.String, org.eclipse.debug.core.ILaunch, org.eclipse.core.runtime.IProgressMonitor) + */ + @Override + public void launch(ILaunchConfiguration configuration, String mode, ILaunch launch, IProgressMonitor monitor) + throws CoreException { + + IServer server = ServerUtil.getServer(configuration); + if (server == null) { + throw new CoreException(new Status(IStatus.ERROR, "org.apache.sling.slingclipse", 0, "No server found", + null)); + } + + if (server.shouldPublish() && ServerCore.isAutoPublishing()) + server.publish(IServer.PUBLISH_INCREMENTAL, monitor); + + SlingLaunchpadBehaviour launchpad = (SlingLaunchpadBehaviour) server.loadAdapter(SlingLaunchpadBehaviour.class, + monitor); + + IVMInstall vm = verifyVMInstall(configuration); + + IVMRunner runner = vm.getVMRunner(mode); + if (runner == null) + runner = vm.getVMRunner(ILaunchManager.RUN_MODE); + + // TODO use + File workingDir = verifyWorkingDirectory(configuration); + String workingDirName = null; + if (workingDir != null) + workingDirName = workingDir.getAbsolutePath(); + + setDefaultSourceLocator(launch, configuration); + + File java = new File("/usr/bin/java"); // TODO configurable and use + + launchpad.setupLaunch(launch, mode, monitor); + launchpad.start(); + } + +} Propchange: sling/whiteboard/asanso/plugins/eclipse/slingclipse-wst/src/org/apache/sling/ide/eclipse/wst/internal/SlingLaunchpadLaunchConfigurationDelegate.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: sling/whiteboard/asanso/plugins/eclipse/slingclipse-wst/src/org/apache/sling/ide/eclipse/wst/internal/SlingLaunchpadLaunchConfigurationDelegate.java ------------------------------------------------------------------------------ svn:keywords = Author Date Id Revision Rev URL Added: sling/whiteboard/asanso/plugins/eclipse/slingclipse-wst/src/org/apache/sling/ide/eclipse/wst/internal/SlingLaunchpadLaunchConfigurationTabGroup.java URL: http://svn.apache.org/viewvc/sling/whiteboard/asanso/plugins/eclipse/slingclipse-wst/src/org/apache/sling/ide/eclipse/wst/internal/SlingLaunchpadLaunchConfigurationTabGroup.java?rev=1504893&view=auto ============================================================================== --- sling/whiteboard/asanso/plugins/eclipse/slingclipse-wst/src/org/apache/sling/ide/eclipse/wst/internal/SlingLaunchpadLaunchConfigurationTabGroup.java (added) +++ sling/whiteboard/asanso/plugins/eclipse/slingclipse-wst/src/org/apache/sling/ide/eclipse/wst/internal/SlingLaunchpadLaunchConfigurationTabGroup.java Fri Jul 19 15:02:22 2013 @@ -0,0 +1,50 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.sling.ide.eclipse.wst.internal; + +import org.eclipse.debug.ui.AbstractLaunchConfigurationTabGroup; +import org.eclipse.debug.ui.CommonTab; +import org.eclipse.debug.ui.EnvironmentTab; +import org.eclipse.debug.ui.ILaunchConfigurationDialog; +import org.eclipse.debug.ui.ILaunchConfigurationTab; +import org.eclipse.debug.ui.sourcelookup.SourceLookupTab; +import org.eclipse.jdt.debug.ui.launchConfigurations.JavaArgumentsTab; +import org.eclipse.jdt.debug.ui.launchConfigurations.JavaClasspathTab; +import org.eclipse.wst.server.ui.ServerLaunchConfigurationTab; + +public class SlingLaunchpadLaunchConfigurationTabGroup extends AbstractLaunchConfigurationTabGroup { + + @Override + public void createTabs(ILaunchConfigurationDialog dialog, String mode) { + + ILaunchConfigurationTab[] tabs = new ILaunchConfigurationTab[6]; + tabs[0] = new ServerLaunchConfigurationTab(new String[] { "org.apache.sling.launchpad.server" }); + tabs[0].setLaunchConfigurationDialog(dialog); + tabs[1] = new JavaArgumentsTab(); + tabs[1].setLaunchConfigurationDialog(dialog); + tabs[2] = new JavaClasspathTab(); + tabs[2].setLaunchConfigurationDialog(dialog); + tabs[3] = new SourceLookupTab(); + tabs[3].setLaunchConfigurationDialog(dialog); + tabs[4] = new EnvironmentTab(); + tabs[4].setLaunchConfigurationDialog(dialog); + tabs[5] = new CommonTab(); + tabs[5].setLaunchConfigurationDialog(dialog); + setTabs(tabs); + } + +} Propchange: sling/whiteboard/asanso/plugins/eclipse/slingclipse-wst/src/org/apache/sling/ide/eclipse/wst/internal/SlingLaunchpadLaunchConfigurationTabGroup.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: sling/whiteboard/asanso/plugins/eclipse/slingclipse-wst/src/org/apache/sling/ide/eclipse/wst/internal/SlingLaunchpadLaunchConfigurationTabGroup.java ------------------------------------------------------------------------------ svn:keywords = Author Date Id Revision Rev URL Copied: sling/whiteboard/asanso/plugins/eclipse/slingclipse-wst/src/org/apache/sling/ide/eclipse/wst/internal/SlingLaunchpadLaunchableAdapterDelegate.java (from r1504892, sling/whiteboard/asanso/plugins/eclipse/slingclipse-wst/src/org/apache/sling/ide/eclipse/wst/internal/SlingLaunchpadBehaviour.java) URL: http://svn.apache.org/viewvc/sling/whiteboard/asanso/plugins/eclipse/slingclipse-wst/src/org/apache/sling/ide/eclipse/wst/internal/SlingLaunchpadLaunchableAdapterDelegate.java?p2=sling/whiteboard/asanso/plugins/eclipse/slingclipse-wst/src/org/apache/sling/ide/eclipse/wst/internal/SlingLaunchpadLaunchableAdapterDelegate.java&p1=sling/whiteboard/asanso/plugins/eclipse/slingclipse-wst/src/org/apache/sling/ide/eclipse/wst/internal/SlingLaunchpadBehaviour.java&r1=1504892&r2=1504893&rev=1504893&view=diff ============================================================================== --- sling/whiteboard/asanso/plugins/eclipse/slingclipse-wst/src/org/apache/sling/ide/eclipse/wst/internal/SlingLaunchpadBehaviour.java (original) +++ sling/whiteboard/asanso/plugins/eclipse/slingclipse-wst/src/org/apache/sling/ide/eclipse/wst/internal/SlingLaunchpadLaunchableAdapterDelegate.java Fri Jul 19 15:02:22 2013 @@ -16,12 +16,28 @@ */ package org.apache.sling.ide.eclipse.wst.internal; -import org.eclipse.wst.server.core.model.ServerBehaviourDelegate; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.wst.server.core.IModuleArtifact; +import org.eclipse.wst.server.core.IServer; +import org.eclipse.wst.server.core.model.LaunchableAdapterDelegate; -public class SlingLaunchpadBehaviour extends ServerBehaviourDelegate { +public class SlingLaunchpadLaunchableAdapterDelegate extends LaunchableAdapterDelegate { @Override - public void stop(boolean arg0) { + public Object getLaunchable(IServer server, IModuleArtifact moduleArtifact) throws CoreException { + + System.out.println("SlingLaunchpadLaunchableAdapterDelegate.getLaunchable()"); + + if (server == null || moduleArtifact == null) { + return null; + } + + SlingLaunchpadServer launchpad = (SlingLaunchpadServer) server.loadAdapter(SlingLaunchpadServer.class, null); + if (launchpad == null) { + return null; + } + + return null; } } Modified: sling/whiteboard/asanso/plugins/eclipse/slingclipse-wst/src/org/apache/sling/ide/eclipse/wst/internal/SlingLaunchpadRuntime.java URL: http://svn.apache.org/viewvc/sling/whiteboard/asanso/plugins/eclipse/slingclipse-wst/src/org/apache/sling/ide/eclipse/wst/internal/SlingLaunchpadRuntime.java?rev=1504893&r1=1504892&r2=1504893&view=diff ============================================================================== --- sling/whiteboard/asanso/plugins/eclipse/slingclipse-wst/src/org/apache/sling/ide/eclipse/wst/internal/SlingLaunchpadRuntime.java (original) +++ sling/whiteboard/asanso/plugins/eclipse/slingclipse-wst/src/org/apache/sling/ide/eclipse/wst/internal/SlingLaunchpadRuntime.java Fri Jul 19 15:02:22 2013 @@ -16,9 +16,15 @@ */ package org.apache.sling.ide.eclipse.wst.internal; +import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.Status; import org.eclipse.wst.server.core.model.RuntimeDelegate; public class SlingLaunchpadRuntime extends RuntimeDelegate { - + @Override + public IStatus validate() { + // TODO stub + return Status.OK_STATUS; + } } Modified: sling/whiteboard/asanso/plugins/eclipse/slingclipse-wst/src/org/apache/sling/ide/eclipse/wst/internal/SlingLaunchpadServer.java URL: http://svn.apache.org/viewvc/sling/whiteboard/asanso/plugins/eclipse/slingclipse-wst/src/org/apache/sling/ide/eclipse/wst/internal/SlingLaunchpadServer.java?rev=1504893&r1=1504892&r2=1504893&view=diff ============================================================================== --- sling/whiteboard/asanso/plugins/eclipse/slingclipse-wst/src/org/apache/sling/ide/eclipse/wst/internal/SlingLaunchpadServer.java (original) +++ sling/whiteboard/asanso/plugins/eclipse/slingclipse-wst/src/org/apache/sling/ide/eclipse/wst/internal/SlingLaunchpadServer.java Fri Jul 19 15:02:22 2013 @@ -21,11 +21,14 @@ import org.eclipse.core.runtime.CoreExce import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.NullProgressMonitor; +import org.eclipse.core.runtime.Status; +import org.eclipse.jst.server.core.FacetUtil; import org.eclipse.wst.server.core.IModule; import org.eclipse.wst.server.core.model.ServerDelegate; public class SlingLaunchpadServer extends ServerDelegate { + private static final String MODULE_TYPE_SLING_CONTENT = "sling.content"; private SlingLaunchpadConfiguration config; public SlingLaunchpadConfiguration getConfiguration() { @@ -50,18 +53,36 @@ public class SlingLaunchpadServer extend * org.eclipse.wst.server.core.IModule[]) */ @Override - public IStatus canModifyModules(IModule[] arg0, IModule[] arg1) { - return null; + public IStatus canModifyModules(IModule[] toAdd, IModule[] toRemove) { + + System.out.println("SlingLaunchpadServer.canModifyModules()"); + + if (toAdd == null) { + return Status.OK_STATUS; + } + + for (IModule module : toAdd) { + + if (!MODULE_TYPE_SLING_CONTENT.equals(module.getModuleType().getId())) { + return new Status(IStatus.ERROR, "org.apache.sling.slingclipse", 0, + "Will only handle modules of type 'sling.content'", null); + } + } + + return Status.OK_STATUS; } - /* - * (non-Javadoc) - * - * @see org.eclipse.wst.server.core.model.ServerDelegate#getChildModules(org.eclipse.wst.server.core.IModule[]) - */ @Override - public IModule[] getChildModules(IModule[] arg0) { - return null; + public IModule[] getChildModules(IModule[] module) { + + System.out.println("SlingLaunchpadServer.getChildModules()"); + + if (module == null) { + return null; + } + + // no nested modules for now + return new IModule[0]; } /* @@ -71,7 +92,15 @@ public class SlingLaunchpadServer extend */ @Override public IModule[] getRootModules(IModule arg0) throws CoreException { - return null; + + System.out.println("SlingLaunchpadServer.getRootModules()"); + + if (MODULE_TYPE_SLING_CONTENT.equals(arg0.getModuleType().getId())) { + return new IModule[] { arg0 }; + } + + throw new CoreException(new Status(IStatus.ERROR, "org.apache.sling.slingclipse", 0, + "Will only handle modules of type 'sling.content'", null)); } /* @@ -81,7 +110,22 @@ public class SlingLaunchpadServer extend * org.eclipse.wst.server.core.IModule[], org.eclipse.core.runtime.IProgressMonitor) */ @Override - public void modifyModules(IModule[] arg0, IModule[] arg1, IProgressMonitor arg2) throws CoreException { + public void modifyModules(IModule[] toAdd, IModule[] toRemove, IProgressMonitor arg2) throws CoreException { + + System.out.println("SlingLaunchpadServer.modifyModules()"); + + IStatus status = canModifyModules(toAdd, toRemove); + if (!status.isOK()) { + throw new CoreException(status); + } + + for (IModule module : toAdd) { + System.out.println("Adding module " + module); + } + + for (IModule module : toRemove) { + System.out.println("Removing module " + module); + } } }