/*
* 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.verification;
import java.beans.PropertyChangeListener;
import java.io.File;
import java.net.URL;
import java.util.List;
import org.netbeans.api.java.classpath.ClassPath;
import org.netbeans.gradle.javaee.jpa.JpaModuleExtension;
import org.netbeans.modules.j2ee.persistence.api.PersistenceScope;
import org.netbeans.modules.j2ee.persistence.spi.PersistenceScopeFactory;
import org.netbeans.modules.j2ee.persistence.spi.PersistenceScopesImplementation;
import org.netbeans.spi.java.classpath.support.ClassPathSupport;
import org.openide.filesystems.FileUtil;
/**
*
* @author ed
*/
public class GradlePersistenceScopesImpl implements PersistenceScopesImplementation {
private static final PersistenceScope[] EMPTY = new PersistenceScope[0];
private final JpaModuleExtension jpaModule;
public GradlePersistenceScopesImpl(JpaModuleExtension jpaModule) {
this.jpaModule = jpaModule;
}
private PersistenceScope[] constructScopes(JpaModuleExtension jpaModule) {
if (jpaModule.getCurrentModel() == null) {
return EMPTY;
}
PersistenceScope[] returnValue = new PersistenceScope[1];
GradlePersistenceScopeImpl scope = new GradlePersistenceScopeImpl();
scope.setPersistenceXml(
FileUtil.toFileObject(
new File(jpaModule.getCurrentModel().getPersistenceFile())));
scope.setClassPath(buildClasspath(jpaModule.getCurrentModel().getJavaSourceDirs()));
returnValue[0] = PersistenceScopeFactory.createPersistenceScope(scope);
return returnValue;
}
private ClassPath buildClasspath(Iterable<File> classpath) {
List<URL> pathList = new java.util.ArrayList<>();
for (File classpathFile: classpath) {
pathList.add(FileUtil.urlForArchiveOrDir(classpathFile));
}
URL[] files = pathList.toArray(new URL[pathList.size()]);
return ClassPathSupport.createClassPath(files);
}
@Override
public PersistenceScope[] getPersistenceScopes() {
return constructScopes(jpaModule);
}
@Override
public void addPropertyChangeListener(PropertyChangeListener pl) {
}
@Override
public void removePropertyChangeListener(PropertyChangeListener pl) {
}
}