[jboss-cvs] JBossAS SVN: r88881 - in projects/spring-int/trunk: vfs/src/main/java/org/jboss/spring/vfs and 1 other directory.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Thu May 14 13:06:15 EDT 2009
Author: marius.bogoevici
Date: 2009-05-14 13:06:15 -0400 (Thu, 14 May 2009)
New Revision: 88881
Added:
projects/spring-int/trunk/deployers/src/main/java/org/jboss/spring/factory/VFSClassPathXmlApplicationContext.java
Modified:
projects/spring-int/trunk/deployers/src/main/java/org/jboss/spring/factory/NamedXmlApplicationContext.java
projects/spring-int/trunk/deployers/src/main/java/org/jboss/spring/factory/VFSXmlWebApplicationContext.java
projects/spring-int/trunk/vfs/src/main/java/org/jboss/spring/vfs/VFSResource.java
projects/spring-int/trunk/vfs/src/main/java/org/jboss/spring/vfs/VFSResourceLoader.java
projects/spring-int/trunk/vfs/src/main/java/org/jboss/spring/vfs/VFSResourcePatternResolver.java
projects/spring-int/trunk/vfs/src/main/java/org/jboss/spring/vfs/VFSResourcePatternResolvingHelper.java
Log:
JBSPRING-5, JBSPRING-7 Fixing getResource("classpath:/<resource-path>"), simplifying VFSResourceLoader and making it behave consistently with "classpath:" urls, adding VFSClassPathXMLApplicationContext.
Modified: projects/spring-int/trunk/deployers/src/main/java/org/jboss/spring/factory/NamedXmlApplicationContext.java
===================================================================
--- projects/spring-int/trunk/deployers/src/main/java/org/jboss/spring/factory/NamedXmlApplicationContext.java 2009-05-14 17:02:06 UTC (rev 88880)
+++ projects/spring-int/trunk/deployers/src/main/java/org/jboss/spring/factory/NamedXmlApplicationContext.java 2009-05-14 17:06:15 UTC (rev 88881)
@@ -35,7 +35,7 @@
/**
* @author <a href="mailto:ales.justin at genera-lynx.com">Ales Justin</a>
*/
-public class NamedXmlApplicationContext extends ClassPathXmlApplicationContext implements Nameable
+public class NamedXmlApplicationContext extends VFSClassPathXmlApplicationContext implements Nameable
{
private String defaultName;
private Resource resource;
@@ -91,8 +91,4 @@
return name;
}
- protected ResourcePatternResolver getResourcePatternResolver()
- {
- return new VFSResourcePatternResolver(getClassLoader());
- }
}
Added: projects/spring-int/trunk/deployers/src/main/java/org/jboss/spring/factory/VFSClassPathXmlApplicationContext.java
===================================================================
--- projects/spring-int/trunk/deployers/src/main/java/org/jboss/spring/factory/VFSClassPathXmlApplicationContext.java (rev 0)
+++ projects/spring-int/trunk/deployers/src/main/java/org/jboss/spring/factory/VFSClassPathXmlApplicationContext.java 2009-05-14 17:06:15 UTC (rev 88881)
@@ -0,0 +1,93 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2009, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.spring.factory;
+
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+import org.springframework.context.ApplicationContext;
+import org.springframework.beans.BeansException;
+import org.springframework.core.io.support.ResourcePatternResolver;
+import org.springframework.core.io.Resource;
+import org.jboss.spring.vfs.VFSResourcePatternResolver;
+import org.jboss.spring.vfs.VFSResourceLoader;
+
+/**
+ * {@link org.springframework.context.support.ClassPathXmlApplicationContext} variant
+ * adding support for classpath scanning in JBoss AS 5, using the VFS file system.
+ *
+ * @author <a href="mailto:mariusb at redhat.com">Marius Bogoevici</a>
+ */
+public class VFSClassPathXmlApplicationContext extends ClassPathXmlApplicationContext
+{
+ public VFSClassPathXmlApplicationContext() {
+ super();
+ }
+
+ public VFSClassPathXmlApplicationContext(ApplicationContext parent) {
+ super(parent);
+ }
+
+ public VFSClassPathXmlApplicationContext(String configLocation) throws BeansException {
+ super(configLocation);
+ }
+
+ public VFSClassPathXmlApplicationContext(String[] configLocations) throws BeansException {
+ super(configLocations);
+ }
+
+ public VFSClassPathXmlApplicationContext(String[] configLocations, ApplicationContext parent) throws BeansException {
+ super(configLocations, parent);
+ }
+
+ public VFSClassPathXmlApplicationContext(String[] configLocations, boolean refresh) throws BeansException {
+ super(configLocations, refresh);
+ }
+
+ public VFSClassPathXmlApplicationContext(String[] configLocations, boolean refresh, ApplicationContext parent) throws BeansException {
+ super(configLocations, refresh, parent);
+ }
+
+ public VFSClassPathXmlApplicationContext(String path, Class clazz) throws BeansException {
+ super(path, clazz);
+ }
+
+ public VFSClassPathXmlApplicationContext(String[] paths, Class clazz) throws BeansException {
+ super(paths, clazz);
+ }
+
+ public VFSClassPathXmlApplicationContext(String[] paths, Class clazz, ApplicationContext parent) throws BeansException {
+ super(paths, clazz, parent);
+ }
+
+
+ protected ResourcePatternResolver getResourcePatternResolver()
+ {
+ return new VFSResourcePatternResolver(new VFSResourceLoader(getClassLoader()));
+ }
+
+ @Override
+ public Resource getResource(String location)
+ {
+ return getResourcePatternResolver().getResource(location);
+ }
+
+}
+
Modified: projects/spring-int/trunk/deployers/src/main/java/org/jboss/spring/factory/VFSXmlWebApplicationContext.java
===================================================================
--- projects/spring-int/trunk/deployers/src/main/java/org/jboss/spring/factory/VFSXmlWebApplicationContext.java 2009-05-14 17:02:06 UTC (rev 88880)
+++ projects/spring-int/trunk/deployers/src/main/java/org/jboss/spring/factory/VFSXmlWebApplicationContext.java 2009-05-14 17:06:15 UTC (rev 88881)
@@ -41,7 +41,7 @@
protected ResourcePatternResolver getResourcePatternResolver()
{
return new VFSServletContextResourcePatternResolver(
- new WebApplicationContextAwareVFSResourceLoader());
+ new WebApplicationContextAwareVFSResourceLoader(getClassLoader()));
}
/**
@@ -51,11 +51,22 @@
*/
private class WebApplicationContextAwareVFSResourceLoader extends VFSResourceLoader
{
- @Override
+
+ WebApplicationContextAwareVFSResourceLoader(ClassLoader classLoader) {
+ super(classLoader);
+ }
+
+ @Override
protected Resource getResourceByPath(String path)
{
return VFSXmlWebApplicationContext.this.getResourceByPath(path);
}
}
+
+ @Override
+ public Resource getResource(String location)
+ {
+ return getResourcePatternResolver().getResource(location);
+ }
}
Modified: projects/spring-int/trunk/vfs/src/main/java/org/jboss/spring/vfs/VFSResource.java
===================================================================
--- projects/spring-int/trunk/vfs/src/main/java/org/jboss/spring/vfs/VFSResource.java 2009-05-14 17:02:06 UTC (rev 88880)
+++ projects/spring-int/trunk/vfs/src/main/java/org/jboss/spring/vfs/VFSResource.java 2009-05-14 17:06:15 UTC (rev 88881)
@@ -30,14 +30,16 @@
import org.jboss.virtual.VirtualFile;
import org.jboss.virtual.VFSUtils;
+import org.jboss.virtual.VFS;
import org.springframework.core.io.Resource;
+import org.springframework.core.io.AbstractResource;
/**
* VFS based Resource.
*
* @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
*/
-public class VFSResource implements Resource
+public class VFSResource extends AbstractResource
{
private VirtualFile file;
@@ -48,6 +50,19 @@
this.file = file;
}
+ public VFSResource(URL url)
+ {
+ if (url == null)
+ throw new IllegalArgumentException("Null url");
+ try
+ {
+ this.file = VFS.getRoot(url);
+ } catch (IOException e)
+ {
+ throw new IllegalArgumentException("Cannot retrieve file from URL: ", e);
+ }
+ }
+
public boolean exists()
{
try
@@ -163,4 +178,20 @@
{
return getDescription();
}
+
+ @Override
+ public boolean equals(Object other) {
+ if (other instanceof VFSResource)
+ {
+ return file.equals(((VFSResource)other).file);
+ } else
+ {
+ return false;
+ }
+ }
+
+ @Override
+ public int hashCode() {
+ return file.hashCode();
+ }
}
Modified: projects/spring-int/trunk/vfs/src/main/java/org/jboss/spring/vfs/VFSResourceLoader.java
===================================================================
--- projects/spring-int/trunk/vfs/src/main/java/org/jboss/spring/vfs/VFSResourceLoader.java 2009-05-14 17:02:06 UTC (rev 88880)
+++ projects/spring-int/trunk/vfs/src/main/java/org/jboss/spring/vfs/VFSResourceLoader.java 2009-05-14 17:06:15 UTC (rev 88881)
@@ -36,11 +36,7 @@
* @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
*/
public class VFSResourceLoader extends DefaultResourceLoader
-{
- public VFSResourceLoader()
- {
- }
-
+{
public VFSResourceLoader(ClassLoader classLoader)
{
super(classLoader);
@@ -51,22 +47,12 @@
Assert.notNull(location, "Location must not be null");
if (location.startsWith(CLASSPATH_URL_PREFIX))
{
- return new ClassPathResource(location.substring(CLASSPATH_URL_PREFIX.length()), getClassLoader());
+ return new VFSResource(this.getClassLoader().getResource(location.substring(CLASSPATH_URL_PREFIX.length())));
}
else
{
- try
- {
- // Try to parse the location as a URL...
- URL url = new URL(location);
- VirtualFile file = VFS.getRoot(url);
- return new VFSResource(file);
- }
- catch (Exception ex)
- {
- // No URL -> resolve as resource path.
- return getResourceByPath(location);
- }
+ return super.getResource(location);
}
+
}
}
\ No newline at end of file
Modified: projects/spring-int/trunk/vfs/src/main/java/org/jboss/spring/vfs/VFSResourcePatternResolver.java
===================================================================
--- projects/spring-int/trunk/vfs/src/main/java/org/jboss/spring/vfs/VFSResourcePatternResolver.java 2009-05-14 17:02:06 UTC (rev 88880)
+++ projects/spring-int/trunk/vfs/src/main/java/org/jboss/spring/vfs/VFSResourcePatternResolver.java 2009-05-14 17:06:15 UTC (rev 88881)
@@ -23,10 +23,12 @@
import java.io.IOException;
import java.net.URL;
+import java.util.Set;
import org.jboss.virtual.VFS;
import org.jboss.virtual.VirtualFile;
import org.springframework.core.io.Resource;
+import org.springframework.core.io.ResourceLoader;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
/**
@@ -37,16 +39,11 @@
*/
public class VFSResourcePatternResolver extends PathMatchingResourcePatternResolver
{
- public VFSResourcePatternResolver()
+ public VFSResourcePatternResolver(ResourceLoader resourceLoader)
{
- super(new VFSResourceLoader());
+ super(resourceLoader);
}
- public VFSResourcePatternResolver(ClassLoader classLoader)
- {
- super(new VFSResourceLoader(classLoader));
- }
-
protected Resource[] findPathMatchingResources(String locationPattern) throws IOException
{
if (locationPattern.startsWith(CLASSPATH_ALL_URL_PREFIX))
@@ -58,7 +55,7 @@
if (locationPattern.startsWith(CLASSPATH_URL_PREFIX))
{
locationPattern = locationPattern.substring(CLASSPATH_URL_PREFIX.length());
- String rootDirPath = determineRootDir(locationPattern);
+ String rootDirPath = determineRootDir(locationPattern);
return VFSResourcePatternResolvingHelper.locateResources(locationPattern, rootDirPath, getClassLoader(), getPathMatcher(), true);
}
else
@@ -67,17 +64,4 @@
}
}
- protected Resource convertClassLoaderURL(URL url)
- {
- try
- {
- VirtualFile file = VFS.getRoot(url);
- return new VFSResource(file);
- }
- catch (IOException e)
- {
- throw new RuntimeException(e);
- }
- }
-
}
\ No newline at end of file
Modified: projects/spring-int/trunk/vfs/src/main/java/org/jboss/spring/vfs/VFSResourcePatternResolvingHelper.java
===================================================================
--- projects/spring-int/trunk/vfs/src/main/java/org/jboss/spring/vfs/VFSResourcePatternResolvingHelper.java 2009-05-14 17:02:06 UTC (rev 88880)
+++ projects/spring-int/trunk/vfs/src/main/java/org/jboss/spring/vfs/VFSResourcePatternResolvingHelper.java 2009-05-14 17:06:15 UTC (rev 88881)
@@ -23,9 +23,7 @@
import java.io.IOException;
import java.net.URL;
-import java.util.ArrayList;
-import java.util.Enumeration;
-import java.util.List;
+import java.util.*;
import org.jboss.logging.Logger;
import org.jboss.virtual.VFS;
@@ -80,7 +78,7 @@
* @return vfs resources list
* @throws java.io.IOException for any error
*/
- public static List<Resource> getVFSResources(URL rootURL, String subPattern, PathMatcher pathMatcher) throws IOException
+ public static Set<Resource> getVFSResources(URL rootURL, String subPattern, PathMatcher pathMatcher) throws IOException
{
log.debug("Scanning url: " + rootURL + ", sub-pattern: " + subPattern);
VirtualFile root = VFS.getRoot(rootURL);
@@ -94,7 +92,7 @@
protected static class PatternVirtualFileVisitor implements VirtualFileVisitor
{
private final String subPattern;
- private final List<Resource> resources = new ArrayList<Resource>();
+ private final Set<Resource> resources = new HashSet<Resource>();
private final PathMatcher pathMatcher;
private final String rootPath;
@@ -116,7 +114,7 @@
resources.add(new VFSResource(vf));
}
- public List<Resource> getResources()
+ public Set<Resource> getResources()
{
return resources;
}
More information about the jboss-cvs-commits
mailing list