/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package org.netbeans.gradle.javaee.jpa; import java.util.concurrent.atomic.AtomicReference; import java.util.logging.Level; import java.util.logging.Logger; import org.netbeans.api.project.Project; import org.netbeans.gradle.javaee.models.NbJpaModel; import org.netbeans.gradle.javaee.jpa.verification.GradlePersistenceScopesProvider; import org.netbeans.gradle.project.api.entry.GradleProjectExtension2; import org.openide.util.Lookup; import org.openide.util.lookup.Lookups; /** * * @author ed */ public class JpaModuleExtension implements GradleProjectExtension2<NbJpaModel> { private static final Logger LOGGER = Logger.getLogger(JpaModuleExtension.class.getName()); private final Project project; // NetBeans project private Lookup permanentProjectLookup; private Lookup projectLookup; private final Lookup extensionLookup = Lookups.fixed(); private final AtomicReference<NbJpaModel> currentModelRef; public JpaModuleExtension(Project project) { this.project = project; this.currentModelRef = new AtomicReference<>(null); } /** * Returns the NetBeans <code>Project</code> for the extension * * @return a Project object */ public Project getProject() { return project; } public NbJpaModel getCurrentModel() { return currentModelRef.get(); } @Override public Lookup getPermanentProjectLookup() { if (permanentProjectLookup == null) { permanentProjectLookup = Lookups.fixed(this); } return permanentProjectLookup; } @Override public Lookup getProjectLookup() { if (projectLookup == null) { projectLookup = Lookups.fixed( new GradlePersistenceScopesProvider(this) ); } return projectLookup; } @Override public Lookup getExtensionLookup() { return extensionLookup; } @Override public void activateExtension(NbJpaModel parsedModel) { if (parsedModel != null) { LOGGER.log(Level.INFO, "activating Jpa Extension with {0}", parsedModel.getPersistenceFile()); } currentModelRef.getAndSet(parsedModel); } @Override public void deactivateExtension() { activateExtension(null); } }