package org.netbeans.gradle.project.groovy;
import java.util.concurrent.atomic.AtomicReference;
import org.netbeans.api.project.Project;
import org.netbeans.gradle.project.api.entry.GradleProjectExtension2;
import org.netbeans.modules.groovy.support.spi.GroovyExtenderImplementation;
import org.openide.util.Lookup;
import org.openide.util.lookup.Lookups;
public final class GroovyExtension implements GradleProjectExtension2<NbGroovyModel> {
private final AtomicReference<Lookup> projectLookupRef;
public GroovyExtension(Project project) {
this.projectLookupRef = new AtomicReference<>(null);
}
@Override
public Lookup getPermanentProjectLookup() {
return Lookup.EMPTY;
}
@Override
public Lookup getProjectLookup() {
Lookup lookup = projectLookupRef.get();
if (lookup == null) {
lookup = Lookups.fixed(DefaultGroovyExtenderImplementation.INSTANCE);
if (!projectLookupRef.compareAndSet(null, lookup)) {
lookup = projectLookupRef.get();
}
}
return lookup;
}
@Override
public Lookup getExtensionLookup() {
return Lookup.EMPTY;
}
@Override
public void activateExtension(NbGroovyModel parsedModel) {
}
@Override
public void deactivateExtension() {
}
private enum DefaultGroovyExtenderImplementation implements GroovyExtenderImplementation {
INSTANCE;
@Override
public boolean isActive() {
return true;
}
@Override
public boolean activate() {
return false;
}
@Override
public boolean deactivate() {
return false;
}
}
}