ソースを参照

fix mapping with modelmapper

git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@1553476 13f79535-47bb-0310-9956-ffa450edef68
tags/archiva-2.0.0-RC1
Olivier Lamy 10年前
コミット
04d1d172a6

+ 3
- 16
archiva-modules/archiva-web/archiva-rest/archiva-rest-services/pom.xml ファイルの表示

@@ -180,23 +180,10 @@
</dependency>

<dependency>
<groupId>net.sf.beanlib</groupId>
<artifactId>beanlib</artifactId>
<exclusions>
<exclusion>
<groupId>cglib</groupId>
<artifactId>cglib</artifactId>
</exclusion>
<exclusion>
<groupId>aopalliance</groupId>
<artifactId>aopalliance</artifactId>
</exclusion>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
</exclusions>
<groupId>org.modelmapper</groupId>
<artifactId>modelmapper</artifactId>
</dependency>

<dependency>
<groupId>org.codehaus.woodstox</groupId>
<artifactId>woodstox-core-asl</artifactId>

+ 32
- 2
archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/AbstractRestService.java ファイルの表示

@@ -26,6 +26,7 @@ import org.apache.archiva.admin.model.managed.ManagedRepositoryAdmin;
import org.apache.archiva.audit.AuditEvent;
import org.apache.archiva.audit.AuditListener;
import org.apache.archiva.common.utils.VersionUtil;
import org.apache.archiva.indexer.search.SearchResultHit;
import org.apache.archiva.maven2.model.Artifact;
import org.apache.archiva.metadata.model.ArtifactMetadata;
import org.apache.archiva.metadata.repository.RepositorySessionFactory;
@@ -46,6 +47,8 @@ import org.apache.archiva.security.ArchivaSecurityException;
import org.apache.archiva.security.PrincipalNotFoundException;
import org.apache.archiva.security.UserRepositories;
import org.apache.commons.lang.StringUtils;
import org.modelmapper.ModelMapper;
import org.modelmapper.PropertyMap;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.ApplicationContext;
@@ -83,7 +86,7 @@ public abstract class AbstractRestService
* FIXME: this could be multiple implementations and needs to be configured.
*/
@Inject
@Named(value = "repositorySessionFactory")
@Named( value = "repositorySessionFactory" )
protected RepositorySessionFactory repositorySessionFactory;

@Inject
@@ -96,7 +99,7 @@ public abstract class AbstractRestService
protected RepositoryContentFactory repositoryContentFactory;

@Inject
@Named(value = "archivaTaskScheduler#repository")
@Named( value = "archivaTaskScheduler#repository" )
protected DefaultRepositoryArchivaTaskScheduler repositoryTaskScheduler;


@@ -312,4 +315,31 @@ public abstract class AbstractRestService
}
return true;
}

private static class ModelMapperHolder
{
private static ModelMapper MODEL_MAPPER = new ModelMapper();

static
{
MODEL_MAPPER.addMappings( new SearchResultHitMap() );
}
}


private static class SearchResultHitMap
extends PropertyMap<SearchResultHit, Artifact>
{
protected void configure()
{
skip().setId( null );
}
}

;

protected ModelMapper getModelMapper()
{
return ModelMapperHolder.MODEL_MAPPER;
}
}

+ 1
- 2
archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultManagedRepositoriesService.java ファイルの表示

@@ -18,7 +18,6 @@ package org.apache.archiva.rest.services;
* under the License.
*/

import net.sf.beanlib.provider.replicator.BeanReplicator;
import org.apache.archiva.admin.model.RepositoryAdminException;
import org.apache.archiva.admin.model.RepositoryCommonValidator;
import org.apache.archiva.admin.model.beans.ManagedRepository;
@@ -170,7 +169,7 @@ public class DefaultManagedRepositoriesService
if ( stats != null )
{
ArchivaRepositoryStatistics archivaRepositoryStatistics =
new BeanReplicator().replicateBean( stats, ArchivaRepositoryStatistics.class );
getModelMapper().map( stats, ArchivaRepositoryStatistics.class );
archivaRepositoryStatistics.setDuration( archivaRepositoryStatistics.getScanEndTime().getTime()
- archivaRepositoryStatistics.getScanStartTime().getTime() );
archivaRepositoryStatistics.setLastScanDate(

+ 2
- 4
archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultRedbackRuntimeConfigurationService.java ファイルの表示

@@ -19,16 +19,15 @@ package org.apache.archiva.rest.services;
*/

import org.apache.archiva.admin.model.RepositoryAdminException;
import org.apache.archiva.admin.model.beans.RedbackRuntimeConfiguration;
import org.apache.archiva.admin.model.beans.LdapConfiguration;
import org.apache.archiva.admin.model.beans.RedbackRuntimeConfiguration;
import org.apache.archiva.admin.model.runtime.RedbackRuntimeConfigurationAdmin;
import org.apache.archiva.redback.authentication.Authenticator;
import org.apache.archiva.redback.common.ldap.connection.LdapConnection;
import org.apache.archiva.redback.common.ldap.user.LdapUserMapper;
import org.apache.archiva.redback.common.ldap.connection.DefaultLdapConnection;
import org.apache.archiva.redback.common.ldap.connection.LdapConnectionConfiguration;
import org.apache.archiva.redback.common.ldap.connection.LdapConnectionFactory;
import org.apache.archiva.redback.common.ldap.connection.LdapException;
import org.apache.archiva.redback.common.ldap.user.LdapUserMapper;
import org.apache.archiva.redback.components.cache.Cache;
import org.apache.archiva.redback.policy.CookieSettings;
import org.apache.archiva.redback.policy.PasswordRule;
@@ -40,7 +39,6 @@ import org.apache.archiva.rest.api.model.RedbackImplementationsInformations;
import org.apache.archiva.rest.api.model.UserManagerImplementationInformation;
import org.apache.archiva.rest.api.services.ArchivaRestServiceException;
import org.apache.archiva.rest.api.services.RedbackRuntimeConfigurationService;

import org.apache.commons.lang.StringUtils;
import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Service;

+ 2
- 3
archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultSearchService.java ファイルの表示

@@ -19,7 +19,6 @@ package org.apache.archiva.rest.services;
* under the License.
*/

import net.sf.beanlib.provider.replicator.BeanReplicator;
import org.apache.archiva.indexer.search.RepositorySearch;
import org.apache.archiva.indexer.search.RepositorySearchException;
import org.apache.archiva.indexer.search.SearchFields;
@@ -139,7 +138,7 @@ public class DefaultSearchService
{
return Collections.emptyList();
}
SearchFields searchField = new BeanReplicator().replicateBean( searchRequest, SearchFields.class );
SearchFields searchField = getModelMapper().map( searchRequest, SearchFields.class );
SearchResultLimits limits = new SearchResultLimits( 0 );

// if no repos set we use ones available for the user
@@ -219,7 +218,7 @@ public class DefaultSearchService
for ( String version : hit.getVersions() )
{

Artifact versionned = new BeanReplicator().replicateBean( hit, Artifact.class );
Artifact versionned = getModelMapper().map( hit, Artifact.class );

if ( StringUtils.isNotBlank( version ) )
{

+ 3
- 17
archiva-modules/plugins/maven2-repository/pom.xml ファイルの表示

@@ -141,22 +141,8 @@
<artifactId>wagon-provider-api</artifactId>
</dependency>
<dependency>
<groupId>net.sf.beanlib</groupId>
<artifactId>beanlib</artifactId>
<exclusions>
<exclusion>
<groupId>cglib</groupId>
<artifactId>cglib</artifactId>
</exclusion>
<exclusion>
<groupId>aopalliance</groupId>
<artifactId>aopalliance</artifactId>
</exclusion>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
</exclusions>
<groupId>org.modelmapper</groupId>
<artifactId>modelmapper</artifactId>
</dependency>
<dependency>
<groupId>org.apache.maven.wagon</groupId>
@@ -270,7 +256,7 @@
org.sonatype.aether.repository,
org.sonatype.aether.util,
org.sonatype.aether.util.artifact,
net.sf.beanlib.provider.replicator,
org.modelmapper,
org.apache.archiva.maven2.model,
org.sonatype.aether.util.graph.selector,
org.apache.archiva.metadata.model.maven2,

+ 12
- 2
archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/dependency/tree/maven2/TreeDependencyNodeVisitor.java ファイルの表示

@@ -18,9 +18,9 @@ package org.apache.archiva.dependency.tree.maven2;
* under the License.
*/

import net.sf.beanlib.provider.replicator.BeanReplicator;
import org.apache.archiva.maven2.model.Artifact;
import org.apache.archiva.maven2.model.TreeEntry;
import org.modelmapper.ModelMapper;
import org.sonatype.aether.graph.DependencyNode;
import org.sonatype.aether.graph.DependencyVisitor;

@@ -49,7 +49,7 @@ public class TreeDependencyNodeVisitor
public boolean visitEnter( DependencyNode dependencyNode )
{
TreeEntry entry = new TreeEntry(
new BeanReplicator().replicateBean( dependencyNode.getDependency().getArtifact(), Artifact.class ) );
getModelMapper().map( dependencyNode.getDependency().getArtifact(), Artifact.class ) );
entry.getArtifact().setScope( dependencyNode.getDependency().getScope() );
entry.setParent( currentEntry );
currentEntry = entry;
@@ -71,4 +71,14 @@ public class TreeDependencyNodeVisitor
currentEntry = currentEntry.getParent();
return true;
}

private static class ModelMapperHolder
{
private static ModelMapper MODEL_MAPPER = new ModelMapper();
}

protected ModelMapper getModelMapper()
{
return ModelMapperHolder.MODEL_MAPPER;
}
}

+ 2
- 2
archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/configuration/MockRepoAdmin.java ファイルの表示

@@ -18,7 +18,6 @@ package org.apache.archiva.configuration;
* under the License.
*/

import net.sf.beanlib.provider.replicator.BeanReplicator;
import org.apache.archiva.admin.model.AuditInformation;
import org.apache.archiva.admin.model.RepositoryAdminException;
import org.apache.archiva.admin.model.beans.ManagedRepository;
@@ -33,6 +32,7 @@ import org.apache.archiva.admin.model.proxyconnector.ProxyConnectorOrderComparat
import org.apache.archiva.admin.model.remote.RemoteRepositoryAdmin;
import org.apache.commons.lang.StringUtils;
import org.apache.maven.index.context.IndexingContext;
import org.modelmapper.ModelMapper;
import org.springframework.stereotype.Service;

import javax.inject.Inject;
@@ -279,7 +279,7 @@ public class MockRepoAdmin
{
return proxyConnectorConfiguration == null
? null
: new BeanReplicator().replicateBean( proxyConnectorConfiguration, ProxyConnector.class );
: new ModelMapper().map( proxyConnectorConfiguration, ProxyConnector.class );
}

public List<ProxyConnectorRule> getProxyConnectorRules()

+ 2
- 16
archiva-modules/plugins/metadata-store-cassandra/pom.xml ファイルの表示

@@ -69,22 +69,8 @@
</dependency>

<dependency>
<groupId>net.sf.beanlib</groupId>
<artifactId>beanlib</artifactId>
<exclusions>
<exclusion>
<groupId>cglib</groupId>
<artifactId>cglib</artifactId>
</exclusion>
<exclusion>
<groupId>aopalliance</groupId>
<artifactId>aopalliance</artifactId>
</exclusion>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
</exclusions>
<groupId>org.modelmapper</groupId>
<artifactId>modelmapper</artifactId>
</dependency>

<dependency>

+ 18
- 7
archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/CassandraMetadataRepository.java ファイルの表示

@@ -23,7 +23,6 @@ import com.google.common.base.Function;
import com.google.common.base.Predicate;
import com.google.common.collect.Iterables;
import com.netflix.astyanax.entitystore.EntityManager;
import net.sf.beanlib.provider.replicator.BeanReplicator;
import org.apache.archiva.configuration.ArchivaConfiguration;
import org.apache.archiva.metadata.model.ArtifactMetadata;
import org.apache.archiva.metadata.model.FacetedMetadata;
@@ -42,6 +41,7 @@ import org.apache.archiva.metadata.repository.cassandra.model.Project;
import org.apache.archiva.metadata.repository.cassandra.model.ProjectVersionMetadataModel;
import org.apache.archiva.metadata.repository.cassandra.model.Repository;
import org.apache.commons.lang.StringUtils;
import org.modelmapper.ModelMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

@@ -870,7 +870,7 @@ public class CassandraMetadataRepository
if ( projectVersionMetadataModel == null )
{
projectVersionMetadataModel =
new BeanReplicator().replicateBean( versionMetadata, ProjectVersionMetadataModel.class );
getModelMapper().map( versionMetadata, ProjectVersionMetadataModel.class );
projectVersionMetadataModel.setRowId( key );
}
projectVersionMetadataModel.setProjectId( projectId );
@@ -1162,7 +1162,7 @@ public class CassandraMetadataRepository

for ( ArtifactMetadataModel model : artifactMetadataModels )
{
ArtifactMetadata artifactMetadata = new BeanReplicator().replicateBean( model, ArtifactMetadata.class );
ArtifactMetadata artifactMetadata = getModelMapper().map( model, ArtifactMetadata.class );
populateFacets( artifactMetadata );
artifactMetadatas.add( artifactMetadata );
}
@@ -1269,7 +1269,7 @@ public class CassandraMetadataRepository

for ( ArtifactMetadataModel model : artifactMetadataModels )
{
ArtifactMetadata artifactMetadata = new BeanReplicator().replicateBean( model, ArtifactMetadata.class );
ArtifactMetadata artifactMetadata = getModelMapper().map( model, ArtifactMetadata.class );
populateFacets( artifactMetadata );
artifactMetadatas.add( artifactMetadata );
}
@@ -1380,7 +1380,7 @@ public class CassandraMetadataRepository

for ( ArtifactMetadataModel model : artifactMetadataModels )
{
ArtifactMetadata artifactMetadata = new BeanReplicator().replicateBean( model, ArtifactMetadata.class );
ArtifactMetadata artifactMetadata = getModelMapper().map( model, ArtifactMetadata.class );
populateFacets( artifactMetadata );
artifactMetadatas.add( artifactMetadata );
}
@@ -1450,7 +1450,7 @@ public class CassandraMetadataRepository
}

ProjectVersionMetadata projectVersionMetadata =
new BeanReplicator().replicateBean( projectVersionMetadataModel, ProjectVersionMetadata.class );
getModelMapper().map( projectVersionMetadataModel, ProjectVersionMetadata.class );

logger.debug( "getProjectVersion repoId: '{}', namespace: '{}', projectId: '{}', projectVersion: {} -> {}",
repoId, namespace, projectId, projectVersion, projectVersionMetadata );
@@ -1630,7 +1630,7 @@ public class CassandraMetadataRepository

for ( ArtifactMetadataModel model : artifactMetadataModels )
{
ArtifactMetadata artifactMetadata = new BeanReplicator().replicateBean( model, ArtifactMetadata.class );
ArtifactMetadata artifactMetadata = getModelMapper().map( model, ArtifactMetadata.class );
populateFacets( artifactMetadata );
artifactMetadatas.add( artifactMetadata );
}
@@ -1751,4 +1751,15 @@ public class CassandraMetadataRepository
throw new IllegalArgumentException(
"Access using " + aClass + " is not supported on the cassandra metadata storage" );
}


private static class ModelMapperHolder
{
private static ModelMapper MODEL_MAPPER = new ModelMapper();
}

protected ModelMapper getModelMapper()
{
return ModelMapperHolder.MODEL_MAPPER;
}
}

+ 0
- 15
pom.xml ファイルの表示

@@ -580,21 +580,6 @@
<version>0.6.2</version>
</dependency>

<dependency>
<groupId>net.sf.beanlib</groupId>
<artifactId>beanlib</artifactId>
<version>5.0.2beta</version>
<exclusions>
<exclusion>
<groupId>cglib</groupId>
<artifactId>cglib</artifactId>
</exclusion>
<exclusion>
<groupId>aopalliance</groupId>
<artifactId>aopalliance</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>

読み込み中…
キャンセル
保存