Procházet zdrojové kódy

[MRM-1610] Use Jackson as jaxrs provider for cxf for performance reasons.

git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@1295496 13f79535-47bb-0310-9956-ffa450edef68
tags/archiva-1.4-M3
Olivier Lamy před 12 roky
rodič
revize
9b37010349

+ 6
- 1
archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-api/pom.xml Zobrazit soubor

@@ -33,6 +33,10 @@
<groupId>javax.xml.bind</groupId>
<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>
@@ -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>

+ 8
- 0
archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-api/src/main/java/org/apache/archiva/admin/model/beans/LegacyArtifactPath.java Zobrazit soubor

@@ -18,6 +18,9 @@ package org.apache.archiva.admin.model.beans;
* 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];

+ 12
- 2
archiva-modules/archiva-web/archiva-rest/archiva-rest-services/pom.xml Zobrazit soubor

@@ -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>

+ 1
- 0
archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/ArchivaRestError.java Zobrazit soubor

@@ -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;


+ 1
- 11
archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/resources/META-INF/spring-context.xml Zobrazit soubor

@@ -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"/>

+ 34
- 10
archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/AbstractArchivaRestTest.java Zobrazit soubor

@@ -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 AbstractArchivaRestTest
{
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 AbstractArchivaRestTest
{
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 AbstractArchivaRestTest
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 AbstractArchivaRestTest
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 AbstractArchivaRestTest
{
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 AbstractArchivaRestTest
{
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 AbstractArchivaRestTest
// 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 AbstractArchivaRestTest
{
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;
}


+ 16
- 1
pom.xml Zobrazit soubor

@@ -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>


Načítá se…
Zrušit
Uložit