You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by an...@apache.org on 2012/12/05 16:40:25 UTC
svn commit: r1417489 - in
/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config:
DeploymentLoader.java DeploymentsResolver.java
Author: andygumbrecht
Date: Wed Dec 5 15:40:24 2012
New Revision: 1417489
URL: http://svn.apache.org/viewvc?rev=1417489&view=rev
Log:
Filter out known exclude directories
Modified:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentsResolver.java
Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java?rev=1417489&r1=1417488&r2=1417489&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java Wed Dec 5 15:40:24 2012
@@ -88,7 +88,6 @@ public class DeploymentLoader implements
private boolean scanManagedBeans = true;
private static final Collection<String> KNOWN_DESCRIPTORS = Arrays.asList("app-ctx.xml", "module.properties", "application.properties", "web.xml", "ejb-jar.xml", "openejb-jar.xml", "env-entries.properties", "beans.xml", "ra.xml", "application.xml", "application-client.xml", "persistence-fragment.xml", "persistence.xml", "validation.xml", NewLoaderLogic.EXCLUSION_FILE);
private static String ALTDD = SystemInstance.get().getOptions().get(OPENEJB_ALTDD_PREFIX, (String) null);
- private static final String[] ignoreDirs = SystemInstance.get().getProperty("openejb.ignore.directories", ".svn,_svn,cvs").split(",");
public AppModule load(final File jarFile) throws OpenEJBException {
// verify we have a valid file
@@ -108,7 +107,7 @@ public class DeploymentLoader implements
try {
// determine the module type
- Class<? extends DeploymentModule> moduleClass;
+ final Class<? extends DeploymentModule> moduleClass;
try {
doNotUseClassLoader = ClassLoaderUtil.createClassLoader(jarPath, new URL[]{baseUrl}, getOpenEJBClassLoader());
@@ -234,6 +233,7 @@ public class DeploymentLoader implements
return ParentClassLoaderFinder.Helper.get();
}
+ @SuppressWarnings("unchecked")
private void addWebPersistenceDD(final String name, final Map<String, Object> otherDD, final AppModule appModule) {
if (otherDD.containsKey(name)) {
List<URL> persistenceUrls = (List<URL>) appModule.getAltDDs().get(name);
@@ -516,7 +516,7 @@ public class DeploymentLoader implements
DeploymentsResolver.loadFromClasspath(base, filteredUrls, appModule.getClassLoader());
addPersistenceUnits(appModule, filteredUrls.toArray(new URL[filteredUrls.size()]));
- for (DeploymentModule module : appModule.getDeploymentModule()) {
+ for (final DeploymentModule module : appModule.getDeploymentModule()) {
module.setStandaloneModule(false);
}
@@ -626,6 +626,7 @@ public class DeploymentLoader implements
addWebModule(webModule, appModule);
}
+ @SuppressWarnings("unchecked")
public static void addWebModule(final WebModule webModule, final AppModule appModule) throws OpenEJBException {
// create and add the WebModule
appModule.getWebModules().add(webModule);
@@ -693,10 +694,10 @@ public class DeploymentLoader implements
* then per specification we use the web.xml metadata-complete setting
* to imply the same for EJBs.
*
- * @param webModule
- * @param ejbModule
+ * @param webModule WebModule
+ * @param ejbModule EjbModule
*/
- private static void fillEjbJar(WebModule webModule, EjbModule ejbModule) {
+ private static void fillEjbJar(final WebModule webModule, final EjbModule ejbModule) {
final Object o = webModule.getAltDDs().get("ejb-jar.xml");
if (o != null) return;
if (ejbModule.getEjbJar() != null) return;
@@ -709,7 +710,7 @@ public class DeploymentLoader implements
ejbModule.setEjbJar(ejbJar);
}
- private static boolean isMetadataComplete(WebModule webModule, EjbModule ejbModule) {
+ private static boolean isMetadataComplete(final WebModule webModule, final EjbModule ejbModule) {
if (webModule.getWebApp() == null) return false;
if (!webModule.getWebApp().isMetadataComplete()) return false;
@@ -781,7 +782,7 @@ public class DeploymentLoader implements
return webModule;
}
- public static List<URL> filterWebappUrls(final URL[] webUrls, URL exclusions) {
+ public static List<URL> filterWebappUrls(final URL[] webUrls, final URL exclusions) {
Filter excludeFilter = null;
if (exclusions != null) {
try {
@@ -1025,7 +1026,7 @@ public class DeploymentLoader implements
/**
* Finds all faces configuration files and stores them in the WebModule
*
- * @param webModule
+ * @param webModule WebModule
* @throws OpenEJBException
*/
private void addFacesConfigs(final WebModule webModule) throws OpenEJBException {
@@ -1256,8 +1257,8 @@ public class DeploymentLoader implements
/**
* Modifies the map passed in with all the alt dd URLs found
*
- * @param map
- * @param log
+ * @param map Map
+ * @param log boolean
* @return the same map instance updated with alt dds
*/
public static Map<String, URL> altDDSources(final Map<String, URL> map, final boolean log) {
@@ -1349,13 +1350,19 @@ public class DeploymentLoader implements
// file path has trailing !/ that must be stripped off
pathname = pathname.substring(0, pathname.lastIndexOf('!'));
- pathname = URLDecoder.decode(pathname);
+ try {
+ pathname = URLDecoder.decode(pathname, "UTF-8");
+ } catch (Exception e) {
+ //noinspection deprecation
+ pathname = URLDecoder.decode(pathname);
+ }
return new File(pathname);
} else if ("file".equals(warUrl.getProtocol())) {
final String pathname = warUrl.getPath();
try {
- return new File(URLDecoder.decode(pathname, "UTF8"));
+ return new File(URLDecoder.decode(pathname, "UTF-8"));
} catch (UnsupportedEncodingException e) {
+ //noinspection deprecation
return new File(URLDecoder.decode(pathname));
}
} else {
@@ -1410,6 +1417,7 @@ public class DeploymentLoader implements
return discoverModuleType(baseUrl, classLoader, search);
}
+ @SuppressWarnings("unchecked")
public Class<? extends DeploymentModule> discoverModuleType(final URL baseUrl, final ClassLoader classLoader, final Set<RequireDescriptors> requireDescriptor) throws IOException, UnknownModuleTypeException {
final boolean scanPotentialEjbModules = !requireDescriptor.contains(RequireDescriptors.EJB);
final boolean scanPotentialClientModules = !requireDescriptor.contains(RequireDescriptors.CLIENT);
@@ -1485,22 +1493,11 @@ public class DeploymentLoader implements
//#TOMEE-613
final File file = URLs.toFile(baseUrl);
- if (file.isDirectory() && !file.isHidden() && !file.equals(SystemInstance.get().getHome().getDirectory("lib", false))) {
-
- final String fn = file.getName();
- boolean checkEAR = true;
+ if (DeploymentsResolver.isValidDirectory(file)) {
- for (final String dir : ignoreDirs) {
- if (fn.equalsIgnoreCase(dir)) {
- checkEAR = false;
- break;
- }
- }
-
- if (checkEAR) {
- if (containsEarAssets(file)) return AppModule.class;
- if (containsWebAssets(file)) return WebModule.class;
- }
+ final File[] files = file.listFiles();
+ if (containsEarAssets(files)) return AppModule.class;
+ if (containsWebAssets(files)) return WebModule.class;
}
final Class<? extends DeploymentModule> defaultType = (Class<? extends DeploymentModule>) SystemInstance.get().getOptions().get("openejb.default.deployment-module", (Class<?>) null);
@@ -1516,10 +1513,9 @@ public class DeploymentLoader implements
throw new UnknownModuleTypeException("Unknown module type: url=" + path); // baseUrl can be null
}
- private boolean containsWebAssets(File dir) {
- final File[] files = dir.listFiles();
+ private static boolean containsWebAssets(final File[] files) {
if (files != null) {
- for (File file : files) {
+ for (final File file : files) {
if (file.getName().endsWith(".jsp")) return true;
if (file.getName().endsWith(".html")) return true;
}
@@ -1527,10 +1523,9 @@ public class DeploymentLoader implements
return false;
}
- private boolean containsEarAssets(File dir) {
- final File[] files = dir.listFiles();
+ private static boolean containsEarAssets(final File[] files) {
if (files != null) {
- for (File file : files) {
+ for (final File file : files) {
if (file.getName().endsWith(".jar")) return true;
if (file.getName().endsWith(".war")) return true;
if (file.getName().endsWith(".rar")) return true;
Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentsResolver.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentsResolver.java?rev=1417489&r1=1417488&r2=1417489&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentsResolver.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentsResolver.java Wed Dec 5 15:40:24 2012
@@ -30,6 +30,7 @@ import org.apache.xbean.finder.filter.Fi
import org.apache.xbean.finder.filter.IncludeExcludeFilter;
import java.io.File;
+import java.io.FileFilter;
import java.io.IOException;
import java.net.URL;
import java.util.ArrayList;
@@ -47,9 +48,37 @@ import static org.apache.openejb.util.UR
* @version $Rev$ $Date$
*/
public class DeploymentsResolver implements DeploymentFilterable {
- private static final String EXCLUDE_INCLUDE_ORDER = SystemInstance.get().getOptions().get("openejb.exclude-include.order", "include-exclude");
+ private static final String EXCLUDE_INCLUDE_ORDER = SystemInstance.get().getOptions().get("openejb.exclude-include.order", "include-exclude");
+ private static final String[] ignoreDirs = SystemInstance.get().getProperty("openejb.ignore.directories", ".svn,_svn,cvs,.git,.hg").split(",");
private static final Logger logger = DeploymentLoader.logger;
+ private static File lib = null;
+
+ static {
+ try {
+ lib = SystemInstance.get().getHome().getDirectory("lib", false);
+ } catch (IOException e) {
+ //Ignore
+ }
+ }
+
+ public static boolean isValidDirectory(final File file) {
+
+ if (file.isDirectory() && !file.isHidden() && !file.equals(lib)) {
+
+ final String fn = file.getName();
+
+ for (final String dir : ignoreDirs) {
+ if (fn.equalsIgnoreCase(dir)) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ return false;
+ }
public static void loadFrom(final Deployments dep, final FileUtils path, final List<File> jarList) {
@@ -85,12 +114,12 @@ public class DeploymentsResolver impleme
}
public static class DeploymentsConfigurationException extends RuntimeException {
- public DeploymentsConfigurationException(String message) {
+ public DeploymentsConfigurationException(final String message) {
super(message);
}
}
- private static void loadFromFile(Deployments dep, FileUtils path, List<File> jarList) {
+ private static void loadFromFile(final Deployments dep, final FileUtils path, final List<File> jarList) {
final File file = Files.path(path.getDirectory(), dep.getFile());
Files.exists(file);
@@ -102,35 +131,49 @@ public class DeploymentsResolver impleme
}
}
- private static void loadFromDir(Deployments dep, FileUtils path, List<File> jarList) {
+ private static void loadFromDir(final Deployments dep, final FileUtils path, final List<File> jarList) {
final File dir = Files.path(path.getDirectory(), dep.getDir());
Files.exists(dir);
Files.readable(dir);
Files.dir(dir);
+ Files.notHidden(dir);
final Map<String, File> files = new LinkedHashMap<String, java.io.File>();
- for (File file : dir.listFiles()) {
- files.put(file.getAbsolutePath(), file);
- }
+ final File[] list = dir.listFiles(new FileFilter() {
+ @Override
+ public boolean accept(final File f) {
+ if (f.isDirectory()) {
+ return DeploymentsResolver.isValidDirectory(f);
+ }
+ return true;
+ }
+ });
+
+ if (list != null) {
+ for (final File file : list) {
- // Ignore any unpacked versions
- for (File file : dir.listFiles()) {
- if (!isArchive(file)) continue;
- final String archive = file.getAbsolutePath();
- files.remove(archive.substring(0, archive.length() - 4));
+ files.put(file.getAbsolutePath(), file);
+ }
+
+ // Ignore any unpacked versions
+ for (final File file : list) {
+ if (!isArchive(file)) continue;
+ final String archive = file.getAbsolutePath();
+ files.remove(archive.substring(0, archive.length() - 4));
+ }
}
- for (File file : files.values()) {
+ for (final File file : files.values()) {
if (!jarList.contains(file)) {
jarList.add(file);
}
}
}
- private static boolean isArchive(File file) {
+ private static boolean isArchive(final File file) {
if (!file.isFile()) return false;
- if (!file.getName().endsWith("ar")) return false;
+ if (!file.getName().toLowerCase().endsWith("ar")) return false;
final String name = file.getName();
final char c = name.charAt(name.length() - 4);