You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@archiva.apache.org by jo...@apache.org on 2007/10/26 20:16:44 UTC
svn commit: r588732 - in /maven/archiva/trunk:
archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/content/
archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/content/
archiva-web...
Author: joakime
Date: Fri Oct 26 11:16:43 2007
New Revision: 588732
URL: http://svn.apache.org/viewvc?rev=588732&view=rev
Log:
[MRM-481] Artifact requests with a .xml.zip extension fail with a 404 Error
Fixed parsing of filenames to look for "." or "-" after the version to help determine if this artifact has a classifier or just a double-extension.
Added unit tests to repository.content.* classes for double extension.
Added unit test to RepositoryServlet for GET of artifact with double extension.
Modified:
maven/archiva/trunk/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/content/ArtifactExtensionMapping.java
maven/archiva/trunk/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/content/DefaultPathParser.java
maven/archiva/trunk/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/content/FilenameParser.java
maven/archiva/trunk/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/content/DefaultPathParserTest.java
maven/archiva/trunk/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/content/FilenameParserTest.java
maven/archiva/trunk/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/content/LegacyPathParserTest.java
maven/archiva/trunk/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/content/RepositoryRequestTest.java
maven/archiva/trunk/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/repository/RepositoryServletNoProxyTest.java
Modified: maven/archiva/trunk/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/content/ArtifactExtensionMapping.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/content/ArtifactExtensionMapping.java?rev=588732&r1=588731&r2=588732&view=diff
==============================================================================
--- maven/archiva/trunk/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/content/ArtifactExtensionMapping.java (original)
+++ maven/archiva/trunk/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/content/ArtifactExtensionMapping.java Fri Oct 26 11:16:43 2007
@@ -67,7 +67,7 @@
}
// Return type
- return type;
+ return type.replace( '-', '.' );
}
public static String guessTypeFromFilename( File file )
Modified: maven/archiva/trunk/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/content/DefaultPathParser.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/content/DefaultPathParser.java?rev=588732&r1=588731&r2=588732&view=diff
==============================================================================
--- maven/archiva/trunk/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/content/DefaultPathParser.java (original)
+++ maven/archiva/trunk/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/content/DefaultPathParser.java Fri Oct 26 11:16:43 2007
@@ -143,10 +143,25 @@
}
// Do we have a classifier?
- artifact.setClassifier( parser.remaining() );
-
- // Set the type.
- artifact.setType( ArtifactExtensionMapping.guessTypeFromFilename( filename ) );
+ switch(parser.seperator())
+ {
+ case '-':
+ // Definately a classifier.
+ artifact.setClassifier( parser.remaining() );
+
+ // Set the type.
+ artifact.setType( ArtifactExtensionMapping.guessTypeFromFilename( filename ) );
+ break;
+ case '.':
+ // We have an dual extension possibility.
+ String extension = parser.remaining() + '.' + parser.getExtension();
+ artifact.setType( extension.replace( '.', '-' ) );
+ break;
+ case 0:
+ // End of the filename, only a simple extension left. - Set the type.
+ artifact.setType( ArtifactExtensionMapping.guessTypeFromFilename( filename ) );
+ break;
+ }
// Special case for maven plugins
if ( StringUtils.equals( "jar", artifact.getType() ) &&
Modified: maven/archiva/trunk/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/content/FilenameParser.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/content/FilenameParser.java?rev=588732&r1=588731&r2=588732&view=diff
==============================================================================
--- maven/archiva/trunk/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/content/FilenameParser.java (original)
+++ maven/archiva/trunk/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/content/FilenameParser.java Fri Oct 26 11:16:43 2007
@@ -113,6 +113,28 @@
return null;
}
+
+ /**
+ * Get the current seperator character.
+ *
+ * @return the seperator character (either '.' or '-'), or 0 if no seperator character available.
+ */
+ protected char seperator()
+ {
+ // Past the end of the string?
+ if ( offset >= name.length() )
+ {
+ return 0;
+ }
+
+ // Before the start of the string?
+ if ( offset <= 0 )
+ {
+ return 0;
+ }
+
+ return name.charAt( offset - 1 );
+ }
protected String getName()
{
@@ -207,4 +229,6 @@
return ver.toString();
}
+
+
}
Modified: maven/archiva/trunk/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/content/DefaultPathParserTest.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/content/DefaultPathParserTest.java?rev=588732&r1=588731&r2=588732&view=diff
==============================================================================
--- maven/archiva/trunk/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/content/DefaultPathParserTest.java (original)
+++ maven/archiva/trunk/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/content/DefaultPathParserTest.java Fri Oct 26 11:16:43 2007
@@ -52,6 +52,22 @@
}
/**
+ * [MRM-481] Artifact requests with a .xml.zip extension fail with a 404 Error
+ */
+ public void testGoodButDualExtensions()
+ throws LayoutException
+ {
+ String groupId = "org.project";
+ String artifactId = "example-presentation";
+ String version = "3.2";
+ String classifier = null;
+ String type = "xml-zip";
+ String path = "org/project/example-presentation/3.2/example-presentation-3.2.xml.zip";
+
+ assertLayout( path, groupId, artifactId, version, classifier, type );
+ }
+
+ /**
* [MRM-432] Oddball version spec.
* Example of an oddball / unusual version spec.
* @throws LayoutException
Modified: maven/archiva/trunk/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/content/FilenameParserTest.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/content/FilenameParserTest.java?rev=588732&r1=588731&r2=588732&view=diff
==============================================================================
--- maven/archiva/trunk/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/content/FilenameParserTest.java (original)
+++ maven/archiva/trunk/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/content/FilenameParserTest.java Fri Oct 26 11:16:43 2007
@@ -97,10 +97,25 @@
assertEquals( "ganymede-ssh2", parser.expect( "ganymede-ssh2" ) );
assertEquals( "build250", parser.expect( "build250" ) );
+ assertEquals( '-', parser.seperator() );
assertEquals( "sources", parser.remaining() );
assertNull( parser.expect( "jar" ) );
}
+
+ public void testExpectWithRemainingDualExtensions()
+ {
+ FilenameParser parser = new FilenameParser( "example-presentation-3.2.xml.zip" );
+
+ assertEquals( "example-presentation-3.2.xml", parser.getName() );
+ assertEquals( "zip", parser.getExtension() );
+
+ assertEquals( "example-presentation", parser.expect( "example-presentation" ) );
+ assertEquals( "3.2", parser.expect( "3.2" ) );
+ assertEquals( '.', parser.seperator() );
+ assertEquals( "xml", parser.remaining() );
+
+ }
public void testNextNonVersion()
{
Modified: maven/archiva/trunk/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/content/LegacyPathParserTest.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/content/LegacyPathParserTest.java?rev=588732&r1=588731&r2=588732&view=diff
==============================================================================
--- maven/archiva/trunk/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/content/LegacyPathParserTest.java (original)
+++ maven/archiva/trunk/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/content/LegacyPathParserTest.java Fri Oct 26 11:16:43 2007
@@ -58,6 +58,21 @@
{
assertBadPath( "org.apache.maven.test/jars/artifactId-1.0.war", "wrong package extension" );
}
+
+ /**
+ * [MRM-481] Artifact requests with a .xml.zip extension fail with a 404 Error
+ */
+ public void testGoodButDualExtensions()
+ throws LayoutException
+ {
+ String groupId = "org.project";
+ String artifactId = "example-presentation";
+ String version = "3.2.xml";
+ String type = "distribution-zip";
+ String path = "org.project/zips/example-presentation-3.2.xml.zip";
+
+ assertLayout( path, groupId, artifactId, version, type );
+ }
/**
* [MRM-432] Oddball version spec.
Modified: maven/archiva/trunk/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/content/RepositoryRequestTest.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/content/RepositoryRequestTest.java?rev=588732&r1=588731&r2=588732&view=diff
==============================================================================
--- maven/archiva/trunk/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/content/RepositoryRequestTest.java (original)
+++ maven/archiva/trunk/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/content/RepositoryRequestTest.java Fri Oct 26 11:16:43 2007
@@ -295,6 +295,33 @@
return createManagedRepositoryContent( "test-internal", "Internal Test Repo", repoRoot, layout );
}
+ /**
+ * [MRM-481] Artifact requests with a .xml.zip extension fail with a 404 Error
+ */
+ public void testToNativePathArtifactDefaultToDefaultDualExtension()
+ throws Exception
+ {
+ ManagedRepositoryContent repository = createManagedRepo( "default" );
+
+ // Test (artifact) default to default - dual extension
+ assertEquals( "org/project/example-presentation/3.2/example-presentation-3.2.xml.zip", repoRequest
+ .toNativePath( "org/project/example-presentation/3.2/example-presentation-3.2.xml.zip", repository ) );
+ }
+
+ /**
+ * [MRM-481] Artifact requests with a .xml.zip extension fail with a 404 Error
+ */
+ public void testToNativePathArtifactLegacyToDefaultDualExtension()
+ throws Exception
+ {
+ ManagedRepositoryContent repository = createManagedRepo( "default" );
+
+ // Test (artifact) legacy to default - dual extension
+ // NOTE: The detection of a dual extension is flawed.
+ assertEquals( "org/project/example-presentation/3.2.xml/example-presentation-3.2.xml.zip", repoRequest
+ .toNativePath( "org.project/zips/example-presentation-3.2.xml.zip", repository ) );
+ }
+
public void testToNativePathMetadataDefaultToDefault()
throws Exception
{
Modified: maven/archiva/trunk/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/repository/RepositoryServletNoProxyTest.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/repository/RepositoryServletNoProxyTest.java?rev=588732&r1=588731&r2=588732&view=diff
==============================================================================
--- maven/archiva/trunk/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/repository/RepositoryServletNoProxyTest.java (original)
+++ maven/archiva/trunk/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/repository/RepositoryServletNoProxyTest.java Fri Oct 26 11:16:43 2007
@@ -217,4 +217,25 @@
assertEquals( "Expected file contents", expectedArtifactContents, response.getText() );
}
+
+ /**
+ * [MRM-481] Artifact requests with a .xml.zip extension fail with a 404 Error
+ */
+ public void testGetNoProxyDualExtensionDefaultLayout()
+ throws Exception
+ {
+ String expectedContents = "the-contents-of-the-dual-extension";
+ String dualExtensionPath = "org/project/example-presentation/3.2/example-presentation-3.2.xml.zip";
+
+ File checksumFile = new File( repoRootInternal, dualExtensionPath );
+ checksumFile.getParentFile().mkdirs();
+
+ FileUtils.writeStringToFile( checksumFile, expectedContents, null );
+
+ WebRequest request = new GetMethodWebRequest( "http://machine.com/repository/internal/" + dualExtensionPath );
+ WebResponse response = sc.getResponse( request );
+ assertResponseOK( response );
+
+ assertEquals( "Expected file contents", expectedContents, response.getText() );
+ }
}