]> source.dussan.org Git - archiva.git/commitdiff
[MRM-138] add metadata tests and complete merge implementation
authorBrett Porter <brett@apache.org>
Mon, 14 Aug 2006 05:01:29 +0000 (05:01 +0000)
committerBrett Porter <brett@apache.org>
Mon, 14 Aug 2006 05:01:29 +0000 (05:01 +0000)
git-svn-id: https://svn.apache.org/repos/asf/maven/repository-manager/trunk@431292 13f79535-47bb-0310-9956-ffa450edef68

maven-repository-proxy/src/main/java/org/apache/maven/repository/proxy/DefaultProxyRequestHandler.java
maven-repository-proxy/src/test/java/org/apache/maven/repository/proxy/ProxyRequestHandlerTest.java
maven-repository-proxy/src/test/repositories/managed/org/apache/maven/test/get-merged-metadata/maven-metadata.xml [new file with mode: 0644]
maven-repository-proxy/src/test/repositories/managed/org/apache/maven/test/get-removed-metadata/1.0/maven-metadata.xml [new file with mode: 0644]
maven-repository-proxy/src/test/repositories/managed/org/apache/maven/test/get-updated-metadata/.metadata-proxied1 [new file with mode: 0644]
maven-repository-proxy/src/test/repositories/managed/org/apache/maven/test/get-updated-metadata/maven-metadata.xml [new file with mode: 0644]
maven-repository-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-default-metadata/1.0/maven-metadata.xml [new file with mode: 0644]
maven-repository-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-merged-metadata/maven-metadata.xml [new file with mode: 0644]
maven-repository-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-updated-metadata/maven-metadata.xml [new file with mode: 0644]
maven-repository-proxy/src/test/repositories/proxied2/org/apache/maven/test/get-merged-metadata/maven-metadata.xml [new file with mode: 0644]

index d620788ae59ddf89ad17f97c6e1adb765e49bbfc..451b6d82bfb6438b989fb283e9c4962b987a0f4d 100644 (file)
@@ -19,6 +19,9 @@ package org.apache.maven.repository.proxy;
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy;
+import org.apache.maven.artifact.repository.metadata.Metadata;
+import org.apache.maven.artifact.repository.metadata.io.xpp3.MetadataXpp3Reader;
+import org.apache.maven.artifact.repository.metadata.io.xpp3.MetadataXpp3Writer;
 import org.apache.maven.repository.digest.DigestUtils;
 import org.apache.maven.repository.digest.DigesterException;
 import org.apache.maven.repository.discovery.ArtifactDiscoverer;
@@ -34,8 +37,12 @@ import org.apache.maven.wagon.proxy.ProxyInfo;
 import org.apache.maven.wagon.repository.Repository;
 import org.codehaus.plexus.logging.AbstractLogEnabled;
 import org.codehaus.plexus.util.FileUtils;
+import org.codehaus.plexus.util.IOUtil;
+import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
 
 import java.io.File;
+import java.io.FileReader;
+import java.io.FileWriter;
 import java.io.IOException;
 import java.security.NoSuchAlgorithmException;
 import java.util.Date;
@@ -145,12 +152,15 @@ public class DefaultProxyRequestHandler
         }
         else if ( path.endsWith( "maven-metadata.xml" ) )
         {
-            // TODO: merge the metadata!
+            File metadataFile = new File( target.getParentFile(), ".metadata-" + repository.getRepository().getId() );
+
             policy = repository.getRepository().getReleases();
-            if ( force || !target.exists() || isOutOfDate( policy, target ) )
+            if ( force || !metadataFile.exists() || isOutOfDate( policy, metadataFile ) )
             {
-                getFileFromRepository( path, repository, managedRepository.getBasedir(), wagonProxy, target, policy,
-                                       force );
+                getFileFromRepository( path, repository, managedRepository.getBasedir(), wagonProxy, metadataFile,
+                                       policy, force );
+
+                mergeMetadataFiles( target, metadataFile );
             }
         }
         else
@@ -215,18 +225,100 @@ public class DefaultProxyRequestHandler
         }
     }
 
+    private void mergeMetadataFiles( File target, File metadataFile )
+        throws ProxyException
+    {
+        if ( target.exists() )
+        {
+            MetadataXpp3Reader reader = new MetadataXpp3Reader();
+            Metadata metadata;
+            FileReader fileReader = null;
+            try
+            {
+                fileReader = new FileReader( target );
+                metadata = reader.read( fileReader );
+            }
+            catch ( XmlPullParserException e )
+            {
+                throw new ProxyException( "Unable to parse existing metadata: " + e.getMessage(), e );
+            }
+            catch ( IOException e )
+            {
+                throw new ProxyException( "Unable to read existing metadata: " + e.getMessage(), e );
+            }
+            finally
+            {
+                IOUtil.close( fileReader );
+            }
+
+            fileReader = null;
+            boolean changed = false;
+            try
+            {
+                fileReader = new FileReader( metadataFile );
+                Metadata newMetadata = reader.read( fileReader );
+
+                changed = metadata.merge( newMetadata );
+            }
+            catch ( IOException e )
+            {
+                // ignore the merged file
+                getLogger().warn( "Unable to read new metadata: " + e.getMessage() );
+            }
+            catch ( XmlPullParserException e )
+            {
+                // ignore the merged file
+                getLogger().warn( "Unable to parse new metadata: " + e.getMessage() );
+            }
+            finally
+            {
+                IOUtil.close( fileReader );
+            }
+
+            if ( changed )
+            {
+                FileWriter fileWriter = null;
+                try
+                {
+                    fileWriter = new FileWriter( target );
+                    new MetadataXpp3Writer().write( fileWriter, metadata );
+                }
+                catch ( IOException e )
+                {
+                    getLogger().warn( "Unable to store new metadata: " + e.getMessage() );
+                }
+                finally
+                {
+                    IOUtil.close( fileWriter );
+                }
+            }
+        }
+        else
+        {
+            try
+            {
+                FileUtils.copyFile( metadataFile, target );
+            }
+            catch ( IOException e )
+            {
+                // warn, but ignore
+                getLogger().warn( "Unable to copy metadata: " + metadataFile + " to " + target );
+            }
+        }
+    }
+
     private void getFileFromRepository( String path, ProxiedArtifactRepository repository, String repositoryCachePath,
                                         ProxyInfo httpProxy, File target, ArtifactRepositoryPolicy policy,
                                         boolean force )
         throws ProxyException
     {
-        boolean connected = false;
         Map checksums = null;
         Wagon wagon = null;
 
         File temp = new File( target.getAbsolutePath() + ".tmp" );
         temp.deleteOnExit();
 
+        boolean connected = false;
         try
         {
             String protocol = repository.getRepository().getProtocol();
index a90b7610511d68511c927e4b2d62e95cca7c27df..fe8af2a3043d4153452698a9c352c849a6f60dac 100644 (file)
@@ -20,6 +20,9 @@ import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.artifact.repository.ArtifactRepositoryFactory;
 import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy;
 import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
+import org.apache.maven.artifact.repository.metadata.Metadata;
+import org.apache.maven.artifact.repository.metadata.Versioning;
+import org.apache.maven.artifact.repository.metadata.io.xpp3.MetadataXpp3Writer;
 import org.apache.maven.wagon.ResourceDoesNotExistException;
 import org.apache.maven.wagon.TransferFailedException;
 import org.apache.maven.wagon.Wagon;
@@ -30,20 +33,20 @@ import org.easymock.MockControl;
 
 import java.io.File;
 import java.io.IOException;
+import java.io.StringWriter;
 import java.net.MalformedURLException;
 import java.text.ParseException;
+import java.text.SimpleDateFormat;
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
+import java.util.Locale;
 
 /**
  * Test the proxy handler.
  *
  * @author Brett Porter
  * @todo! tests to do vvv
- * @todo test metadata - general
- * @todo test metadata - multiple repos are merged
- * @todo test metadata - update interval
- * @todo test metadata - looking for an update and file has been removed remotely
  * @todo test snapshots - general
  * @todo test snapshots - newer version on repo1 (than local), timestamp driven
  * @todo test snapshots - older version on repo1 skipped (than local), timestamp driven
@@ -870,10 +873,9 @@ public class ProxyRequestHandlerTest
 
         assertFalse( expectedFile.exists() );
 
-        File file = null;
         try
         {
-            file = requestHandler.get( path, proxiedRepositories, defaultManagedRepository );
+            File file = requestHandler.get( path, proxiedRepositories, defaultManagedRepository );
             fail( "Found file: " + file + "; but was expecting a failure" );
         }
         catch ( ResourceDoesNotExistException e )
@@ -892,10 +894,30 @@ public class ProxyRequestHandlerTest
 
         assertFalse( expectedFile.exists() );
 
-        File file = null;
         try
         {
-            file = requestHandler.getAlways( path, proxiedRepositories, defaultManagedRepository );
+            File file = requestHandler.getAlways( path, proxiedRepositories, defaultManagedRepository );
+            fail( "Found file: " + file + "; but was expecting a failure" );
+        }
+        catch ( ResourceDoesNotExistException e )
+        {
+            // expected
+
+            assertFalse( expectedFile.exists() );
+        }
+    }
+
+    public void testGetMetadataNotPresent()
+        throws ProxyException
+    {
+        String path = "org/apache/maven/test/dummy-artifact/1.0/maven-metadata.xml";
+        File expectedFile = new File( defaultManagedRepository.getBasedir(), path );
+
+        assertFalse( expectedFile.exists() );
+
+        try
+        {
+            File file = requestHandler.get( path, proxiedRepositories, defaultManagedRepository );
             fail( "Found file: " + file + "; but was expecting a failure" );
         }
         catch ( ResourceDoesNotExistException e )
@@ -906,6 +928,169 @@ public class ProxyRequestHandlerTest
         }
     }
 
+    public void testGetMetadataProxied()
+        throws ProxyException, ResourceDoesNotExistException, IOException
+    {
+        String path = "org/apache/maven/test/get-default-metadata/1.0/maven-metadata.xml";
+        File expectedFile = new File( defaultManagedRepository.getBasedir(), path );
+
+        assertFalse( expectedFile.exists() );
+
+        File file = requestHandler.get( path, proxiedRepositories, defaultManagedRepository );
+        assertEquals( "Check file matches", expectedFile, file );
+        assertTrue( "Check file created", file.exists() );
+        String expectedContents = FileUtils.fileRead( new File( proxiedRepository1.getBasedir(), path ) );
+        assertEquals( "Check content matches", expectedContents, FileUtils.fileRead( file ) );
+    }
+
+    public void testGetMetadataMergeRepos()
+        throws IOException, ResourceDoesNotExistException, ProxyException
+    {
+        String path = "org/apache/maven/test/get-merged-metadata/maven-metadata.xml";
+        File expectedFile = new File( defaultManagedRepository.getBasedir(), path );
+
+        assertTrue( expectedFile.exists() );
+
+        File file = requestHandler.get( path, proxiedRepositories, defaultManagedRepository );
+        assertEquals( "Check file matches", expectedFile, file );
+        assertTrue( "Check file created", file.exists() );
+
+        StringWriter expectedContents = new StringWriter();
+        Metadata m = new Metadata();
+        m.setGroupId( "org.apache.maven.test" );
+        m.setArtifactId( "get-merged-metadata" );
+        m.setVersioning( new Versioning() );
+        m.getVersioning().addVersion( "0.9" );
+        m.getVersioning().addVersion( "1.0" );
+        m.getVersioning().addVersion( "2.0" );
+        m.getVersioning().addVersion( "3.0" );
+        m.getVersioning().addVersion( "5.0" );
+        m.getVersioning().addVersion( "4.0" );
+        m.setModelEncoding( null );
+        new MetadataXpp3Writer().write( expectedContents, m );
+
+        assertEquals( "Check content matches", expectedContents.toString(), FileUtils.fileRead( file ) );
+    }
+
+    public void testGetMetadataRemovedFromProxies()
+        throws ResourceDoesNotExistException, ProxyException, IOException
+    {
+        String path = "org/apache/maven/test/get-removed-metadata/1.0/maven-metadata.xml";
+        File expectedFile = new File( defaultManagedRepository.getBasedir(), path );
+        String expectedContents = FileUtils.fileRead( new File( defaultManagedRepository.getBasedir(), path ) );
+
+        assertTrue( expectedFile.exists() );
+
+        File file = requestHandler.get( path, proxiedRepositories, defaultManagedRepository );
+        assertEquals( "Check file matches", expectedFile, file );
+        assertTrue( "Check file created", file.exists() );
+        assertEquals( "Check content matches", expectedContents, FileUtils.fileRead( file ) );
+    }
+
+    public void testGetMetadataNotExpired()
+        throws IOException, ResourceDoesNotExistException, ProxyException
+    {
+        String path = "org/apache/maven/test/get-updated-metadata/maven-metadata.xml";
+        File expectedFile = new File( defaultManagedRepository.getBasedir(), path );
+        String expectedContents = FileUtils.fileRead( new File( defaultManagedRepository.getBasedir(), path ) );
+
+        assertTrue( expectedFile.exists() );
+
+        File file = requestHandler.get( path, proxiedRepositories, defaultManagedRepository );
+        assertEquals( "Check file matches", expectedFile, file );
+        assertTrue( "Check file created", file.exists() );
+        assertEquals( "Check content matches", expectedContents, FileUtils.fileRead( file ) );
+
+        String unexpectedContents = FileUtils.fileRead( new File( proxiedRepository1.getBasedir(), path ) );
+        assertFalse( "Check content doesn't match proxy version",
+                     unexpectedContents.equals( FileUtils.fileRead( file ) ) );
+    }
+
+    public void testGetMetadataNotUpdated()
+        throws ResourceDoesNotExistException, ProxyException, IOException
+    {
+        String path = "org/apache/maven/test/get-updated-metadata/maven-metadata.xml";
+        File expectedFile = new File( defaultManagedRepository.getBasedir(), path );
+        String expectedContents = FileUtils.fileRead( new File( defaultManagedRepository.getBasedir(), path ) );
+
+        assertTrue( expectedFile.exists() );
+
+        File proxiedFile = new File( proxiedRepository1.getBasedir(), path );
+        new File( expectedFile.getParentFile(), ".metadata-proxied1" ).setLastModified( proxiedFile.lastModified() );
+
+        proxiedRepository1.getReleases().setUpdatePolicy( ArtifactRepositoryPolicy.UPDATE_POLICY_ALWAYS );
+        File file = requestHandler.get( path, proxiedRepositories, defaultManagedRepository );
+        assertEquals( "Check file matches", expectedFile, file );
+        assertTrue( "Check file created", file.exists() );
+        assertEquals( "Check content matches", expectedContents, FileUtils.fileRead( file ) );
+
+        String unexpectedContents = FileUtils.fileRead( proxiedFile );
+        assertFalse( "Check content doesn't match proxy version",
+                     unexpectedContents.equals( FileUtils.fileRead( file ) ) );
+    }
+
+    public void testGetMetadataUpdated()
+        throws IOException, ResourceDoesNotExistException, ProxyException, ParseException
+    {
+        String path = "org/apache/maven/test/get-updated-metadata/maven-metadata.xml";
+        File expectedFile = new File( defaultManagedRepository.getBasedir(), path );
+        String unexpectedContents = FileUtils.fileRead( new File( defaultManagedRepository.getBasedir(), path ) );
+
+        assertTrue( expectedFile.exists() );
+
+        new File( expectedFile.getParentFile(), ".metadata-proxied1" ).setLastModified( getHistoricalDate().getTime() );
+
+        File file = requestHandler.get( path, proxiedRepositories, defaultManagedRepository );
+        assertEquals( "Check file matches", expectedFile, file );
+        assertTrue( "Check file created", file.exists() );
+
+        StringWriter expectedContents = new StringWriter();
+        Metadata m = new Metadata();
+        m.setGroupId( "org.apache.maven.test" );
+        m.setArtifactId( "get-updated-metadata" );
+        m.setVersioning( new Versioning() );
+        m.getVersioning().addVersion( "1.0" );
+        m.getVersioning().addVersion( "2.0" );
+        m.setModelEncoding( null );
+        new MetadataXpp3Writer().write( expectedContents, m );
+        assertEquals( "Check content matches", expectedContents.toString(), FileUtils.fileRead( file ) );
+        assertFalse( "Check content doesn't match old version",
+                     unexpectedContents.equals( FileUtils.fileRead( file ) ) );
+    }
+
+    public void testGetAlwaysMetadata()
+        throws IOException, ResourceDoesNotExistException, ProxyException
+    {
+        String path = "org/apache/maven/test/get-updated-metadata/maven-metadata.xml";
+        File expectedFile = new File( defaultManagedRepository.getBasedir(), path );
+        String unexpectedContents = FileUtils.fileRead( new File( defaultManagedRepository.getBasedir(), path ) );
+
+        assertTrue( expectedFile.exists() );
+
+        File file = requestHandler.getAlways( path, proxiedRepositories, defaultManagedRepository );
+        assertEquals( "Check file matches", expectedFile, file );
+        assertTrue( "Check file created", file.exists() );
+
+        StringWriter expectedContents = new StringWriter();
+        Metadata m = new Metadata();
+        m.setGroupId( "org.apache.maven.test" );
+        m.setArtifactId( "get-updated-metadata" );
+        m.setVersioning( new Versioning() );
+        m.getVersioning().addVersion( "1.0" );
+        m.getVersioning().addVersion( "2.0" );
+        m.setModelEncoding( null );
+        new MetadataXpp3Writer().write( expectedContents, m );
+        assertEquals( "Check content matches", expectedContents.toString(), FileUtils.fileRead( file ) );
+        assertFalse( "Check content doesn't match old version",
+                     unexpectedContents.equals( FileUtils.fileRead( file ) ) );
+    }
+
+    private static Date getHistoricalDate()
+        throws ParseException
+    {
+        return new SimpleDateFormat( "yyyy-MM-dd", Locale.US ).parse( "2000-01-01" );
+    }
+
     private void mockFailedChecksums( String path, File expectedFile )
         throws TransferFailedException, ResourceDoesNotExistException, AuthorizationException
     {
diff --git a/maven-repository-proxy/src/test/repositories/managed/org/apache/maven/test/get-merged-metadata/maven-metadata.xml b/maven-repository-proxy/src/test/repositories/managed/org/apache/maven/test/get-merged-metadata/maven-metadata.xml
new file mode 100644 (file)
index 0000000..8404eb8
--- /dev/null
@@ -0,0 +1,30 @@
+<!--
+  ~ Copyright 2005-2006 The Apache Software Foundation.
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<metadata>
+  <groupId>org.apache.maven.test</groupId>
+  <artifactId>get-merged-metadata</artifactId>
+  <versioning>
+    <versions>
+      <version>0.9</version>
+      <!-- unique -->
+      <version>1.0</version>
+      <!-- merged with proxied2 -->
+      <version>2.0</version>
+      <!-- merged with proxied1 -->
+    </versions>
+  </versioning>
+</metadata>
\ No newline at end of file
diff --git a/maven-repository-proxy/src/test/repositories/managed/org/apache/maven/test/get-removed-metadata/1.0/maven-metadata.xml b/maven-repository-proxy/src/test/repositories/managed/org/apache/maven/test/get-removed-metadata/1.0/maven-metadata.xml
new file mode 100644 (file)
index 0000000..7bd77c1
--- /dev/null
@@ -0,0 +1,19 @@
+<!--
+  ~ Copyright 2005-2006 The Apache Software Foundation.
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<metadata>
+
+</metadata>
\ No newline at end of file
diff --git a/maven-repository-proxy/src/test/repositories/managed/org/apache/maven/test/get-updated-metadata/.metadata-proxied1 b/maven-repository-proxy/src/test/repositories/managed/org/apache/maven/test/get-updated-metadata/.metadata-proxied1
new file mode 100644 (file)
index 0000000..98361ce
--- /dev/null
@@ -0,0 +1,25 @@
+<!--\r
+  ~ Copyright 2005-2006 The Apache Software Foundation.\r
+  ~\r
+  ~ Licensed under the Apache License, Version 2.0 (the "License");\r
+  ~ you may not use this file except in compliance with the License.\r
+  ~ You may obtain a copy of the License at\r
+  ~\r
+  ~     http://www.apache.org/licenses/LICENSE-2.0\r
+  ~\r
+  ~ Unless required by applicable law or agreed to in writing, software\r
+  ~ distributed under the License is distributed on an "AS IS" BASIS,\r
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+  ~ See the License for the specific language governing permissions and\r
+  ~ limitations under the License.\r
+  -->\r
+\r
+<metadata>\r
+  <groupId>org.apache.maven.test</groupId>\r
+  <artifactId>get-updated-metadata</artifactId>\r
+  <versionining>\r
+    <versions>\r
+      <version>1.0</version>\r
+    </versions>\r
+  </versionining>\r
+</metadata>
\ No newline at end of file
diff --git a/maven-repository-proxy/src/test/repositories/managed/org/apache/maven/test/get-updated-metadata/maven-metadata.xml b/maven-repository-proxy/src/test/repositories/managed/org/apache/maven/test/get-updated-metadata/maven-metadata.xml
new file mode 100644 (file)
index 0000000..5cd8af1
--- /dev/null
@@ -0,0 +1,25 @@
+<!--
+  ~ Copyright 2005-2006 The Apache Software Foundation.
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<metadata>
+  <groupId>org.apache.maven.test</groupId>
+  <artifactId>get-updated-metadata</artifactId>
+  <versioning>
+    <versions>
+      <version>1.0</version>
+    </versions>
+  </versioning>
+</metadata>
\ No newline at end of file
diff --git a/maven-repository-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-default-metadata/1.0/maven-metadata.xml b/maven-repository-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-default-metadata/1.0/maven-metadata.xml
new file mode 100644 (file)
index 0000000..7bd77c1
--- /dev/null
@@ -0,0 +1,19 @@
+<!--
+  ~ Copyright 2005-2006 The Apache Software Foundation.
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<metadata>
+
+</metadata>
\ No newline at end of file
diff --git a/maven-repository-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-merged-metadata/maven-metadata.xml b/maven-repository-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-merged-metadata/maven-metadata.xml
new file mode 100644 (file)
index 0000000..f697f68
--- /dev/null
@@ -0,0 +1,30 @@
+<!--
+  ~ Copyright 2005-2006 The Apache Software Foundation.
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<metadata>
+  <groupId>org.apache.maven.test</groupId>
+  <artifactId>get-merged-metadata</artifactId>
+  <versioning>
+    <versions>
+      <version>2.0</version>
+      <!-- merge with managed -->
+      <version>3.0</version>
+      <!-- merge with proxied2 -->
+      <version>5.0</version>
+      <!-- unique -->
+    </versions>
+  </versioning>
+</metadata>
\ No newline at end of file
diff --git a/maven-repository-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-updated-metadata/maven-metadata.xml b/maven-repository-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-updated-metadata/maven-metadata.xml
new file mode 100644 (file)
index 0000000..27c44b4
--- /dev/null
@@ -0,0 +1,26 @@
+<!--
+  ~ Copyright 2005-2006 The Apache Software Foundation.
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<metadata>
+  <groupId>org.apache.maven.test</groupId>
+  <artifactId>get-updated-metadata</artifactId>
+  <versioning>
+    <versions>
+      <version>1.0</version>
+      <version>2.0</version>
+    </versions>
+  </versioning>
+</metadata>
\ No newline at end of file
diff --git a/maven-repository-proxy/src/test/repositories/proxied2/org/apache/maven/test/get-merged-metadata/maven-metadata.xml b/maven-repository-proxy/src/test/repositories/proxied2/org/apache/maven/test/get-merged-metadata/maven-metadata.xml
new file mode 100644 (file)
index 0000000..5a7a948
--- /dev/null
@@ -0,0 +1,30 @@
+<!--
+  ~ Copyright 2005-2006 The Apache Software Foundation.
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<metadata>
+  <groupId>org.apache.maven.test</groupId>
+  <artifactId>get-merged-metadata</artifactId>
+  <versioning>
+    <versions>
+      <version>1.0</version>
+      <!-- merged with managed -->
+      <version>3.0</version>
+      <!-- merged with proxied1 -->
+      <version>4.0</version>
+      <!-- unique -->
+    </versions>
+  </versioning>
+</metadata>
\ No newline at end of file