X-Git-Url: https://juplo.de/gitweb/?p=scannotation;a=blobdiff_plain;f=src%2Fmain%2Fjava%2Forg%2Fscannotation%2FWarUrlFinder.java;fp=src%2Fmain%2Fjava%2Forg%2Fscannotation%2FWarUrlFinder.java;h=f253764afe4086324daa37a61b31892cdb253856;hp=0000000000000000000000000000000000000000;hb=36e6637926203201648e7892ec6ee1240807218e;hpb=58b6663aae5313b41167d92851981ca549cbb461
diff --git a/src/main/java/org/scannotation/WarUrlFinder.java b/src/main/java/org/scannotation/WarUrlFinder.java
new file mode 100644
index 0000000..f253764
--- /dev/null
+++ b/src/main/java/org/scannotation/WarUrlFinder.java
@@ -0,0 +1,74 @@
+package org.scannotation;
+
+import javax.servlet.ServletContext;
+import javax.servlet.ServletContextEvent;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Set;
+
+/**
+ * @author Bill Burke
+ * @version $Revision: 1 $
+ */
+public class WarUrlFinder
+{
+ public static URL[] findWebInfLibClasspaths(ServletContextEvent servletContextEvent)
+ {
+ ServletContext servletContext = servletContextEvent.getServletContext();
+ return findWebInfLibClasspaths(servletContext);
+ }
+
+ public static URL[] findWebInfLibClasspaths(ServletContext servletContext)
+ {
+ ArrayList list = new ArrayList();
+ Set libJars = servletContext.getResourcePaths("/WEB-INF/lib");
+ for (Object jar : libJars)
+ {
+ try
+ {
+ list.add(servletContext.getResource((String) jar));
+ }
+ catch (MalformedURLException e)
+ {
+ throw new RuntimeException(e);
+ }
+ }
+ return list.toArray(new URL[list.size()]);
+ }
+
+ public static URL findWebInfClassesPath(ServletContextEvent servletContextEvent)
+ {
+ ServletContext servletContext = servletContextEvent.getServletContext();
+ return findWebInfClassesPath(servletContext);
+ }
+
+ /**
+ * Find the URL pointing to "/WEB-INF/classes" This method may not work in conjunction with IteratorFactory
+ * if your servlet container does not extract the /WEB-INF/classes into a real file-based directory
+ *
+ * @param servletContext
+ * @return
+ */
+ public static URL findWebInfClassesPath(ServletContext servletContext)
+ {
+ Set libJars = servletContext.getResourcePaths("/WEB-INF/classes");
+ for (Object jar : libJars)
+ {
+ try
+ {
+ URL url = servletContext.getResource((String) jar);
+ String urlString = url.toString();
+ int index = urlString.lastIndexOf("/WEB-INF/classes/");
+ urlString = urlString.substring(0, index + "/WEB-INF/classes/".length());
+ return new URL(urlString);
+ }
+ catch (MalformedURLException e)
+ {
+ throw new RuntimeException(e);
+ }
+ }
+ return null;
+
+ }
+}