[Jboss-cvs] JBossAS SVN: r56649 - in projects/microcontainer/trunk/container/src/main/org/jboss/virtual: . plugins/context plugins/context/file

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Fri Sep 8 10:23:52 EDT 2006


Author: scott.stark at jboss.org
Date: 2006-09-08 10:23:50 -0400 (Fri, 08 Sep 2006)
New Revision: 56649

Modified:
   projects/microcontainer/trunk/container/src/main/org/jboss/virtual/VFSUtils.java
   projects/microcontainer/trunk/container/src/main/org/jboss/virtual/VirtualFile.java
   projects/microcontainer/trunk/container/src/main/org/jboss/virtual/plugins/context/AbstractURLHandler.java
   projects/microcontainer/trunk/container/src/main/org/jboss/virtual/plugins/context/AbstractVirtualFileHandler.java
   projects/microcontainer/trunk/container/src/main/org/jboss/virtual/plugins/context/file/FileHandler.java
Log:
Commit in progress serialization work

Modified: projects/microcontainer/trunk/container/src/main/org/jboss/virtual/VFSUtils.java
===================================================================
--- projects/microcontainer/trunk/container/src/main/org/jboss/virtual/VFSUtils.java	2006-09-08 14:22:52 UTC (rev 56648)
+++ projects/microcontainer/trunk/container/src/main/org/jboss/virtual/VFSUtils.java	2006-09-08 14:23:50 UTC (rev 56649)
@@ -23,8 +23,11 @@
 
 import java.io.IOException;
 import java.io.InputStream;
+import java.util.ArrayList;
 import java.util.Collection;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.StringTokenizer;
 import java.util.jar.Attributes;
 import java.util.jar.JarFile;
@@ -196,4 +199,26 @@
          return name.substring(0, length-1);
       return name;
    }
+
+   /**
+    * Take a URL.getQuery string and parse it into name=value pairs
+    * 
+    * @param query Possibly empty/null url query string
+    * @return String[] for the name/value pairs in the query. May be empty but never null.
+    */
+   public static Map<String, String> parseURLQuery(String query)
+   {
+	   HashMap<String, String> pairsMap = new HashMap<String, String>();
+      if( query != null )
+      {
+   	   StringTokenizer tokenizer = new StringTokenizer(query, "=&");
+   	   while( tokenizer.hasMoreTokens() )
+   	   {
+   		   String name = tokenizer.nextToken();
+   		   String value = tokenizer.nextToken();
+   		   pairsMap.put(name, value);
+   	   }
+      }
+	   return pairsMap;
+   }
 }

Modified: projects/microcontainer/trunk/container/src/main/org/jboss/virtual/VirtualFile.java
===================================================================
--- projects/microcontainer/trunk/container/src/main/org/jboss/virtual/VirtualFile.java	2006-09-08 14:22:52 UTC (rev 56648)
+++ projects/microcontainer/trunk/container/src/main/org/jboss/virtual/VirtualFile.java	2006-09-08 14:23:50 UTC (rev 56649)
@@ -23,6 +23,7 @@
 
 import java.io.IOException;
 import java.io.InputStream;
+import java.io.Serializable;
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.util.Collections;
@@ -44,7 +45,10 @@
  * @version $Revision: 44334 $
  */
 public class VirtualFile
+   implements Serializable
 {
+   private static final long serialVersionUID = 1L;
+
    /** The virtual file handler */
    private final VirtualFileHandler handler;
 
@@ -52,7 +56,7 @@
    private AtomicBoolean closed = new AtomicBoolean(false); 
    
    /** The open streams */
-   private final Set<InputStream> streams = Collections.synchronizedSet(new WeakSet());
+   private transient final Set<InputStream> streams = Collections.synchronizedSet(new WeakSet());
    
    /**
     * Create a new VirtualFile.

Modified: projects/microcontainer/trunk/container/src/main/org/jboss/virtual/plugins/context/AbstractURLHandler.java
===================================================================
--- projects/microcontainer/trunk/container/src/main/org/jboss/virtual/plugins/context/AbstractURLHandler.java	2006-09-08 14:22:52 UTC (rev 56648)
+++ projects/microcontainer/trunk/container/src/main/org/jboss/virtual/plugins/context/AbstractURLHandler.java	2006-09-08 14:23:50 UTC (rev 56649)
@@ -23,6 +23,7 @@
 
 import java.io.IOException;
 import java.io.InputStream;
+import java.io.Serializable;
 import java.net.URL;
 import java.net.URLConnection;
 
@@ -36,7 +37,10 @@
  * @version $Revision: 1.1 $
  */
 public abstract class AbstractURLHandler extends AbstractVirtualFileHandler
+   implements Serializable
 {
+   private static final long serialVersionUID = 1L;
+
    /** The url */
    private final URL url;
    

Modified: projects/microcontainer/trunk/container/src/main/org/jboss/virtual/plugins/context/AbstractVirtualFileHandler.java
===================================================================
--- projects/microcontainer/trunk/container/src/main/org/jboss/virtual/plugins/context/AbstractVirtualFileHandler.java	2006-09-08 14:22:52 UTC (rev 56648)
+++ projects/microcontainer/trunk/container/src/main/org/jboss/virtual/plugins/context/AbstractVirtualFileHandler.java	2006-09-08 14:23:50 UTC (rev 56649)
@@ -22,7 +22,13 @@
 package org.jboss.virtual.plugins.context;
 
 import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.io.ObjectStreamField;
+import java.io.ObjectInputStream.GetField;
+import java.io.ObjectOutputStream.PutField;
 import java.net.MalformedURLException;
+import java.net.URL;
 import java.util.List;
 import java.util.concurrent.atomic.AtomicInteger;
 
@@ -31,21 +37,31 @@
 import org.jboss.virtual.VirtualFile;
 import org.jboss.virtual.plugins.vfs.helpers.PathTokenizer;
 import org.jboss.virtual.spi.VFSContext;
+import org.jboss.virtual.spi.VFSContextFactory;
+import org.jboss.virtual.spi.VFSContextFactoryLocator;
 import org.jboss.virtual.spi.VirtualFileHandler;
 
 /**
  * AbstractVirtualFileHandler.
  * 
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @author Scott.Stark at jboss.org
  * @version $Revision: 1.1 $
  */
 public abstract class AbstractVirtualFileHandler implements VirtualFileHandler
 {
    /** The log */
    protected final Logger log = Logger.getLogger(getClass());
-   
+   private static final long serialVersionUID = 1L;
+   /** The class serial fields */
+   private static final ObjectStreamField[] serialPersistentFields = {
+      new ObjectStreamField("rootURL", URL.class),
+      new ObjectStreamField("url", URL.class),
+      new ObjectStreamField("name", String.class)
+   };
+
    /** The VFS context */
-   private final VFSContext context;
+   private transient VFSContext context;
    
    /** The parent */
    private final VirtualFileHandler parent;
@@ -54,7 +70,7 @@
    private final String name;
    
    /** The vfsPath */
-   private String vfsPath;
+   private transient String vfsPath;
 
    /** The reference count */
    private AtomicInteger references = new AtomicInteger(0);
@@ -306,4 +322,29 @@
          return "<unknown>";
       }
    }
+
+   private void writeObject(ObjectOutputStream out)
+      throws IOException
+   {
+      /*
+      // Write out the serialPersistentFields
+      PutField fields = out.putFields();
+      fields.put("rootURL", this.getVFSContext().getRootURL());
+      fields.put("vfsPath", this.getPathName());
+      out.writeFields();
+      */
+      out.defaultWriteObject();
+   }
+   private void readObject(ObjectInputStream in)
+      throws IOException, ClassNotFoundException
+   {
+      /*
+      // Read in the serialPersistentFields
+      GetField fields = in.readFields();
+      URL rootURL = (URL) fields.get("rootURL", null);
+      this.vfsPath = (String) fields.get("vfsPath", null);
+         VFSContextFactory factory = VFSContextFactoryLocator.getFactory(rootURL);
+         this.context = factory.getVFS(rootURL);
+      */
+   }
 }

Modified: projects/microcontainer/trunk/container/src/main/org/jboss/virtual/plugins/context/file/FileHandler.java
===================================================================
--- projects/microcontainer/trunk/container/src/main/org/jboss/virtual/plugins/context/file/FileHandler.java	2006-09-08 14:22:52 UTC (rev 56648)
+++ projects/microcontainer/trunk/container/src/main/org/jboss/virtual/plugins/context/file/FileHandler.java	2006-09-08 14:23:50 UTC (rev 56649)
@@ -24,6 +24,7 @@
 import java.io.File;
 import java.io.FileNotFoundException;
 import java.io.IOException;
+import java.io.ObjectInputStream;
 import java.net.URL;
 import java.util.ArrayList;
 import java.util.Collections;
@@ -38,12 +39,15 @@
  * FileHandler.
  * 
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @author Scott.Stark at jboss.org
  * @version $Revision: 1.1 $
  */
-public class FileHandler extends AbstractURLHandler implements StructuredVirtualFileHandler
+public class FileHandler extends AbstractURLHandler
+   implements StructuredVirtualFileHandler
 {
+   private static final long serialVersionUID = 1;
    /** The file */
-   private final File file;
+   private transient File file;
    
    /**
     * Create a new FileHandler.
@@ -157,4 +161,13 @@
       File child = new File(parentFile, name);
       return context.createVirtualFileHandler(this, child);
    }
+
+   private void readObject(ObjectInputStream in)
+      throws IOException, ClassNotFoundException
+   {
+      in.defaultReadObject();
+      // Initialize the transient values
+      this.file = new File(super.getURL().getPath());
+   }
+
 }




More information about the jboss-cvs-commits mailing list