[jboss-cvs] JBossAS SVN: r96014 - in projects/demos/microcontainer/trunk: classloader/src/main/java/org/jboss/demos/bootstrap/cl and 6 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Wed Nov 4 16:16:14 EST 2009


Author: alesj
Date: 2009-11-04 16:16:13 -0500 (Wed, 04 Nov 2009)
New Revision: 96014

Added:
   projects/demos/microcontainer/trunk/classloader/src/main/java/org/jboss/demos/classloader/deployers/RegexpClassLoaderDescribeDeployer.java
   projects/demos/microcontainer/trunk/classloader/src/main/java/org/jboss/demos/classloader/deployers/RegexpClassLoaderPolicyModule.java
   projects/demos/microcontainer/trunk/classloader/src/main/resources/META-INF/crypt-beans.xml
   projects/demos/microcontainer/trunk/classloader/src/main/resources/META-INF/regexp-beans.xml
   projects/demos/microcontainer/trunk/policy/src/main/java/org/jboss/demos/policy/services/PrintService.java
   projects/demos/microcontainer/trunk/policy/src/main/java/org/jboss/demos/policy/services/RegexpService.java
   projects/demos/microcontainer/trunk/policy/src/main/resources/META-INF/regexp-beans.xml
Removed:
   projects/demos/microcontainer/trunk/classloader/src/main/resources/META-INF/classloader-beans.xml
Modified:
   projects/demos/microcontainer/trunk/bootstrap/src/main/java/org/jboss/demos/bootstrap/Main.java
   projects/demos/microcontainer/trunk/classloader/src/main/java/org/jboss/demos/bootstrap/cl/ClassLoaderMain.java
   projects/demos/microcontainer/trunk/classloader/src/main/java/org/jboss/demos/classloader/crypt/Tools.java
   projects/demos/microcontainer/trunk/classloader/src/main/java/org/jboss/demos/classloader/deployers/DecrypterClassLoaderPolicyModule.java
   projects/demos/microcontainer/trunk/classloader/src/main/java/org/jboss/demos/classloader/policy/RegexpClassLoaderPolicy.java
   projects/demos/microcontainer/trunk/policy/src/main/java/org/jboss/demos/policy/services/EncryptedService.java
Log:
Introduce regexp cl policy.

Modified: projects/demos/microcontainer/trunk/bootstrap/src/main/java/org/jboss/demos/bootstrap/Main.java
===================================================================
--- projects/demos/microcontainer/trunk/bootstrap/src/main/java/org/jboss/demos/bootstrap/Main.java	2009-11-04 20:51:24 UTC (rev 96013)
+++ projects/demos/microcontainer/trunk/bootstrap/src/main/java/org/jboss/demos/bootstrap/Main.java	2009-11-04 21:16:13 UTC (rev 96014)
@@ -54,7 +54,7 @@
       main.configure(args, map);
    }
 
-   protected static void setSystemProperty(String key, String value, boolean override)
+   public static void setSystemProperty(String key, String value, boolean override)
    {
       if (override || System.getProperty(key) == null)
          System.setProperty(key, value);

Modified: projects/demos/microcontainer/trunk/classloader/src/main/java/org/jboss/demos/bootstrap/cl/ClassLoaderMain.java
===================================================================
--- projects/demos/microcontainer/trunk/classloader/src/main/java/org/jboss/demos/bootstrap/cl/ClassLoaderMain.java	2009-11-04 20:51:24 UTC (rev 96013)
+++ projects/demos/microcontainer/trunk/classloader/src/main/java/org/jboss/demos/bootstrap/cl/ClassLoaderMain.java	2009-11-04 21:16:13 UTC (rev 96014)
@@ -33,7 +33,9 @@
 {
    public static void main(String[] args)
    {
-      Map<String, String> map = Collections.singletonMap(Main.CL_DESCRIBE, "${demos.home}/classloader/src/main/resources/META-INF/classloader-beans.xml");
+      Main.setSystemProperty("demos.cl.policy", "regexp", false); // default CL policy 
+
+      Map<String, String> map = Collections.singletonMap(Main.CL_DESCRIBE, "${demos.home}/classloader/src/main/resources/META-INF/${demos.cl.policy}-beans.xml");
       Main.main(args, map);
    }
 }

Modified: projects/demos/microcontainer/trunk/classloader/src/main/java/org/jboss/demos/classloader/crypt/Tools.java
===================================================================
--- projects/demos/microcontainer/trunk/classloader/src/main/java/org/jboss/demos/classloader/crypt/Tools.java	2009-11-04 20:51:24 UTC (rev 96013)
+++ projects/demos/microcontainer/trunk/classloader/src/main/java/org/jboss/demos/classloader/crypt/Tools.java	2009-11-04 21:16:13 UTC (rev 96014)
@@ -25,8 +25,8 @@
 import java.security.Key;
 import java.util.Arrays;
 
+import org.jboss.virtual.VFS;
 import org.jboss.virtual.VirtualFile;
-import org.jboss.virtual.VFS;
 
 /**
  * @author <a href="mailto:ales.justin at jboss.org">Ales Justin</a>

Modified: projects/demos/microcontainer/trunk/classloader/src/main/java/org/jboss/demos/classloader/deployers/DecrypterClassLoaderPolicyModule.java
===================================================================
--- projects/demos/microcontainer/trunk/classloader/src/main/java/org/jboss/demos/classloader/deployers/DecrypterClassLoaderPolicyModule.java	2009-11-04 20:51:24 UTC (rev 96013)
+++ projects/demos/microcontainer/trunk/classloader/src/main/java/org/jboss/demos/classloader/deployers/DecrypterClassLoaderPolicyModule.java	2009-11-04 21:16:13 UTC (rev 96014)
@@ -34,7 +34,6 @@
 {
    private Decrypter decrypter;
 
-   @SuppressWarnings("unchecked")
    public DecrypterClassLoaderPolicyModule(DeploymentUnit unit, Decrypter decrypter)
    {
       super(unit);

Copied: projects/demos/microcontainer/trunk/classloader/src/main/java/org/jboss/demos/classloader/deployers/RegexpClassLoaderDescribeDeployer.java (from rev 95965, projects/demos/microcontainer/trunk/classloader/src/main/java/org/jboss/demos/classloader/deployers/DecrypterClassLoaderDescribeDeployer.java)
===================================================================
--- projects/demos/microcontainer/trunk/classloader/src/main/java/org/jboss/demos/classloader/deployers/RegexpClassLoaderDescribeDeployer.java	                        (rev 0)
+++ projects/demos/microcontainer/trunk/classloader/src/main/java/org/jboss/demos/classloader/deployers/RegexpClassLoaderDescribeDeployer.java	2009-11-04 21:16:13 UTC (rev 96014)
@@ -0,0 +1,39 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2008, 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.demos.classloader.deployers;
+
+import org.jboss.classloading.spi.dependency.policy.ClassLoaderPolicyModule;
+import org.jboss.classloading.spi.metadata.ClassLoadingMetaData;
+import org.jboss.deployers.plugins.classloading.AbstractClassLoaderDescribeDeployer;
+import org.jboss.deployers.spi.DeploymentException;
+import org.jboss.deployers.structure.spi.DeploymentUnit;
+
+/**
+ * @author <a href="mailto:ales.justin at jboss.org">Ales Justin</a>
+ */
+public class RegexpClassLoaderDescribeDeployer extends AbstractClassLoaderDescribeDeployer
+{
+   protected ClassLoaderPolicyModule createModule(DeploymentUnit unit, ClassLoadingMetaData metaData) throws DeploymentException
+   {
+      return new RegexpClassLoaderPolicyModule(unit);
+   }
+}
\ No newline at end of file

Copied: projects/demos/microcontainer/trunk/classloader/src/main/java/org/jboss/demos/classloader/deployers/RegexpClassLoaderPolicyModule.java (from rev 96002, projects/demos/microcontainer/trunk/classloader/src/main/java/org/jboss/demos/classloader/deployers/DecrypterClassLoaderPolicyModule.java)
===================================================================
--- projects/demos/microcontainer/trunk/classloader/src/main/java/org/jboss/demos/classloader/deployers/RegexpClassLoaderPolicyModule.java	                        (rev 0)
+++ projects/demos/microcontainer/trunk/classloader/src/main/java/org/jboss/demos/classloader/deployers/RegexpClassLoaderPolicyModule.java	2009-11-04 21:16:13 UTC (rev 96014)
@@ -0,0 +1,55 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2008, 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.demos.classloader.deployers;
+
+import java.util.List;
+
+import org.jboss.demos.classloader.policy.RegexpClassLoaderPolicy;
+import org.jboss.deployers.plugins.classloading.AbstractDeploymentClassLoaderPolicyModule;
+import org.jboss.deployers.structure.spi.DeploymentUnit;
+import org.jboss.deployers.vfs.plugins.classloader.VFSClassLoaderClassPathDeployer;
+import org.jboss.virtual.VirtualFile;
+
+/**
+ * @author <a href="mailto:ales.justin at jboss.org">Ales Justin</a>
+ */
+public class RegexpClassLoaderPolicyModule extends AbstractDeploymentClassLoaderPolicyModule
+{
+   private VirtualFile[] roots;
+
+   @SuppressWarnings("unchecked")
+   public RegexpClassLoaderPolicyModule(DeploymentUnit unit)
+   {
+      super(unit);
+      List<VirtualFile> vfsClassPath = unit.getAttachment(VFSClassLoaderClassPathDeployer.VFS_CLASS_PATH, List.class);
+      if (vfsClassPath == null)
+         roots = new VirtualFile[0];
+      else
+         roots = vfsClassPath.toArray(new VirtualFile[vfsClassPath.size()]);
+   }
+
+   @Override
+   protected RegexpClassLoaderPolicy determinePolicy()
+   {
+      return new RegexpClassLoaderPolicy(roots);
+   }
+}
\ No newline at end of file

Modified: projects/demos/microcontainer/trunk/classloader/src/main/java/org/jboss/demos/classloader/policy/RegexpClassLoaderPolicy.java
===================================================================
--- projects/demos/microcontainer/trunk/classloader/src/main/java/org/jboss/demos/classloader/policy/RegexpClassLoaderPolicy.java	2009-11-04 20:51:24 UTC (rev 96013)
+++ projects/demos/microcontainer/trunk/classloader/src/main/java/org/jboss/demos/classloader/policy/RegexpClassLoaderPolicy.java	2009-11-04 21:16:13 UTC (rev 96014)
@@ -23,35 +23,135 @@
 
 import java.io.IOException;
 import java.net.URL;
+import java.util.HashSet;
+import java.util.List;
 import java.util.Set;
+import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
 import org.jboss.classloader.spi.ClassLoaderPolicy;
+import org.jboss.classloading.plugins.vfs.PackageVisitor;
+import org.jboss.classloading.spi.metadata.ExportAll;
+import org.jboss.deployers.vfs.spi.structure.helpers.AbstractStructureDeployer;
 import org.jboss.virtual.VirtualFile;
+import org.jboss.virtual.VirtualFileVisitor;
+import org.jboss.virtual.VisitorAttributes;
 
 /**
+ * The regexp matching is completely naive,
+ * we could handle the regexp wrt path a lot better.
+ *
  * @author <a href="mailto:ales.justin at jboss.org">Ales Justin</a>
  */
 public class RegexpClassLoaderPolicy extends ClassLoaderPolicy
 {
    private VirtualFile[] roots;
+   private String[] packageNames;
 
    public RegexpClassLoaderPolicy(VirtualFile[] roots)
    {
       this.roots = roots;
    }
 
+   @Override
+   public String[] getPackageNames()
+   {
+      if (packageNames == null)
+      {
+         Set<String> exportedPackages = PackageVisitor.determineAllPackages(roots, null, ExportAll.NON_EMPTY, null, null, null);
+         packageNames = exportedPackages.toArray(new String[exportedPackages.size()]);
+      }
+      return packageNames;
+   }
+
+   protected Pattern createPattern(String regexp)
+   {
+      return Pattern.compile(regexp);
+   }
+
    public URL getResource(String path)
    {
-      Pattern pattern = Pattern.compile(path);
+      Pattern pattern = createPattern(path);
       for (VirtualFile root : roots)
       {
-            
+         URL url = findURL(root, root, pattern);
+         if (url != null)
+            return url;
       }
       return null;
    }
 
+   private URL findURL(VirtualFile root, VirtualFile file, Pattern pattern)
+   {
+      try
+      {
+         String path = AbstractStructureDeployer.getRelativePath(root, file);
+         Matcher matcher = pattern.matcher(path);
+         if (matcher.matches())
+            return file.toURL();
+
+         List<VirtualFile> children = file.getChildren();
+         for (VirtualFile child : children)
+         {
+            URL url = findURL(root, child, pattern);
+            if (url != null)
+               return url;
+         }
+
+         return null;
+      }
+      catch (Exception e)
+      {
+         throw new RuntimeException(e);
+      }
+   }
+
    public void getResources(String name, Set<URL> urls) throws IOException
    {
+      Pattern pattern = createPattern(name);
+      for (VirtualFile root : roots)
+      {
+         RegexpVisitor visitor = new RegexpVisitor(root, pattern);
+         root.visit(visitor);
+         urls.addAll(visitor.getUrls());
+      }
    }
+
+   private static class RegexpVisitor implements VirtualFileVisitor
+   {
+      private VirtualFile root;
+      private Pattern pattern;
+      private Set<URL> urls = new HashSet<URL>();
+
+      private RegexpVisitor(VirtualFile root, Pattern pattern)
+      {
+         this.root = root;
+         this.pattern = pattern;
+      }
+
+      public VisitorAttributes getAttributes()
+      {
+         return VisitorAttributes.RECURSE_LEAVES_ONLY;
+      }
+
+      public void visit(VirtualFile file)
+      {
+         try
+         {
+            String path = AbstractStructureDeployer.getRelativePath(root, file);
+            Matcher matcher = pattern.matcher(path);
+            if (matcher.matches())
+               urls.add(file.toURL());
+         }
+         catch (Exception e)
+         {
+            throw new RuntimeException(e);
+         }
+      }
+
+      public Set<URL> getUrls()
+      {
+         return urls;
+      }
+   }
 }
\ No newline at end of file

Deleted: projects/demos/microcontainer/trunk/classloader/src/main/resources/META-INF/classloader-beans.xml
===================================================================
--- projects/demos/microcontainer/trunk/classloader/src/main/resources/META-INF/classloader-beans.xml	2009-11-04 20:51:24 UTC (rev 96013)
+++ projects/demos/microcontainer/trunk/classloader/src/main/resources/META-INF/classloader-beans.xml	2009-11-04 21:16:13 UTC (rev 96014)
@@ -1,32 +0,0 @@
-<deployment xmlns="urn:jboss:bean-deployer:2.0">
-
-  <bean name="KeyProvider" class="org.jboss.demos.classloader.crypt.KeyProvider">
-    <constructor factoryClass="org.jboss.demos.classloader.crypt.KeyProviderFactory" factoryMethod="createKeyProvider">
-      <parameter>
-        <bean class="java.io.File">
-          <constructor>
-            <parameter>${demos.home}/encrypted/keystore.txt</parameter>
-          </constructor>
-        </bean>
-      </parameter>
-    </constructor>    
-  </bean>
-
-  <bean name="Decrypter" class="org.jboss.demos.classloader.crypt.Decrypter">
-    <constructor factoryClass="org.jboss.demos.classloader.crypt.CipherCrypter" factoryMethod="getDecrypter">
-      <parameter>
-        <inject bean="KeyProvider" property="decryptionKey"/>
-      </parameter>
-    </constructor>
-  </bean>
-
-  <bean name="ClassLoaderDescribeDeployer" class="org.jboss.demos.classloader.deployers.DecrypterClassLoaderDescribeDeployer">
-    <constructor>
-      <parameter>
-        <inject bean="Decrypter"/>
-      </parameter>
-    </constructor>
-    <property name="classLoading"><inject bean="ClassLoading"/></property>
-  </bean>
-
-</deployment>

Copied: projects/demos/microcontainer/trunk/classloader/src/main/resources/META-INF/crypt-beans.xml (from rev 96007, projects/demos/microcontainer/trunk/classloader/src/main/resources/META-INF/classloader-beans.xml)
===================================================================
--- projects/demos/microcontainer/trunk/classloader/src/main/resources/META-INF/crypt-beans.xml	                        (rev 0)
+++ projects/demos/microcontainer/trunk/classloader/src/main/resources/META-INF/crypt-beans.xml	2009-11-04 21:16:13 UTC (rev 96014)
@@ -0,0 +1,32 @@
+<deployment xmlns="urn:jboss:bean-deployer:2.0">
+
+  <bean name="KeyProvider" class="org.jboss.demos.classloader.crypt.KeyProvider">
+    <constructor factoryClass="org.jboss.demos.classloader.crypt.KeyProviderFactory" factoryMethod="createKeyProvider">
+      <parameter>
+        <bean class="java.io.File">
+          <constructor>
+            <parameter>${demos.home}/policy/keystore.txt</parameter>
+          </constructor>
+        </bean>
+      </parameter>
+    </constructor>    
+  </bean>
+
+  <bean name="Decrypter" class="org.jboss.demos.classloader.crypt.Decrypter">
+    <constructor factoryClass="org.jboss.demos.classloader.crypt.CipherCrypter" factoryMethod="getDecrypter">
+      <parameter>
+        <inject bean="KeyProvider" property="decryptionKey"/>
+      </parameter>
+    </constructor>
+  </bean>
+
+  <bean name="ClassLoaderDescribeDeployer" class="org.jboss.demos.classloader.deployers.DecrypterClassLoaderDescribeDeployer">
+    <constructor>
+      <parameter>
+        <inject bean="Decrypter"/>
+      </parameter>
+    </constructor>
+    <property name="classLoading"><inject bean="ClassLoading"/></property>
+  </bean>
+
+</deployment>

Added: projects/demos/microcontainer/trunk/classloader/src/main/resources/META-INF/regexp-beans.xml
===================================================================
--- projects/demos/microcontainer/trunk/classloader/src/main/resources/META-INF/regexp-beans.xml	                        (rev 0)
+++ projects/demos/microcontainer/trunk/classloader/src/main/resources/META-INF/regexp-beans.xml	2009-11-04 21:16:13 UTC (rev 96014)
@@ -0,0 +1,7 @@
+<deployment xmlns="urn:jboss:bean-deployer:2.0">
+
+  <bean name="ClassLoaderDescribeDeployer" class="org.jboss.demos.classloader.deployers.RegexpClassLoaderDescribeDeployer">
+    <property name="classLoading"><inject bean="ClassLoading"/></property>
+  </bean>
+
+</deployment>

Modified: projects/demos/microcontainer/trunk/policy/src/main/java/org/jboss/demos/policy/services/EncryptedService.java
===================================================================
--- projects/demos/microcontainer/trunk/policy/src/main/java/org/jboss/demos/policy/services/EncryptedService.java	2009-11-04 20:51:24 UTC (rev 96013)
+++ projects/demos/microcontainer/trunk/policy/src/main/java/org/jboss/demos/policy/services/EncryptedService.java	2009-11-04 21:16:13 UTC (rev 96014)
@@ -22,50 +22,28 @@
 package org.jboss.demos.policy.services;
 
 import java.io.InputStream;
-import java.io.BufferedReader;
-import java.io.InputStreamReader;
-import java.io.IOException;
 import java.net.URL;
 
 /**
  * @author <a href="mailto:ales.justin at jboss.org">Ales Justin</a>
  */
-public class EncryptedService
+public class EncryptedService extends PrintService
 {
    public void start() throws Exception
    {
       ClassLoader cl = getClass().getClassLoader();
 
-      URL url = cl.getResource("/config/settings.txt");
+      URL url = cl.getResource("config/settings.txt");
       if (url == null)
          throw new IllegalArgumentException("No such settings.txt.");
 
-      System.out.println("Printing settings:\n");
       InputStream is = url.openStream();
-      print(is);
+      print(is, "Printing settings:\n");
 
-      is = cl.getResourceAsStream("/config/properties.xml");
+      is = cl.getResourceAsStream("config/properties.xml");
       if (is == null)
          throw new IllegalArgumentException("No such properties.xml.");
 
-      System.out.println("\nPrinting properties:\n");
-      print(is);
+      print(is, "\nPrinting properties:\n");
    }
-
-   protected void print(InputStream is) throws IOException
-   {
-      try
-      {
-         BufferedReader buffer = new BufferedReader(new InputStreamReader(is));
-         String line;
-         while((line = buffer.readLine()) != null)
-         {
-            System.out.println(line);
-         }
-      }
-      finally
-      {
-         is.close();
-      }
-   }
 }

Added: projects/demos/microcontainer/trunk/policy/src/main/java/org/jboss/demos/policy/services/PrintService.java
===================================================================
--- projects/demos/microcontainer/trunk/policy/src/main/java/org/jboss/demos/policy/services/PrintService.java	                        (rev 0)
+++ projects/demos/microcontainer/trunk/policy/src/main/java/org/jboss/demos/policy/services/PrintService.java	2009-11-04 21:16:13 UTC (rev 96014)
@@ -0,0 +1,60 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2008, 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.demos.policy.services;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+
+/**
+ * @author <a href="mailto:ales.justin at jboss.org">Ales Justin</a>
+ */
+abstract class PrintService
+{
+   protected boolean ignoreInputStream(InputStream stream)
+   {
+      return false;
+   }
+
+   protected void print(InputStream is, String intro) throws IOException
+   {
+      if (ignoreInputStream(is))
+         return;
+
+      System.out.println(intro);
+
+      try
+      {
+         BufferedReader buffer = new BufferedReader(new InputStreamReader(is));
+         String line;
+         while((line = buffer.readLine()) != null)
+         {
+            System.out.println(line);
+         }
+      }
+      finally
+      {
+         is.close();
+      }
+   }
+}
\ No newline at end of file

Copied: projects/demos/microcontainer/trunk/policy/src/main/java/org/jboss/demos/policy/services/RegexpService.java (from rev 96008, projects/demos/microcontainer/trunk/policy/src/main/java/org/jboss/demos/policy/services/EncryptedService.java)
===================================================================
--- projects/demos/microcontainer/trunk/policy/src/main/java/org/jboss/demos/policy/services/RegexpService.java	                        (rev 0)
+++ projects/demos/microcontainer/trunk/policy/src/main/java/org/jboss/demos/policy/services/RegexpService.java	2009-11-04 21:16:13 UTC (rev 96014)
@@ -0,0 +1,53 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2008, 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.demos.policy.services;
+
+import java.io.InputStream;
+import java.net.URL;
+import java.util.Enumeration;
+
+import javax.crypto.CipherInputStream;
+
+/**
+ * @author <a href="mailto:ales.justin at jboss.org">Ales Justin</a>
+ */
+public class RegexpService extends PrintService
+{
+   @Override
+   protected boolean ignoreInputStream(InputStream stream)
+   {
+      return (stream instanceof CipherInputStream);
+   }
+
+   public void start() throws Exception
+   {
+      System.out.println();
+
+      ClassLoader cl = getClass().getClassLoader();
+      Enumeration<URL> urls = cl.getResources("config/[^.]+.[^.]{1,4}");
+      while (urls.hasMoreElements())
+      {
+         URL url = urls.nextElement();
+         print(url.openStream(), url.toExternalForm());
+      }
+   }
+}
\ No newline at end of file

Copied: projects/demos/microcontainer/trunk/policy/src/main/resources/META-INF/regexp-beans.xml (from rev 96008, projects/demos/microcontainer/trunk/policy/src/main/resources/META-INF/encrypted-beans.xml)
===================================================================
--- projects/demos/microcontainer/trunk/policy/src/main/resources/META-INF/regexp-beans.xml	                        (rev 0)
+++ projects/demos/microcontainer/trunk/policy/src/main/resources/META-INF/regexp-beans.xml	2009-11-04 21:16:13 UTC (rev 96014)
@@ -0,0 +1,5 @@
+<deployment xmlns="urn:jboss:bean-deployer:2.0">
+
+  <bean name="RegexpService" class="org.jboss.demos.policy.services.RegexpService"/>
+
+</deployment>




More information about the jboss-cvs-commits mailing list