[Yanel-commits] rev 21998 -
public/yanel/trunk/src/core/java/org/wyona/yanel/core
michi at wyona.com
michi at wyona.com
Mon Jan 22 12:06:39 CET 2007
Author: michi
Date: 2007-01-22 12:06:38 +0100 (Mon, 22 Jan 2007)
New Revision: 21998
Modified:
public/yanel/trunk/src/core/java/org/wyona/yanel/core/Resource.java
public/yanel/trunk/src/core/java/org/wyona/yanel/core/ResourceManager.java
Log:
check on resource configuration first
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-01-22 10:58:15 UTC (rev 21997)
+++ public/yanel/trunk/src/core/java/org/wyona/yanel/core/Resource.java 2007-01-22 11:06:38 UTC (rev 21998)
@@ -27,6 +27,7 @@
protected ResourceTypeDefinition rtd;
protected ResourceTypeIdentifier rti;
+ protected ResourceConfiguration rc;
protected Yanel yanel;
private Path path;
protected Realm realm;
@@ -113,6 +114,10 @@
this.rti = rti;
}
+ public void setConfiguration(ResourceConfiguration rc) {
+ this.rc = rc;
+ }
+
public HttpServletRequest getRequest() {
return request;
}
Modified: public/yanel/trunk/src/core/java/org/wyona/yanel/core/ResourceManager.java
===================================================================
--- public/yanel/trunk/src/core/java/org/wyona/yanel/core/ResourceManager.java 2007-01-22 10:58:15 UTC (rev 21997)
+++ public/yanel/trunk/src/core/java/org/wyona/yanel/core/ResourceManager.java 2007-01-22 11:06:38 UTC (rev 21998)
@@ -73,16 +73,48 @@
}
/**
+ * Creates a new resource object in the given realm with the given path and the given type.
+ *
+ * @param path Path relative to realm (e.g. yanel.getMap().getPath(realm, request.getServletPath()))
+ */
+ public Resource getResource(HttpServletRequest request, HttpServletResponse response, Realm realm, Path path, ResourceConfiguration rc) throws Exception {
+ ResourceTypeDefinition rtd = rtRegistry.getResourceTypeDefinition(rc.getUniversalName());
+
+ String universalName = rtd.getResourceTypeUniversalName();
+ if (rtd != null) {
+ Resource resource = (Resource) Class.forName(rtd.getResourceTypeClassname()).newInstance();
+
+ resource.setRTD(rtd);
+ resource.setYanel(Yanel.getInstance());
+ resource.setRealm(realm);
+ resource.setPath(path);
+ resource.setConfiguration(rc);
+ resource.setRequest(request);
+ resource.setResponse(response);
+
+ return resource;
+ } else {
+ log.error("No such resource type registered: " + universalName);
+ return null;
+ }
+ }
+
+ /**
* Creates a new resource object in the given realm and with the given path.
*
* @param path Path relative to realm (e.g. yanel.getMap().getPath(realm, request.getServletPath()))
*/
- public Resource getResource(HttpServletRequest request, HttpServletResponse response,
- Realm realm, Path path) throws Exception {
+ public Resource getResource(HttpServletRequest request, HttpServletResponse response, Realm realm, Path path) throws Exception {
+ if (realm.getRTIRepository().exists(path.getRCPath())) {
+ ResourceConfiguration rc = new ResourceConfiguration(realm.getRTIRepository().getReader(path.getRCPath()));
+ if (rc != null) return getResource(request, response, realm, path, rc);
+ }
+
+ // Fallback to deprecated RTI
+ log.warn("DEPRECATED: RTI should be replaced by ResourceConfiguration: " + realm + ", " + path);
ResourceTypeIdentifier rti = getResourceTypeIdentifier(realm, path);
ResourceTypeDefinition rtd = rtRegistry.getResourceTypeDefinition(rti.getUniversalName());
- Resource resource = getResource(request, response, realm, path, rtd, rti);
- return resource;
+ return getResource(request, response, realm, path, rtd, rti);
}
/**
@@ -100,6 +132,4 @@
return new ResourceTypeIdentifier("<{http://www.wyona.org/yanel/resource/1.0}file/>", null);
}
}
-
-
}
More information about the Yanel-commits
mailing list