blob: 2fcc0c3765c8309d3cc44558c5f7aed1ade1ff88 [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.j2ee.common;
import java.beans.PropertyChangeListener;
import java.io.File;
import java.io.IOException;
import java.util.Iterator;
import org.netbeans.api.j2ee.core.Profile;
import org.netbeans.api.project.Project;
import org.netbeans.junit.NbTestCase;
import org.netbeans.modules.j2ee.api.ejbjar.EjbJar;
import org.netbeans.modules.j2ee.dd.api.ejb.EjbJarMetadata;
import org.netbeans.modules.j2ee.deployment.devmodules.api.J2eeModule;
import org.netbeans.modules.j2ee.deployment.devmodules.api.J2eeModule.Type;
import org.netbeans.modules.j2ee.deployment.devmodules.api.ModuleChangeReporter;
import org.netbeans.modules.j2ee.deployment.devmodules.spi.J2eeModuleFactory;
import org.netbeans.modules.j2ee.deployment.devmodules.spi.J2eeModuleImplementation2;
import org.netbeans.modules.j2ee.deployment.devmodules.spi.J2eeModuleProvider;
import org.netbeans.modules.j2ee.metadata.model.api.MetadataModel;
import org.netbeans.modules.j2ee.spi.ejbjar.EjbJarFactory;
import org.netbeans.modules.j2ee.spi.ejbjar.EjbJarImplementation2;
import org.netbeans.modules.j2ee.spi.ejbjar.EjbJarsInProject;
import org.openide.filesystems.FileObject;
import org.openide.filesystems.FileUtil;
import org.openide.util.Lookup;
import org.openide.util.lookup.Lookups;
public class J2eeProjectCapabilitiesTest extends NbTestCase {
public J2eeProjectCapabilitiesTest(String testName) {
super(testName);
}
public void testIsEjbSupported() throws Exception {
Project p = createProject(Profile.JAVA_EE_5, Type.EJB);
J2eeProjectCapabilities cap = J2eeProjectCapabilities.forProject(p);
assertTrue(cap.isEjb30Supported());
assertFalse(cap.isEjb31Supported());
assertFalse(cap.isEjb31LiteSupported());
assertFalse(cap.isEjb32Supported());
assertFalse(cap.isEjb32LiteSupported());
assertFalse(cap.isEjb40Supported());
assertFalse(cap.isEjb40LiteSupported());
p = createProject(Profile.JAVA_EE_6_FULL, Type.EJB);
cap = J2eeProjectCapabilities.forProject(p);
assertTrue(cap.isEjb30Supported());
assertTrue(cap.isEjb31Supported());
assertTrue(cap.isEjb31LiteSupported());
assertFalse(cap.isEjb32Supported());
assertFalse(cap.isEjb32LiteSupported());
assertFalse(cap.isEjb40Supported());
assertFalse(cap.isEjb40LiteSupported());
p = createProject(Profile.JAVA_EE_6_WEB, Type.EJB);
cap = J2eeProjectCapabilities.forProject(p);
assertFalse(cap.isEjb30Supported());
assertFalse(cap.isEjb31Supported());
assertTrue(cap.isEjb31LiteSupported());
assertFalse(cap.isEjb32Supported());
assertFalse(cap.isEjb32LiteSupported());
assertFalse(cap.isEjb40Supported());
assertFalse(cap.isEjb40LiteSupported());
p = createProject(Profile.JAVA_EE_7_FULL, Type.EJB);
cap = J2eeProjectCapabilities.forProject(p);
assertTrue(cap.isEjb30Supported());
assertTrue(cap.isEjb31Supported());
assertTrue(cap.isEjb31LiteSupported());
assertTrue(cap.isEjb32Supported());
assertTrue(cap.isEjb32LiteSupported());
assertFalse(cap.isEjb40Supported());
assertFalse(cap.isEjb40LiteSupported());
p = createProject(Profile.JAVA_EE_7_WEB, Type.EJB);
cap = J2eeProjectCapabilities.forProject(p);
assertFalse(cap.isEjb30Supported());
assertFalse(cap.isEjb31Supported());
assertTrue(cap.isEjb31LiteSupported());
assertFalse(cap.isEjb32Supported());
assertTrue(cap.isEjb32LiteSupported());
assertFalse(cap.isEjb40Supported());
assertFalse(cap.isEjb40LiteSupported());
p = createProject(Profile.JAVA_EE_8_FULL, Type.EJB);
cap = J2eeProjectCapabilities.forProject(p);
assertTrue(cap.isEjb30Supported());
assertTrue(cap.isEjb31Supported());
assertTrue(cap.isEjb31LiteSupported());
assertTrue(cap.isEjb32Supported());
assertTrue(cap.isEjb32LiteSupported());
assertFalse(cap.isEjb40Supported());
assertFalse(cap.isEjb40LiteSupported());
p = createProject(Profile.JAVA_EE_8_WEB, Type.EJB);
cap = J2eeProjectCapabilities.forProject(p);
assertFalse(cap.isEjb30Supported());
assertFalse(cap.isEjb31Supported());
assertTrue(cap.isEjb31LiteSupported());
assertFalse(cap.isEjb32Supported());
assertTrue(cap.isEjb32LiteSupported());
assertFalse(cap.isEjb40Supported());
assertFalse(cap.isEjb40LiteSupported());
p = createProject(Profile.JAKARTA_EE_8_FULL, Type.EJB);
cap = J2eeProjectCapabilities.forProject(p);
assertTrue(cap.isEjb30Supported());
assertTrue(cap.isEjb31Supported());
assertTrue(cap.isEjb31LiteSupported());
assertTrue(cap.isEjb32Supported());
assertTrue(cap.isEjb32LiteSupported());
assertFalse(cap.isEjb40Supported());
assertFalse(cap.isEjb40LiteSupported());
p = createProject(Profile.JAKARTA_EE_8_WEB, Type.EJB);
cap = J2eeProjectCapabilities.forProject(p);
assertFalse(cap.isEjb30Supported());
assertFalse(cap.isEjb31Supported());
assertTrue(cap.isEjb31LiteSupported());
assertFalse(cap.isEjb32Supported());
assertTrue(cap.isEjb32LiteSupported());
assertFalse(cap.isEjb40Supported());
assertFalse(cap.isEjb40LiteSupported());
p = createProject(Profile.JAKARTA_EE_9_FULL, Type.EJB);
cap = J2eeProjectCapabilities.forProject(p);
assertFalse(cap.isEjb30Supported());
assertFalse(cap.isEjb31Supported());
assertFalse(cap.isEjb31LiteSupported());
assertFalse(cap.isEjb32Supported());
assertFalse(cap.isEjb32LiteSupported());
assertTrue(cap.isEjb40Supported());
assertTrue(cap.isEjb40LiteSupported());
p = createProject(Profile.JAKARTA_EE_9_WEB, Type.EJB);
cap = J2eeProjectCapabilities.forProject(p);
assertFalse(cap.isEjb30Supported());
assertFalse(cap.isEjb31Supported());
assertFalse(cap.isEjb31LiteSupported());
assertFalse(cap.isEjb32Supported());
assertFalse(cap.isEjb32LiteSupported());
assertFalse(cap.isEjb40Supported());
assertTrue(cap.isEjb40LiteSupported());
p = createProject(Profile.JAKARTA_EE_9_1_FULL, Type.EJB);
cap = J2eeProjectCapabilities.forProject(p);
assertFalse(cap.isEjb30Supported());
assertFalse(cap.isEjb31Supported());
assertFalse(cap.isEjb31LiteSupported());
assertFalse(cap.isEjb32Supported());
assertFalse(cap.isEjb32LiteSupported());
assertTrue(cap.isEjb40Supported());
assertTrue(cap.isEjb40LiteSupported());
p = createProject(Profile.JAKARTA_EE_9_1_WEB, Type.EJB);
cap = J2eeProjectCapabilities.forProject(p);
assertFalse(cap.isEjb30Supported());
assertFalse(cap.isEjb31Supported());
assertFalse(cap.isEjb31LiteSupported());
assertFalse(cap.isEjb32Supported());
assertFalse(cap.isEjb32LiteSupported());
assertFalse(cap.isEjb40Supported());
assertTrue(cap.isEjb40LiteSupported());
p = createProject(Profile.JAKARTA_EE_10_FULL, Type.EJB);
cap = J2eeProjectCapabilities.forProject(p);
assertFalse(cap.isEjb30Supported());
assertFalse(cap.isEjb31Supported());
assertFalse(cap.isEjb31LiteSupported());
assertFalse(cap.isEjb32Supported());
assertFalse(cap.isEjb32LiteSupported());
assertTrue(cap.isEjb40Supported());
assertTrue(cap.isEjb40LiteSupported());
p = createProject(Profile.JAKARTA_EE_10_WEB, Type.EJB);
cap = J2eeProjectCapabilities.forProject(p);
assertFalse(cap.isEjb30Supported());
assertFalse(cap.isEjb31Supported());
assertFalse(cap.isEjb31LiteSupported());
assertFalse(cap.isEjb32Supported());
assertFalse(cap.isEjb32LiteSupported());
assertFalse(cap.isEjb40Supported());
assertTrue(cap.isEjb40LiteSupported());
p = createProject(Profile.JAVA_EE_5, Type.WAR);
cap = J2eeProjectCapabilities.forProject(p);
assertFalse(cap.isEjb30Supported());
assertFalse(cap.isEjb31Supported());
assertFalse(cap.isEjb31LiteSupported());
assertFalse(cap.isEjb32Supported());
assertFalse(cap.isEjb32LiteSupported());
assertFalse(cap.isEjb40Supported());
assertFalse(cap.isEjb40LiteSupported());
p = createProject(Profile.JAVA_EE_6_WEB, Type.WAR);
cap = J2eeProjectCapabilities.forProject(p);
assertFalse(cap.isEjb30Supported());
assertFalse(cap.isEjb31Supported());
assertTrue(cap.isEjb31LiteSupported());
assertFalse(cap.isEjb32Supported());
assertFalse(cap.isEjb32LiteSupported());
assertFalse(cap.isEjb40Supported());
assertFalse(cap.isEjb40LiteSupported());
p = createProject(Profile.JAVA_EE_6_FULL, Type.WAR);
cap = J2eeProjectCapabilities.forProject(p);
assertFalse(cap.isEjb30Supported());
assertTrue(cap.isEjb31Supported());
assertTrue(cap.isEjb31LiteSupported());
assertFalse(cap.isEjb32Supported());
assertFalse(cap.isEjb32LiteSupported());
assertFalse(cap.isEjb40Supported());
assertFalse(cap.isEjb40LiteSupported());
p = createProject(Profile.JAVA_EE_7_FULL, Type.WAR);
cap = J2eeProjectCapabilities.forProject(p);
assertFalse(cap.isEjb30Supported());
assertTrue(cap.isEjb31Supported());
assertTrue(cap.isEjb31LiteSupported());
assertTrue(cap.isEjb32Supported());
assertTrue(cap.isEjb32LiteSupported());
assertFalse(cap.isEjb40Supported());
assertFalse(cap.isEjb40LiteSupported());
p = createProject(Profile.JAVA_EE_7_WEB, Type.WAR);
cap = J2eeProjectCapabilities.forProject(p);
assertFalse(cap.isEjb30Supported());
assertFalse(cap.isEjb31Supported());
assertTrue(cap.isEjb31LiteSupported());
assertFalse(cap.isEjb32Supported());
assertTrue(cap.isEjb32LiteSupported());
assertFalse(cap.isEjb40Supported());
assertFalse(cap.isEjb40LiteSupported());
p = createProject(Profile.JAVA_EE_8_FULL, Type.WAR);
cap = J2eeProjectCapabilities.forProject(p);
assertFalse(cap.isEjb30Supported());
assertTrue(cap.isEjb31Supported());
assertTrue(cap.isEjb31LiteSupported());
assertTrue(cap.isEjb32Supported());
assertTrue(cap.isEjb32LiteSupported());
assertFalse(cap.isEjb40Supported());
assertFalse(cap.isEjb40LiteSupported());
p = createProject(Profile.JAVA_EE_8_WEB, Type.WAR);
cap = J2eeProjectCapabilities.forProject(p);
assertFalse(cap.isEjb30Supported());
assertFalse(cap.isEjb31Supported());
assertTrue(cap.isEjb31LiteSupported());
assertFalse(cap.isEjb32Supported());
assertTrue(cap.isEjb32LiteSupported());
assertFalse(cap.isEjb40Supported());
assertFalse(cap.isEjb40LiteSupported());
p = createProject(Profile.JAKARTA_EE_8_FULL, Type.WAR);
cap = J2eeProjectCapabilities.forProject(p);
assertFalse(cap.isEjb30Supported());
assertTrue(cap.isEjb31Supported());
assertTrue(cap.isEjb31LiteSupported());
assertTrue(cap.isEjb32Supported());
assertTrue(cap.isEjb32LiteSupported());
assertFalse(cap.isEjb40Supported());
assertFalse(cap.isEjb40LiteSupported());
p = createProject(Profile.JAKARTA_EE_8_WEB, Type.WAR);
cap = J2eeProjectCapabilities.forProject(p);
assertFalse(cap.isEjb30Supported());
assertFalse(cap.isEjb31Supported());
assertTrue(cap.isEjb31LiteSupported());
assertFalse(cap.isEjb32Supported());
assertTrue(cap.isEjb32LiteSupported());
assertFalse(cap.isEjb40Supported());
assertFalse(cap.isEjb40LiteSupported());
p = createProject(Profile.JAKARTA_EE_9_FULL, Type.WAR);
cap = J2eeProjectCapabilities.forProject(p);
assertFalse(cap.isEjb30Supported());
assertFalse(cap.isEjb31Supported());
assertFalse(cap.isEjb31LiteSupported());
assertFalse(cap.isEjb32Supported());
assertFalse(cap.isEjb32LiteSupported());
assertTrue(cap.isEjb40Supported());
assertTrue(cap.isEjb40LiteSupported());
p = createProject(Profile.JAKARTA_EE_9_WEB, Type.WAR);
cap = J2eeProjectCapabilities.forProject(p);
assertFalse(cap.isEjb30Supported());
assertFalse(cap.isEjb31Supported());
assertFalse(cap.isEjb31LiteSupported());
assertFalse(cap.isEjb32Supported());
assertFalse(cap.isEjb32LiteSupported());
assertFalse(cap.isEjb40Supported());
assertTrue(cap.isEjb40LiteSupported());
p = createProject(Profile.JAKARTA_EE_9_1_FULL, Type.WAR);
cap = J2eeProjectCapabilities.forProject(p);
assertFalse(cap.isEjb30Supported());
assertFalse(cap.isEjb31Supported());
assertFalse(cap.isEjb31LiteSupported());
assertFalse(cap.isEjb32Supported());
assertFalse(cap.isEjb32LiteSupported());
assertTrue(cap.isEjb40Supported());
assertTrue(cap.isEjb40LiteSupported());
p = createProject(Profile.JAKARTA_EE_9_1_WEB, Type.WAR);
cap = J2eeProjectCapabilities.forProject(p);
assertFalse(cap.isEjb30Supported());
assertFalse(cap.isEjb31Supported());
assertFalse(cap.isEjb31LiteSupported());
assertFalse(cap.isEjb32Supported());
assertFalse(cap.isEjb32LiteSupported());
assertFalse(cap.isEjb40Supported());
assertTrue(cap.isEjb40LiteSupported());
p = createProject(Profile.JAKARTA_EE_10_FULL, Type.WAR);
cap = J2eeProjectCapabilities.forProject(p);
assertFalse(cap.isEjb30Supported());
assertFalse(cap.isEjb31Supported());
assertFalse(cap.isEjb31LiteSupported());
assertFalse(cap.isEjb32Supported());
assertFalse(cap.isEjb32LiteSupported());
assertTrue(cap.isEjb40Supported());
assertTrue(cap.isEjb40LiteSupported());
p = createProject(Profile.JAKARTA_EE_10_WEB, Type.WAR);
cap = J2eeProjectCapabilities.forProject(p);
assertFalse(cap.isEjb30Supported());
assertFalse(cap.isEjb31Supported());
assertFalse(cap.isEjb31LiteSupported());
assertFalse(cap.isEjb32Supported());
assertFalse(cap.isEjb32LiteSupported());
assertFalse(cap.isEjb40Supported());
assertTrue(cap.isEjb40LiteSupported());
}
private Project createProject(final Profile profile, final Type type) throws IOException {
// just a fake project dir for now:
FileObject projDir = FileUtil.toFileObject(getWorkDir());
return new FakeProject(type, profile, projDir);
}
public static class FakeProject implements Project {
private Type type;
private Profile profile;
private Lookup l;
private FileObject projDir;
public FakeProject(Type type, Profile profile, FileObject projDir) {
this.type = type;
this.profile = profile;
this.projDir = projDir;
FakeEjbJarsInProject f = new FakeEjbJarsInProject(new FakeEjbJarImplementation2(profile));
FakeJ2eeModuleProvider f2 = new FakeJ2eeModuleProvider(new FakeJ2eeModuleImpl(type));
l = Lookups.fixed(f, f2);
}
public FileObject getProjectDirectory() {
return projDir;
}
public Lookup getLookup() {
return l;
}
}
private static class FakeEjbJarsInProject implements EjbJarsInProject {
private EjbJarImplementation2 impl;
public FakeEjbJarsInProject(EjbJarImplementation2 impl) {
this.impl = impl;
}
public EjbJar[] getEjbJars() {
return new EjbJar[]{EjbJarFactory.createEjbJar(impl)};
}
}
private static class FakeEjbJarImplementation2 implements EjbJarImplementation2 {
private Profile profile;
public FakeEjbJarImplementation2(Profile profile) {
this.profile = profile;
}
public Profile getJ2eeProfile() {
return profile;
}
public FileObject getMetaInf() {
throw new UnsupportedOperationException("Not supported yet.");
}
public FileObject getDeploymentDescriptor() {
throw new UnsupportedOperationException("Not supported yet.");
}
public FileObject[] getJavaSources() {
throw new UnsupportedOperationException("Not supported yet.");
}
public MetadataModel<EjbJarMetadata> getMetadataModel() {
throw new UnsupportedOperationException("Not supported yet.");
}
}
private static class FakeJ2eeModuleProvider extends J2eeModuleProvider {
private J2eeModuleImplementation2 impl;
public FakeJ2eeModuleProvider(J2eeModuleImplementation2 impl) {
this.impl = impl;
}
@Override
public J2eeModule getJ2eeModule() {
return J2eeModuleFactory.createJ2eeModule(impl);
}
@Override
public ModuleChangeReporter getModuleChangeReporter() {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public void setServerInstanceID(String severInstanceID) {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public String getServerInstanceID() {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public String getServerID() {
throw new UnsupportedOperationException("Not supported yet.");
}
}
private static class FakeJ2eeModuleImpl implements J2eeModuleImplementation2 {
private Type type;
public FakeJ2eeModuleImpl(Type type) {
this.type = type;
}
public Type getModuleType() {
return type;
}
public String getModuleVersion() {
throw new UnsupportedOperationException("Not supported yet.");
}
public String getUrl() {
throw new UnsupportedOperationException("Not supported yet.");
}
public FileObject getArchive() throws IOException {
throw new UnsupportedOperationException("Not supported yet.");
}
public Iterator getArchiveContents() throws IOException {
throw new UnsupportedOperationException("Not supported yet.");
}
public FileObject getContentDirectory() throws IOException {
throw new UnsupportedOperationException("Not supported yet.");
}
public <T> MetadataModel<T> getMetadataModel(Class<T> type) {
throw new UnsupportedOperationException("Not supported yet.");
}
public File getResourceDirectory() {
throw new UnsupportedOperationException("Not supported yet.");
}
public File getDeploymentConfigurationFile(String name) {
throw new UnsupportedOperationException("Not supported yet.");
}
public void addPropertyChangeListener(PropertyChangeListener listener) {
throw new UnsupportedOperationException("Not supported yet.");
}
public void removePropertyChangeListener(PropertyChangeListener listener) {
throw new UnsupportedOperationException("Not supported yet.");
}
}
}