[Yanel-commits] rev 37258 - public/yanel/trunk/src/webapp/src/java/org/wyona/yanel/servlet

michi at wyona.com michi at wyona.com
Fri Jun 27 10:19:20 CEST 2008


Author: michi
Date: 2008-06-27 10:19:19 +0200 (Fri, 27 Jun 2008)
New Revision: 37258

Modified:
   public/yanel/trunk/src/webapp/src/java/org/wyona/yanel/servlet/YanelServlet.java
Log:
resolving of encoding fixed

Modified: public/yanel/trunk/src/webapp/src/java/org/wyona/yanel/servlet/YanelServlet.java
===================================================================
--- public/yanel/trunk/src/webapp/src/java/org/wyona/yanel/servlet/YanelServlet.java	2008-06-27 08:17:49 UTC (rev 37257)
+++ public/yanel/trunk/src/webapp/src/java/org/wyona/yanel/servlet/YanelServlet.java	2008-06-27 08:19:19 UTC (rev 37258)
@@ -1884,23 +1884,15 @@
             } catch (Exception e) {
                 throw new ServletException(e);
             }
-        } else if (path.indexOf("resource-types") >=0 ) {
-            String resourceTypeUniversalNameSplitter;
-            String resourceTypeUniversalNameSlash;
-            if (path.indexOf("::") >=0) {
-                resourceTypeUniversalNameSplitter = "::";
-                resourceTypeUniversalNameSlash = "/";
-                log.warn("The use of resource-types/resourec/type/namespace::resourcename is deprecated. use resource-types/resourec%2ftype%2fnamespace%3a%3aresourcename instead");
-            } else {
-                resourceTypeUniversalNameSplitter = "%3a%3a";
-                resourceTypeUniversalNameSlash = "%2f";
-            }
-            
+        } else if (path.indexOf("resource-types") >= 0) {
+            //log.debug("Resource path: " + resource.getPath());
             String[] pathPart1 = path.split("/resource-types/");
-            String[] pathPart2 = pathPart1[1].split(resourceTypeUniversalNameSplitter);
+            String[] pathPart2 = pathPart1[1].split("::");
             String[] pathPart3 = pathPart2[1].split("/");
             String name = pathPart3[0];
-            String namespace = pathPart2[0].replaceAll(resourceTypeUniversalNameSlash, "/").replaceAll("http:/", "http://");
+            // The request (see resource.getPath()) seems to replace 'http://' or 'http%3a%2f%2f' by 'http:/', so let's change this back
+            String namespace = pathPart2[0].replaceAll("http:/", "http://");
+
             try {
                 java.util.Map properties = new HashMap();
                 Realm realm = yanel.getMap().getRealm(request.getServletPath());
@@ -1908,18 +1900,18 @@
                 Resource resourceOfPrefix = yanel.getResourceManager().getResource(getEnvironment(request, response), realm, path, rc);
                 String htdocsPath;
                 if (pathPart2[1].indexOf("/" + reservedPrefix + "/") >= 0) {
-                    htdocsPath =  "rtyanelhtdocs:" + path.split(resourceTypeUniversalNameSplitter + name)[1].split("/" + reservedPrefix)[1].replace('/', File.separatorChar);
+                    htdocsPath =  "rtyanelhtdocs:" + path.split("::" + name)[1].split("/" + reservedPrefix)[1].replace('/', File.separatorChar);
                 } else {
-                    htdocsPath = "rthtdocs:" + path.split(resourceTypeUniversalNameSplitter + name)[1].replace('/', File.separatorChar); 
+                    htdocsPath = "rthtdocs:" + path.split("::" + name)[1].replace('/', File.separatorChar); 
                 }
                 SourceResolver resolver = new SourceResolver(resourceOfPrefix);
                 Source source = resolver.resolve(htdocsPath, null);
                 InputStream htodoc = ((StreamSource) source).getInputStream();
                 
                 if (htodoc != null) {
-                        log.debug("Resource-Type specific data: " + htdocsPath);
+                    log.debug("Resource-Type specific data: " + htdocsPath);
                     // TODO: Set HTTP header (mime-type, size, etc.)
-                                String mimeType = guessMimeType(FilenameUtils.getExtension(FilenameUtils.getName(htdocsPath)));
+                    String mimeType = guessMimeType(FilenameUtils.getExtension(FilenameUtils.getName(htdocsPath)));
                     response.setHeader("Content-Type", mimeType);
 
                     byte buffer[] = new byte[8192];



More information about the Yanel-commits mailing list