diff --git a/gsf.testrunner/src/org/netbeans/modules/gsf/testrunner/TestCreatorAction.java b/gsf.testrunner/src/org/netbeans/modules/gsf/testrunner/TestCreatorAction.java --- a/gsf.testrunner/src/org/netbeans/modules/gsf/testrunner/TestCreatorAction.java +++ b/gsf.testrunner/src/org/netbeans/modules/gsf/testrunner/TestCreatorAction.java @@ -99,9 +99,9 @@ if (activatedNodes.length == 0) { return false; } - Collection providers = Lookup.getDefault().lookupAll(TestCreatorProvider.class); - for (TestCreatorProvider provider : providers) { - return provider.enable(activatedNodes); + Collection> providers = Lookup.getDefault().lookupResult(TestCreatorProvider.class).allItems(); + for (Lookup.Item provider : providers) { + return provider.getInstance().enable(activatedNodes); } return false; } @@ -113,14 +113,9 @@ cfg.createCfgPanel(modified.length == 0 ? false : true); testingFrameworksToAdd.clear(); - Collection providers = Lookup.getDefault().lookupAll(TestCreatorProvider.class); - for (TestCreatorProvider provider : providers) { - if(provider.canHandleMultipleClasses(activatedNodes)) { - Registration regAnnotation = provider.getClass().getAnnotation(Registration.class); - if(regAnnotation != null) { - testingFrameworksToAdd.add(regAnnotation.displayName()); - } - } + Collection> providers = Lookup.getDefault().lookupResult(TestCreatorProvider.class).allItems(); + for (Lookup.Item provider : providers) { + testingFrameworksToAdd.add(provider.getDisplayName()); } cfg.addTestingFrameworks(testingFrameworksToAdd); if (!cfg.configure()) { @@ -129,19 +124,15 @@ saveAll(modified); // #149048 String selected = cfg.getSelectedTestingFramework(); - for (TestCreatorProvider provider : providers) { - Registration regAnnotation = provider.getClass().getAnnotation(Registration.class); - if (regAnnotation != null) { - String displayName = regAnnotation.displayName(); - if (displayName.equals(selected)) { - TestCreatorProvider.Context context = new TestCreatorProvider.Context(activatedNodes); - context.setSingleClass(cfg.isSingleClass()); - context.setTargetFolder(cfg.getTargetFolder()); - context.setTestClassName(cfg.getTestClassName()); - provider.createTests(context); - cfg = null; - break; - } + for (Lookup.Item provider : providers) { + if (provider.getDisplayName().equals(selected)) { + TestCreatorProvider.Context context = new TestCreatorProvider.Context(activatedNodes); + context.setSingleClass(cfg.isSingleClass()); + context.setTargetFolder(cfg.getTargetFolder()); + context.setTestClassName(cfg.getTestClassName()); + provider.getInstance().createTests(context); + cfg = null; + break; } } } diff --git a/gsf.testrunner/src/org/netbeans/modules/gsf/testrunner/TestCreatorProviderProcessor.java b/gsf.testrunner/src/org/netbeans/modules/gsf/testrunner/TestCreatorProviderProcessor.java --- a/gsf.testrunner/src/org/netbeans/modules/gsf/testrunner/TestCreatorProviderProcessor.java +++ b/gsf.testrunner/src/org/netbeans/modules/gsf/testrunner/TestCreatorProviderProcessor.java @@ -42,6 +42,8 @@ package org.netbeans.modules.gsf.testrunner; import java.util.Set; +import java.util.logging.Level; +import java.util.logging.Logger; import javax.annotation.processing.Processor; import javax.annotation.processing.RoundEnvironment; import javax.annotation.processing.SupportedAnnotationTypes; @@ -49,6 +51,7 @@ import javax.lang.model.SourceVersion; import javax.lang.model.element.Element; import javax.lang.model.element.TypeElement; +import org.netbeans.modules.gsf.testrunner.api.TestCreatorProvider; import org.netbeans.modules.gsf.testrunner.api.TestCreatorProvider.Registration; import org.openide.filesystems.annotations.LayerBuilder.File; import org.openide.filesystems.annotations.LayerGeneratingProcessor; @@ -68,13 +71,13 @@ protected boolean handleProcess(Set annotations, RoundEnvironment roundEnv) throws LayerGenerationException { for (Element e : roundEnv.getElementsAnnotatedWith(Registration.class)) { - Registration w = e.getAnnotation(Registration.class); - String teName = e.asType().toString(); - - File f = layer(e).file( - "Services/" + teName.replace('.', '-') + ".instance" - ); - f.bundlevalue("displayName", w.displayName(), w, "displayName"); + Registration registration = e.getAnnotation(Registration.class); + if(registration == null) { + continue; + } + File f = layer(e).instanceFile("Services", null); + f.stringvalue("instanceOf", TestCreatorProvider.class.getName()); + f.bundlevalue("displayName", registration.displayName()); f.write(); } diff --git a/gsf.testrunner/src/org/netbeans/modules/gsf/testrunner/api/TestCreatorProvider.java b/gsf.testrunner/src/org/netbeans/modules/gsf/testrunner/api/TestCreatorProvider.java --- a/gsf.testrunner/src/org/netbeans/modules/gsf/testrunner/api/TestCreatorProvider.java +++ b/gsf.testrunner/src/org/netbeans/modules/gsf/testrunner/api/TestCreatorProvider.java @@ -63,7 +63,7 @@ public abstract class TestCreatorProvider { @Target(ElementType.TYPE) - @Retention(RetentionPolicy.RUNTIME) + @Retention(RetentionPolicy.SOURCE) public @interface Registration { /** @@ -72,8 +72,6 @@ String displayName(); } - public abstract boolean canHandleMultipleClasses(Node[] activatedNodes); - public abstract boolean enable(Node[] activatedNodes); public abstract void createTests(Context context); diff --git a/junit/src/org/netbeans/modules/junit/JUnitTestCreatorProvider.java b/junit/src/org/netbeans/modules/junit/JUnitTestCreatorProvider.java --- a/junit/src/org/netbeans/modules/junit/JUnitTestCreatorProvider.java +++ b/junit/src/org/netbeans/modules/junit/JUnitTestCreatorProvider.java @@ -75,11 +75,6 @@ public class JUnitTestCreatorProvider extends TestCreatorProvider { @Override - public boolean canHandleMultipleClasses(Node[] activatedNodes) { - return true; - } - - @Override public boolean enable(Node[] activatedNodes) { if (activatedNodes.length == 0) { return false; diff --git a/testng/src/org/netbeans/modules/testng/actions/TestNGTestCreatorProvider.java b/testng/src/org/netbeans/modules/testng/actions/TestNGTestCreatorProvider.java --- a/testng/src/org/netbeans/modules/testng/actions/TestNGTestCreatorProvider.java +++ b/testng/src/org/netbeans/modules/testng/actions/TestNGTestCreatorProvider.java @@ -78,19 +78,6 @@ public class TestNGTestCreatorProvider extends TestCreatorProvider { private static final Logger LOGGER = Logger.getLogger(TestNGTestCreatorProvider.class.getName()); - - @Override - public boolean canHandleMultipleClasses(Node[] activatedNodes) { - return true; -// if (activatedNodes.length != 1) { -// return false; -// } -// DataObject dataObj = activatedNodes[0].getLookup().lookup(DataObject.class); -// if (dataObj == null) { -// return false; -// } -// return dataObj.getPrimaryFile().isData(); - } @Override public boolean enable(Node[] activatedNodes) {