You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by og...@apache.org on 2008/10/16 03:06:36 UTC
svn commit: r705112 - in /maven/mercury/trunk:
mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/
mercury-it/src/test/java/org/apache/maven/mercury/repository/tests/
mercury-it/src/test/resources/repoVr/ mercury-it/src/test/resources/rep...
Author: ogusakov
Date: Wed Oct 15 18:06:35 2008
New Revision: 705112
URL: http://svn.apache.org/viewvc?rev=705112&view=rev
Log:
stabilizing virtual repo reader, added cache expiration integration test
Added:
maven/mercury/trunk/mercury-it/src/test/java/org/apache/maven/mercury/repository/tests/THelper.java
maven/mercury/trunk/mercury-it/src/test/java/org/apache/maven/mercury/repository/tests/VirtualRepositoryReaderIntegratedTest.java
maven/mercury/trunk/mercury-it/src/test/resources/repoVr/
maven/mercury/trunk/mercury-it/src/test/resources/repoVr/a/
maven/mercury/trunk/mercury-it/src/test/resources/repoVr/a/a/
maven/mercury/trunk/mercury-it/src/test/resources/repoVr/a/a/1/
maven/mercury/trunk/mercury-it/src/test/resources/repoVr/a/a/2/
maven/mercury/trunk/mercury-it/src/test/resources/repoVr/a/a/3/
maven/mercury/trunk/mercury-it/src/test/resources/repoVr/a/a/4/
maven/mercury/trunk/mercury-it/src/test/resources/repoVr/a/a/5-SNAPSHOT/
Modified:
maven/mercury/trunk/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/ArtifactCoordinates.java
maven/mercury/trunk/mercury-it/src/test/java/org/apache/maven/mercury/repository/tests/AbstractRepositoryWriterM2Test.java
maven/mercury/trunk/mercury-it/src/test/java/org/apache/maven/mercury/repository/tests/RemoteRepositoryCachingReaderM2Test.java
maven/mercury/trunk/mercury-it/src/test/java/org/apache/maven/mercury/repository/tests/RemoteRepositoryReaderM2Test.java
maven/mercury/trunk/mercury-repo/mercury-repo-api/src/main/java/org/apache/maven/mercury/repository/api/RepositoryGAMetadata.java
maven/mercury/trunk/mercury-repo/mercury-repo-api/src/main/java/org/apache/maven/mercury/repository/api/RepositoryUpdateIntervalPolicy.java
maven/mercury/trunk/mercury-repo/mercury-repo-api/src/main/java/org/apache/maven/mercury/repository/api/RepositoryUpdatePolicy.java
maven/mercury/trunk/mercury-repo/mercury-repo-cache-fs/src/main/java/org/apache/maven/mercury/repository/cache/fs/MetadataCacheFs.java
maven/mercury/trunk/mercury-repo/mercury-repo-remote-m2/src/main/java/org/apache/maven/mercury/repository/remote/m2/RemoteRepositoryM2.java
maven/mercury/trunk/mercury-repo/mercury-repo-virtual/src/test/java/org/apache/maven/mercury/repository/virtual/VirtualRepositoryReaderTest.java
maven/mercury/trunk/mercury-util/src/main/java/org/apache/maven/mercury/util/TimeUtil.java
Modified: maven/mercury/trunk/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/ArtifactCoordinates.java
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/ArtifactCoordinates.java?rev=705112&r1=705111&r2=705112&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/ArtifactCoordinates.java (original)
+++ maven/mercury/trunk/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/ArtifactCoordinates.java Wed Oct 15 18:06:35 2008
@@ -40,8 +40,7 @@
return groupId;
}
- public void setGroupId(
- String groupId )
+ public void setGroupId( String groupId )
{
this.groupId = groupId;
}
@@ -51,8 +50,7 @@
return artifactId;
}
- public void setArtifactId(
- String artifactId )
+ public void setArtifactId( String artifactId )
{
this.artifactId = artifactId;
}
@@ -62,9 +60,17 @@
return version;
}
- public void setVersion(
- String version )
+ public void setVersion( String version )
{
this.version = version;
}
+
+ /* (non-Javadoc)
+ * @see java.lang.Object#toString()
+ */
+ @Override
+ public String toString()
+ {
+ return groupId+":"+artifactId+":"+version;
+ }
}
Modified: maven/mercury/trunk/mercury-it/src/test/java/org/apache/maven/mercury/repository/tests/AbstractRepositoryWriterM2Test.java
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-it/src/test/java/org/apache/maven/mercury/repository/tests/AbstractRepositoryWriterM2Test.java?rev=705112&r1=705111&r2=705112&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-it/src/test/java/org/apache/maven/mercury/repository/tests/AbstractRepositoryWriterM2Test.java (original)
+++ maven/mercury/trunk/mercury-it/src/test/java/org/apache/maven/mercury/repository/tests/AbstractRepositoryWriterM2Test.java Wed Oct 15 18:06:35 2008
@@ -19,12 +19,10 @@
import org.apache.maven.mercury.repository.api.RepositoryWriter;
import org.apache.maven.mercury.repository.metadata.Metadata;
import org.apache.maven.mercury.repository.metadata.MetadataBuilder;
-import org.apache.maven.mercury.repository.remote.m2.RemoteRepositoryWriterM2;
import org.apache.maven.mercury.transport.api.Server;
import org.apache.maven.mercury.util.FileUtil;
import org.codehaus.plexus.PlexusContainer;
import org.codehaus.plexus.PlexusTestCase;
-import org.mortbay.log.Log;
/**
*
Modified: maven/mercury/trunk/mercury-it/src/test/java/org/apache/maven/mercury/repository/tests/RemoteRepositoryCachingReaderM2Test.java
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-it/src/test/java/org/apache/maven/mercury/repository/tests/RemoteRepositoryCachingReaderM2Test.java?rev=705112&r1=705111&r2=705112&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-it/src/test/java/org/apache/maven/mercury/repository/tests/RemoteRepositoryCachingReaderM2Test.java (original)
+++ maven/mercury/trunk/mercury-it/src/test/java/org/apache/maven/mercury/repository/tests/RemoteRepositoryCachingReaderM2Test.java Wed Oct 15 18:06:35 2008
@@ -7,7 +7,6 @@
import java.io.IOException;
import java.net.URL;
import java.util.ArrayList;
-import java.util.HashSet;
import java.util.List;
import org.apache.maven.mercury.artifact.ArtifactBasicMetadata;
@@ -24,9 +23,7 @@
import org.apache.maven.mercury.repository.virtual.VirtualRepositoryReader;
import org.apache.maven.mercury.spi.http.client.retrieve.DefaultRetrievalRequest;
import org.apache.maven.mercury.spi.http.client.retrieve.DefaultRetriever;
-import org.apache.maven.mercury.spi.http.client.retrieve.RetrievalResponse;
import org.apache.maven.mercury.spi.http.server.HttpTestServer;
-import org.apache.maven.mercury.transport.api.Binding;
import org.apache.maven.mercury.transport.api.Server;
import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
Modified: maven/mercury/trunk/mercury-it/src/test/java/org/apache/maven/mercury/repository/tests/RemoteRepositoryReaderM2Test.java
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-it/src/test/java/org/apache/maven/mercury/repository/tests/RemoteRepositoryReaderM2Test.java?rev=705112&r1=705111&r2=705112&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-it/src/test/java/org/apache/maven/mercury/repository/tests/RemoteRepositoryReaderM2Test.java (original)
+++ maven/mercury/trunk/mercury-it/src/test/java/org/apache/maven/mercury/repository/tests/RemoteRepositoryReaderM2Test.java Wed Oct 15 18:06:35 2008
@@ -13,12 +13,10 @@
import org.apache.maven.mercury.artifact.ArtifactBasicMetadata;
import org.apache.maven.mercury.builder.api.MetadataReaderException;
import org.apache.maven.mercury.repository.api.RepositoryException;
-import org.apache.maven.mercury.repository.cache.fs.MetadataCacheFs;
import org.apache.maven.mercury.repository.local.m2.MetadataProcessorMock;
import org.apache.maven.mercury.repository.metadata.Metadata;
import org.apache.maven.mercury.repository.metadata.io.xpp3.MetadataXpp3Reader;
import org.apache.maven.mercury.repository.remote.m2.RemoteRepositoryM2;
-import org.apache.maven.mercury.repository.virtual.VirtualRepositoryReader;
import org.apache.maven.mercury.spi.http.client.retrieve.DefaultRetrievalRequest;
import org.apache.maven.mercury.spi.http.client.retrieve.DefaultRetriever;
import org.apache.maven.mercury.spi.http.client.retrieve.RetrievalResponse;
@@ -31,30 +29,18 @@
extends AbstractRepositoryReaderM2Test
{
MetadataXpp3Reader _reader;
- File _testBase = new File("./target/test-classes/repo");
+ File _testBase;
DefaultRetriever _retriever;
public String _port;
HttpTestServer _server;
DefaultRetrievalRequest _request;
-
-// List<ArtifactBasicMetadata> query;
-// MetadataProcessor mdProcessor;
-// ArtifactBasicMetadata bmd;
-//
-// Server server;
-// RemoteRepositoryM2 repo;
-//
-// RepositoryReader reader;
-//
-// // setting this to true will add aonatype nexus tests
-// String nexusUrl = System.getProperty( "mercury.nexus.url", null );
-//
//-------------------------------------------------------------------------
@Override
protected void setUp()
throws Exception
{
+ _testBase = new File("./target/test-classes/repo");
_retriever = new DefaultRetriever();
_server = new HttpTestServer( _testBase, "/repo" );
_server.start();
Added: maven/mercury/trunk/mercury-it/src/test/java/org/apache/maven/mercury/repository/tests/THelper.java
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-it/src/test/java/org/apache/maven/mercury/repository/tests/THelper.java?rev=705112&view=auto
==============================================================================
--- maven/mercury/trunk/mercury-it/src/test/java/org/apache/maven/mercury/repository/tests/THelper.java (added)
+++ maven/mercury/trunk/mercury-it/src/test/java/org/apache/maven/mercury/repository/tests/THelper.java Wed Oct 15 18:06:35 2008
@@ -0,0 +1,22 @@
+package org.apache.maven.mercury.repository.tests;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.apache.maven.mercury.artifact.ArtifactBasicMetadata;
+
+/**
+ *
+ *
+ * @author Oleg Gusakov
+ * @version $Id$
+ *
+ */
+public class THelper
+{
+ public static List<ArtifactBasicMetadata> toList( ArtifactBasicMetadata... bmds)
+ {
+ return Arrays.asList( bmds );
+ }
+}
Added: maven/mercury/trunk/mercury-it/src/test/java/org/apache/maven/mercury/repository/tests/VirtualRepositoryReaderIntegratedTest.java
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-it/src/test/java/org/apache/maven/mercury/repository/tests/VirtualRepositoryReaderIntegratedTest.java?rev=705112&view=auto
==============================================================================
--- maven/mercury/trunk/mercury-it/src/test/java/org/apache/maven/mercury/repository/tests/VirtualRepositoryReaderIntegratedTest.java (added)
+++ maven/mercury/trunk/mercury-it/src/test/java/org/apache/maven/mercury/repository/tests/VirtualRepositoryReaderIntegratedTest.java Wed Oct 15 18:06:35 2008
@@ -0,0 +1,165 @@
+package org.apache.maven.mercury.repository.tests;
+
+import java.io.File;
+import java.io.InputStream;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.List;
+
+import junit.framework.TestCase;
+
+import org.apache.maven.mercury.artifact.ArtifactBasicMetadata;
+import org.apache.maven.mercury.builder.api.DependencyProcessor;
+import org.apache.maven.mercury.repository.api.ArtifactBasicResults;
+import org.apache.maven.mercury.repository.api.Repository;
+import org.apache.maven.mercury.repository.api.RepositoryUpdateIntervalPolicy;
+import org.apache.maven.mercury.repository.local.m2.LocalRepositoryM2;
+import org.apache.maven.mercury.repository.local.m2.MetadataProcessorMock;
+import org.apache.maven.mercury.repository.metadata.AddVersionOperation;
+import org.apache.maven.mercury.repository.metadata.Metadata;
+import org.apache.maven.mercury.repository.metadata.MetadataBuilder;
+import org.apache.maven.mercury.repository.metadata.StringOperand;
+import org.apache.maven.mercury.repository.remote.m2.RemoteRepositoryM2;
+import org.apache.maven.mercury.repository.virtual.VirtualRepositoryReader;
+import org.apache.maven.mercury.spi.http.server.HttpTestServer;
+import org.apache.maven.mercury.transport.api.Server;
+import org.apache.maven.mercury.util.FileUtil;
+
+public class VirtualRepositoryReaderIntegratedTest
+extends TestCase
+{
+ File _testBase;
+ File _localRepoBase;
+
+ public String _port;
+ HttpTestServer _server;
+
+ List<ArtifactBasicMetadata> _query;
+
+ RemoteRepositoryM2 _remoteRepo;
+ LocalRepositoryM2 _localRepo;
+
+
+ VirtualRepositoryReader _vr;
+
+ //-------------------------------------------------------------------------
+ @Override
+ protected void setUp()
+ throws Exception
+ {
+ _testBase = new File("./target/test-classes/repoVr");
+ _localRepoBase = new File("./target/localRepo");
+
+ FileUtil.delete( _localRepoBase );
+ _localRepoBase.mkdirs();
+
+ _server = new HttpTestServer( _testBase, "/repo" );
+ _server.start();
+ _port = String.valueOf( _server.getPort() );
+
+ _query = new ArrayList<ArtifactBasicMetadata>();
+
+ Server server = new Server( "testRemoteRepo", new URL("http://localhost:"+_port+"/repo") );
+ _remoteRepo = new RemoteRepositoryM2( server );
+ _remoteRepo.setUpdatePolicy( new RepositoryUpdateIntervalPolicy("interval2").setInterval( 2000L ) );
+
+ _localRepo = new LocalRepositoryM2( "testLocalRepo", _localRepoBase );
+
+ List<Repository> reps = new ArrayList<Repository>();
+ reps.add( _remoteRepo );
+ reps.add( _localRepo );
+
+ DependencyProcessor mdProcessor = new MetadataProcessorMock();
+
+ _vr = new VirtualRepositoryReader( reps, mdProcessor );
+ }
+ //-------------------------------------------------------------------------
+ @Override
+ protected void tearDown()
+ throws Exception
+ {
+ super.tearDown();
+ _server.stop();
+ _server.destroy();
+ }
+ //-------------------------------------------------------------------------
+ public void testReadArtifact()
+ throws Exception
+ {
+ try
+ {
+ ArtifactBasicMetadata bmd = new ArtifactBasicMetadata("a:a:1");
+ List<ArtifactBasicMetadata> q = THelper.toList( bmd );
+
+ ArtifactBasicResults vres = _vr.readVersions( q );
+
+ assertNotNull( vres );
+
+ assertFalse( vres.hasExceptions() );
+
+ assertTrue( vres.hasResults() );
+
+ assertTrue( vres.hasResults(bmd) );
+
+ List<ArtifactBasicMetadata> versions = vres.getResult( bmd );
+
+ assertNotNull( versions );
+
+ assertEquals( 5, versions.size() );
+
+ // add version 6 to GA metadata
+ File mdf = new File( _testBase, "a/a/maven-metadata.xml");
+ Metadata md = MetadataBuilder.getMetadata( FileUtil.readRawData( mdf ) );
+
+ byte [] newBytes = MetadataBuilder.changeMetadata( md, new AddVersionOperation(new StringOperand("6")) );
+
+ FileUtil.writeRawData( mdf, newBytes );
+
+ // repository policy is 2 sec, this should be still 5 versions
+ vres = _vr.readVersions( q );
+
+ assertNotNull( vres );
+
+ assertFalse( vres.hasExceptions() );
+
+ assertTrue( vres.hasResults() );
+
+ assertTrue( vres.hasResults(bmd) );
+
+ versions = vres.getResult( bmd );
+
+ assertNotNull( versions );
+
+ assertEquals( 5, versions.size() );
+
+ Thread.sleep( 3000L );
+
+ // repository policy is 2 sec, this should cause VR to re-read metadata
+ // should now have 6 versions
+ vres = _vr.readVersions( q );
+
+ assertNotNull( vres );
+
+ assertFalse( vres.hasExceptions() );
+
+ assertTrue( vres.hasResults() );
+
+ assertTrue( vres.hasResults(bmd) );
+
+ versions = vres.getResult( bmd );
+
+ assertNotNull( versions );
+
+ assertEquals( 6, versions.size() );
+
+ }
+ finally
+ {
+ File mdf = new File( _testBase, "a/a/maven-metadata.xml");
+ InputStream in = VirtualRepositoryReaderIntegratedTest.class.getResourceAsStream( "/repoVr/a.a-maven-metadata.xml" );
+ FileUtil.writeRawData( mdf, in );
+ }
+ }
+ //-------------------------------------------------------------------------
+ //-------------------------------------------------------------------------
+}
Modified: maven/mercury/trunk/mercury-repo/mercury-repo-api/src/main/java/org/apache/maven/mercury/repository/api/RepositoryGAMetadata.java
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-repo/mercury-repo-api/src/main/java/org/apache/maven/mercury/repository/api/RepositoryGAMetadata.java?rev=705112&r1=705111&r2=705112&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-repo/mercury-repo-api/src/main/java/org/apache/maven/mercury/repository/api/RepositoryGAMetadata.java (original)
+++ maven/mercury/trunk/mercury-repo/mercury-repo-api/src/main/java/org/apache/maven/mercury/repository/api/RepositoryGAMetadata.java Wed Oct 15 18:06:35 2008
@@ -1,5 +1,6 @@
package org.apache.maven.mercury.repository.api;
+import java.text.ParseException;
import java.util.Collection;
import java.util.List;
import java.util.TreeSet;
@@ -104,11 +105,17 @@
return versions;
}
- public long getLastCheck()
+ public long getLastCheckTs()
{
return lastCheck;
}
+ public long getLastCheckMillis()
+ throws ParseException
+ {
+ return TimeUtil.toMillis( lastCheck );
+ }
+
public void update( Collection<String> versions )
{
this.versions.addAll( versions );
Modified: maven/mercury/trunk/mercury-repo/mercury-repo-api/src/main/java/org/apache/maven/mercury/repository/api/RepositoryUpdateIntervalPolicy.java
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-repo/mercury-repo-api/src/main/java/org/apache/maven/mercury/repository/api/RepositoryUpdateIntervalPolicy.java?rev=705112&r1=705111&r2=705112&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-repo/mercury-repo-api/src/main/java/org/apache/maven/mercury/repository/api/RepositoryUpdateIntervalPolicy.java (original)
+++ maven/mercury/trunk/mercury-repo/mercury-repo-api/src/main/java/org/apache/maven/mercury/repository/api/RepositoryUpdateIntervalPolicy.java Wed Oct 15 18:06:35 2008
@@ -1,6 +1,8 @@
package org.apache.maven.mercury.repository.api;
-import org.apache.maven.mercury.artifact.version.VersionComparator;
+import java.text.ParseException;
+
+import org.apache.maven.mercury.util.TimeUtil;
import org.apache.maven.mercury.util.Util;
import org.codehaus.plexus.lang.DefaultLanguage;
import org.codehaus.plexus.lang.Language;
@@ -43,6 +45,17 @@
{
init( policy );
}
+
+ /**
+ * used mostly for testing as it's too much waiting for a minute to test expiration
+ *
+ * @param interval
+ */
+ public RepositoryUpdateIntervalPolicy setInterval( long interval )
+ {
+ this.interval = interval;
+ return this;
+ }
public void init( String policy )
{
@@ -67,13 +80,32 @@
throw new IllegalArgumentException( _lang.getMessage( "bad.policy", policy ));
}
- public boolean timestampExpired( long lastUpdate )
+ public boolean timestampExpired( long lastUpdateMillis )
{
- long now =System.currentTimeMillis();
+ if( interval == NEVER )
+ return false;
+
+ long now;
+ try
+ {
+ now = TimeUtil.toMillis( TimeUtil.getUTCTimestamp() );
+ }
+ catch( ParseException e )
+ {
+ throw new IllegalArgumentException( e );
+ }
- boolean res = now - lastUpdate > interval;
+ boolean res = ( (now - lastUpdateMillis) > interval);
return res;
}
+
+ public static void main(
+ String[] args )
+ {
+ RepositoryUpdateIntervalPolicy up = new RepositoryUpdateIntervalPolicy("interval2");
+
+ System.out.println("Interval is "+up.interval);
+ }
}
Modified: maven/mercury/trunk/mercury-repo/mercury-repo-api/src/main/java/org/apache/maven/mercury/repository/api/RepositoryUpdatePolicy.java
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-repo/mercury-repo-api/src/main/java/org/apache/maven/mercury/repository/api/RepositoryUpdatePolicy.java?rev=705112&r1=705111&r2=705112&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-repo/mercury-repo-api/src/main/java/org/apache/maven/mercury/repository/api/RepositoryUpdatePolicy.java (original)
+++ maven/mercury/trunk/mercury-repo/mercury-repo-api/src/main/java/org/apache/maven/mercury/repository/api/RepositoryUpdatePolicy.java Wed Oct 15 18:06:35 2008
@@ -19,8 +19,8 @@
/**
* perform the calculation and decide if it's time to update
*
- * @param timestamp - UTC-based timestamp
+ * @param timestamp - UTC-based timestamp as long milliseconds
* @return
*/
- boolean timestampExpired( long timestamp );
+ boolean timestampExpired( long timestampMillis );
}
Modified: maven/mercury/trunk/mercury-repo/mercury-repo-cache-fs/src/main/java/org/apache/maven/mercury/repository/cache/fs/MetadataCacheFs.java
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-repo/mercury-repo-cache-fs/src/main/java/org/apache/maven/mercury/repository/cache/fs/MetadataCacheFs.java?rev=705112&r1=705111&r2=705112&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-repo/mercury-repo-cache-fs/src/main/java/org/apache/maven/mercury/repository/cache/fs/MetadataCacheFs.java (original)
+++ maven/mercury/trunk/mercury-repo/mercury-repo-cache-fs/src/main/java/org/apache/maven/mercury/repository/cache/fs/MetadataCacheFs.java Wed Oct 15 18:06:35 2008
@@ -1,7 +1,6 @@
package org.apache.maven.mercury.repository.cache.fs;
import java.io.File;
-import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Collections;
import java.util.HashMap;
@@ -14,16 +13,15 @@
import org.apache.maven.mercury.artifact.version.DefaultArtifactVersion;
import org.apache.maven.mercury.repository.api.MetadataCacheException;
import org.apache.maven.mercury.repository.api.MetadataCorruptionException;
-import org.apache.maven.mercury.repository.api.RemoteRepository;
import org.apache.maven.mercury.repository.api.RepositoryGAMetadata;
import org.apache.maven.mercury.repository.api.RepositoryGAVMetadata;
import org.apache.maven.mercury.repository.api.RepositoryMetadataCache;
import org.apache.maven.mercury.repository.api.RepositoryUpdatePolicy;
import org.apache.maven.mercury.util.FileLockBundle;
import org.apache.maven.mercury.util.FileUtil;
+import org.apache.maven.mercury.util.TimeUtil;
import org.codehaus.plexus.lang.DefaultLanguage;
import org.codehaus.plexus.lang.Language;
-import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
/**
*
@@ -35,6 +33,7 @@
public class MetadataCacheFs
implements RepositoryMetadataCache
{
+ private static final org.slf4j.Logger _log = org.slf4j.LoggerFactory.getLogger( MetadataCacheFs.class );
private static final Language _lang = new DefaultLanguage( RepositoryGAVMetadata.class );
static volatile Map<String, MetadataCacheFs> fsCaches = Collections.synchronizedMap( new HashMap<String, MetadataCacheFs>(2) );
@@ -95,8 +94,12 @@
{
md = new CachedGAMetadata( gamF );
- if( up != null && up.timestampExpired( md.getLastCheck() ) )
+ long lastCheckMillis = md.getLastCheckMillis();
+
+ if( up != null && up.timestampExpired( lastCheckMillis ) )
+ {
md.setExpired( true );
+ }
}
return md;
Modified: maven/mercury/trunk/mercury-repo/mercury-repo-remote-m2/src/main/java/org/apache/maven/mercury/repository/remote/m2/RemoteRepositoryM2.java
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-repo/mercury-repo-remote-m2/src/main/java/org/apache/maven/mercury/repository/remote/m2/RemoteRepositoryM2.java?rev=705112&r1=705111&r2=705112&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-repo/mercury-repo-remote-m2/src/main/java/org/apache/maven/mercury/repository/remote/m2/RemoteRepositoryM2.java (original)
+++ maven/mercury/trunk/mercury-repo/mercury-repo-remote-m2/src/main/java/org/apache/maven/mercury/repository/remote/m2/RemoteRepositoryM2.java Wed Oct 15 18:06:35 2008
@@ -23,6 +23,11 @@
private RepositoryUpdatePolicy _updatePolicy = new RepositoryUpdateIntervalPolicy( RepositoryUpdateIntervalPolicy.DEFAULT_UPDATE_POLICY );
//----------------------------------------------------------------------------------
+ public RemoteRepositoryM2( Server server )
+ {
+ this( server.getId(), server );
+ }
+ //----------------------------------------------------------------------------------
public RemoteRepositoryM2( String id, Server server )
{
super( id, DEFAULT_REPOSITORY_TYPE );
Modified: maven/mercury/trunk/mercury-repo/mercury-repo-virtual/src/test/java/org/apache/maven/mercury/repository/virtual/VirtualRepositoryReaderTest.java
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-repo/mercury-repo-virtual/src/test/java/org/apache/maven/mercury/repository/virtual/VirtualRepositoryReaderTest.java?rev=705112&r1=705111&r2=705112&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-repo/mercury-repo-virtual/src/test/java/org/apache/maven/mercury/repository/virtual/VirtualRepositoryReaderTest.java (original)
+++ maven/mercury/trunk/mercury-repo/mercury-repo-virtual/src/test/java/org/apache/maven/mercury/repository/virtual/VirtualRepositoryReaderTest.java Wed Oct 15 18:06:35 2008
@@ -1,11 +1,12 @@
package org.apache.maven.mercury.repository.virtual;
-import java.util.List;
-import java.util.Map;
import java.io.File;
-import java.io.IOException;
import java.net.URL;
import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import junit.framework.TestCase;
import org.apache.maven.mercury.artifact.Artifact;
import org.apache.maven.mercury.artifact.ArtifactBasicMetadata;
@@ -20,8 +21,6 @@
import org.apache.maven.mercury.transport.api.Server;
import org.apache.maven.mercury.util.FileUtil;
-import junit.framework.TestCase;
-
/**
*
*
@@ -48,7 +47,7 @@
throws Exception
{
_testBase = new File( "./target/repo" );
- _testBase.delete();
+ FileUtil.delete( _testBase );
_testBase.mkdirs();
if( !_testBase.exists() || !_testBase.isDirectory() )
Modified: maven/mercury/trunk/mercury-util/src/main/java/org/apache/maven/mercury/util/TimeUtil.java
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-util/src/main/java/org/apache/maven/mercury/util/TimeUtil.java?rev=705112&r1=705111&r2=705112&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-util/src/main/java/org/apache/maven/mercury/util/TimeUtil.java (original)
+++ maven/mercury/trunk/mercury-util/src/main/java/org/apache/maven/mercury/util/TimeUtil.java Wed Oct 15 18:06:35 2008
@@ -1,5 +1,6 @@
package org.apache.maven.mercury.util;
+import java.text.ParseException;
import java.util.Date;
/**
@@ -11,6 +12,13 @@
*/
public class TimeUtil
{
+ public static final java.util.TimeZone TS_TZ = java.util.TimeZone.getTimeZone( "UTC" );
+ public static final java.text.DateFormat TS_FORMAT = new java.text.SimpleDateFormat( "yyyyMMddHHmmss" );
+
+ static
+ {
+ TS_FORMAT.setTimeZone( TS_TZ );
+ }
/**
*
@@ -32,15 +40,48 @@
/**
*
+ * @return current UTC timestamp by yyyyMMddHHmmss mask as a long int
+ */
+ public static long getUTCTimestampAsMillis( )
+ {
+ return Long.parseLong( getUTCTimestamp( new Date() ) );
+ }
+ /**
+ *
* @param date
* @return current date converted to UTC timestamp by yyyyMMddHHmmss mask
*/
public static String getUTCTimestamp( Date date )
{
- java.util.TimeZone timezone = java.util.TimeZone.getTimeZone( "UTC" );
- java.text.DateFormat fmt = new java.text.SimpleDateFormat( "yyyyMMddHHmmss" );
- fmt.setTimeZone( timezone );
- return fmt.format( date );
+ return TS_FORMAT.format( date );
+ }
+
+ /**
+ * convert timestamp to millis
+ *
+ * @param ts timestamp to convert. Presumed to be a long of form yyyyMMddHHmmss
+ * @return millis, corresponding to the supplied TS
+ * @throws ParseException is long does not follow the format
+ */
+ public static long toMillis( long ts )
+ throws ParseException
+ {
+ return toMillis( ""+ts );
+ }
+
+ /**
+ * convert timestamp to millis
+ *
+ * @param ts timestamp to convert. Presumed to be a string of form yyyyMMddHHmmss
+ * @return millis, corresponding to the supplied TS
+ * @throws ParseException is long does not follow the format
+ */
+ public static long toMillis( String ts )
+ throws ParseException
+ {
+ Date dts =TS_FORMAT.parse( ts );
+
+ return dts.getTime();
}
}