[Yanel-commits] rev 23448 - in public/yanel/trunk/src/core/java/org/wyona/yanel/core: . source

michi at wyona.com michi at wyona.com
Wed Mar 28 00:11:42 CEST 2007


Author: michi
Date: 2007-03-28 00:11:41 +0200 (Wed, 28 Mar 2007)
New Revision: 23448

Modified:
   public/yanel/trunk/src/core/java/org/wyona/yanel/core/Resource.java
   public/yanel/trunk/src/core/java/org/wyona/yanel/core/source/ResourceResolver.java
Log:
parameters added

Modified: public/yanel/trunk/src/core/java/org/wyona/yanel/core/Resource.java
===================================================================
--- public/yanel/trunk/src/core/java/org/wyona/yanel/core/Resource.java	2007-03-27 22:05:45 UTC (rev 23447)
+++ public/yanel/trunk/src/core/java/org/wyona/yanel/core/Resource.java	2007-03-27 22:11:41 UTC (rev 23448)
@@ -16,6 +16,8 @@
 
 package org.wyona.yanel.core;
 
+import java.util.Map;
+
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import org.wyona.yanel.core.map.Realm;
@@ -37,6 +39,7 @@
     protected Realm realm;
     protected HttpServletRequest request;
     protected HttpServletResponse response;
+    protected Map parameters;
 
     /**
      *
@@ -158,4 +161,12 @@
         this.response = response;
     }
 
+    public Map getParameters() {
+        return parameters;
+    }
+
+    public void setParameters(Map parameters) {
+        this.parameters = parameters;
+    }
+
 }

Modified: public/yanel/trunk/src/core/java/org/wyona/yanel/core/source/ResourceResolver.java
===================================================================
--- public/yanel/trunk/src/core/java/org/wyona/yanel/core/source/ResourceResolver.java	2007-03-27 22:05:45 UTC (rev 23447)
+++ public/yanel/trunk/src/core/java/org/wyona/yanel/core/source/ResourceResolver.java	2007-03-27 22:11:41 UTC (rev 23448)
@@ -1,5 +1,7 @@
 package org.wyona.yanel.core.source;
 
+import java.util.HashMap;
+
 import org.apache.log4j.Category;
 import org.wyona.yanel.core.Path;
 import org.wyona.yanel.core.Resource;
@@ -38,7 +40,9 @@
      * @see org.wyona.yanel.core.source.SourceResolver#resolve(java.lang.String)
      */
     public InputSource resolve(String uri) throws SourceException {
-        log.debug("resolving: " + uri);
+        if (log.isDebugEnabled()) {
+            log.debug("resolving: " + uri);
+        }
         String prefix = SCHEME + ":";
         if (!uri.startsWith(prefix)) {
             log.error("unknown scheme: " + uri);
@@ -46,12 +50,19 @@
         }
         try {
             uri = uri.substring(prefix.length());
+            HashMap parameters = readParameters(uri);
+            if (uri.indexOf("?")>-1) {
+                uri = uri.substring(0, uri.indexOf("?"));
+            }
             ResourceManager manager = Yanel.getInstance().getResourceManager();
             Resource targetResource = manager.getResource(resource.getRequest(), resource.getResponse(), 
                     resource.getRealm(), uri);
+            targetResource.setParameters(parameters);
             if (ResourceAttributeHelper.hasAttributeImplemented(targetResource, "Viewable", "1")) {
                 String viewV1path = resource.getRealm().getMountPoint() + uri.substring(1);
-                log.debug("including document: " + viewV1path);
+                if (log.isDebugEnabled()) {
+                    log.debug("including document: " + viewV1path);
+                }
                 View view = ((ViewableV1) targetResource).getView(new Path(viewV1path), null);
                 return new InputSource(view.getInputStream());
             } else if (ResourceAttributeHelper.hasAttributeImplemented(targetResource, "Viewable", "2")) {
@@ -68,4 +79,22 @@
         }
     }
     
+    protected HashMap readParameters(String uri) {
+        HashMap parameters = new HashMap();
+        int queryIndex = uri.indexOf("?"); 
+        if (queryIndex > -1 && queryIndex < uri.length()) {
+            String query = uri.substring(uri.indexOf("?") + 1);
+            String[] paramPairs = query.split("&");
+            for (int i=0; i<paramPairs.length; i++) {
+                String[] tokens = paramPairs[i].split("=");
+                String name = tokens[0];
+                String value = tokens[1];
+                if (log.isDebugEnabled()) {
+                    log.debug("adding parameter: name: " + name + " value: " + value);
+                }
+                parameters.put(name, value);
+            }
+        }
+        return parameters;
+    }
 }




More information about the Yanel-commits mailing list