|
From: <tre...@us...> - 2008-02-29 19:55:55
|
Revision: 784
http://ogoglio.svn.sourceforge.net/ogoglio/?rev=784&view=rev
Author: trevorolio
Date: 2008-02-29 11:55:57 -0800 (Fri, 29 Feb 2008)
Log Message:
-----------
Added an automatic way to see the resource heirarchy under an og servlet, with optional description.
For example http://localhost:8080/og/account/ogapi/ will produce
/account/
The root for all account related api
/account/template/
/account/template/attachment/
/account/template/*/
/account/validate/
/account/*/
/account/*/space/
/account/*/template/
/account/*/template/LONG/
/account/*/template/LONG/geometry/
/account/*/template/LONG/script/
/account/*/membership/
/account/*/possession/
/account/*/possession/LONG/
/account/*/body/
/account/*/body/default/
/account/*/body/LONG/
/account/*/body/LONG/texture/
/account/*/photo/
Modified Paths:
--------------
maven/trunk/ogoglio-appdev/src/main/java/com/ogoglio/appdev/servlet/AbstractResourceServlet.java
maven/trunk/ogoglio-appdev/src/main/java/com/ogoglio/appdev/servlet/SiteResource.java
Modified: maven/trunk/ogoglio-appdev/src/main/java/com/ogoglio/appdev/servlet/AbstractResourceServlet.java
===================================================================
--- maven/trunk/ogoglio-appdev/src/main/java/com/ogoglio/appdev/servlet/AbstractResourceServlet.java 2008-02-29 17:19:16 UTC (rev 783)
+++ maven/trunk/ogoglio-appdev/src/main/java/com/ogoglio/appdev/servlet/AbstractResourceServlet.java 2008-02-29 19:55:57 UTC (rev 784)
@@ -50,8 +50,10 @@
public static final String OGOGLIO_BASE_URL_KEY = "ogoglio/baseURL";
- private static final String METHOD_PARAM = "method";
-
+ public static final String API_DESCRIPTOR_PATH = "ogapi";
+
+ public static final String METHOD_PARAM = "method";
+
private SiteResource baseResource = null;
private boolean noCache = true;
@@ -142,7 +144,7 @@
URI requestURI = getRequestURI(request);
String[] pathElements = getPathElements((String) baseResource.getPathElement(), requestURI);
-
+
if (pathElements == null) {
Log.error("Can't understand path elements in " + getClass().getCanonicalName() + "! " + requestURI);
Log.error(" baseResource for errant service() is " + baseResource.getClass().getCanonicalName());
@@ -150,6 +152,13 @@
return;
}
+ if(pathElements.length == 2 && API_DESCRIPTOR_PATH.equals(pathElements[1])){
+ StringBuffer result = new StringBuffer();
+ baseResource.toDocumentation(result, "/", 0);
+ baseResource.sendStringResponse(result.toString(), "text/plain", response);
+ return;
+ }
+
SiteResource requestedResource = getSiteResource(pathElements, baseResource);
if (requestedResource == null) {
Modified: maven/trunk/ogoglio-appdev/src/main/java/com/ogoglio/appdev/servlet/SiteResource.java
===================================================================
--- maven/trunk/ogoglio-appdev/src/main/java/com/ogoglio/appdev/servlet/SiteResource.java 2008-02-29 17:19:16 UTC (rev 783)
+++ maven/trunk/ogoglio-appdev/src/main/java/com/ogoglio/appdev/servlet/SiteResource.java 2008-02-29 19:55:57 UTC (rev 784)
@@ -137,4 +137,34 @@
output.write(buffer, 0, read);
}
}
+
+
+ public void toDocumentation(StringBuffer result, String parentPath, int depth) {
+ String pathElementDisplayName = getPathElementDisplayName(pathElement);
+ String path = parentPath + pathElementDisplayName + "/";
+ result.append(path + "\n");
+ String description = getAPIDescription();
+ if(description != null){
+ result.append(description + "\n");
+ }
+ result.append("\n");
+
+ SiteResource[] subs = getSubResources();
+ for (int i = 0; i < subs.length; i++) {
+ subs[i].toDocumentation(result, path, depth + 1);
+ }
+ }
+
+ public String getPathElementDisplayName(Object pathElement){
+ if(LONG_ELEMENT.equals(pathElement)){
+ return "LONG";
+ } else if(WILDCARD_ELEMENT.equals(pathElement)){
+ return "*";
+ }
+ return pathElement.toString();
+ }
+
+ public String getAPIDescription() { //used to generate the og api documentation
+ return null;
+ }
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|