Author: olamy
Date: Tue Mar 6 18:30:59 2012
New Revision: 1297637
URL: http://svn.apache.org/viewvc?rev=1297637&view=rev
Log:
add validation on adding LegacyPath rest method
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
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultArchivaAdministrationService.java
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/ArchivaAdministrationServiceTest.java
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=1297637&r1=1297636&r2=1297637&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
Tue Mar 6 18:30:59 2012
@@ -18,9 +18,6 @@ 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;
@@ -43,6 +40,16 @@ public class LegacyArtifactPath
*/
private String artifact;
+ private String groupId;
+
+ private String artifactId;
+
+ private String version;
+
+ private String classifier;
+
+ private String type;
+
public LegacyArtifactPath()
{
// no op
@@ -51,7 +58,25 @@ public class LegacyArtifactPath
public LegacyArtifactPath( String path, String artifact )
{
this.path = path;
+
this.artifact = artifact;
+ initValues( this.artifact );
+ }
+
+ private void initValues( String artifact )
+ {
+ String[] splitted = artifact.split( ":" );
+ if ( splitted.length < 4 )
+ {
+ throw new IllegalArgumentException( "artifact value '" + artifact
+ "' is not correct" );
+ }
+ this.groupId = splitted[0];// artifact.split( ":" )[0];
+ this.artifactId = splitted[1];// artifact.split( ":" )[1];
+ this.version = splitted[2];// artifact.split( ":" )[2];
+ String classifier = splitted.length >= 4 ? splitted[3] : null;//
artifact.split( ":" )[3];
+ this.classifier = classifier.length() > 0 ? classifier : null;
+ String type = splitted.length >= 5 ? splitted[4] : null;
+ this.type = type.length() > 0 ? artifact.split( ":" )[4] : null;
}
public String getPath()
@@ -72,6 +97,7 @@ public class LegacyArtifactPath
public void setArtifact( String artifact )
{
this.artifact = artifact;
+ initValues( this.artifact );
}
public boolean match( String path )
@@ -79,35 +105,42 @@ public class LegacyArtifactPath
return path.equals( this.path );
}
- @JsonIgnore
+ public void setGroupId( String groupId )
+ {
+ this.groupId = groupId;
+ }
+
public String getGroupId()
{
- return artifact.split( ":" )[0];
+ return this.groupId;// artifact.split( ":" )[0];
}
- @JsonIgnore
+
public String getArtifactId()
{
- return artifact.split( ":" )[1];
+ return this.artifactId;// artifact.split( ":" )[1];
+ }
+
+ public void setArtifactId( String artifactId )
+ {
+ this.artifactId = artifactId;
}
- @JsonIgnore
public String getVersion()
{
- return artifact.split( ":" )[2];
+ return this.version;// artifact.split( ":" )[2];
}
- @JsonIgnore
public String getClassifier()
{
- String classifier = artifact.split( ":" )[3];
- return classifier.length() > 0 ? classifier : null;
+ //String classifier = artifact.split( ":" )[3];
+ //return classifier.length() > 0 ? classifier : null;
+ return this.classifier;
}
- @JsonIgnore
public String getType()
{
- return artifact.split( ":" )[4];
+ return this.type;// artifact.split( ":" )[4];
}
@Override
@@ -145,6 +178,11 @@ public class LegacyArtifactPath
sb.append( "LegacyArtifactPath" );
sb.append( "{path='" ).append( path ).append( '\'' );
sb.append( ", artifact='" ).append( artifact ).append( '\'' );
+ sb.append( ", groupId='" ).append( groupId ).append( '\'' );
+ sb.append( ", artifactId='" ).append( artifactId ).append( '\'' );
+ sb.append( ", version='" ).append( version ).append( '\'' );
+ sb.append( ", classifier='" ).append( classifier ).append( '\'' );
+ sb.append( ", type='" ).append( type ).append( '\'' );
sb.append( '}' );
return sb.toString();
}
Modified:
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultArchivaAdministrationService.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/DefaultArchivaAdministrationService.java?rev=1297637&r1=1297636&r2=1297637&view=diff
==============================================================================
---
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultArchivaAdministrationService.java
(original)
+++
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultArchivaAdministrationService.java
Tue Mar 6 18:30:59 2012
@@ -25,11 +25,16 @@ import org.apache.archiva.admin.model.be
import org.apache.archiva.admin.model.beans.NetworkConfiguration;
import org.apache.archiva.admin.model.beans.OrganisationInformation;
import org.apache.archiva.admin.model.beans.UiConfiguration;
+import org.apache.archiva.model.ArtifactReference;
+import org.apache.archiva.repository.ManagedRepositoryContent;
import org.apache.archiva.rest.api.services.ArchivaAdministrationService;
import org.apache.archiva.rest.api.services.ArchivaRestServiceException;
+import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Service;
import javax.inject.Inject;
+import javax.inject.Named;
+import javax.ws.rs.core.Response;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@@ -46,6 +51,10 @@ public class DefaultArchivaAdministratio
@Inject
private ArchivaAdministration archivaAdministration;
+ @Inject
+ @Named( value = "managedRepositoryContent#legacy" )
+ private ManagedRepositoryContent repositoryContent;
+
public List<LegacyArtifactPath> getLegacyArtifactPaths()
throws ArchivaRestServiceException
{
@@ -62,8 +71,26 @@ public class DefaultArchivaAdministratio
public void addLegacyArtifactPath( LegacyArtifactPath legacyArtifactPath )
throws ArchivaRestServiceException
{
+
+ // Check the proposed Artifact macthes the path
+ ArtifactReference artifact = new ArtifactReference();
+
+ artifact.setGroupId( legacyArtifactPath.getGroupId() );
+ artifact.setArtifactId( legacyArtifactPath.getArtifactId() );
+ artifact.setClassifier( legacyArtifactPath.getClassifier() );
+ artifact.setVersion( legacyArtifactPath.getVersion() );
+ artifact.setType( legacyArtifactPath.getType() );
+ String path = repositoryContent.toPath( artifact );
+ if ( !StringUtils.equals( path, legacyArtifactPath.getPath() ) )
+ {
+ throw new ArchivaRestServiceException(
+ "artifact path reference '" + legacyArtifactPath.getPath() +
"' does not match the initial path: '"
+ + path + "'", Response.Status.BAD_REQUEST.getStatusCode()
);
+ }
+
try
{
+
archivaAdministration.addLegacyArtifactPath( legacyArtifactPath,
getAuditInformation() );
}
catch ( RepositoryAdminException e )
Modified:
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/ArchivaAdministrationServiceTest.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/ArchivaAdministrationServiceTest.java?rev=1297637&r1=1297636&r2=1297637&view=diff
==============================================================================
---
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/ArchivaAdministrationServiceTest.java
(original)
+++
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/ArchivaAdministrationServiceTest.java
Tue Mar 6 18:30:59 2012
@@ -45,14 +45,16 @@ public class ArchivaAdministrationServic
public void addAndDeleteLegacyPath()
throws Exception
{
+ //Path jaxen/jars/jaxen-1.0-FCS-full.jar
+ //Artifact jaxen:jaxen:1.0-FCS:full:jar
int initialSize =
getArchivaAdministrationService().getLegacyArtifactPaths().size();
LegacyArtifactPath legacyArtifactPath = new LegacyArtifactPath();
- legacyArtifactPath.setArtifact( "foo" );
- legacyArtifactPath.setPath( "bar" );
+ legacyArtifactPath.setArtifact( "wine:bordeaux:2006:GREAT:jar" );
+ legacyArtifactPath.setPath( "wine/jars/bordeaux-2006-GREAT.jar" );
getArchivaAdministrationService().addLegacyArtifactPath(
legacyArtifactPath );
assertEquals( initialSize + 1,
getArchivaAdministrationService().getLegacyArtifactPaths().size() );
- getArchivaAdministrationService().deleteLegacyArtifactPath( "bar" );
+ getArchivaAdministrationService().deleteLegacyArtifactPath(
"wine/jars/bordeaux-2006-GREAT.jar" );
assertEquals( initialSize,
getArchivaAdministrationService().getLegacyArtifactPaths().size() );
}