package org.netbeans.gradle.project.groovy; import java.io.IOException; import java.util.Collections; import java.util.Set; import org.netbeans.api.project.Project; import org.netbeans.gradle.model.java.GroovyBaseModel; import org.netbeans.gradle.model.java.JavaModelBuilders; import org.netbeans.gradle.project.api.entry.GradleProjectExtension2; import org.netbeans.gradle.project.api.entry.GradleProjectExtensionDef; import org.netbeans.gradle.project.api.entry.ModelLoadResult; import org.netbeans.gradle.project.api.entry.ParsedModel; import org.netbeans.gradle.project.api.modelquery.GradleModelDef; import org.netbeans.gradle.project.api.modelquery.GradleModelDefQuery2; import org.netbeans.gradle.project.api.modelquery.GradleTarget; import org.openide.util.Lookup; import org.openide.util.lookup.Lookups; import org.openide.util.lookup.ServiceProvider; @ServiceProvider(service = GradleProjectExtensionDef.class, position = 990) public final class GroovyExtensionDef implements GradleProjectExtensionDef<NbGroovyModel> { public static final String EXTENSION_NAME = "org.netbeans.gradle.project.groovy.GroovyExtensionDef"; private final Lookup lookup; public GroovyExtensionDef() { this.lookup = Lookups.fixed(new ModelQuery()); } @Override public String getName() { return EXTENSION_NAME; } @Override public String getDisplayName() { return "Groovy"; } @Override public Lookup getLookup() { return lookup; } @Override public Class<NbGroovyModel> getModelType() { return NbGroovyModel.class; } @Override public ParsedModel<NbGroovyModel> parseModel(ModelLoadResult retrievedModels) { GroovyBaseModel baseModel = retrievedModels.getMainProjectModels().lookup(GroovyBaseModel.class); NbGroovyModel result = baseModel != null ? NbGroovyModel.DEFAULT : null; return new ParsedModel<>(result); } @Override public GradleProjectExtension2<NbGroovyModel> createExtension(Project project) throws IOException { return new GroovyExtension(project); } @Override public Set<String> getSuppressedExtensions() { return Collections.emptySet(); } private static final class ModelQuery implements GradleModelDefQuery2 { @Override public GradleModelDef getModelDef(GradleTarget gradleTarget) { return GradleModelDef.fromProjectInfoBuilders2(JavaModelBuilders.GROOVY_BASE_BUILDER); } } }