--- a/j2ee.ejbjarproject/src/org/netbeans/modules/j2ee/ejbjarproject/EjbJarActionProvider.java +++ a/j2ee.ejbjarproject/src/org/netbeans/modules/j2ee/ejbjarproject/EjbJarActionProvider.java @@ -45,6 +45,7 @@ package org.netbeans.modules.j2ee.ejbjarproject; import java.util.*; +import org.netbeans.api.annotations.common.NonNull; import org.netbeans.api.debugger.DebuggerManager; import org.netbeans.api.debugger.Session; import org.netbeans.api.debugger.jpda.AttachingDICookie; @@ -64,6 +65,9 @@ import org.netbeans.spi.java.classpath.ClassPathFactory; import org.netbeans.spi.java.classpath.support.ClassPathSupport; import org.netbeans.spi.java.project.classpath.support.ProjectClassPathSupport; +import org.netbeans.spi.project.ActionProvider; +import org.netbeans.spi.project.LookupProvider; +import org.netbeans.spi.project.ProjectServiceProvider; import org.netbeans.spi.project.SingleMethod; import org.openide.DialogDisplayer; import org.openide.NotifyDescriptor; @@ -71,12 +75,13 @@ import org.openide.filesystems.FileUtil; import org.openide.util.Lookup; import org.openide.util.NbBundle; +import org.openide.util.Parameters; /** Action provider of the Web project. This is the place where to do * strange things to Web actions. E.g. compile-single. */ -class EjbJarActionProvider extends BaseActionProvider { +public class EjbJarActionProvider extends BaseActionProvider { private static final String DIRECTORY_DEPLOYMENT_SUPPORTED = "directory.deployment.supported"; // NOI18N @@ -143,7 +148,7 @@ /** Map from commands to ant targets */ private Map commands; - + public EjbJarActionProvider(EjbJarProject project, UpdateHelper updateHelper) { super(project, updateHelper, project.evaluator(), project.getSourceRoots(), project.getTestSourceRoots(), project.getAntProjectHelper(), new CallbackImpl(new BaseActionProvider.CallbackImpl(project.getClassPathProvider()), project.getEjbModule())); @@ -395,4 +400,15 @@ } } + @ProjectServiceProvider( + service = ActionProvider.class, + projectTypes = {@LookupProvider.Registration.ProjectType(id = "org-netbeans-modules-j2ee-ejbjarproject", position=1)}) + public static EjbJarActionProvider create(@NonNull final Lookup lkp) { + Parameters.notNull("lkp", lkp); //NOI18N + final EjbJarProject project = lkp.lookup(EjbJarProject.class); + final EjbJarActionProvider ejbActionProvider = new EjbJarActionProvider(project, project.getUpdateHelper()); + ejbActionProvider.startFSListener(); + return ejbActionProvider; + } + } --- a/j2ee.ejbjarproject/src/org/netbeans/modules/j2ee/ejbjarproject/EjbJarProject.java +++ a/j2ee.ejbjarproject/src/org/netbeans/modules/j2ee/ejbjarproject/EjbJarProject.java @@ -429,7 +429,6 @@ // FIXME this is just fallback for code searching for the old SPI in lookup // remove in next release new EjbJarImpl(apiEjbJar), - new EjbJarActionProvider(this, updateHelper), new EjbJarLogicalViewProvider(this, updateHelper, evaluator(), spp, refHelper, ejbModule), new CustomizerProviderImpl( this, updateHelper, evaluator(), refHelper ), LookupMergerSupport.createClassPathProviderMerger(cpProvider), --- a/j2ee.ejbjarproject/src/org/netbeans/modules/j2ee/ejbjarproject/EjbJarProjectOperations.java +++ a/j2ee.ejbjarproject/src/org/netbeans/modules/j2ee/ejbjarproject/EjbJarProjectOperations.java @@ -47,8 +47,13 @@ import java.io.File; import java.io.IOException; import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.HashSet; import java.util.List; import java.util.Properties; +import java.util.Set; import org.apache.tools.ant.module.api.support.ActionUtils; import org.netbeans.api.project.FileOwnerQuery; import org.netbeans.api.project.Project; @@ -163,20 +168,18 @@ return files; } + @Override public void notifyDeleting() throws IOException { - EjbJarActionProvider ap = project.getLookup().lookup(EjbJarActionProvider.class); - + ActionProvider ap = project.getLookup().lookup(ActionProvider.class); assert ap != null; - - Lookup context = Lookups.fixed(new Object[0]); - Properties p = new Properties(); - String[] targetNames = ap.getTargetNames(ActionProvider.COMMAND_CLEAN, context, p); - FileObject buildXML = project.getProjectDirectory().getFileObject(GeneratedFilesHelper.BUILD_XML_PATH); - - assert targetNames != null; - assert targetNames.length > 0; - - ActionUtils.runTarget(buildXML, targetNames, p).waitFinished(); + + Set targets = new HashSet(Arrays.asList(ap.getSupportedActions())); + if (targets.contains(ActionProvider.COMMAND_CLEAN)) { + FileObject buildXML = project.getProjectDirectory().getFileObject(GeneratedFilesHelper.BUILD_XML_PATH); + ActionUtils.runTarget(buildXML, new String[]{ActionProvider.COMMAND_CLEAN}, new Properties()).waitFinished(); + return; + } + assert false; // the EjbJarActionProvider must have clean action to run } public void notifyDeleted() throws IOException {