Hi David,

I've modified the patch in order not to introduce any new dependencies. I 
small nested class "ServletContextResource" solves the job.

Regards,
Stefan


Am Montag, 2. Januar 2006 20:01 schrieb David H. DeWolf:
> I would prefer to fix this bug another way as this one change requires
> an entirely new dependency and we're trying to keep pluto "light  weight".
>
> Other Thoughts?
>
> David
>
> Stefan Armbruster wrote:
> > Hi,
> >
> > recently the Spring team released Spring 2.0M1. I tried to use this with
> > pluto-portal-driver. When deploying the portal's war file, an
> > IllegalStateException occured. This is caused by
> > InputStreamResource.getInputStream being called twice. The attached patch
> > uses ServletContextResource instead and solves this problem. This patch
> > also contains the necessary version changes in pom.xml.
> >
> > Regards,
> > Stefan
> >
> >
> > ------------------------------------------------------------------------
> >
> > Index:
> > pluto-portal-driver/src/main/java/org/apache/pluto/driver/config/DriverCo
> >nfigurationFactory.java
> > =================================================================== ---
> > pluto-portal-driver/src/main/java/org/apache/pluto/driver/config/DriverCo
> >nfigurationFactory.java      (Revision 359203) +++
> > pluto-portal-driver/src/main/java/org/apache/pluto/driver/config/DriverCo
> >nfigurationFactory.java      (Arbeitskopie) @@ -20,6 +20,7 @@
> >  import org.springframework.beans.factory.xml.XmlBeanFactory;
> >  import org.springframework.beans.factory.NoSuchBeanDefinitionException;
> >  import org.springframework.core.io.InputStreamResource;
> > +import org.springframework.web.context.support.ServletContextResource;
> >
> >  import javax.servlet.ServletContext;
> >  import java.io.InputStream;
> > @@ -106,9 +107,7 @@
> >
> >      private XmlBeanFactory getBeanFactory(ServletContext context) {
> >          if(beanFactory == null) {
> > -            InputStream in =
> > -                    context.getResourceAsStream(DRIVER_CONFIG);
> > -            beanFactory = new XmlBeanFactory(new InputStreamResource(in,
> > "Driver Configuration")); +            beanFactory = new
> > XmlBeanFactory(new ServletContextResource(context, DRIVER_CONFIG)); }
> >          return beanFactory;
> >      }
> > Index: pluto-portal-driver/pom.xml
> > ===================================================================
> > --- pluto-portal-driver/pom.xml     (Revision 359203)
> > +++ pluto-portal-driver/pom.xml     (Arbeitskopie)
> > @@ -88,15 +88,21 @@
> >      <dependency>
> >        <groupId>org.springframework</groupId>
> >        <artifactId>spring-core</artifactId>
> > -      <version>1.2.5</version>
> > +      <version>2.0-m1</version>
> >        <scope>compile</scope>
> >      </dependency>
> >      <dependency>
> >          <groupId>org.springframework</groupId>
> >          <artifactId>spring-beans</artifactId>
> > -        <version>1.2.5</version>
> > +        <version>2.0-m1</version>
> >          <scope>compile</scope>
> >      </dependency>
> > +    <dependency>
> > +        <groupId>org.springframework</groupId>
> > +        <artifactId>spring-web</artifactId>
> > +        <version>2.0-m1</version>
> > +        <scope>compile</scope>
> > +    </dependency>
> >    </dependencies>
> >    <build>
> >      <resources>
Index: src/main/java/org/apache/pluto/driver/config/DriverConfigurationFactory.java
===================================================================
--- src/main/java/org/apache/pluto/driver/config/DriverConfigurationFactory.java	(Revision 360482)
+++ src/main/java/org/apache/pluto/driver/config/DriverConfigurationFactory.java	(Arbeitskopie)
@@ -15,15 +15,17 @@
  */
 package org.apache.pluto.driver.config;
 
+import java.io.IOException;
+import java.io.InputStream;
+
+import javax.servlet.ServletContext;
+
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.springframework.beans.factory.NoSuchBeanDefinitionException;
 import org.springframework.beans.factory.xml.XmlBeanFactory;
-import org.springframework.beans.factory.NoSuchBeanDefinitionException;
-import org.springframework.core.io.InputStreamResource;
+import org.springframework.core.io.AbstractResource;
 
-import javax.servlet.ServletContext;
-import java.io.InputStream;
-
 /**
  * @author <a href="[EMAIL PROTECTED]">David H. DeWolf</a>
  * @version 1.0
@@ -106,12 +108,33 @@
 
     private XmlBeanFactory getBeanFactory(ServletContext context) {
         if(beanFactory == null) {
-            InputStream in =
-                    context.getResourceAsStream(DRIVER_CONFIG);
-            beanFactory = new XmlBeanFactory(new InputStreamResource(in, "Driver Configuration"));
+            beanFactory = new XmlBeanFactory(new ServletContextResource(context, DRIVER_CONFIG));
         }
         return beanFactory;
     }
+    
+    public static class ServletContextResource extends AbstractResource {
+        private ServletContext sc;
+        private String fileName;
+        
+        public ServletContextResource(ServletContext sc, String fileName) {
+            this.sc = sc;
+            this.fileName = fileName;
+        }
 
+        public String getDescription() {
+            return null;
+        }
+
+        public String getFilename() {
+            return fileName;
+        }
+
+        public InputStream getInputStream() throws IOException {
+            return sc.getResourceAsStream(fileName);
+        }
+        
+    }
+
 }
 
Index: pom.xml
===================================================================
--- pom.xml	(Revision 360482)
+++ pom.xml	(Arbeitskopie)
@@ -88,13 +88,13 @@
     <dependency>
       <groupId>org.springframework</groupId>
       <artifactId>spring-core</artifactId>
-      <version>1.2.5</version>
+      <version>2.0-m1</version>
       <scope>compile</scope>
     </dependency>
     <dependency>
         <groupId>org.springframework</groupId>
         <artifactId>spring-beans</artifactId>
-        <version>1.2.5</version>
+        <version>2.0-m1</version>
         <scope>compile</scope>
     </dependency>
   </dependencies>

Reply via email to