Author: olamy
Date: Thu Mar  1 10:28:16 2012
New Revision: 1295496

URL: http://svn.apache.org/viewvc?rev=1295496&view=rev
Log:
[MRM-1610] Use Jackson as jaxrs provider for cxf for performance reasons.

Modified:
    
archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-api/pom.xml
    
archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-api/src/main/java/org/apache/archiva/admin/model/beans/LegacyArtifactPath.java
    
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/pom.xml
    
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/ArchivaRestError.java
    
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/resources/META-INF/spring-context.xml
    
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/AbstractArchivaRestTest.java
    archiva/trunk/pom.xml

Modified: 
archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-api/pom.xml
URL: 
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-api/pom.xml?rev=1295496&r1=1295495&r2=1295496&view=diff
==============================================================================
--- 
archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-api/pom.xml
 (original)
+++ 
archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-api/pom.xml
 Thu Mar  1 10:28:16 2012
@@ -34,6 +34,10 @@
       <artifactId>jaxb-api</artifactId>
     </dependency>
     <dependency>
+      <groupId>org.codehaus.jackson</groupId>
+      <artifactId>jackson-core-asl</artifactId>
+    </dependency>
+    <dependency>
       <groupId>commons-collections</groupId>
       <artifactId>commons-collections</artifactId>
     </dependency>
@@ -98,7 +102,8 @@
               org.apache.commons.collections;version="[3.2,4)",
               org.apache.commons.lang;version="[2.4,3)",
               org.codehaus.plexus.redback.users,
-              org.apache.maven.index.context;resolution:=optional
+              org.apache.maven.index.context;resolution:=optional,
+              org.codehaus.jackson.annotate
             </Import-Package>
           </instructions>
         </configuration>

Modified: 
archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-api/src/main/java/org/apache/archiva/admin/model/beans/LegacyArtifactPath.java
URL: 
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-api/src/main/java/org/apache/archiva/admin/model/beans/LegacyArtifactPath.java?rev=1295496&r1=1295495&r2=1295496&view=diff
==============================================================================
--- 
archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-api/src/main/java/org/apache/archiva/admin/model/beans/LegacyArtifactPath.java
 (original)
+++ 
archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-api/src/main/java/org/apache/archiva/admin/model/beans/LegacyArtifactPath.java
 Thu Mar  1 10:28:16 2012
@@ -18,6 +18,9 @@ package org.apache.archiva.admin.model.b
  * under the License.
  */
 
+import org.codehaus.jackson.annotate.JsonIgnore;
+import org.codehaus.jackson.annotate.JsonIgnoreProperties;
+
 import javax.xml.bind.annotation.XmlRootElement;
 import java.io.Serializable;
 
@@ -76,27 +79,32 @@ public class LegacyArtifactPath
         return path.equals( this.path );
     }
 
+    @JsonIgnore
     public String getGroupId()
     {
         return artifact.split( ":" )[0];
     }
 
+    @JsonIgnore
     public String getArtifactId()
     {
         return artifact.split( ":" )[1];
     }
 
+    @JsonIgnore
     public String getVersion()
     {
         return artifact.split( ":" )[2];
     }
 
+    @JsonIgnore
     public String getClassifier()
     {
         String classifier = artifact.split( ":" )[3];
         return classifier.length() > 0 ? classifier : null;
     }
 
+    @JsonIgnore
     public String getType()
     {
         return artifact.split( ":" )[4];

Modified: 
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/pom.xml
URL: 
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/pom.xml?rev=1295496&r1=1295495&r2=1295496&view=diff
==============================================================================
--- 
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/pom.xml
 (original)
+++ 
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/pom.xml
 Thu Mar  1 10:28:16 2012
@@ -149,12 +149,18 @@
           </exclusion>
         </exclusions>
     </dependency>
-    <!--
     <dependency>
       <groupId>org.codehaus.jackson</groupId>
       <artifactId>jackson-jaxrs</artifactId>
     </dependency>
-    -->
+    <dependency>
+      <groupId>org.codehaus.jackson</groupId>
+      <artifactId>jackson-xc</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.codehaus.jackson</groupId>
+      <artifactId>jackson-core-asl</artifactId>
+    </dependency>
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-bundle-jaxrs</artifactId>
@@ -163,6 +169,10 @@
           <groupId>org.eclipse.jetty</groupId>
           <artifactId>jetty-server</artifactId>
         </exclusion>
+        <exclusion>
+          <groupId>org.codehaus.jettison</groupId>
+          <artifactId>jettison</artifactId>
+        </exclusion>
       </exclusions>
     </dependency>
     <dependency>

Modified: 
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/ArchivaRestError.java
URL: 
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/ArchivaRestError.java?rev=1295496&r1=1295495&r2=1295496&view=diff
==============================================================================
--- 
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/ArchivaRestError.java
 (original)
+++ 
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/ArchivaRestError.java
 Thu Mar  1 10:28:16 2012
@@ -19,6 +19,7 @@ package org.apache.archiva.rest.services
  */
 
 import org.apache.archiva.rest.api.services.ArchivaRestServiceException;
+import org.codehaus.jackson.annotate.JsonIgnoreProperties;
 
 import javax.xml.bind.annotation.XmlRootElement;
 

Modified: 
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/resources/META-INF/spring-context.xml
URL: 
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/resources/META-INF/spring-context.xml?rev=1295496&r1=1295495&r2=1295496&view=diff
==============================================================================
--- 
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/resources/META-INF/spring-context.xml
 (original)
+++ 
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/resources/META-INF/spring-context.xml
 Thu Mar  1 10:28:16 2012
@@ -38,23 +38,13 @@
   <context:annotation-config/>
   <context:component-scan
       base-package="org.apache.archiva.rest.services"/>
-  <!-- convertTypesToStrings -->
 
-  <bean id="jsonProvider" class="org.apache.cxf.jaxrs.provider.JSONProvider">
-    <!-- without that String 2.0 are transformed to 2 which is not correct for 
versions -->
-    <!-- side effect json boolean are string rather than boolean -->
-    <property name="convertTypesToStrings" value="true"/>
-    <!--property name="serializeAsArray" value="true"/--> 
-
-  </bean>
 
   <jaxrs:server id="archivaServices" address="/archivaServices">
 
     <jaxrs:providers>
-      <ref bean="jsonProvider"/>
-      <!--
       <bean class="org.codehaus.jackson.jaxrs.JacksonJsonProvider"/>
-      -->
+
       <ref bean="authenticationInterceptor#rest"/>
       <ref bean="permissionInterceptor#rest"/>
       <ref bean="archivaRestServiceExceptionMapper"/>

Modified: 
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/AbstractArchivaRestTest.java
URL: 
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/AbstractArchivaRestTest.java?rev=1295496&r1=1295495&r2=1295496&view=diff
==============================================================================
--- 
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/AbstractArchivaRestTest.java
 (original)
+++ 
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/AbstractArchivaRestTest.java
 Thu Mar  1 10:28:16 2012
@@ -36,11 +36,13 @@ import org.apache.commons.io.FileUtils;
 import org.apache.commons.lang.StringUtils;
 import org.apache.cxf.jaxrs.client.JAXRSClientFactory;
 import org.apache.cxf.jaxrs.client.WebClient;
+import org.codehaus.jackson.jaxrs.JacksonJaxbJsonProvider;
 import org.codehaus.redback.rest.services.AbstractRestServicesTest;
 import org.junit.Before;
 
 import javax.ws.rs.core.MediaType;
 import java.io.File;
+import java.util.Collections;
 import java.util.Date;
 
 /**
@@ -100,13 +102,16 @@ public abstract class AbstractArchivaRes
     {
         RepositoriesService service =
             JAXRSClientFactory.create( getBaseUrl() + "/" + 
getRestServicesPath() + "/archivaServices/",
-                                       RepositoriesService.class );
+                                       RepositoriesService.class,
+                                       Collections.singletonList( new 
JacksonJaxbJsonProvider() ) );
 
         if ( authzHeader != null )
         {
             WebClient.client( service ).header( "Authorization", authzHeader );
         }
         WebClient.getConfig( service 
).getHttpConduit().getClient().setReceiveTimeout( 100000000 );
+        WebClient.client( service ).accept( MediaType.APPLICATION_JSON_TYPE );
+        WebClient.client( service ).type( MediaType.APPLICATION_JSON_TYPE );
         return service;
 
     }
@@ -115,13 +120,16 @@ public abstract class AbstractArchivaRes
     {
         ManagedRepositoriesService service =
             JAXRSClientFactory.create( getBaseUrl() + "/" + 
getRestServicesPath() + "/archivaServices/",
-                                       ManagedRepositoriesService.class );
+                                       ManagedRepositoriesService.class,
+                                       Collections.singletonList( new 
JacksonJaxbJsonProvider() ) );
 
         if ( authzHeader != null )
         {
             WebClient.client( service ).header( "Authorization", authzHeader );
         }
         WebClient.getConfig( service 
).getHttpConduit().getClient().setReceiveTimeout( 100000000 );
+        WebClient.client( service ).accept( MediaType.APPLICATION_JSON_TYPE );
+        WebClient.client( service ).type( MediaType.APPLICATION_JSON_TYPE );
         return service;
 
     }
@@ -129,13 +137,15 @@ public abstract class AbstractArchivaRes
     protected PingService getPingService()
     {
         return JAXRSClientFactory.create( getBaseUrl() + "/" + 
getRestServicesPath() + "/archivaServices/",
-                                          PingService.class );
+                                          PingService.class,
+                                          Collections.singletonList( new 
JacksonJaxbJsonProvider() ) );
     }
 
     protected RemoteRepositoriesService getRemoteRepositoriesService()
     {
         return JAXRSClientFactory.create( getBaseUrl() + "/" + 
getRestServicesPath() + "/archivaServices/",
-                                          RemoteRepositoriesService.class );
+                                          RemoteRepositoriesService.class,
+                                          Collections.singletonList( new 
JacksonJaxbJsonProvider() ) );
 
 
     }
@@ -143,17 +153,21 @@ public abstract class AbstractArchivaRes
     protected RepositoryGroupService getRepositoryGroupService()
     {
         return JAXRSClientFactory.create( getBaseUrl() + "/" + 
getRestServicesPath() + "/archivaServices/",
-                                          RepositoryGroupService.class );
+                                          RepositoryGroupService.class,
+                                          Collections.singletonList( new 
JacksonJaxbJsonProvider() ) );
     }
 
     protected ProxyConnectorService getProxyConnectorService()
     {
         ProxyConnectorService service =
             JAXRSClientFactory.create( getBaseUrl() + "/" + 
getRestServicesPath() + "/archivaServices/",
-                                       ProxyConnectorService.class );
+                                       ProxyConnectorService.class,
+                                       Collections.singletonList( new 
JacksonJaxbJsonProvider() ) );
 
         WebClient.client( service ).header( "Authorization", 
authorizationHeader );
         WebClient.getConfig( service 
).getHttpConduit().getClient().setReceiveTimeout( 300000 );
+        WebClient.client( service ).accept( MediaType.APPLICATION_JSON_TYPE );
+        WebClient.client( service ).type( MediaType.APPLICATION_JSON_TYPE );
         return service;
     }
 
@@ -161,10 +175,13 @@ public abstract class AbstractArchivaRes
     {
         NetworkProxyService service =
             JAXRSClientFactory.create( getBaseUrl() + "/" + 
getRestServicesPath() + "/archivaServices/",
-                                       NetworkProxyService.class );
+                                       NetworkProxyService.class,
+                                       Collections.singletonList( new 
JacksonJaxbJsonProvider() ) );
 
         WebClient.client( service ).header( "Authorization", 
authorizationHeader );
         WebClient.getConfig( service 
).getHttpConduit().getClient().setReceiveTimeout( 300000 );
+        WebClient.client( service ).accept( MediaType.APPLICATION_JSON_TYPE );
+        WebClient.client( service ).type( MediaType.APPLICATION_JSON_TYPE );
         return service;
     }
 
@@ -172,7 +189,8 @@ public abstract class AbstractArchivaRes
     {
         ArchivaAdministrationService service =
             JAXRSClientFactory.create( getBaseUrl() + "/" + 
getRestServicesPath() + "/archivaServices/",
-                                       ArchivaAdministrationService.class );
+                                       ArchivaAdministrationService.class,
+                                       Collections.singletonList( new 
JacksonJaxbJsonProvider() ) );
 
         WebClient.client( service ).accept( MediaType.APPLICATION_JSON_TYPE );
         WebClient.client( service ).type( MediaType.APPLICATION_JSON_TYPE );
@@ -187,13 +205,16 @@ public abstract class AbstractArchivaRes
         // START SNIPPET: cxf-searchservice-creation
         SearchService service =
             JAXRSClientFactory.create( getBaseUrl() + "/" + 
getRestServicesPath() + "/archivaServices/",
-                                       SearchService.class );
+                                       SearchService.class,
+                                       Collections.singletonList( new 
JacksonJaxbJsonProvider() ) );
 
         if ( authzHeader != null )
         {
             WebClient.client( service ).header( "Authorization", authzHeader );
         }
         WebClient.getConfig( service 
).getHttpConduit().getClient().setReceiveTimeout( 100000000 );
+        WebClient.client( service ).accept( MediaType.APPLICATION_JSON_TYPE );
+        WebClient.client( service ).type( MediaType.APPLICATION_JSON_TYPE );
         return service;
         // END SNIPPET: cxf-searchservice-creation
 
@@ -203,13 +224,16 @@ public abstract class AbstractArchivaRes
     {
         CommonServices service =
             JAXRSClientFactory.create( getBaseUrl() + "/" + 
getRestServicesPath() + "/archivaServices/",
-                                       CommonServices.class );
+                                       CommonServices.class,
+                                       Collections.singletonList( new 
JacksonJaxbJsonProvider() ) );
 
         if ( authzHeader != null )
         {
             WebClient.client( service ).header( "Authorization", authzHeader );
         }
         WebClient.getConfig( service 
).getHttpConduit().getClient().setReceiveTimeout( 100000000 );
+        WebClient.client( service ).accept( MediaType.APPLICATION_JSON_TYPE );
+        WebClient.client( service ).type( MediaType.APPLICATION_JSON_TYPE );
         return service;
     }
 

Modified: archiva/trunk/pom.xml
URL: 
http://svn.apache.org/viewvc/archiva/trunk/pom.xml?rev=1295496&r1=1295495&r2=1295496&view=diff
==============================================================================
--- archiva/trunk/pom.xml (original)
+++ archiva/trunk/pom.xml Thu Mar  1 10:28:16 2012
@@ -93,6 +93,7 @@
     <httpclient.core.version>4.1.4</httpclient.core.version>
     <javaxMailVersion>1.4</javaxMailVersion>
     <jettyVersion>7.4.5.v20110725</jettyVersion>
+    <jacksonVersion>1.9.5</jacksonVersion>
     <!-- restore when we will be able to use a derby in memory database -->
     
<redbackTestJdbcUrl>jdbc:derby:memory:users-test;create=true</redbackTestJdbcUrl>
     
<redbackTestJdbcDriver>org.apache.derby.jdbc.EmbeddedDriver</redbackTestJdbcDriver>
@@ -473,7 +474,17 @@
       <dependency>
         <groupId>org.codehaus.jackson</groupId>
         <artifactId>jackson-jaxrs</artifactId>
-        <version>1.9.5</version>
+        <version>${jacksonVersion}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.codehaus.jackson</groupId>
+        <artifactId>jackson-xc</artifactId>
+        <version>${jacksonVersion}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.codehaus.jackson</groupId>
+        <artifactId>jackson-core-asl</artifactId>
+        <version>${jacksonVersion}</version>
       </dependency>
       <dependency>
         <groupId>org.apache.cxf</groupId>
@@ -488,6 +499,10 @@
             <groupId>commons-logging</groupId>
             <artifactId>commons-logging</artifactId>
           </exclusion>
+          <exclusion>
+            <groupId>org.codehaus.jettison</groupId>
+            <artifactId>jettison</artifactId>
+          </exclusion>
         </exclusions>
       </dependency>
 


Reply via email to