blob: 8cbf25ab3a41ebb8bf171f710786d81c4ded5079 [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.payara.eecommon.api.config;
import java.io.File;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.HashSet;
import java.util.Set;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.netbeans.api.j2ee.core.Profile;
import org.netbeans.junit.NbTestCase;
import org.netbeans.modules.payara.tooling.data.PayaraVersion;
import org.netbeans.modules.payara.tooling.utils.OsUtils;
import org.netbeans.modules.j2ee.deployment.devmodules.api.J2eeModule;
import org.netbeans.modules.j2ee.deployment.devmodules.spi.J2eeModuleFactory;
import org.netbeans.modules.payara.eecommon.api.config.JavaEEModule;
import org.netbeans.modules.payara.eecommon.api.config.PayaraConfiguration;
import org.openide.filesystems.FileObject;
import org.openide.filesystems.FileUtil;
import org.openide.util.Pair;
/**
* Payara Java EE server configuration API support tests.
* <p/>
* @author Tomas Kraus
*/
public class PayaraConfigurationTest extends NbTestCase {
private GFTestEEModuleImpl moduleImplCar;
private J2eeModule moduleCar;
private GFTestEEModuleImpl moduleImplEjb;
private J2eeModule moduleEjb;
private GFTestEEModuleImpl moduleImplEar;
private J2eeModule moduleEar;
private GFTestEEModuleImpl moduleImplWar;
private J2eeModule moduleWar;
private GFTestEEModuleImpl moduleImplRar;
private J2eeModule moduleRar;
public PayaraConfigurationTest(final String testName) {
super(testName);
}
@BeforeClass
public static void setUpClass() throws Exception {
}
@AfterClass
public static void tearDownClass() throws Exception {
}
@Before
@Override
public void setUp() throws Exception {
final File dataDir = getDataDir();
final File rootFolder = new File(dataDir, "gfsample");
rootFolder.mkdirs();
final FileObject rootFolderFO = FileUtil.toFileObject(rootFolder);
moduleImplCar = new GFTestEEModuleImpl(
rootFolderFO, J2eeModule.Type.CAR, Profile.JAVA_EE_7_FULL.toPropertiesString());
moduleCar = J2eeModuleFactory.createJ2eeModule(moduleImplCar);
moduleImplEjb = new GFTestEEModuleImpl(
rootFolderFO, J2eeModule.Type.EJB, Profile.JAVA_EE_7_FULL.toPropertiesString());
moduleEjb = J2eeModuleFactory.createJ2eeModule(moduleImplEjb);
moduleImplEar = new GFTestEEModuleImpl(
rootFolderFO, J2eeModule.Type.EAR, Profile.JAVA_EE_7_FULL.toPropertiesString());
moduleEar = J2eeModuleFactory.createJ2eeModule(moduleImplEar);
moduleImplRar = new GFTestEEModuleImpl(
rootFolderFO, J2eeModule.Type.RAR, Profile.JAVA_EE_7_FULL.toPropertiesString());
moduleRar = J2eeModuleFactory.createJ2eeModule(moduleImplRar);
moduleImplWar = new GFTestEEModuleImpl(
rootFolderFO, J2eeModule.Type.WAR, Profile.JAVA_EE_7_WEB.toPropertiesString());
moduleWar = J2eeModuleFactory.createJ2eeModule(moduleImplWar);
}
@After
@Override
public void tearDown() {
// Pass everything to GC.
moduleImplCar = null;
moduleCar = null;
moduleImplEjb = null;
moduleEjb = null;
moduleImplEar = null;
moduleEar = null;
moduleImplRar = null;
moduleRar = null;
moduleImplWar = null;
moduleWar = null;
}
/**
* Test Java EE module directory structure for resource file.
* @throws NoSuchMethodException when there is a problem with reflection.
* @throws IllegalAccessException when there is a problem with reflection.
* @throws IllegalArgumentException when there is a problem with reflection.
* @throws InvocationTargetException when there is a problem with reflection.
*/
@Test
public void testResourceFilePath()
throws NoSuchMethodException, IllegalAccessException,
IllegalArgumentException, InvocationTargetException {
final Method resourceFilePath = PayaraConfiguration.class.getDeclaredMethod(
"resourceFilePath", J2eeModule.class, String.class);
resourceFilePath.setAccessible(true);
final String pathFragment = "myDirectory";
final String verifyConfigDirCar = OsUtils.joinPaths(JavaEEModule.META_INF, pathFragment);
final String verifyConfigDirEjb = OsUtils.joinPaths(JavaEEModule.META_INF, pathFragment);
final String verifyConfigDirEar = OsUtils.joinPaths(JavaEEModule.META_INF, pathFragment);
final String verifyConfigDirRar = OsUtils.joinPaths(JavaEEModule.META_INF, pathFragment);
final String verifyConfigDirWar = OsUtils.joinPaths(JavaEEModule.WEB_INF, pathFragment);
final String configDirCar = (String)resourceFilePath.invoke(null, moduleCar, pathFragment);
final String configDirEjb = (String)resourceFilePath.invoke(null, moduleEjb, pathFragment);
final String configDirEar = (String)resourceFilePath.invoke(null, moduleEar, pathFragment);
final String configDirRar = (String)resourceFilePath.invoke(null, moduleRar, pathFragment);
final String configDirWar = (String)resourceFilePath.invoke(null, moduleWar, pathFragment);
assertEquals("Expected resource file path for CAR is: " + verifyConfigDirCar,
verifyConfigDirCar, configDirCar);
assertEquals("Expected resource file path for EJB is: " + verifyConfigDirEjb,
verifyConfigDirEjb, configDirEjb);
assertEquals("Expected resource file path for EAR is: " + verifyConfigDirEar,
verifyConfigDirEar, configDirEar);
assertEquals("Expected resource file path for RAR is: " + verifyConfigDirRar,
verifyConfigDirRar, configDirRar);
assertEquals("Expected resource file path for WAR is: " + verifyConfigDirWar,
verifyConfigDirWar, configDirWar);
}
/**
* Test new Payara resources file name generation depending on passed {@link PayaraVersion}.
* Expected values are:<ul>
* <li>PREFIX/src/conf/META_INF/sun-resources.xml for CAR, EAR, EJB and RAR
* on Payara older than 3.1</li\>
* <li>PREFIX/src/conf/META_INF/sun-resources.xml for CAR, EAR, EJB and RAR
* on Payara 3.1 and later</li\>
* <li>PREFIX/src/conf/WEB_INF/sun-resources.xml for WAR on Payara older than 3.1</li\>
* <li>PREFIX/src/conf/WEB_INF/sun-resources.xml for WAR on Payara 3.1 and later</li\></ul>
*/
@Test
public void testGetNewResourceFile() {
for (PayaraVersion version : PayaraVersion.values()) {
final Pair<File, Boolean> pairCar = PayaraConfiguration.getNewResourceFile(moduleCar, version);
final Pair<File, Boolean> pairEar = PayaraConfiguration.getNewResourceFile(moduleEar, version);
final Pair<File, Boolean> pairEjb = PayaraConfiguration.getNewResourceFile(moduleEjb, version);
final Pair<File, Boolean> pairRar = PayaraConfiguration.getNewResourceFile(moduleRar, version);
final Pair<File, Boolean> pairWar = PayaraConfiguration.getNewResourceFile(moduleWar, version);
final File resourceFileCar = pairCar.first();
final File resourceFileEar = pairEar.first();
final File resourceFileEjb = pairEjb.first();
final File resourceFileRar = pairRar.first();
final File resourceFileWar = pairWar.first();
File verifyPrefixCar;
File verifyPrefixEar;
File verifyPrefixEjb;
File verifyPrefixRar;
File verifyPrefixWar;
if (PayaraVersion.lt(version, PayaraVersion.PF_4_1_144)) {
verifyPrefixCar = moduleCar.getResourceDirectory();
verifyPrefixEar = moduleEar.getResourceDirectory();
verifyPrefixEjb = moduleEjb.getResourceDirectory();
verifyPrefixRar = moduleRar.getResourceDirectory();
verifyPrefixWar = moduleWar.getResourceDirectory();
} else {
verifyPrefixCar = moduleCar.getDeploymentConfigurationFile(
JavaEEModule.getConfigDir(moduleCar.getType()));
verifyPrefixEar = moduleEar.getDeploymentConfigurationFile(
JavaEEModule.getConfigDir(moduleEar.getType()));
verifyPrefixEjb = moduleEjb.getDeploymentConfigurationFile(
JavaEEModule.getConfigDir(moduleEjb.getType()));
verifyPrefixRar = moduleRar.getDeploymentConfigurationFile(
JavaEEModule.getConfigDir(moduleRar.getType()));
verifyPrefixWar = moduleWar.getDeploymentConfigurationFile(
JavaEEModule.getConfigDir(moduleWar.getType()));
}
final String fileName = PayaraVersion.lt(version, PayaraVersion.PF_4_1_144)
? "sun-resources.xml"
: "glassfish-resources.xml";
final File verifyFileCar = new File(verifyPrefixCar, fileName);
final File verifyFileEar = new File(verifyPrefixEar, fileName);
final File verifyFileEjb = new File(verifyPrefixEjb, fileName);
final File verifyFileRar = new File(verifyPrefixRar, fileName);
final File verifyFileWar = new File(verifyPrefixWar, fileName);
assertTrue("New resource file for " + version.toString() + " CAR: " + verifyFileCar.toString() + " was " + resourceFileCar,
verifyFileCar.equals(resourceFileCar));
assertTrue("New resource file for " + version.toString() + " EAR: " + verifyFileEar.toString() + " was " + resourceFileEar,
verifyFileEar.equals(resourceFileEar));
assertTrue("New resource file for " + version.toString() + " EJB: " + verifyFileEjb.toString() + " was " + resourceFileEjb,
verifyFileEjb.equals(resourceFileEjb));
assertTrue("New resource file for " + version.toString() + " RAR: " + verifyFileRar.toString() + " was " + resourceFileRar,
verifyFileRar.equals(resourceFileRar));
assertTrue("New resource file for " + version.toString() + " WAR: " + verifyFileWar.toString() + " was " + resourceFileWar,
verifyFileWar.equals(resourceFileWar));
}
}
/**
* Verify that proper resource file from Java EE module is returned.
* Both {@code sun-resources.xml} and {@code glassfish-resources.xml} are available
* in Java EE module configuration directory on the disk.
* Expected values are:<ul>
* <li>PREFIX/src/conf/META_INF/sun-resources.xml for CAR, EAR, EJB and RAR
* on Payara older than 3.1</li\>
* <li>PREFIX/src/conf/META_INF/sun-resources.xml for CAR, EAR, EJB and RAR
* on Payara 3.1 and later</li\>
* <li>PREFIX/src/conf/WEB_INF/sun-resources.xml for WAR on Payara older than 3.1</li\>
* <li>PREFIX/src/conf/WEB_INF/sun-resources.xml for WAR on Payara 3.1 and later</li\></ul>
*/
@Test
public void testGetExistingResourceFile() throws IOException {
final File prefixCar = moduleCar.getDeploymentConfigurationFile(
JavaEEModule.getConfigDir(moduleCar.getType()));
final File prefixEar = moduleEar.getDeploymentConfigurationFile(
JavaEEModule.getConfigDir(moduleEar.getType()));
final File prefixEjb = moduleEjb.getDeploymentConfigurationFile(
JavaEEModule.getConfigDir(moduleEjb.getType()));
final File prefixRar = moduleRar.getDeploymentConfigurationFile(
JavaEEModule.getConfigDir(moduleRar.getType()));
final File prefixWar = moduleWar.getDeploymentConfigurationFile(
JavaEEModule.getConfigDir(moduleWar.getType()));
final Set<File> prefixes = new HashSet<File>(5);
prefixes.add(prefixCar);
prefixes.add(prefixEar);
prefixes.add(prefixEjb);
prefixes.add(prefixRar);
prefixes.add(prefixWar);
// Create all resource files (they are empty but it's enough for this test).
for (File prefix : prefixes) {
final File sunResource = new File(prefix, "sun-resources.xml");
final File gfResource = new File(prefix, "glassfish-resources.xml");
prefix.mkdirs();
sunResource.createNewFile();
gfResource.createNewFile();
}
for (PayaraVersion version : PayaraVersion.values()) {
final Pair<File, Boolean> pairCar = PayaraConfiguration.getNewResourceFile(moduleCar, version);
final Pair<File, Boolean> pairEar = PayaraConfiguration.getNewResourceFile(moduleEar, version);
final Pair<File, Boolean> pairEjb = PayaraConfiguration.getNewResourceFile(moduleEjb, version);
final Pair<File, Boolean> pairRar = PayaraConfiguration.getNewResourceFile(moduleRar, version);
final Pair<File, Boolean> pairWar = PayaraConfiguration.getNewResourceFile(moduleWar, version);
final File resourcesCar = pairCar.first();
final File resourcesEar = pairEar.first();
final File resourcesEjb = pairEjb.first();
final File resourcesRar = pairRar.first();
final File resourcesWar = pairWar.first();
File verifyPrefixCar;
File verifyPrefixEar;
File verifyPrefixEjb;
File verifyPrefixRar;
File verifyPrefixWar;
if (PayaraVersion.lt(version, PayaraVersion.PF_4_1_144)) {
verifyPrefixCar = moduleCar.getResourceDirectory();
verifyPrefixEar = moduleEar.getResourceDirectory();
verifyPrefixEjb = moduleEjb.getResourceDirectory();
verifyPrefixRar = moduleRar.getResourceDirectory();
verifyPrefixWar = moduleWar.getResourceDirectory();
} else {
verifyPrefixCar = moduleCar.getDeploymentConfigurationFile(
JavaEEModule.getConfigDir(moduleCar.getType()));
verifyPrefixEar = moduleEar.getDeploymentConfigurationFile(
JavaEEModule.getConfigDir(moduleEar.getType()));
verifyPrefixEjb = moduleEjb.getDeploymentConfigurationFile(
JavaEEModule.getConfigDir(moduleEjb.getType()));
verifyPrefixRar = moduleRar.getDeploymentConfigurationFile(
JavaEEModule.getConfigDir(moduleRar.getType()));
verifyPrefixWar = moduleWar.getDeploymentConfigurationFile(
JavaEEModule.getConfigDir(moduleWar.getType()));
}
final String fileName = PayaraVersion.lt(version, PayaraVersion.PF_4_1_144)
? "sun-resources.xml"
: "glassfish-resources.xml";
final File verifyFileCar = new File(verifyPrefixCar, fileName);
final File verifyFileEar = new File(verifyPrefixEar, fileName);
final File verifyFileEjb = new File(verifyPrefixEjb, fileName);
final File verifyFileRar = new File(verifyPrefixRar, fileName);
final File verifyFileWar = new File(verifyPrefixWar, fileName);
assertTrue("Existing resource file for " + version.toString() + " CAR: "
+ verifyFileCar.toString() + " was " + resourcesCar,
verifyFileCar.equals(resourcesCar));
assertTrue("Existing resource file for " + version.toString() + " EAR: "
+ verifyFileEar.toString() + " was " + resourcesEar,
verifyFileEar.equals(resourcesEar));
assertTrue("Existing resource file for " + version.toString() + " EJB: "
+ verifyFileEjb.toString() + " was " + resourcesEjb,
verifyFileEjb.equals(resourcesEjb));
assertTrue("Existing resource file for " + version.toString() + " RAR: "
+ verifyFileRar.toString() + " was " + resourcesRar,
verifyFileRar.equals(resourcesRar));
assertTrue("Existing resource file for " + version.toString() + " WAR: "
+ verifyFileWar.toString() + " was " + resourcesWar,
verifyFileWar.equals(resourcesWar));
}
// Delete all resource files.
for (File prefix : prefixes) {
final File sunResource = new File(prefix, "sun-resources.xml");
final File gfResource = new File(prefix, "glassfish-resources.xml");
sunResource.delete();
gfResource.delete();
}
}
}