cxf-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From serg...@apache.org
Subject svn commit: r897812 - in /cxf/trunk: rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/ rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/ rt/frontend/jaxrs/src/test/ja...
Date Mon, 11 Jan 2010 09:31:10 GMT
Author: sergeyb
Date: Mon Jan 11 09:31:09 2010
New Revision: 897812

URL: http://svn.apache.org/viewvc?rev=897812&view=rev
Log:
JAXRS support for reading Document and fixes to do with updating destinations when request
URIs are equal to endpoint addresses 

Added:
    cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSUriInfoTest.java
  (with props)
    cxf/trunk/systests/jaxrs/src/test/resources/jaxrs_uriinfo/
    cxf/trunk/systests/jaxrs/src/test/resources/jaxrs_uriinfo/WEB-INF/
    cxf/trunk/systests/jaxrs/src/test/resources/jaxrs_uriinfo/WEB-INF/beans.xml   (with props)
    cxf/trunk/systests/jaxrs/src/test/resources/jaxrs_uriinfo/WEB-INF/web.xml   (with props)
Modified:
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/SourceProvider.java
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/HttpUtils.java
    cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/SourceProviderTest.java
    cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/HttpUtilsTest.java
    cxf/trunk/rt/transports/http-osgi/src/main/java/org/apache/cxf/transport/http_osgi/OsgiServletController.java
    cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/ServletController.java
    cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/AbstractSpringServer.java

Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/SourceProvider.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/SourceProvider.java?rev=897812&r1=897811&r2=897812&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/SourceProvider.java
(original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/SourceProvider.java
Mon Jan 11 09:31:09 2010
@@ -58,13 +58,18 @@
     }
     
     public boolean isReadable(Class<?> type, Type genericType, Annotation[] annotations,
MediaType mt) {
-        return Source.class.isAssignableFrom(type) || XMLSource.class.isAssignableFrom(type);
+        return Source.class.isAssignableFrom(type) 
+               || XMLSource.class.isAssignableFrom(type)
+               || Document.class.isAssignableFrom(type);
     }
     
     public Object readFrom(Class<Object> source, Type genericType, Annotation[] annotations,
MediaType m,  
         MultivaluedMap<String, String> headers, InputStream is) 
         throws IOException {
-        if (DOMSource.class.isAssignableFrom(source)) {
+        if (DOMSource.class.isAssignableFrom(source) || Document.class.isAssignableFrom(source))
{
+            
+            boolean docRequired = Document.class.isAssignableFrom(source);
+            
             Document doc = null;
             DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
             DocumentBuilder builder;
@@ -77,7 +82,7 @@
                 throw ioex;
             }
     
-            return new DOMSource(doc);
+            return docRequired ? doc : new DOMSource(doc);
         } else if (StreamSource.class.isAssignableFrom(source)
                    || Source.class.isAssignableFrom(source)) {
             return new StreamSource(is);

Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/HttpUtils.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/HttpUtils.java?rev=897812&r1=897811&r2=897812&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/HttpUtils.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/HttpUtils.java Mon
Jan 11 09:31:09 2010
@@ -193,6 +193,10 @@
     public static String getPathToMatch(String path, String address, boolean addSlash) {
         
         int ind = path.indexOf(address);
+        if (ind == -1 && address.equals(path + "/")) {
+            path += "/";
+            ind = 0;
+        }
         if (ind == 0) {
             path = path.substring(ind + address.length());
         }

Modified: cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/SourceProviderTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/SourceProviderTest.java?rev=897812&r1=897811&r2=897812&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/SourceProviderTest.java
(original)
+++ cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/SourceProviderTest.java
Mon Jan 11 09:31:09 2010
@@ -29,6 +29,8 @@
 import javax.xml.transform.dom.DOMSource;
 import javax.xml.transform.stream.StreamSource;
 
+import org.w3c.dom.Document;
+
 import org.junit.Assert;
 import org.junit.Test;
 
@@ -57,6 +59,7 @@
         assertSame(StreamSource.class, verifyRead(p, StreamSource.class).getClass());
         assertSame(StreamSource.class, verifyRead(p, Source.class).getClass());
         assertSame(DOMSource.class, verifyRead(p, DOMSource.class).getClass());
+        assertTrue(Document.class.isAssignableFrom(verifyRead(p, Document.class).getClass()));
     }
     
     @Test

Modified: cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/HttpUtilsTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/HttpUtilsTest.java?rev=897812&r1=897811&r2=897812&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/HttpUtilsTest.java
(original)
+++ cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/HttpUtilsTest.java
Mon Jan 11 09:31:09 2010
@@ -76,6 +76,7 @@
     public void testPathToMatch() {
         assertEquals("/", HttpUtils.getPathToMatch("/", "/", true));
         assertEquals("/", HttpUtils.getPathToMatch("/", "/bar", true));
+        assertEquals("/", HttpUtils.getPathToMatch("/bar", "/bar/", true));
         assertEquals("/bar", HttpUtils.getPathToMatch("/bar", "/", true));
         
         assertEquals("/", HttpUtils.getPathToMatch("/bar", "/bar", true));

Modified: cxf/trunk/rt/transports/http-osgi/src/main/java/org/apache/cxf/transport/http_osgi/OsgiServletController.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/transports/http-osgi/src/main/java/org/apache/cxf/transport/http_osgi/OsgiServletController.java?rev=897812&r1=897811&r2=897812&view=diff
==============================================================================
--- cxf/trunk/rt/transports/http-osgi/src/main/java/org/apache/cxf/transport/http_osgi/OsgiServletController.java
(original)
+++ cxf/trunk/rt/transports/http-osgi/src/main/java/org/apache/cxf/transport/http_osgi/OsgiServletController.java
Mon Jan 11 09:31:09 2010
@@ -54,7 +54,7 @@
 public class OsgiServletController extends AbstractServletController {
     private static final Logger LOG = LogUtils.getL7dLogger(OsgiServlet.class);
     
-    private String lastBase = "";
+    private volatile String lastBase = "";
     private OsgiServlet servlet;
     public OsgiServletController(OsgiServlet servlet) {
         super(servlet.getServletConfig());
@@ -67,9 +67,10 @@
         }
         String base = forcedBaseAddress == null ? getBaseURL(request) : forcedBaseAddress;
 
-        //if (base.equals(lastBase)) {
-        //    return;
-        //}
+        if (base.equals(lastBase)) {
+            return;
+        }
+        
         Set<String> paths = servlet.getTransport().getDestinationsPaths();
         for (String path : paths) {
             OsgiDestination d2 = servlet.getTransport().getDestinationForPath(path);
@@ -144,7 +145,9 @@
                             }
                         }
                     }
-                } 
+                } else if ("/".equals(address) || address.length() == 0) {
+                    updateDests(request);
+                }
                 invokeDestination(request, res, d);
                 
             }

Modified: cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/ServletController.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/ServletController.java?rev=897812&r1=897811&r2=897812&view=diff
==============================================================================
--- cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/ServletController.java
(original)
+++ cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/ServletController.java
Mon Jan 11 09:31:09 2010
@@ -55,7 +55,7 @@
     private ServletContext servletContext;
     private ServletConfig servletConfig;
     private Bus bus;
-    private String lastBase = "";
+    private volatile String lastBase = "";
     
     public ServletController(ServletTransportFactory df,
                              ServletConfig config,
@@ -141,7 +141,9 @@
                 }
             } else {
                 ei = d.getEndpointInfo();
-                if (null != request.getQueryString() 
+                
+                if ("GET".equals(request.getMethod())
+                    && null != request.getQueryString() 
                     && request.getQueryString().length() > 0
                     && bus.getExtension(QueryHandlerRegistry.class) != null) {  
                 
                     
@@ -149,10 +151,8 @@
                     String baseUri = request.getRequestURL().toString() 
                         + "?" + request.getQueryString();
                     // update the EndPoint Address with request url
-                    if ("GET".equals(request.getMethod())) {
-                        updateDests(request);
-                    }
-
+                    updateDests(request);
+                    
                     for (QueryHandler qh : bus.getExtension(QueryHandlerRegistry.class).getHandlers())
{
                         if (qh.isRecognizedQuery(baseUri, ctxUri, ei)) {
                             
@@ -171,6 +171,8 @@
                             return;
                         }   
                     }
+                } else if ("/".equals(address) || address.length() == 0) {
+                    updateDests(request);
                 }
                 
                 invokeDestination(request, res, d);

Modified: cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/AbstractSpringServer.java
URL: http://svn.apache.org/viewvc/cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/AbstractSpringServer.java?rev=897812&r1=897811&r2=897812&view=diff
==============================================================================
--- cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/AbstractSpringServer.java
(original)
+++ cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/AbstractSpringServer.java
Mon Jan 11 09:31:09 2010
@@ -47,7 +47,7 @@
     
     protected AbstractSpringServer(String path, String cPath, int portNumber) {
         resourcePath = path;
-        contextPath = "/";
+        contextPath = cPath;
         port = portNumber;
     }
     

Added: cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSUriInfoTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSUriInfoTest.java?rev=897812&view=auto
==============================================================================
--- cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSUriInfoTest.java
(added)
+++ cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSUriInfoTest.java
Mon Jan 11 09:31:09 2010
@@ -0,0 +1,102 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.apache.cxf.systest.jaxrs;
+
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.UriInfo;
+
+import org.apache.cxf.jaxrs.client.WebClient;
+import org.apache.cxf.testutil.common.AbstractClientServerTestBase;
+
+import org.junit.BeforeClass;
+import org.junit.Ignore;
+import org.junit.Test;
+
+public class JAXRSUriInfoTest extends AbstractClientServerTestBase {
+
+    @BeforeClass
+    public static void beforeClass() throws Exception {
+        // must be 'in-process' to communicate with inner class in single JVM
+        // and to spawn class SpringServer w/o using main() method
+        launchServer(SpringServer.class, true);
+    }
+
+    @Ignore
+    public static class SpringServer extends AbstractSpringServer {
+        public SpringServer() {
+            super("/jaxrs_uriinfo", "/app", 9080);
+        }
+    }
+
+    /**
+     * URI          | getBaseUri          | path param
+-------------+---------------------+-----------
+/app/v1      | http://host/        | "v1"
+/app/v1/     | http://host/        | "v1/"
+/app/v1/test | http://host/app/v1/ | "test"
+/app/v1/     | http://host/app/v1/ | ""
+/app/v1      | http://host/app/v1/ | "app/v1" 
+     * @throws Exception
+     */
+    @Test
+    public void testBasePathAndPathAndPathParam() throws Exception {
+        checkUriInfo("http://localhost:9080/app/v1", "\"\"", "/");
+        checkUriInfo("http://localhost:9080/app/v1/", "\"\"", "/");
+        checkUriInfo("http://localhost:9080/app/v1/test", "\"test\"", "/test");
+        checkUriInfo("http://localhost:9080/app/v1/", "\"\"", "/");
+        checkUriInfo("http://localhost:9080/app/v1", "\"\"", "/");
+          
+        checkUriInfo("http://localhost:9080/app/v1/bar", "\"bar\"", "/bar");
+        checkUriInfo("http://localhost:9080/app/v1/bar", "\"bar\"", "/bar");
+        checkUriInfo("http://localhost:9080/app/v1/bar/test", "\"bar/test\"", "/bar/test");
+        checkUriInfo("http://localhost:9080/app/v1/bar", "\"bar\"", "/bar");
+        checkUriInfo("http://localhost:9080/app/v1/bar", "\"bar\"", "/bar");
+    }
+    
+    private void checkUriInfo(String address, String path, String pathParam) {
+        WebClient wc = WebClient.create(address);
+        wc.accept("text/plain");
+        String data = wc.get(String.class);
+        assertEquals("http://localhost:9080/app/v1/," + path + "," + pathParam, data);
+    }
+    
+    @Ignore
+    @Path("/")
+    public static class Resource {
+        
+        @Context
+        private UriInfo uriInfo;
+        
+        @GET
+        @Path("/{path:.*}")
+        @Produces("text/plain")
+        public String getBasePathAndPathParam(@PathParam("path") String path) {
+            StringBuilder sb = new StringBuilder();
+            sb.append(uriInfo.getBaseUri());
+            sb.append(",\"" + path + "\"");
+            sb.append("," + uriInfo.getPath());
+            return sb.toString();
+        }
+
+    }
+}

Propchange: cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSUriInfoTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSUriInfoTest.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: cxf/trunk/systests/jaxrs/src/test/resources/jaxrs_uriinfo/WEB-INF/beans.xml
URL: http://svn.apache.org/viewvc/cxf/trunk/systests/jaxrs/src/test/resources/jaxrs_uriinfo/WEB-INF/beans.xml?rev=897812&view=auto
==============================================================================
--- cxf/trunk/systests/jaxrs/src/test/resources/jaxrs_uriinfo/WEB-INF/beans.xml (added)
+++ cxf/trunk/systests/jaxrs/src/test/resources/jaxrs_uriinfo/WEB-INF/beans.xml Mon Jan 11
09:31:09 2010
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+	<!--
+		Licensed to the Apache Software Foundation (ASF) under one or more
+		contributor license agreements. See the NOTICE file distributed with
+		this work for additional information regarding copyright ownership.
+		The ASF licenses this file to you 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.
+	-->
+	<!-- START SNIPPET: beans -->
+	<!--
+		beans xmlns="http://www.springframework.org/schema/beans"
+		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+		xmlns:simple="http://cxf.apache.org/simple" xsi:schemaLocation="
+		http://www.springframework.org/schema/beans
+		http://www.springframework.org/schema/beans/spring-beans.xsd
+		http://cxf.apache.org/simple http://cxf.apache.org/schemas/simple.xsd"
+	-->
+<beans xmlns="http://www.springframework.org/schema/beans"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxrs="http://cxf.apache.org/jaxrs"
+	xmlns:util="http://www.springframework.org/schema/util"
+	xsi:schemaLocation="
+http://www.springframework.org/schema/beans 
+http://www.springframework.org/schema/beans/spring-beans.xsd
+http://cxf.apache.org/jaxrs 
+http://cxf.apache.org/schemas/jaxrs.xsd
+http://www.springframework.org/schema/util 
+http://www.springframework.org/schema/util/spring-util-2.0.xsd">
+
+	<import resource="classpath:META-INF/cxf/cxf.xml" />
+	<import resource="classpath:META-INF/cxf/cxf-extension-jaxrs-binding.xml" />
+	<import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
+	
+	<jaxrs:server address="/">
+		<jaxrs:serviceBeans>
+			<bean class="org.apache.cxf.systest.jaxrs.JAXRSUriInfoTest$Resource"/>
+		</jaxrs:serviceBeans>
+	</jaxrs:server>
+	
+</beans>
+	<!-- END SNIPPET: beans -->
+

Propchange: cxf/trunk/systests/jaxrs/src/test/resources/jaxrs_uriinfo/WEB-INF/beans.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cxf/trunk/systests/jaxrs/src/test/resources/jaxrs_uriinfo/WEB-INF/beans.xml
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Propchange: cxf/trunk/systests/jaxrs/src/test/resources/jaxrs_uriinfo/WEB-INF/beans.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Added: cxf/trunk/systests/jaxrs/src/test/resources/jaxrs_uriinfo/WEB-INF/web.xml
URL: http://svn.apache.org/viewvc/cxf/trunk/systests/jaxrs/src/test/resources/jaxrs_uriinfo/WEB-INF/web.xml?rev=897812&view=auto
==============================================================================
--- cxf/trunk/systests/jaxrs/src/test/resources/jaxrs_uriinfo/WEB-INF/web.xml (added)
+++ cxf/trunk/systests/jaxrs/src/test/resources/jaxrs_uriinfo/WEB-INF/web.xml Mon Jan 11 09:31:09
2010
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE web-app
+    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
+    "http://java.sun.com/dtd/web-app_2_3.dtd">
+<!--
+	Licensed to the Apache Software Foundation (ASF) under one
+	or more contributor license agreements. See the NOTICE file
+	distributed with this work for additional information
+	regarding copyright ownership. The ASF licenses this file
+	to you 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.
+-->
+<!-- START SNIPPET: webxml -->
+<web-app>
+	<context-param>
+		<param-name>contextConfigLocation</param-name>
+		<param-value>WEB-INF/beans.xml</param-value>
+	</context-param>
+
+	<listener>
+		<listener-class>
+			org.springframework.web.context.ContextLoaderListener
+		</listener-class>
+	</listener>
+
+	<servlet>
+		<servlet-name>CXFServlet</servlet-name>
+		<display-name>CXF Servlet</display-name>
+		<servlet-class>
+			org.apache.cxf.transport.servlet.CXFServlet
+		</servlet-class>
+		<load-on-startup>1</load-on-startup>
+	</servlet>
+	
+	<servlet-mapping>
+		<servlet-name>CXFServlet</servlet-name>
+		<url-pattern>/v1/*</url-pattern>
+	</servlet-mapping>
+	
+</web-app>
+<!-- END SNIPPET: webxml -->

Propchange: cxf/trunk/systests/jaxrs/src/test/resources/jaxrs_uriinfo/WEB-INF/web.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cxf/trunk/systests/jaxrs/src/test/resources/jaxrs_uriinfo/WEB-INF/web.xml
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Propchange: cxf/trunk/systests/jaxrs/src/test/resources/jaxrs_uriinfo/WEB-INF/web.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml



Mime
View raw message