blob: 7121dcbfc1a7ce5f8f17293148664fb66382a0de [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.netbeans.modules.javaee.resources;
import java.io.File;
import java.io.IOException;
import java.util.LinkedList;
import java.util.List;
import org.netbeans.api.java.classpath.ClassPath;
import org.netbeans.api.project.FileOwnerQuery;
import org.netbeans.api.project.Project;
import org.netbeans.junit.NbTestCase;
import org.netbeans.modules.j2ee.metadata.model.support.JavaSourceTestCase;
import org.netbeans.modules.projectapi.SimpleFileOwnerQueryImplementation;
import org.netbeans.spi.java.classpath.ClassPathProvider;
import org.netbeans.spi.project.ProjectFactory;
import org.netbeans.spi.project.ProjectState;
import org.openide.filesystems.FileObject;
import org.openide.filesystems.FileUtil;
import org.openide.util.Lookup;
import org.openide.util.lookup.Lookups;
import org.openide.util.test.MockLookup;
/**
*
* @author Martin Fousek <marfous@netbeans.org>
*/
public class TestBase extends JavaSourceTestCase {
private FileObject srcFo, projectFo;
protected Project project;
protected List<FileObject> projects = new LinkedList<FileObject>();
public TestBase(String name) {
super(name);
}
@Override
protected void setUp() throws Exception {
super.setUp();
this.projectFo = getTestFile("projects/EJBModule53");
assertNotNull(projectFo);
this.srcFo = getTestFile("projects/EJBModule53/src");
assertNotNull(srcFo);
projects.add(projectFo);
MockLookup.setInstances(
new ClassPathProviderImpl(),
new SimpleFileOwnerQueryImplementation(),
new TestProjectFactory(projects));
project = FileOwnerQuery.getOwner(projectFo);
assertNotNull(project);
}
protected FileObject getTestFile(String relFilePath) {
File wholeInputFile = new File(getDataDir(), relFilePath);
if (!wholeInputFile.exists()) {
NbTestCase.fail("File " + wholeInputFile + " not found.");
}
FileObject fo = FileUtil.toFileObject(wholeInputFile);
assertNotNull(fo);
return fo;
}
// public MetadataModel<JsfModel> createJsfModel() throws IOException, InterruptedException {
// IndexingManager.getDefault().refreshIndexAndWait(srcFO.getURL(), null);
// ModelUnit modelUnit = ModelUnit.create(
// ClassPath.getClassPath(srcFO, ClassPath.BOOT),
// ClassPath.getClassPath(srcFO, ClassPath.COMPILE),
// ClassPath.getClassPath(srcFO, ClassPath.SOURCE),
// FileOwnerQuery.getOwner(projectFo));
// return JsfModelFactory.createMetaModel(modelUnit);
// }
private class TestProjectFactory implements ProjectFactory {
private List<FileObject> projects;
public TestProjectFactory(List<FileObject> projects) {
this.projects = projects;
}
@Override
public Project loadProject(FileObject projectDirectory, ProjectState state) throws IOException {
return new TestProject(projectDirectory, state);
}
@Override
public void saveProject(Project project) throws IOException, ClassCastException {
}
@Override
public boolean isProject(FileObject dir) {
return projects.contains(dir);
}
}
protected class TestProject implements Project {
private final FileObject dir;
final ProjectState state;
Throwable error;
int saveCount = 0;
private Lookup lookup;
public TestProject(FileObject dir, ProjectState state) {
this.dir = dir;
this.state = state;
this.lookup = Lookups.fixed(new ClassPathProviderImpl());
}
@Override
public Lookup getLookup() {
return lookup;
}
@Override
public FileObject getProjectDirectory() {
return dir;
}
@Override
public String toString() {
return "testproject:" + getProjectDirectory().getNameExt();
}
}
public final class ClassPathProviderImpl implements ClassPathProvider {
public ClassPath findClassPath(FileObject file, String type) {
boolean found = false;
for (FileObject root : roots) {
if (root.equals(file) || FileUtil.isParentOf(root, file)) {
found = true;
}
}
if (!found) {
return null;
}
if (ClassPath.SOURCE.equals(type)) {
return srcCP;
} else if (ClassPath.COMPILE.equals(type)) {
return compileCP;
} else if (ClassPath.BOOT.equals(type)) {
return bootCP;
}
return null;
}
}
}