[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