Author: luca
Date: Wed Jun 17 13:14:11 2015
New Revision: 1686007

URL: http://svn.apache.org/r1686007
Log:
Enabling recursive parsing of policy directories for File Manager (OODT-854)

Modified:
    
oodt/trunk/filemgr/src/main/java/org/apache/oodt/cas/filemgr/repository/XMLRepositoryManagerFactory.java
    
oodt/trunk/filemgr/src/main/java/org/apache/oodt/cas/filemgr/validation/XMLValidationLayerFactory.java
    oodt/trunk/filemgr/src/main/resources/filemgr.properties

Modified: 
oodt/trunk/filemgr/src/main/java/org/apache/oodt/cas/filemgr/repository/XMLRepositoryManagerFactory.java
URL: 
http://svn.apache.org/viewvc/oodt/trunk/filemgr/src/main/java/org/apache/oodt/cas/filemgr/repository/XMLRepositoryManagerFactory.java?rev=1686007&r1=1686006&r2=1686007&view=diff
==============================================================================
--- 
oodt/trunk/filemgr/src/main/java/org/apache/oodt/cas/filemgr/repository/XMLRepositoryManagerFactory.java
 (original)
+++ 
oodt/trunk/filemgr/src/main/java/org/apache/oodt/cas/filemgr/repository/XMLRepositoryManagerFactory.java
 Wed Jun 17 13:14:11 2015
@@ -18,16 +18,22 @@
 package org.apache.oodt.cas.filemgr.repository;
 
 //JDK imports
-import org.apache.oodt.cas.metadata.util.PathUtils;
-
+import java.io.File;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
+import org.apache.oodt.cas.metadata.util.PathUtils;
+import org.apache.oodt.commons.io.DirectorySelector;
+
 /**
  * @author mattmann
  * @author bfoster
+ * @author luca
  * @version $Revision$
  * 
  * <p>
@@ -50,14 +56,51 @@ public class XMLRepositoryManagerFactory
      * </p>.
      */
     public XMLRepositoryManagerFactory() {
+       
+       
         String productTypeDirUris = System
                 .getProperty("org.apache.oodt.cas.filemgr.repositorymgr.dirs");
+        
+        // only returns true if 
org.apache.oodt.cas.filemgr.repositorymgr.dirs.recursive=true
+        boolean recursive = Boolean.parseBoolean( 
+                       
System.getProperty("org.apache.oodt.cas.filemgr.repositorymgr.dirs.recursive") 
);
 
         if (productTypeDirUris != null) {
             productTypeDirUris = PathUtils
                     .replaceEnvVariables(productTypeDirUris);
             String[] dirUris = productTypeDirUris.split(",");
-            productTypeDirList = Arrays.asList(dirUris);
+
+            // recursive directory listing
+            if (recursive) {
+               
+               // empty list
+               productTypeDirList = new ArrayList<String>();
+               
+               // loop over specified root directories,
+               // add directories and sub-directories that contain 
"product-types.xml"
+               for (String rootDir : dirUris) {
+                       try {
+                               
+                               DirectorySelector dirsel = new 
DirectorySelector(
+                                               Arrays.asList( 
+                                                               new String[] 
{"product-types.xml"} ));
+                               productTypeDirList.addAll( 
dirsel.traverseDir(new File(new URI(rootDir))) );
+                               
+                       } catch (URISyntaxException e) {
+                               LOG.log(Level.WARNING, "URISyntaxException when 
traversing directory: "+rootDir);
+                       }
+               }                       
+
+               // non-recursive directory listing
+            } else {   
+                productTypeDirList = Arrays.asList(dirUris);
+            }
+            
+            LOG.log(Level.FINE,"Collecting XML policies from the following 
directories:");
+            for (String pdir : productTypeDirList) {
+               LOG.log(Level.FINE, pdir);
+            }
+            
         }
     }
 

Modified: 
oodt/trunk/filemgr/src/main/java/org/apache/oodt/cas/filemgr/validation/XMLValidationLayerFactory.java
URL: 
http://svn.apache.org/viewvc/oodt/trunk/filemgr/src/main/java/org/apache/oodt/cas/filemgr/validation/XMLValidationLayerFactory.java?rev=1686007&r1=1686006&r2=1686007&view=diff
==============================================================================
--- 
oodt/trunk/filemgr/src/main/java/org/apache/oodt/cas/filemgr/validation/XMLValidationLayerFactory.java
 (original)
+++ 
oodt/trunk/filemgr/src/main/java/org/apache/oodt/cas/filemgr/validation/XMLValidationLayerFactory.java
 Wed Jun 17 13:14:11 2015
@@ -18,10 +18,18 @@
 package org.apache.oodt.cas.filemgr.validation;
 
 //JDk imports
-import org.apache.oodt.cas.metadata.util.PathUtils;
-
+import java.io.File;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.apache.oodt.cas.metadata.util.PathUtils;
+import org.apache.oodt.commons.io.DirectorySelector;
+
 
 /**
  * @author mattmann
@@ -40,6 +48,10 @@ public class XMLValidationLayerFactory i
      * directories
      */
     private List<String> dirList = null;
+    
+    /* our log stream */
+    private static final Logger LOG = Logger
+            .getLogger(XMLValidationLayerFactory.class.getName());
 
     /**
      * <p>
@@ -49,11 +61,47 @@ public class XMLValidationLayerFactory i
     public XMLValidationLayerFactory() {
         String dirUris = System
                 .getProperty("org.apache.oodt.cas.filemgr.validation.dirs");
+        
+        // only returns true if 
org.apache.oodt.cas.filemgr.validation.dirs.recursive=true
+        boolean recursive = Boolean.parseBoolean( 
+                       
System.getProperty("org.apache.oodt.cas.filemgr.validation.dirs.recursive") );
 
         if (dirUris != null) {
             dirUris = PathUtils.replaceEnvVariables(dirUris);
             String[] dirUriList = dirUris.split(",");
-            dirList = Arrays.asList(dirUriList);
+            
+            // recursive directory listing
+            if (recursive) {
+               
+               // empty list
+               dirList = new ArrayList<String>();
+               
+               // loop over specified root directories,
+               // add directories and sub-directories that contain both
+               // "elements.xml" and "product-type-element-map.xml"
+               for (String rootDir : dirUriList) {
+                       try {
+                               
+                               DirectorySelector dirsel = new 
DirectorySelector(
+                                               Arrays.asList( 
+                                                               new String[] 
{"product-type-element-map.xml", "elements.xml"} ));
+                               dirList.addAll( dirsel.traverseDir(new File(new 
URI(rootDir))) );
+                               
+                       } catch (URISyntaxException e) {
+                               LOG.log(Level.WARNING, "URISyntaxException when 
traversing directory: "+rootDir);
+                       }
+               }               
+
+            // non-recursive directory listing
+            } else {
+               dirList = Arrays.asList(dirUriList);
+            }
+            
+            LOG.log(Level.FINE,"Collecting XML validation files from the 
following directories:");
+            for (String pdir : dirList) {
+               LOG.log(Level.FINE, pdir);
+            }
+            
         }
     }
 

Modified: oodt/trunk/filemgr/src/main/resources/filemgr.properties
URL: 
http://svn.apache.org/viewvc/oodt/trunk/filemgr/src/main/resources/filemgr.properties?rev=1686007&r1=1686006&r2=1686007&view=diff
==============================================================================
--- oodt/trunk/filemgr/src/main/resources/filemgr.properties (original)
+++ oodt/trunk/filemgr/src/main/resources/filemgr.properties Wed Jun 17 
13:14:11 2015
@@ -89,9 +89,13 @@ org.apache.oodt.cas.filemgr.repositorymg
 
 # XML repository manager configuration
 org.apache.oodt.cas.filemgr.repositorymgr.dirs=file:///dir1,file:///dir2
+# uncomment the following line and set the value to true to recursively parse 
policy directories
+#org.apache.oodt.cas.filemgr.repositorymgr.dirs.recursive=false
 
 # XML validation layer configuration
 org.apache.oodt.cas.filemgr.validation.dirs=file:///dir1,file:///dir2
+# uncomment the following line and set the value to true to recursively parse 
validation directories
+#org.apache.oodt.cas.filemgr.validation.dirs.recursive=false
 
 # set the following property to 'true' to allow dynamic metadata fields,
 # effectively bypassing the validation layer.


Reply via email to