[Yanel-commits] rev 52165 - public/yanel/trunk/src/core/java/org/wyona/yanel/core

michi at wyona.com michi at wyona.com
Thu Aug 5 01:17:38 CEST 2010


Author: michi
Date: 2010-08-05 01:17:37 +0200 (Thu, 05 Aug 2010)
New Revision: 52165

Modified:
   public/yanel/trunk/src/core/java/org/wyona/yanel/core/ResourceTypeRegistry.java
Log:
depending on class loader the returned valued might be a directory

Modified: public/yanel/trunk/src/core/java/org/wyona/yanel/core/ResourceTypeRegistry.java
===================================================================
--- public/yanel/trunk/src/core/java/org/wyona/yanel/core/ResourceTypeRegistry.java	2010-08-04 22:36:01 UTC (rev 52164)
+++ public/yanel/trunk/src/core/java/org/wyona/yanel/core/ResourceTypeRegistry.java	2010-08-04 23:17:37 UTC (rev 52165)
@@ -154,17 +154,23 @@
             Configuration resourceTypes[] = config.getChildren("resource-type");
             
             for (int i = 0; i < resourceTypes.length; i++) {
+                log.warn("DEBUG: Register resource type...");
                 try {
                     String packageName = resourceTypes[i].getAttribute("package"); // INFO: This method will throw an exception if no 'package' attribute exists, and hence further down it will try to read the 'src' attribute...
+                    log.warn("DEBUG: Package: " + packageName);
                     log.info("Package: " + packageName);
 
                     // TODO: Config itself, e.g. org/wyona/yanel/impl/resources/redirect/my-resource.xml
 
                     URL packageURL = ResourceTypeRegistry.class.getClassLoader().getResource(packageName.replace('.','/'));
-                    log.info("Package: " + packageURL.getFile());
-                    File jarFile = new File(packageURL.getPath().substring(5, packageURL.getPath().indexOf("!")));
-                    log.debug("Jar file: " + jarFile);
-                    if (jarFile.isFile()) {
+                    log.warn("DEBUG: Package: " + packageURL.getFile());
+                    //log.info("Package: " + packageURL.getFile());
+                    File jarFile = null;
+                    if (packageURL.getPath().indexOf("!") > 0) {
+                        jarFile = new File(packageURL.getPath().substring(5, packageURL.getPath().indexOf("!")));
+                    }
+                    if (jarFile != null && jarFile.isFile()) {
+                        log.debug("Jar file: " + jarFile);
                         java.util.zip.ZipFile zipFile = new java.util.zip.ZipFile(jarFile);
                         java.util.Enumeration entries = zipFile.entries();
                         while (entries.hasMoreElements()) {
@@ -186,17 +192,30 @@
                                 }
                             }
                         }
+                    } else if (new File(packageURL.getPath()).isDirectory()) {
+                        log.warn("TODO: ...");
+                                try {
+                                    ResourceTypeDefinition rtd = new ResourceTypeDefinition(new java.io.FileInputStream(new File(packageURL.getPath(), "resource.xml")));
+                                    log.debug("Universal Name: " + rtd.getResourceTypeUniversalName());
+                                    log.debug("Classname: " + rtd.getResourceTypeClassname());
+                                    hm.put(rtd.getResourceTypeUniversalName(), rtd);
+                                } catch (Exception exception) {
+                                    log.error("Exception re registring resource with package '" + packageName + "'!");
+                                    log.error(exception, exception);
+                                }
                     } else {
-                        log.error("No such file: " + jarFile);
+                        log.error("No such file or directory: " + packageURL.getPath());
                     }
                 } catch (Exception e) {
-                    //log.error(e.getMessage()); // INFO: Do not show this error message, because it is not really an error in most cases
+                    log.error(e.getMessage()); // INFO: Do not show this error message, because it is not really an error in most cases
+                    log.warn("DEBUG: No package attribute, hence try src attribute...");
                     log.info("No package attribute, hence try src attribute...");
-                    File resConfigFile = new File(resourceTypes[i].getAttribute("src"));
-                    log.info("Source: " + resConfigFile);
-                    if (!resConfigFile.isAbsolute()) {
-                        resConfigFile = FileUtil.file(resourceTypeConfigFile.getParentFile().getAbsolutePath(), resourceTypes[i].getAttribute("src"));
-                    }
+                    try {
+                        File resConfigFile = new File(resourceTypes[i].getAttribute("src"));
+                        log.info("Source: " + resConfigFile);
+                        if (!resConfigFile.isAbsolute()) {
+                            resConfigFile = FileUtil.file(resourceTypeConfigFile.getParentFile().getAbsolutePath(), resourceTypes[i].getAttribute("src"));
+                        }
 
                     if (resConfigFile.isDirectory()) {
                         File resDir = resConfigFile;
@@ -222,6 +241,9 @@
                     } else {
                         log.error("No such file or directory: " + resConfigFile);
                     }
+                    } catch (Exception exception) {
+                        log.error(exception, exception);
+                    }
                 }
             }    
         } catch (Exception e) {



More information about the Yanel-commits mailing list