Author: chathura
Date: Wed Dec 12 07:17:49 2007
New Revision: 11028

Log:


Implemented the resource media type support in the UI.
Now the UI fetches the list of file extension -> media type mappings from the 
server and automatically fills the media type field according to the selected 
file extension.



Added:
   trunk/registry/modules/webapps/conf/media-type-mappings.conf
   
trunk/registry/modules/webapps/src/main/java/org/wso2/registry/web/MediaTypeMappingsReader.java
Modified:
   trunk/registry/modules/webapps/pom.xml
   
trunk/registry/modules/webapps/src/main/java/org/wso2/registry/web/ControllerServlet.java
   trunk/registry/modules/webapps/src/main/webapp/admin/js/common.js
   trunk/registry/modules/webapps/src/main/webapp/admin/registry-resources.jsp

Added: trunk/registry/modules/webapps/conf/media-type-mappings.conf
==============================================================================
--- (empty file)
+++ trunk/registry/modules/webapps/conf/media-type-mappings.conf        Wed Dec 
12 07:17:49 2007
@@ -0,0 +1,5 @@
+txt:text
+wsdl:wsdl/xml
+iml:module/idea
+ipr:project/idea
+log:log/text
\ No newline at end of file

Modified: trunk/registry/modules/webapps/pom.xml
==============================================================================
--- trunk/registry/modules/webapps/pom.xml      (original)
+++ trunk/registry/modules/webapps/pom.xml      Wed Dec 12 07:17:49 2007
@@ -49,6 +49,7 @@
                                 <include>web.xml</include>
                                 <include>tiles.xml</include>
                                 <include>um.sql</include>
+                                <include>media-type-mappings.conf</include>
                             </includes>
                         </resource>
                         <resource>

Modified: 
trunk/registry/modules/webapps/src/main/java/org/wso2/registry/web/ControllerServlet.java
==============================================================================
--- 
trunk/registry/modules/webapps/src/main/java/org/wso2/registry/web/ControllerServlet.java
   (original)
+++ 
trunk/registry/modules/webapps/src/main/java/org/wso2/registry/web/ControllerServlet.java
   Wed Dec 12 07:17:49 2007
@@ -578,7 +578,13 @@
 
             } else if (command.equals("/getResourceMediaTypes")) {
 
-                String mediaTypes = 
"txt:text,wsdl:wsdl/xml,xsd:xsd/xml,iml:idea/proj,ipr:idea/projs";
+                String mediaTypes = null;
+                try {
+                    mediaTypes  = 
MediaTypeMappingsReader.getMediaTypeMappings(request);
+                } catch (RegistryException e) {
+                    mediaTypes = 
"txt:text,wsdl:wsdl/xml,xsd:xsd/xml,iml:idea/proj,ipr:idea/projs";
+                }
+
                 response.getWriter().write(mediaTypes);
 
                 return;

Added: 
trunk/registry/modules/webapps/src/main/java/org/wso2/registry/web/MediaTypeMappingsReader.java
==============================================================================
--- (empty file)
+++ 
trunk/registry/modules/webapps/src/main/java/org/wso2/registry/web/MediaTypeMappingsReader.java
     Wed Dec 12 07:17:49 2007
@@ -0,0 +1,62 @@
+/*
+ * Copyright (c) 2006, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.wso2.registry.web;
+
+import org.wso2.registry.RegistryException;
+
+import javax.servlet.http.HttpServletRequest;
+import java.io.InputStream;
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import java.io.IOException;
+
+public class MediaTypeMappingsReader {
+
+    public static final String MAPPINGS_FILE = 
"/WEB-INF/media-type-mappings.conf";
+
+    public static String getMediaTypeMappings(HttpServletRequest request) 
throws RegistryException {
+
+        InputStream input =
+                
request.getSession().getServletContext().getResourceAsStream(MAPPINGS_FILE);
+        BufferedReader reader = new BufferedReader(new 
InputStreamReader(input));
+
+        String mediaTypeString = null;
+        try {
+            while(reader.ready()) {
+                String mediaTypeData = reader.readLine();
+                if (mediaTypeString == null) {
+                    mediaTypeString = mediaTypeData;
+                } else {
+                    mediaTypeString = mediaTypeString + "," + mediaTypeData;
+                }
+            }
+
+        } catch (IOException e) {
+            String msg = "Could not read the media type mappings file from the 
location: " + MAPPINGS_FILE;
+            throw new RegistryException(msg);
+
+        } finally {
+            try {
+                reader.close();
+                input.close();
+            } catch (IOException ignore) {
+            }
+        }
+
+        return mediaTypeString;
+    }
+}

Modified: trunk/registry/modules/webapps/src/main/webapp/admin/js/common.js
==============================================================================
--- trunk/registry/modules/webapps/src/main/webapp/admin/js/common.js   
(original)
+++ trunk/registry/modules/webapps/src/main/webapp/admin/js/common.js   Wed Dec 
12 07:17:49 2007
@@ -223,28 +223,34 @@
 // these media type data will be retrieved upon the first request and stored 
in memory.
 var mediaTypeMap = null;
 
+var mediaTypeResponse = "txt:text,wsdl:wsdl/xml,xsd:xsd/xml,iml:idea/proj";
+
 function fillMediaTypes() {
 
     mediaTypeMap = new Object();
 
-    var mediaTypeResponse = "txt:text,wsdl:wsdl/xml,xsd:xsd/xml,iml:idea/proj";
-
     new Ajax.Request('/wso2registry/system/getResourceMediaTypes',
     {
-        asynchronous:'false',
         method:'get',
         onSuccess: function(transport){
             mediaTypeResponse = transport.responseText || 
"txt:text,wsdl:wsdl/xml";
+
+            var mType = mediaTypeResponse.split(',');
+            for (var i = 0; i < mType.length; i++) {
+                var typeData = mType[i].split(':');
+                if (typeData.length == 2) {
+                    mediaTypeMap[typeData[0]] = typeData[1];
+                }
+            }
         },
         onFailure: function(){ alert('Could not get media types information 
from the server.') }
     });
+}
 
-    var mType = mediaTypeResponse.split(',');
-    for (var i = 0; i < mType.length; i++) {
-        var typeData = mType[i].split(':');
-        if (typeData.length == 2) {
-            mediaTypeMap[typeData[0]] = typeData[1];
-        }
+function loadMediaTypes() {
+    
+    if (mediaTypeMap == null) {
+        fillMediaTypes();
     }
 }
 

Modified: 
trunk/registry/modules/webapps/src/main/webapp/admin/registry-resources.jsp
==============================================================================
--- trunk/registry/modules/webapps/src/main/webapp/admin/registry-resources.jsp 
(original)
+++ trunk/registry/modules/webapps/src/main/webapp/admin/registry-resources.jsp 
Wed Dec 12 07:17:49 2007
@@ -18,7 +18,7 @@
     <link type="text/css" href="/wso2registry/admin/css/main.css" 
rel="stylesheet" />
     <title>WSO2 Registry</title>
 </head>
-<body>
+<body onload="loadMediaTypes()">
 
 <div class="page-sizer">
 <!-- START header content -->

_______________________________________________
Registry-dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/registry-dev

Reply via email to