More Work Against Scanner / Layout / Artifact / Database

git-svn-id: https://svn.apache.org/repos/asf/maven/archiva/branches/archiva-jpox-database-refactor@519169 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Joakim Erdfelt 2007-03-16 22:45:38 +00:00
parent f5da042413
commit 3331e0fd83
117 changed files with 1281 additions and 2251 deletions

View File

@ -0,0 +1,130 @@
package org.apache.maven.archiva.common.utils;
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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.
*/
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
/**
* DateUtil - some (not-so) common date utility methods.
*
* @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
* @version $Id$
*/
public class DateUtil
{
public static String getDuration( long duration )
{
return getDuration( new Date( 0 ), new Date( duration ) );
}
public static String getDuration( long ms1, long ms2 )
{
return getDuration( new Date( ms1 ), new Date( ms2 ) );
}
public static String getDuration( Date d1, Date d2 )
{
Calendar cal1 = new GregorianCalendar();
cal1.setTime( d1 );
Calendar cal2 = new GregorianCalendar();
cal2.setTime( d2 );
return getDuration( cal1, cal2 );
}
public static String getDuration( Calendar cal1, Calendar cal2 )
{
int year1 = cal1.get( Calendar.YEAR );
int day1 = cal1.get( Calendar.DAY_OF_YEAR );
int hour1 = cal1.get( Calendar.HOUR_OF_DAY );
int min1 = cal1.get( Calendar.MINUTE );
int sec1 = cal1.get( Calendar.SECOND );
int ms1 = cal1.get( Calendar.MILLISECOND );
int year2 = cal2.get( Calendar.YEAR );
int day2 = cal2.get( Calendar.DAY_OF_YEAR );
int hour2 = cal2.get( Calendar.HOUR_OF_DAY );
int min2 = cal2.get( Calendar.MINUTE );
int sec2 = cal2.get( Calendar.SECOND );
int ms2 = cal2.get( Calendar.MILLISECOND );
int leftDays = ( day1 - day2 ) + ( year1 - year2 ) * 365;
int leftHours = hour2 - hour1;
int leftMins = min2 - min1;
int leftSeconds = sec2 - sec1;
int leftMilliSeconds = ms2 - ms1;
if ( leftMilliSeconds < 0 )
{
leftMilliSeconds += 1000;
--leftSeconds;
}
if ( leftSeconds < 0 )
{
leftSeconds += 60;
--leftMins;
}
if ( leftMins < 0 )
{
leftMins += 60;
--leftHours;
}
if ( leftHours < 0 )
{
leftHours += 24;
--leftDays;
}
StringBuffer interval = new StringBuffer();
appendInterval( interval, leftDays, "Day" );
appendInterval( interval, leftHours, "Hour" );
appendInterval( interval, leftMins, "Minute" );
appendInterval( interval, leftSeconds, "Second" );
appendInterval( interval, leftMilliSeconds, "Millisecond" );
return interval.toString();
}
private static void appendInterval( StringBuffer interval, int count, String type )
{
if ( count > 0 )
{
if ( interval.length() > 0 )
{
interval.append( " " );
}
interval.append( count );
interval.append( " " ).append( type );
if ( count > 1 )
{
interval.append( "s" );
}
}
}
}

View File

@ -0,0 +1,69 @@
package org.apache.maven.archiva.common.utils;
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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.
*/
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import junit.framework.TestCase;
/**
* DateUtilTest
*
* @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
* @version $Id$
*/
public class DateUtilTest extends TestCase
{
private void assertDuration( String expectedDuration, String startTimestamp, String endTimestamp )
throws ParseException
{
SimpleDateFormat sdf = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss SSS" );
Date startDate = sdf.parse( startTimestamp );
Date endDate = sdf.parse( endTimestamp );
// System.out.println( "Date: " + endTimestamp + " - " + startTimestamp + " = "
// + ( endDate.getTime() - startDate.getTime() ) + " ms" );
assertEquals( expectedDuration, DateUtil.getDuration( startDate, endDate ) );
}
public void testGetDurationDifference() throws ParseException
{
assertDuration( "2 Seconds", "2006-08-22 13:00:02 0000",
"2006-08-22 13:00:04 0000" );
assertDuration( "12 Minutes 12 Seconds 234 Milliseconds", "2006-08-22 13:12:02 0000",
"2006-08-22 13:24:14 0234" );
assertDuration( "12 Minutes 501 Milliseconds", "2006-08-22 13:12:01 0500",
"2006-08-22 13:24:02 0001" );
}
public void testGetDurationDirect() throws ParseException
{
assertEquals( "2 Seconds", DateUtil.getDuration( 2000 ) );
assertEquals( "12 Minutes 12 Seconds 234 Milliseconds", DateUtil.getDuration( 732234 ) );
assertEquals( "12 Minutes 501 Milliseconds", DateUtil.getDuration( 720501 ) );
}
}

View File

@ -19,7 +19,8 @@ package org.apache.maven.archiva.consumers;
* under the License.
*/
import org.apache.maven.archiva.model.ArchivaRepository;
import org.apache.maven.archiva.repository.ArchivaRepository;
import org.apache.maven.archiva.repository.consumer.Consumer;
import org.apache.maven.artifact.factory.ArtifactFactory;
import org.codehaus.plexus.logging.AbstractLogEnabled;

View File

@ -1,91 +0,0 @@
package org.apache.maven.archiva.consumers;
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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.
*/
import org.apache.maven.archiva.common.utils.BaseFile;
import org.apache.maven.archiva.model.ArchivaRepository;
import org.apache.maven.artifact.repository.ArtifactRepository;
import java.util.List;
/**
* DiscovererConsumer
*
* @author <a href="mailto:joakime@apache.org">Joakim Erdfelt</a>
* @version $Id$
*/
public interface Consumer
{
public static final String ROLE = Consumer.class.getName();
/**
* This is the human readable name for the discoverer.
*
* @return the human readable discoverer name.
*/
public String getName();
/**
* This is used to initialize any internals in the consumer before it is used.
*
* This method is called by the internals of archiva and is not meant to be used by other developers.
* This method is called once per repository.
*
* @param repository the repository to initialize the consumer against.
* @return true if the repository is valid for this consumer. false will result in consumer being disabled
* for the provided repository.
*/
public boolean init( ArchivaRepository repository );
/**
* Get the List of excluded file patterns for this consumer.
*
* @return the list of excluded file patterns for this consumer.
*/
public List getExcludePatterns();
/**
* Get the List of included file patterns for this consumer.
*
* @return the list of included file patterns for this consumer.
*/
public List getIncludePatterns();
/**
* Called by archiva framework to indicate that there is a file suitable for consuming,
* This method will only be called if the {@link #init(ArtifactRepository)} and {@link #getExcludePatterns()}
* and {@link #getIncludePatterns()} all pass for this consumer.
*
* @param file the file to process.
* @throws ConsumerException if there was a problem processing this file.
*/
public void processFile( BaseFile file ) throws ConsumerException;
/**
* Called by archiva framework to indicate that there has been a problem detected
* on a specific file.
*
* NOTE: It is very possible for 1 file to have more than 1 problem associated with it.
*
* @param file the file to process.
* @param message the message describing the problem.
*/
public void processFileProblem( BaseFile file, String message );
}

View File

@ -1,70 +0,0 @@
package org.apache.maven.archiva.consumers;
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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.
*/
import org.codehaus.plexus.PlexusConstants;
import org.codehaus.plexus.PlexusContainer;
import org.codehaus.plexus.context.Context;
import org.codehaus.plexus.context.ContextException;
import org.codehaus.plexus.logging.AbstractLogEnabled;
import org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable;
/**
* DiscovererConsumerFactory - factory for consumers.
*
* @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
* @version $Id$
* @plexus.component role="org.apache.maven.archiva.common.consumers.ConsumerFactory"
*/
public class ConsumerFactory
extends AbstractLogEnabled
implements Contextualizable
{
public static final String ROLE = ConsumerFactory.class.getName();
private PlexusContainer container;
public Consumer createConsumer( String name )
throws ConsumerException
{
getLogger().info( "Attempting to create consumer [" + name + "]" );
Consumer consumer;
try
{
consumer = (Consumer) container.lookup( Consumer.ROLE, name, container.getLookupRealm() );
}
catch ( Throwable t )
{
String emsg = "Unable to create consumer [" + name + "]: " + t.getMessage();
getLogger().warn( t.getMessage(), t );
throw new ConsumerException( null, emsg, t );
}
getLogger().info( "Created consumer [" + name + "|" + consumer.getName() + "]" );
return consumer;
}
public void contextualize( Context context )
throws ContextException
{
container = (PlexusContainer) context.get( PlexusConstants.PLEXUS_KEY );
}
}

View File

@ -24,7 +24,9 @@ import org.apache.maven.archiva.common.artifact.builder.DefaultLayoutArtifactBui
import org.apache.maven.archiva.common.artifact.builder.LayoutArtifactBuilder;
import org.apache.maven.archiva.common.artifact.builder.LegacyLayoutArtifactBuilder;
import org.apache.maven.archiva.common.utils.BaseFile;
import org.apache.maven.archiva.model.ArchivaRepository;
import org.apache.maven.archiva.repository.ArchivaRepository;
import org.apache.maven.archiva.repository.consumer.Consumer;
import org.apache.maven.archiva.repository.consumer.ConsumerException;
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
import org.apache.maven.artifact.repository.layout.DefaultRepositoryLayout;

View File

@ -20,6 +20,8 @@ package org.apache.maven.archiva.consumers;
*/
import org.apache.maven.archiva.common.utils.BaseFile;
import org.apache.maven.archiva.repository.consumer.Consumer;
import org.apache.maven.archiva.repository.consumer.ConsumerException;
import org.apache.maven.model.Model;
import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
import org.codehaus.plexus.util.IOUtil;

View File

@ -21,6 +21,8 @@ package org.apache.maven.archiva.consumers;
import org.apache.commons.lang.StringUtils;
import org.apache.maven.archiva.common.utils.BaseFile;
import org.apache.maven.archiva.repository.consumer.Consumer;
import org.apache.maven.archiva.repository.consumer.ConsumerException;
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
import org.apache.maven.artifact.repository.layout.DefaultRepositoryLayout;

View File

@ -19,7 +19,7 @@ package org.apache.maven.archiva.consumers;
* under the License.
*/
import org.apache.maven.archiva.model.ArchivaRepository;
import org.apache.maven.archiva.repository.ArchivaRepository;
import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
import org.codehaus.plexus.PlexusTestCase;
import org.codehaus.plexus.util.FileUtils;

View File

@ -1,5 +1,7 @@
package org.apache.maven.archiva.consumers;
import org.apache.maven.archiva.repository.consumer.ConsumerFactory;
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file

View File

@ -20,7 +20,7 @@ package org.apache.maven.archiva.consumers;
*/
import org.apache.maven.archiva.common.utils.BaseFile;
import org.apache.maven.archiva.consumers.ConsumerException;
import org.apache.maven.archiva.repository.consumer.ConsumerException;
import org.codehaus.plexus.util.StringUtils;
import java.util.ArrayList;

View File

@ -21,7 +21,8 @@ package org.apache.maven.archiva.consumers;
import org.apache.commons.lang.StringUtils;
import org.apache.maven.archiva.common.utils.BaseFile;
import org.apache.maven.archiva.model.ArchivaRepository;
import org.apache.maven.archiva.repository.ArchivaRepository;
import org.apache.maven.archiva.repository.consumer.ConsumerException;
import org.apache.maven.artifact.Artifact;
import java.util.ArrayList;

View File

@ -23,12 +23,12 @@ import org.apache.maven.archiva.configuration.ArchivaConfiguration;
import org.apache.maven.archiva.configuration.Configuration;
import org.apache.maven.archiva.configuration.ConfiguredRepositoryFactory;
import org.apache.maven.archiva.configuration.RepositoryConfiguration;
import org.apache.maven.archiva.consumers.Consumer;
import org.apache.maven.archiva.consumers.ConsumerException;
import org.apache.maven.archiva.consumers.ConsumerFactory;
import org.apache.maven.archiva.discoverer.Discoverer;
import org.apache.maven.archiva.discoverer.DiscovererException;
import org.apache.maven.archiva.discoverer.DiscovererStatistics;
import org.apache.maven.archiva.repository.consumer.Consumer;
import org.apache.maven.archiva.repository.consumer.ConsumerException;
import org.apache.maven.archiva.repository.consumer.ConsumerFactory;
import org.apache.maven.archiva.scheduler.task.DataRefreshTask;
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.codehaus.plexus.logging.AbstractLogEnabled;

View File

@ -1,69 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ Licensed to the Apache Software Foundation (ASF) under one
~ or more contributor license agreements. See the NOTICE file
~ distributed with this work for additional information
~ regarding copyright ownership. The ASF licenses this file
~ to you 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.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<parent>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>archiva-discoverer</artifactId>
<name>Archiva Discoverer</name>
<dependencies>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-consumer-api</artifactId>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-common</artifactId>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-utils</artifactId>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-container-default</artifactId>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-artifact</artifactId>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-repository-metadata</artifactId>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-artifact-manager</artifactId>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-model</artifactId>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
</dependency>
</dependencies>
</project>

View File

@ -1,178 +0,0 @@
package org.apache.maven.archiva.discoverer;
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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.
*/
import org.apache.maven.archiva.consumers.Consumer;
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.codehaus.plexus.logging.AbstractLogEnabled;
import org.codehaus.plexus.util.DirectoryWalker;
import org.codehaus.plexus.util.FileUtils;
import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
/**
* Discoverer Implementation.
*
* @author <a href="mailto:brett@apache.org">Brett Porter</a>
* @author <a href="mailto:joakime@apache.org">Joakim Erdfelt</a>
* @plexus.component role="org.apache.maven.archiva.discoverer.Discoverer"
*/
public class DefaultDiscoverer
extends AbstractLogEnabled
implements Discoverer
{
/**
* Standard patterns to exclude from discovery as they are usually noise.
*/
private static final String[] STANDARD_DISCOVERY_EXCLUDES = {
"bin/**",
"reports/**",
".index",
".reports/**",
".maven/**",
"**/*snapshot-version",
"*/website/**",
"*/licences/**",
"**/.htaccess",
"**/*.html",
"**/*.txt",
"**/README*",
"**/CHANGELOG*",
"**/KEYS*" };
public DefaultDiscoverer()
{
}
public DiscovererStatistics walkRepository( ArtifactRepository repository, List consumers, boolean includeSnapshots )
throws DiscovererException
{
return walkRepository( repository, consumers, includeSnapshots, 0, null, null );
}
public DiscovererStatistics walkRepository( ArtifactRepository repository, List consumers,
boolean includeSnapshots, long onlyModifiedAfterTimestamp,
List extraFileExclusions, List extraFileInclusions )
throws DiscovererException
{
// Sanity Check
if ( repository == null )
{
throw new IllegalArgumentException( "Unable to operate on a null repository." );
}
if ( !"file".equals( repository.getProtocol() ) )
{
throw new UnsupportedOperationException( "Only filesystem repositories are supported." );
}
File repositoryBase = new File( repository.getBasedir() );
if ( !repositoryBase.exists() )
{
throw new UnsupportedOperationException( "Unable to scan a repository, directory "
+ repositoryBase.getAbsolutePath() + " does not exist." );
}
if ( !repositoryBase.isDirectory() )
{
throw new UnsupportedOperationException( "Unable to scan a repository, path "
+ repositoryBase.getAbsolutePath() + " is not a directory." );
}
// Setup Includes / Excludes.
List allExcludes = new ArrayList();
List allIncludes = new ArrayList();
// Exclude all of the SCM patterns.
allExcludes.addAll( FileUtils.getDefaultExcludesAsList() );
// Exclude all of the archiva noise patterns.
allExcludes.addAll( Arrays.asList( STANDARD_DISCOVERY_EXCLUDES ) );
if ( !includeSnapshots )
{
allExcludes.add( "**/*-SNAPSHOT*" );
}
if ( extraFileExclusions != null )
{
allExcludes.addAll( extraFileExclusions );
}
Iterator it = consumers.iterator();
while ( it.hasNext() )
{
Consumer consumer = (Consumer) it.next();
/* NOTE: Do not insert the consumer exclusion patterns here.
* Exclusion patterns are handled by RepositoryScanner.wantsFile(Consumer, String)
*
* addUniqueElements( consumer.getExcludePatterns(), allExcludes );
*/
addUniqueElements( consumer.getIncludePatterns(), allIncludes );
}
if ( extraFileInclusions != null )
{
allIncludes.addAll( extraFileInclusions );
}
// Setup Directory Walker
DirectoryWalker dirWalker = new DirectoryWalker();
dirWalker.setBaseDir( repositoryBase );
dirWalker.setIncludes( allIncludes );
dirWalker.setExcludes( allExcludes );
// Setup the Scan Instance
RepositoryScanner repoScanner = new RepositoryScanner( repository, consumers );
repoScanner.setOnlyModifiedAfterTimestamp( onlyModifiedAfterTimestamp );
repoScanner.setLogger( getLogger() );
dirWalker.addDirectoryWalkListener( repoScanner );
// Execute scan.
dirWalker.scan();
return repoScanner.getStatistics();
}
private void addUniqueElements( List fromList, List toList )
{
Iterator itFrom = fromList.iterator();
while ( itFrom.hasNext() )
{
Object o = itFrom.next();
if ( !toList.contains( o ) )
{
toList.add( o );
}
}
}
}

View File

@ -1,73 +0,0 @@
package org.apache.maven.archiva.discoverer;
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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.
*/
import org.apache.maven.artifact.repository.ArtifactRepository;
import java.io.File;
import java.util.List;
/**
* Discoverer - generic discoverer of content in an ArtifactRepository.
*
* @author <a href="mailto:joakime@apache.org">Joakim Erdfelt</a>
* @version $Id$
*/
public interface Discoverer
{
public static final String ROLE = Discoverer.class.getName();
/**
* Walk the repository, and report to the consumers the files found.
*
* Report changes to the appropriate Consumer.
*
* This is just a convenience method to {@link #walkRepository(ArtifactRepository, List, boolean, long, List, List)}
* equivalent to calling <code>walkRepository( repository, consumers, includeSnapshots, 0, null, null );</code>
*
* @param repository the repository to change.
* @param consumers use the provided list of consumers.
* @param includeSnapshots true to include snapshots in the walking of this repository.
* @return the statistics for this scan.
* @throws DiscovererException if there was a fundamental problem with getting the discoverer started.
*/
public DiscovererStatistics walkRepository( ArtifactRepository repository, List consumers, boolean includeSnapshots )
throws DiscovererException;
/**
* Walk the repository, and report to the consumers the files found.
*
* Report changes to the appropriate Consumer.
*
* @param repository the repository to change.
* @param consumers use the provided list of consumers.
* @param includeSnapshots true to include snapshots in the scanning of this repository.
* @param onlyModifiedAfterTimestamp Only report to the consumers, files that have a {@link File#lastModified()})
* after the provided timestamp.
* @param extraFileExclusions an optional list of file exclusions on the walk.
* @param extraFileInclusions an optional list of file inclusions on the walk.
* @return the statistics for this scan.
* @throws DiscovererException if there was a fundamental problem with getting the discoverer started.
*/
public DiscovererStatistics walkRepository( ArtifactRepository repository, List consumers,
boolean includeSnapshots, long onlyModifiedAfterTimestamp,
List extraFileExclusions, List extraFileInclusions )
throws DiscovererException;
}

View File

@ -1,37 +0,0 @@
package org.apache.maven.archiva.discoverer;
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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.
*/
/**
* @author Edwin Punzalan
*/
public class DiscovererException
extends Exception
{
public DiscovererException( String message )
{
super( message );
}
public DiscovererException( String message, Throwable cause )
{
super( message, cause );
}
}

View File

@ -1,198 +0,0 @@
package org.apache.maven.archiva.discoverer;
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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.
*/
import org.apache.commons.lang.math.NumberUtils;
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.codehaus.plexus.logging.Logger;
import org.codehaus.plexus.util.IOUtil;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Properties;
/**
* DiscovererStatistics
*
* @author <a href="mailto:joakime@apache.org">Joakim Erdfelt</a>
* @version $Id$
*/
public class DiscovererStatistics
{
private static final String PROP_FILES_CONSUMED = "scan.consumed.files";
private static final String PROP_FILES_INCLUDED = "scan.included.files";
private static final String PROP_FILES_SKIPPED = "scan.skipped.files";
private static final String PROP_TIMESTAMP_STARTED = "scan.started.timestamp";
private static final String PROP_TIMESTAMP_FINISHED = "scan.finished.timestamp";
protected long timestampStarted = 0;
protected long timestampFinished = 0;
protected long filesIncluded = 0;
protected long filesConsumed = 0;
protected long filesSkipped = 0;
private ArtifactRepository repository;
public DiscovererStatistics( ArtifactRepository repository )
{
this.repository = repository;
}
public void load( String filename )
throws IOException
{
File repositoryBase = new File( this.repository.getBasedir() );
File scanProperties = new File( repositoryBase, filename );
FileInputStream fis = null;
try
{
Properties props = new Properties();
fis = new FileInputStream( scanProperties );
props.load( fis );
timestampFinished = NumberUtils.toLong( props.getProperty( PROP_TIMESTAMP_FINISHED ), 0 );
timestampStarted = NumberUtils.toLong( props.getProperty( PROP_TIMESTAMP_STARTED ), 0 );
filesIncluded = NumberUtils.toLong( props.getProperty( PROP_FILES_INCLUDED ), 0 );
filesConsumed = NumberUtils.toLong( props.getProperty( PROP_FILES_CONSUMED ), 0 );
filesSkipped = NumberUtils.toLong( props.getProperty( PROP_FILES_SKIPPED ), 0 );
}
catch ( IOException e )
{
reset();
throw e;
}
finally
{
IOUtil.close( fis );
}
}
public void save( String filename )
throws IOException
{
Properties props = new Properties();
props.setProperty( PROP_TIMESTAMP_FINISHED, String.valueOf( timestampFinished ) );
props.setProperty( PROP_TIMESTAMP_STARTED, String.valueOf( timestampStarted ) );
props.setProperty( PROP_FILES_INCLUDED, String.valueOf( filesIncluded ) );
props.setProperty( PROP_FILES_CONSUMED, String.valueOf( filesConsumed ) );
props.setProperty( PROP_FILES_SKIPPED, String.valueOf( filesSkipped ) );
File repositoryBase = new File( this.repository.getBasedir() );
File statsFile = new File( repositoryBase, filename );
FileOutputStream fos = null;
try
{
fos = new FileOutputStream( statsFile );
props.store( fos, "Last Scan Information, managed by Archiva. DO NOT EDIT" );
fos.flush();
}
finally
{
IOUtil.close( fos );
}
}
public void reset()
{
timestampStarted = 0;
timestampFinished = 0;
filesIncluded = 0;
filesConsumed = 0;
filesSkipped = 0;
}
public long getElapsedMilliseconds()
{
return timestampFinished - timestampStarted;
}
public long getFilesConsumed()
{
return filesConsumed;
}
public long getFilesIncluded()
{
return filesIncluded;
}
public ArtifactRepository getRepository()
{
return repository;
}
public long getTimestampFinished()
{
return timestampFinished;
}
public long getTimestampStarted()
{
return timestampStarted;
}
public long getFilesSkipped()
{
return filesSkipped;
}
public void setTimestampFinished( long timestampFinished )
{
this.timestampFinished = timestampFinished;
}
public void setTimestampStarted( long timestampStarted )
{
this.timestampStarted = timestampStarted;
}
public void dump( Logger logger )
{
logger.info( "----------------------------------------------------" );
logger.info( "Scan of Repository: " + repository.getId() );
logger.info( " Started : " + toHumanTimestamp( this.getTimestampStarted() ) );
logger.info( " Finished: " + toHumanTimestamp( this.getTimestampFinished() ) );
// TODO: pretty print ellapsed time.
logger.info( " Duration: " + this.getElapsedMilliseconds() + "ms" );
logger.info( " Files : " + this.getFilesIncluded() );
logger.info( " Consumed: " + this.getFilesConsumed() );
logger.info( " Skipped : " + this.getFilesSkipped() );
}
private String toHumanTimestamp( long timestamp )
{
SimpleDateFormat dateFormat = new SimpleDateFormat();
return dateFormat.format( new Date( timestamp ) );
}
}

View File

@ -1,209 +0,0 @@
package org.apache.maven.archiva.discoverer;
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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.
*/
import org.apache.commons.lang.SystemUtils;
import org.apache.maven.archiva.common.utils.BaseFile;
import org.apache.maven.archiva.consumers.Consumer;
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.codehaus.plexus.logging.Logger;
import org.codehaus.plexus.util.DirectoryWalkListener;
import org.codehaus.plexus.util.SelectorUtils;
import org.codehaus.plexus.util.StringUtils;
import java.io.File;
import java.util.Iterator;
import java.util.List;
/**
* RepositoryScanner - this is an instance of a scan against a repository.
*
* @author <a href="mailto:joakime@apache.org">Joakim Erdfelt</a>
* @version $Id$
*/
public class RepositoryScanner
implements DirectoryWalkListener
{
public static final String ROLE = RepositoryScanner.class.getName();
private List consumers;
private ArtifactRepository repository;
private Logger logger;
private boolean isCaseSensitive = true;
private DiscovererStatistics stats;
private long onlyModifiedAfterTimestamp = 0;
public RepositoryScanner( ArtifactRepository repository, List consumerList )
{
this.repository = repository;
this.consumers = consumerList;
stats = new DiscovererStatistics( repository );
Iterator it = this.consumers.iterator();
while ( it.hasNext() )
{
Consumer consumer = (Consumer) it.next();
if ( !consumer.init( this.repository ) )
{
throw new IllegalStateException( "Consumer [" + consumer.getName() +
"] is reporting that it is incompatible with the [" + repository.getId() + "] repository." );
}
}
if ( SystemUtils.IS_OS_WINDOWS )
{
isCaseSensitive = false;
}
}
public DiscovererStatistics getStatistics()
{
return stats;
}
public void directoryWalkStarting( File basedir )
{
getLogger().info( "Walk Started: [" + this.repository.getId() + "] " + this.repository.getBasedir() );
stats.reset();
stats.timestampStarted = System.currentTimeMillis();
}
public void directoryWalkStep( int percentage, File file )
{
getLogger().debug( "Walk Step: " + percentage + ", " + file );
// Timestamp finished points to the last successful scan, not this current one.
if ( file.lastModified() < onlyModifiedAfterTimestamp )
{
// Skip file as no change has occured.
getLogger().debug( "Skipping, No Change: " + file.getAbsolutePath() );
stats.filesSkipped++;
return;
}
synchronized ( consumers )
{
stats.filesIncluded++;
BaseFile basefile = new BaseFile( repository.getBasedir(), file );
Iterator itConsumers = this.consumers.iterator();
while ( itConsumers.hasNext() )
{
Consumer consumer = (Consumer) itConsumers.next();
if ( wantsFile( consumer, StringUtils.replace( basefile.getRelativePath(), "\\", "/" ) ) )
{
try
{
getLogger().debug( "Sending to consumer: " + consumer.getName() );
stats.filesConsumed++;
consumer.processFile( basefile );
}
catch ( Exception e )
{
/* Intentionally Catch all exceptions.
* So that the discoverer processing can continue.
*/
getLogger().error( "Consumer [" + consumer.getName() + "] had an error when processing file [" +
basefile.getAbsolutePath() + "]: " + e.getMessage(), e );
}
}
else
{
getLogger().debug(
"Skipping consumer " + consumer.getName() + " for file " + basefile.getRelativePath() );
}
}
}
}
public void directoryWalkFinished()
{
getLogger().info( "Walk Finished: [" + this.repository.getId() + "] " + this.repository.getBasedir() );
stats.timestampFinished = System.currentTimeMillis();
}
private boolean wantsFile( Consumer consumer, String relativePath )
{
Iterator it;
// Test excludes first.
it = consumer.getExcludePatterns().iterator();
while ( it.hasNext() )
{
String pattern = (String) it.next();
if ( SelectorUtils.matchPath( pattern, relativePath, isCaseSensitive ) )
{
// Definately does NOT WANT FILE.
return false;
}
}
// Now test includes.
it = consumer.getIncludePatterns().iterator();
while ( it.hasNext() )
{
String pattern = (String) it.next();
if ( SelectorUtils.matchPath( pattern, relativePath, isCaseSensitive ) )
{
// Specifically WANTS FILE.
return true;
}
}
// Not included, and Not excluded? Default to EXCLUDE.
return false;
}
public long getOnlyModifiedAfterTimestamp()
{
return onlyModifiedAfterTimestamp;
}
public void setOnlyModifiedAfterTimestamp( long onlyModifiedAfterTimestamp )
{
this.onlyModifiedAfterTimestamp = onlyModifiedAfterTimestamp;
}
/**
* Debug method from DirectoryWalker.
*/
public void debug( String message )
{
getLogger().debug( "Repository Scanner: " + message );
}
public Logger getLogger()
{
return logger;
}
public void setLogger( Logger logger )
{
this.logger = logger;
}
}

View File

@ -1,50 +0,0 @@
-----
Discoverer Design
-----
Brett Porter
-----
24 July 2006
-----
~~ Copyright 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.
~~ NOTE: For help with the syntax of this file, see:
~~ http://maven.apache.org/guides/mini/guide-apt-format.html
Discoverer Design
The artifact discoverer is designed to traverse the paths in the repository and identify files that are part of
a legitimate artifact.
There are two plexus components available:
* {{{../apidocs/org/apache/maven/archiva/discoverer/ArtifactDiscoverer.html} ArtifactDiscoverer}}
* {{{../apidocs/org/apache/maven/archiva/discoverer/MetadataDiscoverer.html} MetadataDiscoverer}}
Each of these components currently have an implementation for the both <<<legacy>>> and <<<default>>> repository
layouts.
The artifact discoverer will find all artifacts in the repository, while metadata discovery finds any
<<<maven-metadata.xml>>> files (both remote and local repository formats).
Note that POMs will be identified as separate artifacts to their related artifacts, as will each
individual derivative artifact at present. Currently, it has been decided not to link them - MRM-40 was closed as
won't fix as a result.
* Limitations
* Currently, deleted artifacts are not tracked. This requires a separate event - see
{{{http://jira.codehaus.org/browse/MRM-37} MRM-37}}.

View File

@ -1,27 +0,0 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
~ Licensed to the Apache Software Foundation (ASF) under one
~ or more contributor license agreements. See the NOTICE file
~ distributed with this work for additional information
~ regarding copyright ownership. The ASF licenses this file
~ to you 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.
-->
<project>
<body>
<menu name="Design Documentation">
<item name="Discoverer Design" href="/design.html"/>
</menu>
</body>
</project>

View File

@ -1,86 +0,0 @@
package org.apache.maven.archiva.discoverer;
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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.
*/
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.artifact.repository.ArtifactRepositoryFactory;
import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
import org.codehaus.plexus.PlexusTestCase;
import java.io.File;
/**
* @author Edwin Punzalan
* @author <a href="mailto:joakime@apache.org">Joakim Erdfelt</a>
*/
public abstract class AbstractDiscovererTestCase
extends PlexusTestCase
{
protected Discoverer discoverer;
protected void setUp()
throws Exception
{
super.setUp();
discoverer = (Discoverer) lookup( Discoverer.ROLE );
}
protected void tearDown()
throws Exception
{
release( discoverer );
super.tearDown();
}
protected ArtifactRepository getLegacyRepository()
throws Exception
{
File repoBaseDir = new File( getBasedir(), "src/test/legacy-repository" );
ArtifactRepository repository = createRepository( repoBaseDir, "legacy" );
resetRepositoryState( repository );
return repository;
}
protected ArtifactRepository getDefaultRepository()
throws Exception
{
File repoBaseDir = new File( getBasedir(), "src/test/repository" );
ArtifactRepository repository = createRepository( repoBaseDir, "default" );
resetRepositoryState( repository );
return repository;
}
protected void resetRepositoryState( ArtifactRepository repository )
{
// Implement any kind of repository cleanup.
}
protected ArtifactRepository createRepository( File basedir, String layout )
throws Exception
{
ArtifactRepositoryFactory factory = (ArtifactRepositoryFactory) lookup( ArtifactRepositoryFactory.ROLE );
ArtifactRepositoryLayout repoLayout = (ArtifactRepositoryLayout) lookup( ArtifactRepositoryLayout.ROLE, layout );
return factory.createArtifactRepository( "discoveryRepo-" + getName(), "file://" + basedir, repoLayout, null,
null );
}
}

View File

@ -1,169 +0,0 @@
package org.apache.maven.archiva.discoverer;
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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.
*/
import org.apache.commons.lang.StringUtils;
import org.apache.maven.archiva.common.utils.BaseFile;
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.codehaus.plexus.logging.Logger;
import org.codehaus.plexus.logging.console.ConsoleLogger;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/**
* DefaultDiscovererTest
*
* @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
* @version $Id$
*/
public class DefaultDiscovererTest
extends AbstractDiscovererTestCase
{
private MockConsumer createAndAddMockConsumer( List consumers, String includePattern, String excludePattern )
{
MockConsumer mockConsumer = new MockConsumer();
mockConsumer.getIncludePatterns().add( includePattern );
if ( StringUtils.isNotBlank( excludePattern ) )
{
mockConsumer.getExcludePatterns().add( excludePattern );
}
consumers.add( mockConsumer );
return mockConsumer;
}
private void assertFilesProcessed( int expectedFileCount, DiscovererStatistics stats, MockConsumer mockConsumer )
{
assertNotNull( "Stats should not be null.", stats );
assertNotNull( "MockConsumer should not be null.", mockConsumer );
assertNotNull( "MockConsumer.filesProcessed should not be null.", mockConsumer.getFilesProcessed() );
if ( stats.getFilesConsumed() != mockConsumer.getFilesProcessed().size() )
{
fail( "Somehow, the stats count of files consumed, and the count of actual files "
+ "processed by the consumer do not match." );
}
int actualFileCount = mockConsumer.getFilesProcessed().size();
if ( expectedFileCount != actualFileCount )
{
stats.dump( new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ) );
System.out.println( "Base Dir:" + stats.getRepository().getBasedir() );
int num = 0;
Iterator it = mockConsumer.getFilesProcessed().iterator();
while ( it.hasNext() )
{
BaseFile file = (BaseFile) it.next();
System.out.println( " Processed File [" + num + "]: " + file.getRelativePath() );
num++;
}
fail( "Files Processed mismatch: expected:<" + expectedFileCount + ">, actual:<" + actualFileCount + ">" );
}
}
public void testLegacyLayoutRepositoryAll()
throws Exception
{
ArtifactRepository repository = getLegacyRepository();
List consumers = new ArrayList();
MockConsumer mockConsumer = createAndAddMockConsumer( consumers, "**/*", null );
DiscovererStatistics stats = discoverer.walkRepository( repository, consumers, true );
assertNotNull( stats );
assertFilesProcessed( 16, stats, mockConsumer );
}
public void testDefaultLayoutRepositoryAll()
throws Exception
{
ArtifactRepository repository = getDefaultRepository();
List consumers = new ArrayList();
MockConsumer mockConsumer = createAndAddMockConsumer( consumers, "**/*", null );
DiscovererStatistics stats = discoverer.walkRepository( repository, consumers, true );
assertNotNull( stats );
assertFilesProcessed( 42, stats, mockConsumer );
}
public void testDefaultLayoutRepositoryPomsOnly()
throws Exception
{
ArtifactRepository repository = getDefaultRepository();
List consumers = new ArrayList();
MockConsumer mockConsumer = createAndAddMockConsumer( consumers, "**/*.pom", null );
DiscovererStatistics stats = discoverer.walkRepository( repository, consumers, true );
assertNotNull( stats );
assertFilesProcessed( 10, stats, mockConsumer );
}
public void testDefaultLayoutRepositoryJarsOnly()
throws Exception
{
ArtifactRepository repository = getDefaultRepository();
List consumers = new ArrayList();
MockConsumer mockConsumer = createAndAddMockConsumer( consumers, "**/*.jar", null );
DiscovererStatistics stats = discoverer.walkRepository( repository, consumers, true );
assertNotNull( stats );
assertFilesProcessed( 17, stats, mockConsumer );
}
public void testDefaultLayoutRepositoryJarsNoSnapshots()
throws Exception
{
ArtifactRepository repository = getDefaultRepository();
List consumers = new ArrayList();
MockConsumer mockConsumer = createAndAddMockConsumer( consumers, "**/*.jar", null );
DiscovererStatistics stats = discoverer.walkRepository( repository, consumers, false );
assertNotNull( stats );
assertFilesProcessed( 13, stats, mockConsumer );
}
public void testDefaultLayoutRepositoryJarsNoSnapshotsWithExclusions()
throws Exception
{
ArtifactRepository repository = getDefaultRepository();
List consumers = new ArrayList();
MockConsumer mockConsumer = createAndAddMockConsumer( consumers, "**/*.jar", null );
List exclusions = new ArrayList();
exclusions.add( "**/*-client.jar" );
DiscovererStatistics stats = discoverer.walkRepository( repository, consumers, false, 0, exclusions, null );
assertNotNull( stats );
assertFilesProcessed( 12, stats, mockConsumer );
}
}

View File

@ -1,75 +0,0 @@
/**
*
*/
package org.apache.maven.archiva.discoverer;
import org.apache.maven.archiva.common.utils.BaseFile;
import org.apache.maven.archiva.consumers.Consumer;
import org.apache.maven.archiva.consumers.ConsumerException;
import org.apache.maven.artifact.repository.ArtifactRepository;
import java.util.ArrayList;
import java.util.List;
public class MockConsumer
implements Consumer
{
private List excludePatterns = new ArrayList();
private List includePatterns = new ArrayList();
private List filesProcessed = new ArrayList();
private int countFileProblems = 0;
public String getName()
{
return "MockConsumer (Testing Only)";
}
public boolean init( ArtifactRepository repository )
{
return true;
}
public void processFile( BaseFile file )
throws ConsumerException
{
filesProcessed.add( file );
}
public void processFileProblem( BaseFile file, String message )
{
countFileProblems++;
}
public List getExcludePatterns()
{
return excludePatterns;
}
public void setExcludePatterns( List excludePatterns )
{
this.excludePatterns = excludePatterns;
}
public List getIncludePatterns()
{
return includePatterns;
}
public void setIncludePatterns( List includePatterns )
{
this.includePatterns = includePatterns;
}
public int getCountFileProblems()
{
return countFileProblems;
}
public List getFilesProcessed()
{
return filesProcessed;
}
}

View File

@ -1 +0,0 @@
not a real CVS root - for testing exclusions

View File

@ -1,28 +0,0 @@
<!--
~ Licensed to the Apache Software Foundation (ASF) under one
~ or more contributor license agreements. See the NOTICE file
~ distributed with this work for additional information
~ regarding copyright ownership. The ASF licenses this file
~ to you 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.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.apache.maven</groupId>
<artifactId>A</artifactId>
<version>1.0</version>
<name>Maven Test Repository Artifact Discovery</name>
<packaging>war</packaging>
</project>

View File

@ -1 +0,0 @@
dummy content. sample file only.

View File

@ -1,28 +0,0 @@
<!--
~ Licensed to the Apache Software Foundation (ASF) under one
~ or more contributor license agreements. See the NOTICE file
~ distributed with this work for additional information
~ regarding copyright ownership. The ASF licenses this file
~ to you 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.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.apache.maven</groupId>
<artifactId>B</artifactId>
<version>1.0</version>
<name>Maven Test Repository Artifact Discovery</name>
<packaging>pom</packaging>
</project>

View File

@ -1,28 +0,0 @@
<!--
~ Licensed to the Apache Software Foundation (ASF) under one
~ or more contributor license agreements. See the NOTICE file
~ distributed with this work for additional information
~ regarding copyright ownership. The ASF licenses this file
~ to you 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.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.apache.maven</groupId>
<artifactId>B</artifactId>
<version>2.0</version>
<name>Maven Test Repository Artifact Discovery</name>
<packaging>pom</packaging>
</project>

View File

@ -1,28 +0,0 @@
<!--
~ Licensed to the Apache Software Foundation (ASF) under one
~ or more contributor license agreements. See the NOTICE file
~ distributed with this work for additional information
~ regarding copyright ownership. The ASF licenses this file
~ to you 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.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.apache.maven</groupId>
<artifactId>C</artifactId>
<version>1.0</version>
<name>Maven Test Repository Artifact Discovery</name>
<packaging>war</packaging>
</project>

View File

@ -1 +0,0 @@
dummy content. sample file only.

View File

@ -1,28 +0,0 @@
<!--
~ Licensed to the Apache Software Foundation (ASF) under one
~ or more contributor license agreements. See the NOTICE file
~ distributed with this work for additional information
~ regarding copyright ownership. The ASF licenses this file
~ to you 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.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.apache.maven</groupId>
<artifactId>discovery</artifactId>
<version>1.0</version>
<name>Maven Test Repository Artifact Discovery</name>
<packaging>pom</packaging>
</project>

View File

@ -1 +0,0 @@
dummy content. sample file only.

View File

@ -1,29 +0,0 @@
<!--
~ Licensed to the Apache Software Foundation (ASF) under one
~ or more contributor license agreements. See the NOTICE file
~ distributed with this work for additional information
~ regarding copyright ownership. The ASF licenses this file
~ to you 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.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.apache.maven</groupId>
<artifactId>C</artifactId>
<version>1.0</version>
<name>Maven Test Repository Artifact Discovery</name>
<!-- default packaging is jar -->
<!--packaging>jar</packaging-->
</project>

View File

@ -1 +0,0 @@
dummy content. sample file only.

View File

@ -1,29 +0,0 @@
<!--
~ Licensed to the Apache Software Foundation (ASF) under one
~ or more contributor license agreements. See the NOTICE file
~ distributed with this work for additional information
~ regarding copyright ownership. The ASF licenses this file
~ to you 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.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.apache.maven</groupId>
<artifactId>C</artifactId>
<version>1.0</version>
<name>Maven Test Repository Artifact Discovery</name>
<!-- specified packaging -->
<packaging>jar</packaging>
</project>

View File

@ -1,28 +0,0 @@
<!--
~ Licensed to the Apache Software Foundation (ASF) under one
~ or more contributor license agreements. See the NOTICE file
~ distributed with this work for additional information
~ regarding copyright ownership. The ASF licenses this file
~ to you 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.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.apache.testgroup</groupId>
<artifactId>discovery</artifactId>
<version>1.0</version>
<name>Maven Test Repository Artifact Discovery</name>
<packaging>pom</packaging>
</project>

View File

@ -1 +0,0 @@
not a real CVS root - for testing exclusions

View File

@ -1 +0,0 @@
test KEYS file

View File

@ -1,26 +0,0 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
~ Licensed to the Apache Software Foundation (ASF) under one
~ or more contributor license agreements. See the NOTICE file
~ distributed with this work for additional information
~ regarding copyright ownership. The ASF licenses this file
~ to you 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.
-->
<!-- This metdata is intentionally wrong. -->
<metadata>
<groupId>javax.sql</groupId>
<artifactId>jdbc</artifactId>
<version>2.0</version>
</metadata>

View File

@ -1,25 +0,0 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
~ Licensed to the Apache Software Foundation (ASF) under one
~ or more contributor license agreements. See the NOTICE file
~ distributed with this work for additional information
~ regarding copyright ownership. The ASF licenses this file
~ to you 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>javax.sql</groupId>
<artifactId>jdbc</artifactId>
<version>2.0</version>
</metadata>

View File

@ -1,30 +0,0 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
~ Licensed to the Apache Software Foundation (ASF) under one
~ or more contributor license agreements. See the NOTICE file
~ distributed with this work for additional information
~ regarding copyright ownership. The ASF licenses this file
~ to you 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>javax.sql</groupId>
<artifactId>jdbc</artifactId>
<version>2.0</version>
<versioning>
<versions>
<version>2.0</version>
</versions>
</versioning>
</metadata>

View File

@ -1,25 +0,0 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
~ Licensed to the Apache Software Foundation (ASF) under one
~ or more contributor license agreements. See the NOTICE file
~ distributed with this work for additional information
~ regarding copyright ownership. The ASF licenses this file
~ to you 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>javax.sql</groupId>
<artifactId>jdbc</artifactId>
<version>2.0</version>
</metadata>

View File

@ -1,28 +0,0 @@
<!--
~ Licensed to the Apache Software Foundation (ASF) under one
~ or more contributor license agreements. See the NOTICE file
~ distributed with this work for additional information
~ regarding copyright ownership. The ASF licenses this file
~ to you 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.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.apache.maven</groupId>
<artifactId>A</artifactId>
<version>1.0</version>
<name>Maven Test Repository Artifact Discovery</name>
<packaging>war</packaging>
</project>

View File

@ -1 +0,0 @@
dummy content. sample file only.

View File

@ -1,28 +0,0 @@
<!--
~ Licensed to the Apache Software Foundation (ASF) under one
~ or more contributor license agreements. See the NOTICE file
~ distributed with this work for additional information
~ regarding copyright ownership. The ASF licenses this file
~ to you 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.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.apache.maven</groupId>
<artifactId>B</artifactId>
<version>1.0</version>
<name>Maven Test Repository Artifact Discovery</name>
<packaging>pom</packaging>
</project>

View File

@ -1,28 +0,0 @@
<!--
~ Licensed to the Apache Software Foundation (ASF) under one
~ or more contributor license agreements. See the NOTICE file
~ distributed with this work for additional information
~ regarding copyright ownership. The ASF licenses this file
~ to you 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.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.apache.maven</groupId>
<artifactId>B</artifactId>
<version>2.0</version>
<name>Maven Test Repository Artifact Discovery</name>
<packaging>pom</packaging>
</project>

View File

@ -1,28 +0,0 @@
<!--
~ Licensed to the Apache Software Foundation (ASF) under one
~ or more contributor license agreements. See the NOTICE file
~ distributed with this work for additional information
~ regarding copyright ownership. The ASF licenses this file
~ to you 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.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.apache.maven</groupId>
<artifactId>C</artifactId>
<version>1.0</version>
<name>Maven Test Repository Artifact Discovery</name>
<packaging>war</packaging>
</project>

View File

@ -1 +0,0 @@
dummy content. sample file only.

View File

@ -1,28 +0,0 @@
<!--
~ Licensed to the Apache Software Foundation (ASF) under one
~ or more contributor license agreements. See the NOTICE file
~ distributed with this work for additional information
~ regarding copyright ownership. The ASF licenses this file
~ to you 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.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.apache.maven</groupId>
<artifactId>discovery</artifactId>
<version>1.0</version>
<name>Maven Test Repository Artifact Discovery</name>
<packaging>pom</packaging>
</project>

View File

@ -1,23 +0,0 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
~ Licensed to the Apache Software Foundation (ASF) under one
~ or more contributor license agreements. See the NOTICE file
~ distributed with this work for additional information
~ regarding copyright ownership. The ASF licenses this file
~ to you 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</groupId>
</metadata>

View File

@ -1 +0,0 @@
dummy content. sample file only.

View File

@ -1,29 +0,0 @@
<!--
~ Licensed to the Apache Software Foundation (ASF) under one
~ or more contributor license agreements. See the NOTICE file
~ distributed with this work for additional information
~ regarding copyright ownership. The ASF licenses this file
~ to you 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.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.apache.maven</groupId>
<artifactId>C</artifactId>
<version>1.0</version>
<name>Maven Test Repository Artifact Discovery</name>
<!-- default packaging is jar -->
<!--packaging>jar</packaging-->
</project>

View File

@ -1 +0,0 @@
dummy content. sample file only.

View File

@ -1,29 +0,0 @@
<!--
~ Licensed to the Apache Software Foundation (ASF) under one
~ or more contributor license agreements. See the NOTICE file
~ distributed with this work for additional information
~ regarding copyright ownership. The ASF licenses this file
~ to you 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.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.apache.maven</groupId>
<artifactId>C</artifactId>
<version>1.0</version>
<name>Maven Test Repository Artifact Discovery</name>
<!-- specified packaging -->
<packaging>jar</packaging>
</project>

View File

@ -1,29 +0,0 @@
<!--
~ Licensed to the Apache Software Foundation (ASF) under one
~ or more contributor license agreements. See the NOTICE file
~ distributed with this work for additional information
~ regarding copyright ownership. The ASF licenses this file
~ to you 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.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.apache.maven.update</groupId>
<artifactId>test-not-updated</artifactId>
<version>1.0</version>
<name>Maven Test Repository Artifact Discovery</name>
<!-- default packaging is jar -->
<!--packaging>jar</packaging-->
</project>

View File

@ -1,24 +0,0 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
~ Licensed to the Apache Software Foundation (ASF) under one
~ or more contributor license agreements. See the NOTICE file
~ distributed with this work for additional information
~ regarding copyright ownership. The ASF licenses this file
~ to you 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.update</groupId>
<artifactId>test-not-updated</artifactId>
</metadata>

View File

@ -1,29 +0,0 @@
<!--
~ Licensed to the Apache Software Foundation (ASF) under one
~ or more contributor license agreements. See the NOTICE file
~ distributed with this work for additional information
~ regarding copyright ownership. The ASF licenses this file
~ to you 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.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.apache.maven.update</groupId>
<artifactId>test-updated</artifactId>
<version>1.0</version>
<name>Maven Test Repository Artifact Discovery</name>
<!-- default packaging is jar -->
<!--packaging>jar</packaging-->
</project>

View File

@ -1,24 +0,0 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
~ Licensed to the Apache Software Foundation (ASF) under one
~ or more contributor license agreements. See the NOTICE file
~ distributed with this work for additional information
~ regarding copyright ownership. The ASF licenses this file
~ to you 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.update</groupId>
<artifactId>test-updated</artifactId>
</metadata>

View File

@ -1,28 +0,0 @@
<!--
~ Licensed to the Apache Software Foundation (ASF) under one
~ or more contributor license agreements. See the NOTICE file
~ distributed with this work for additional information
~ regarding copyright ownership. The ASF licenses this file
~ to you 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.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.apache.testgroup</groupId>
<artifactId>discovery</artifactId>
<version>1.0</version>
<name>Maven Test Repository Artifact Discovery</name>
<packaging>pom</packaging>
</project>

View File

@ -1,25 +0,0 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
~ Licensed to the Apache Software Foundation (ASF) under one
~ or more contributor license agreements. See the NOTICE file
~ distributed with this work for additional information
~ regarding copyright ownership. The ASF licenses this file
~ to you 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.testgroup</groupId>
<artifactId>discovery</artifactId>
<version>1.0</version>
</metadata>

View File

@ -1,24 +0,0 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
~ Licensed to the Apache Software Foundation (ASF) under one
~ or more contributor license agreements. See the NOTICE file
~ distributed with this work for additional information
~ regarding copyright ownership. The ASF licenses this file
~ to you 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.testgroup</groupId>
<artifactId>discovery</artifactId>
</metadata>

View File

@ -37,6 +37,11 @@
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-utils</artifactId>
</dependency>
<dependency>
<groupId>javax.jdo</groupId>
<artifactId>jdo2-api</artifactId>
<version>2.0</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-container-default</artifactId>

View File

@ -169,6 +169,13 @@
<codeSegment>
<version>1.0.0+</version>
<code>
public RepositoryContent( String groupId, String artifactId, String version )
{
this.setGroupId( groupId );
this.setArtifactId( artifactId );
this.setVersion( version );
}
public RepositoryContent( String repositoryId, String groupId, String artifactId, String version )
{
this.setRepositoryId( repositoryId );

Some files were not shown because too many files have changed in this diff Show More