Author: joakime
Date: Sun Sep 9 20:03:18 2007
New Revision: 574122
URL: http://svn.apache.org/viewvc?rev=574122&view=rev
Log:
[MRM-463] Metadata merging doesn't work.
Updating guessing of intent on incoming request differently, to handle new
metadata processing requirements.
Modified:
maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/repository/ProxiedDavServer.java
Modified:
maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/repository/ProxiedDavServer.java
URL:
http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/repository/ProxiedDavServer.java?rev=574122&r1=574121&r2=574122&view=diff
==============================================================================
---
maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/repository/ProxiedDavServer.java
(original)
+++
maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/repository/ProxiedDavServer.java
Sun Sep 9 20:03:18 2007
@@ -32,6 +32,8 @@
import
org.apache.maven.archiva.repository.layout.BidirectionalRepositoryLayout;
import
org.apache.maven.archiva.repository.layout.BidirectionalRepositoryLayoutFactory;
import org.apache.maven.archiva.repository.layout.LayoutException;
+import org.apache.maven.archiva.repository.metadata.MetadataTools;
+import
org.apache.maven.archiva.repository.metadata.RepositoryMetadataException;
import org.codehaus.plexus.webdav.AbstractDavServerComponent;
import org.codehaus.plexus.webdav.DavServerComponent;
import org.codehaus.plexus.webdav.DavServerException;
@@ -74,6 +76,11 @@
/**
* @plexus.requirement
*/
+ private MetadataTools metadataTools;
+
+ /**
+ * @plexus.requirement
+ */
private BidirectionalRepositoryLayoutFactory layoutFactory;
private BidirectionalRepositoryLayout layout;
@@ -160,71 +167,83 @@
return;
}
- try
+ // Is it a Metadata resource?
+ if ( resource.endsWith( "/" + MetadataTools.MAVEN_METADATA ) )
{
ProjectReference project;
VersionedReference versioned;
- ArtifactReference artifact;
- BidirectionalRepositoryLayout resourceLayout;
-
- try
- {
- resourceLayout = layoutFactory.getLayoutForPath( resource );
- }
- catch ( LayoutException e )
- {
- /* invalid request - eat it */
- return;
- }
try
{
- artifact = resourceLayout.toArtifactReference( resource );
- if ( artifact != null )
- {
- connectors.fetchFromProxies( managedRepository, artifact );
- request.getRequest().setPathInfo( layout.toPath( artifact
) );
- return;
- }
- }
- catch ( LayoutException e )
- {
- /* eat it */
- }
- try
- {
- versioned = resourceLayout.toVersionedReference( resource );
+ versioned = metadataTools.toVersionedReference( resource );
if ( versioned != null )
{
connectors.fetchFromProxies( managedRepository, versioned
);
- request.getRequest().setPathInfo( layout.toPath( versioned
) );
+ request.getRequest().setPathInfo( metadataTools.toPath(
versioned ) );
return;
}
}
- catch ( LayoutException e )
+ catch ( RepositoryMetadataException e )
{
/* eat it */
}
+ catch ( ProxyException e )
+ {
+ throw new ServletException( "Unable to fetch versioned
metadata resource.", e );
+ }
try
{
- project = resourceLayout.toProjectReference( resource );
+ project = metadataTools.toProjectReference( resource );
if ( project != null )
{
connectors.fetchFromProxies( managedRepository, project );
- request.getRequest().setPathInfo( layout.toPath( project )
);
+ request.getRequest().setPathInfo( metadataTools.toPath(
project ) );
return;
}
}
- catch ( LayoutException e )
+ catch ( RepositoryMetadataException e )
{
/* eat it */
}
+ catch ( ProxyException e )
+ {
+ throw new ServletException( "Unable to fetch project metadata
resource.", e );
+ }
+ }
+
+ // Not any of the above? Then it's gotta be an artifact reference.
+ ArtifactReference artifact;
+ BidirectionalRepositoryLayout resourceLayout;
+
+ try
+ {
+ resourceLayout = layoutFactory.getLayoutForPath( resource );
+ }
+ catch ( LayoutException e )
+ {
+ /* invalid request - eat it */
+ return;
+ }
+
+ try
+ {
+ artifact = resourceLayout.toArtifactReference( resource );
+ if ( artifact != null )
+ {
+ connectors.fetchFromProxies( managedRepository, artifact );
+ request.getRequest().setPathInfo( layout.toPath( artifact ) );
+ return;
+ }
+ }
+ catch ( LayoutException e )
+ {
+ /* eat it */
}
catch ( ProxyException e )
{
- throw new ServletException( "Unable to fetch resource.", e );
+ throw new ServletException( "Unable to fetch artifact resource.",
e );
}
}