mirror of https://github.com/apache/archiva.git
[MRM-815] aggregate indices for repository groups.
add a unit for this feature. git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@1199337 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
6a767ceb44
commit
f21e64d0c9
|
@ -0,0 +1,55 @@
|
||||||
|
<?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.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<settings>
|
||||||
|
<profiles>
|
||||||
|
<profile>
|
||||||
|
<id>it-repo</id>
|
||||||
|
<activation>
|
||||||
|
<activeByDefault>true</activeByDefault>
|
||||||
|
</activation>
|
||||||
|
<repositories>
|
||||||
|
<repository>
|
||||||
|
<id>local.central</id>
|
||||||
|
<url>@localRepositoryUrl@</url>
|
||||||
|
<releases>
|
||||||
|
<enabled>true</enabled>
|
||||||
|
</releases>
|
||||||
|
<snapshots>
|
||||||
|
<enabled>true</enabled>
|
||||||
|
</snapshots>
|
||||||
|
</repository>
|
||||||
|
</repositories>
|
||||||
|
<pluginRepositories>
|
||||||
|
<pluginRepository>
|
||||||
|
<id>local.central</id>
|
||||||
|
<url>@localRepositoryUrl@</url>
|
||||||
|
<releases>
|
||||||
|
<enabled>true</enabled>
|
||||||
|
</releases>
|
||||||
|
<snapshots>
|
||||||
|
<enabled>true</enabled>
|
||||||
|
</snapshots>
|
||||||
|
</pluginRepository>
|
||||||
|
</pluginRepositories>
|
||||||
|
</profile>
|
||||||
|
</profiles>
|
||||||
|
</settings>
|
|
@ -19,8 +19,12 @@ package org.apache.archiva;
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import junit.framework.TestCase;
|
import junit.framework.TestCase;
|
||||||
|
import org.apache.archiva.rest.api.services.ManagedRepositoriesService;
|
||||||
import org.apache.archiva.rest.api.services.ProxyConnectorService;
|
import org.apache.archiva.rest.api.services.ProxyConnectorService;
|
||||||
import org.apache.archiva.rest.api.services.RemoteRepositoriesService;
|
import org.apache.archiva.rest.api.services.RemoteRepositoriesService;
|
||||||
|
import org.apache.archiva.rest.api.services.RepositoriesService;
|
||||||
|
import org.apache.archiva.rest.api.services.RepositoryGroupService;
|
||||||
|
import org.apache.archiva.rest.api.services.SearchService;
|
||||||
import org.apache.archiva.webdav.RepositoryServlet;
|
import org.apache.archiva.webdav.RepositoryServlet;
|
||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang.StringUtils;
|
||||||
import org.apache.cxf.common.util.Base64Utility;
|
import org.apache.cxf.common.util.Base64Utility;
|
||||||
|
@ -76,10 +80,7 @@ public abstract class AbstractDownloadTest
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
protected String getSpringConfigLocation()
|
protected abstract String getSpringConfigLocation();
|
||||||
{
|
|
||||||
return "classpath*:META-INF/spring-context.xml classpath*:spring-context-artifacts-download.xml";
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
protected String getRestServicesPath()
|
protected String getRestServicesPath()
|
||||||
|
@ -134,7 +135,6 @@ public abstract class AbstractDownloadTest
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected abstract Class getServletClass();
|
|
||||||
|
|
||||||
@After
|
@After
|
||||||
public void tearDown()
|
public void tearDown()
|
||||||
|
@ -171,6 +171,51 @@ public abstract class AbstractDownloadTest
|
||||||
return service;
|
return service;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected ManagedRepositoriesService getManagedRepositoriesService()
|
||||||
|
{
|
||||||
|
ManagedRepositoriesService service =
|
||||||
|
JAXRSClientFactory.create( getBaseUrl() + "/" + getRestServicesPath() + "/archivaServices/",
|
||||||
|
ManagedRepositoriesService.class );
|
||||||
|
|
||||||
|
WebClient.client( service ).header( "Authorization", authorizationHeader );
|
||||||
|
WebClient.getConfig( service ).getHttpConduit().getClient().setReceiveTimeout( 300000L );
|
||||||
|
return service;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
protected RepositoryGroupService getRepositoryGroupService()
|
||||||
|
{
|
||||||
|
RepositoryGroupService service =
|
||||||
|
JAXRSClientFactory.create( getBaseUrl() + "/" + getRestServicesPath() + "/archivaServices/",
|
||||||
|
RepositoryGroupService.class );
|
||||||
|
|
||||||
|
WebClient.client( service ).header( "Authorization", authorizationHeader );
|
||||||
|
WebClient.getConfig( service ).getHttpConduit().getClient().setReceiveTimeout( 300000L );
|
||||||
|
return service;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected RepositoriesService getRepositoriesService()
|
||||||
|
{
|
||||||
|
RepositoriesService service =
|
||||||
|
JAXRSClientFactory.create( getBaseUrl() + "/" + getRestServicesPath() + "/archivaServices/",
|
||||||
|
RepositoriesService.class );
|
||||||
|
|
||||||
|
WebClient.client( service ).header( "Authorization", authorizationHeader );
|
||||||
|
WebClient.getConfig( service ).getHttpConduit().getClient().setReceiveTimeout( 300000L );
|
||||||
|
return service;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected SearchService getSearchService()
|
||||||
|
{
|
||||||
|
SearchService service =
|
||||||
|
JAXRSClientFactory.create( getBaseUrl() + "/" + getRestServicesPath() + "/archivaServices/",
|
||||||
|
SearchService.class );
|
||||||
|
|
||||||
|
WebClient.client( service ).header( "Authorization", authorizationHeader );
|
||||||
|
WebClient.getConfig( service ).getHttpConduit().getClient().setReceiveTimeout( 300000L );
|
||||||
|
return service;
|
||||||
|
}
|
||||||
|
|
||||||
protected String getBaseUrl()
|
protected String getBaseUrl()
|
||||||
{
|
{
|
||||||
String baseUrlSysProps = System.getProperty( "archiva.baseRestUrl" );
|
String baseUrlSysProps = System.getProperty( "archiva.baseRestUrl" );
|
||||||
|
@ -216,4 +261,5 @@ public abstract class AbstractDownloadTest
|
||||||
"http://localhost:" + port + "/" + getRestServicesPath() + "/fakeCreateAdminService/",
|
"http://localhost:" + port + "/" + getRestServicesPath() + "/fakeCreateAdminService/",
|
||||||
FakeCreateAdminService.class );
|
FakeCreateAdminService.class );
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -78,6 +78,11 @@ public class DownloadArtifactsTest
|
||||||
System.setProperty( "appserver.base", previousAppServerBase );
|
System.setProperty( "appserver.base", previousAppServerBase );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected String getSpringConfigLocation()
|
||||||
|
{
|
||||||
|
return "classpath*:META-INF/spring-context.xml classpath*:spring-context-artifacts-download.xml";
|
||||||
|
}
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void startServer()
|
public void startServer()
|
||||||
throws Exception
|
throws Exception
|
||||||
|
@ -87,7 +92,7 @@ public class DownloadArtifactsTest
|
||||||
//redirect handler
|
//redirect handler
|
||||||
|
|
||||||
this.redirectServer = new Server( 0 );
|
this.redirectServer = new Server( 0 );
|
||||||
ServletHolder shRedirect = new ServletHolder( getServletClass() );
|
ServletHolder shRedirect = new ServletHolder( RedirectServlet.class );
|
||||||
ServletContextHandler contextRedirect = new ServletContextHandler();
|
ServletContextHandler contextRedirect = new ServletContextHandler();
|
||||||
|
|
||||||
contextRedirect.setContextPath( "/" );
|
contextRedirect.setContextPath( "/" );
|
||||||
|
@ -173,11 +178,6 @@ public class DownloadArtifactsTest
|
||||||
return Collections.emptyList();
|
return Collections.emptyList();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
protected Class getServletClass()
|
|
||||||
{
|
|
||||||
return RedirectServlet.class;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static class RedirectServlet
|
public static class RedirectServlet
|
||||||
extends HttpServlet
|
extends HttpServlet
|
||||||
|
|
|
@ -18,16 +18,147 @@ package org.apache.archiva;
|
||||||
* under the License.
|
* under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import junit.framework.TestCase;
|
import org.apache.archiva.admin.model.beans.ManagedRepository;
|
||||||
|
import org.apache.archiva.admin.model.beans.ProxyConnector;
|
||||||
|
import org.apache.archiva.admin.model.beans.RemoteRepository;
|
||||||
|
import org.apache.archiva.admin.model.beans.RepositoryGroup;
|
||||||
|
import org.apache.archiva.rest.api.model.Artifact;
|
||||||
|
import org.apache.archiva.rest.api.model.SearchRequest;
|
||||||
|
import org.apache.archiva.rest.api.services.ManagedRepositoriesService;
|
||||||
|
import org.apache.archiva.rest.api.services.ProxyConnectorService;
|
||||||
|
import org.apache.archiva.rest.api.services.RepositoriesService;
|
||||||
|
import org.apache.archiva.rest.api.services.RepositoryGroupService;
|
||||||
|
import org.apache.archiva.rest.api.services.SearchService;
|
||||||
|
import org.codehaus.redback.integration.security.role.RedbackRoleConstants;
|
||||||
|
import org.codehaus.redback.rest.services.FakeCreateAdminService;
|
||||||
|
import org.junit.After;
|
||||||
|
import org.junit.AfterClass;
|
||||||
|
import org.junit.Before;
|
||||||
|
import org.junit.BeforeClass;
|
||||||
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
import org.junit.runners.JUnit4;
|
import org.junit.runners.JUnit4;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Olivier Lamy
|
* @author Olivier Lamy
|
||||||
*/
|
*/
|
||||||
@RunWith( JUnit4.class )
|
@RunWith( JUnit4.class )
|
||||||
public class DownloadMergedIndexTest
|
public class DownloadMergedIndexTest
|
||||||
extends TestCase
|
extends AbstractDownloadTest
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@BeforeClass
|
||||||
|
public static void setAppServerBase()
|
||||||
|
{
|
||||||
|
previousAppServerBase = System.getProperty( "appserver.base" );
|
||||||
|
System.setProperty( "appserver.base", "target/" + DownloadMergedIndexTest.class.getName() );
|
||||||
|
}
|
||||||
|
|
||||||
|
@AfterClass
|
||||||
|
public static void resetAppServerBase()
|
||||||
|
{
|
||||||
|
System.setProperty( "appserver.base", previousAppServerBase );
|
||||||
|
}
|
||||||
|
|
||||||
|
protected String getSpringConfigLocation()
|
||||||
|
{
|
||||||
|
return "classpath*:META-INF/spring-context.xml classpath*:spring-context-merge-index-download.xml";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void downloadMergedIndex()
|
||||||
|
throws Exception
|
||||||
|
{
|
||||||
|
String id = Long.toString( System.currentTimeMillis() );
|
||||||
|
ManagedRepository managedRepository = new ManagedRepository();
|
||||||
|
managedRepository.setId( id );
|
||||||
|
managedRepository.setName( "name of " + id );
|
||||||
|
managedRepository.setLocation( "src/test/repositories/test-repo" );
|
||||||
|
managedRepository.setIndexDirectory( "target/tmpIndex/" + id );
|
||||||
|
|
||||||
|
ManagedRepositoriesService managedRepositoriesService = getManagedRepositoriesService();
|
||||||
|
|
||||||
|
if ( managedRepositoriesService.getManagedRepository( id ) != null )
|
||||||
|
{
|
||||||
|
managedRepositoriesService.deleteManagedRepository( id, false );
|
||||||
|
}
|
||||||
|
|
||||||
|
getManagedRepositoriesService().addManagedRepository( managedRepository );
|
||||||
|
|
||||||
|
RepositoriesService repositoriesService = getRepositoriesService();
|
||||||
|
|
||||||
|
repositoriesService.scanRepositoryNow( id, true );
|
||||||
|
|
||||||
|
// wait a bit to ensure index is finished
|
||||||
|
int timeout = 20000;
|
||||||
|
while ( timeout > 0 && repositoriesService.alreadyScanning( id ) )
|
||||||
|
{
|
||||||
|
Thread.sleep( 500 );
|
||||||
|
timeout -= 500;
|
||||||
|
}
|
||||||
|
|
||||||
|
RepositoryGroupService repositoryGroupService = getRepositoryGroupService();
|
||||||
|
|
||||||
|
RepositoryGroup repositoryGroup = new RepositoryGroup();
|
||||||
|
repositoryGroup.setId( "test-group" );
|
||||||
|
repositoryGroup.setRepositories( Arrays.asList( id ) );
|
||||||
|
|
||||||
|
repositoryGroupService.addRepositoryGroup( repositoryGroup );
|
||||||
|
|
||||||
|
// create a repo with a remote on the one with index
|
||||||
|
id = Long.toString( System.currentTimeMillis() );
|
||||||
|
managedRepository = new ManagedRepository();
|
||||||
|
managedRepository.setId( id );
|
||||||
|
managedRepository.setName( "name of " + id );
|
||||||
|
managedRepository.setLocation( "src/test/repositories/test-repo" );
|
||||||
|
managedRepository.setIndexDirectory( "target/tmpIndex/" + id );
|
||||||
|
|
||||||
|
if ( managedRepositoriesService.getManagedRepository( id ) != null )
|
||||||
|
{
|
||||||
|
managedRepositoriesService.deleteManagedRepository( id, false );
|
||||||
|
}
|
||||||
|
|
||||||
|
getManagedRepositoriesService().addManagedRepository( managedRepository );
|
||||||
|
|
||||||
|
RemoteRepository remoteRepository = new RemoteRepository();
|
||||||
|
remoteRepository.setId( "all-merged" );
|
||||||
|
remoteRepository.setName( "all-merged" );
|
||||||
|
remoteRepository.setDownloadRemoteIndex( true );
|
||||||
|
remoteRepository.setUrl( "http://localhost:" + port + "/repository/test-group" );
|
||||||
|
remoteRepository.setRemoteIndexUrl( "http://localhost:" + port + "/repository/test-group/.indexer" );
|
||||||
|
remoteRepository.setUserName( RedbackRoleConstants.ADMINISTRATOR_ACCOUNT_NAME );
|
||||||
|
remoteRepository.setPassword( FakeCreateAdminService.ADMIN_TEST_PWD );
|
||||||
|
|
||||||
|
getRemoteRepositoriesService().addRemoteRepository( remoteRepository );
|
||||||
|
|
||||||
|
ProxyConnectorService proxyConnectorService = getProxyConnectorService();
|
||||||
|
ProxyConnector proxyConnector = new ProxyConnector();
|
||||||
|
proxyConnector.setProxyId( "foo-bar" );
|
||||||
|
proxyConnector.setSourceRepoId( id );
|
||||||
|
proxyConnector.setTargetRepoId( "all-merged" );
|
||||||
|
proxyConnectorService.addProxyConnector( proxyConnector );
|
||||||
|
|
||||||
|
repositoriesService.scheduleDownloadRemoteIndex( "all-merged", true, true );
|
||||||
|
|
||||||
|
// wait a bit
|
||||||
|
timeout = 20000;
|
||||||
|
while ( timeout > 0 )
|
||||||
|
{
|
||||||
|
Thread.sleep( 500 );
|
||||||
|
timeout -= 500;
|
||||||
|
}
|
||||||
|
|
||||||
|
SearchService searchService = getSearchService();
|
||||||
|
|
||||||
|
SearchRequest request = new SearchRequest( );
|
||||||
|
request.setRepositories( Arrays.asList( id ) );
|
||||||
|
request.setGroupId( "org.apache.felix" );
|
||||||
|
|
||||||
|
List<Artifact> artifacts = searchService.searchArtifacts( request );
|
||||||
|
assertFalse( artifacts.isEmpty() );
|
||||||
|
assertEquals( 1, artifacts.size() );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,28 @@
|
||||||
|
<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.archiva</groupId>
|
||||||
|
<artifactId>archiva-search</artifactId>
|
||||||
|
<packaging>jar</packaging>
|
||||||
|
<version>1.0</version>
|
||||||
|
<name>Archiva Search</name>
|
||||||
|
<url>http://archiva.apache.org</url>
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>junit</groupId>
|
||||||
|
<artifactId>junit</artifactId>
|
||||||
|
<version>3.8.1</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>commons-lang</groupId>
|
||||||
|
<artifactId>commons-lang</artifactId>
|
||||||
|
<version>2.3</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>log4j</groupId>
|
||||||
|
<artifactId>log4j</artifactId>
|
||||||
|
<version>1.2.8</version>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
</project>
|
Binary file not shown.
|
@ -0,0 +1,23 @@
|
||||||
|
<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.archiva</groupId>
|
||||||
|
<artifactId>archiva-test</artifactId>
|
||||||
|
<packaging>jar</packaging>
|
||||||
|
<version>1.0</version>
|
||||||
|
<name>archiva-test</name>
|
||||||
|
<url>http://maven.apache.org</url>
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>junit</groupId>
|
||||||
|
<artifactId>junit</artifactId>
|
||||||
|
<version>3.8.1</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>commons-lang</groupId>
|
||||||
|
<artifactId>commons-lang</artifactId>
|
||||||
|
<version>2.3</version>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
</project>
|
Binary file not shown.
|
@ -0,0 +1,28 @@
|
||||||
|
<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.archiva</groupId>
|
||||||
|
<artifactId>archiva-test</artifactId>
|
||||||
|
<packaging>jar</packaging>
|
||||||
|
<version>2.0</version>
|
||||||
|
<name>Archiva Test</name>
|
||||||
|
<url>http://archiva.apache.org</url>
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>junit</groupId>
|
||||||
|
<artifactId>junit</artifactId>
|
||||||
|
<version>3.8.1</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>commons-lang</groupId>
|
||||||
|
<artifactId>commons-lang</artifactId>
|
||||||
|
<version>2.3</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>commons-io</groupId>
|
||||||
|
<artifactId>commons-io</artifactId>
|
||||||
|
<version>1.4</version>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
</project>
|
|
@ -0,0 +1,23 @@
|
||||||
|
<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.archiva</groupId>
|
||||||
|
<artifactId>archiva-webapp</artifactId>
|
||||||
|
<packaging>war</packaging>
|
||||||
|
<version>1.0</version>
|
||||||
|
<name>Archiva Webapp</name>
|
||||||
|
<url>http://archiva.apache.org</url>
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>junit</groupId>
|
||||||
|
<artifactId>junit</artifactId>
|
||||||
|
<version>3.8.1</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>log4j</groupId>
|
||||||
|
<artifactId>log4j</artifactId>
|
||||||
|
<version>1.2.8</version>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
</project>
|
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,138 @@
|
||||||
|
<!--
|
||||||
|
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.felix</groupId>
|
||||||
|
<artifactId>felix-parent</artifactId>
|
||||||
|
<version>2.1</version>
|
||||||
|
<relativePath>../pom/pom.xml</relativePath>
|
||||||
|
</parent>
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<packaging>bundle</packaging>
|
||||||
|
<name>Apache Felix Bundle Repository</name>
|
||||||
|
<description>Bundle repository service.</description>
|
||||||
|
<artifactId>org.apache.felix.bundlerepository</artifactId>
|
||||||
|
<version>1.6.6</version>
|
||||||
|
<scm>
|
||||||
|
<connection>scm:svn:http://svn.apache.org/repos/asf/felix/releases/org.apache.felix.bundlerepository-1.6.6</connection>
|
||||||
|
<developerConnection>scm:svn:https://svn.apache.org/repos/asf/felix/releases/org.apache.felix.bundlerepository-1.6.6</developerConnection>
|
||||||
|
<url>http://svn.apache.org/repos/asf/felix/releases/org.apache.felix.bundlerepository-1.6.6</url>
|
||||||
|
</scm>
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>${project.groupId}</groupId>
|
||||||
|
<artifactId>org.apache.felix.utils</artifactId>
|
||||||
|
<version>1.1.0</version>
|
||||||
|
<optional>true</optional>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>${project.groupId}</groupId>
|
||||||
|
<artifactId>org.osgi.service.obr</artifactId>
|
||||||
|
<version>1.0.2</version>
|
||||||
|
<optional>true</optional>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>${project.groupId}</groupId>
|
||||||
|
<artifactId>org.apache.felix.shell</artifactId>
|
||||||
|
<version>1.4.1</version>
|
||||||
|
<optional>true</optional>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>net.sf.kxml</groupId>
|
||||||
|
<artifactId>kxml2</artifactId>
|
||||||
|
<version>2.3.0</version>
|
||||||
|
<optional>true</optional>
|
||||||
|
<exclusions>
|
||||||
|
<exclusion>
|
||||||
|
<groupId>xmlpull</groupId>
|
||||||
|
<artifactId>xmlpull</artifactId>
|
||||||
|
</exclusion>
|
||||||
|
</exclusions>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.osgi</groupId>
|
||||||
|
<artifactId>org.osgi.compendium</artifactId>
|
||||||
|
<version>4.0.0</version>
|
||||||
|
<optional>true</optional>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.osgi</groupId>
|
||||||
|
<artifactId>org.osgi.core</artifactId>
|
||||||
|
<version>4.1.0</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.codehaus.woodstox</groupId>
|
||||||
|
<artifactId>woodstox-core-asl</artifactId>
|
||||||
|
<version>4.0.7</version>
|
||||||
|
<optional>true</optional>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.easymock</groupId>
|
||||||
|
<artifactId>easymock</artifactId>
|
||||||
|
<version>2.4</version>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.felix</groupId>
|
||||||
|
<artifactId>maven-bundle-plugin</artifactId>
|
||||||
|
<version>2.3.4</version>
|
||||||
|
<extensions>true</extensions>
|
||||||
|
<configuration>
|
||||||
|
<instructions>
|
||||||
|
<Export-Package>org.apache.felix.bundlerepository;version="2.0"</Export-Package>
|
||||||
|
<Private-Package>
|
||||||
|
org.kxml2.io,
|
||||||
|
org.xmlpull.v1,
|
||||||
|
org.apache.felix.bundlerepository.impl.*,
|
||||||
|
org.apache.felix.utils.*
|
||||||
|
</Private-Package>
|
||||||
|
<Import-Package>!javax.xml.parsers,!org.xml.sax,org.osgi.service.log;resolution:=optional,org.osgi.service.obr;resolution:=optional,javax.xml.stream;resolution:=optional,*</Import-Package>
|
||||||
|
<DynamicImport-Package>org.apache.felix.shell</DynamicImport-Package>
|
||||||
|
<Bundle-Activator>${project.artifactId}.impl.Activator</Bundle-Activator>
|
||||||
|
<Bundle-DocURL>http://felix.apache.org/site/apache-felix-osgi-bundle-repository.html</Bundle-DocURL>
|
||||||
|
<Bundle-Url>http://felix.apache.org/site/downloads.cgi</Bundle-Url>
|
||||||
|
<Bundle-Source>http://felix.apache.org/site/downloads.cgi</Bundle-Source>
|
||||||
|
<Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
|
||||||
|
<Bundle-Vendor>The Apache Software Foundation</Bundle-Vendor>
|
||||||
|
<Export-Service>org.apache.felix.bundlerepository.RepositoryAdmin,org.osgi.service.obr.RepositoryAdmin</Export-Service>
|
||||||
|
<_versionpolicy>[$(version;==;$(@)),$(version;+;$(@)))</_versionpolicy>
|
||||||
|
<Include-Resource>META-INF/LICENSE=LICENSE,META-INF/LICENSE.kxml2=LICENSE.kxml2,META-INF/NOTICE=NOTICE,META-INF/DEPENDENCIES=DEPENDENCIES</Include-Resource>
|
||||||
|
</instructions>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.rat</groupId>
|
||||||
|
<artifactId>apache-rat-plugin</artifactId>
|
||||||
|
<configuration>
|
||||||
|
<excludeSubProjects>false</excludeSubProjects>
|
||||||
|
<useEclipseDefaultExcludes>true</useEclipseDefaultExcludes>
|
||||||
|
<useMavenDefaultExcludes>true</useMavenDefaultExcludes>
|
||||||
|
<excludes>
|
||||||
|
<param>doc/*</param>
|
||||||
|
<param>maven-eclipse.xml</param>
|
||||||
|
<param>.checkstyle</param>
|
||||||
|
<param>.externalToolBuilders/*</param>
|
||||||
|
</excludes>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
</project>
|
|
@ -0,0 +1,54 @@
|
||||||
|
<?xml version="1.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.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<beans xmlns="http://www.springframework.org/schema/beans"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xmlns:context="http://www.springframework.org/schema/context"
|
||||||
|
xsi:schemaLocation="http://www.springframework.org/schema/beans
|
||||||
|
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
|
||||||
|
http://www.springframework.org/schema/context
|
||||||
|
http://www.springframework.org/schema/context/spring-context-3.0.xsd"
|
||||||
|
default-lazy-init="true">
|
||||||
|
|
||||||
|
<context:property-placeholder system-properties-mode="OVERRIDE"/>
|
||||||
|
|
||||||
|
|
||||||
|
<bean name="commons-configuration" class="org.codehaus.redback.components.registry.commons.CommonsConfigurationRegistry">
|
||||||
|
<property name="properties">
|
||||||
|
<value>
|
||||||
|
<![CDATA[
|
||||||
|
<configuration>
|
||||||
|
<system/>
|
||||||
|
|
||||||
|
<xml fileName="${appserver.base}/conf/archiva-test-merge-index-download.xml" config-optional="true"
|
||||||
|
config-name="org.apache.archiva.base"
|
||||||
|
config-at="org.apache.archiva"/>
|
||||||
|
|
||||||
|
<properties fileName="${appserver.base}/conf/security.properties" config-optional="true"
|
||||||
|
config-at="org.codehaus.plexus.redback"/>
|
||||||
|
<properties fileName="org/apache/archiva/security.properties" config-at="org.codehaus.plexus.redback"/>
|
||||||
|
</configuration>
|
||||||
|
]]>
|
||||||
|
</value>
|
||||||
|
</property>
|
||||||
|
</bean>
|
||||||
|
|
||||||
|
</beans>
|
|
@ -19,18 +19,17 @@ package org.apache.archiva.web.xmlrpc.api;
|
||||||
* under the License.
|
* under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import java.util.Date;
|
import com.atlassian.xmlrpc.ServiceObject;
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import org.apache.archiva.web.xmlrpc.api.beans.Artifact;
|
import org.apache.archiva.web.xmlrpc.api.beans.Artifact;
|
||||||
import org.apache.archiva.web.xmlrpc.api.beans.Dependency;
|
import org.apache.archiva.web.xmlrpc.api.beans.Dependency;
|
||||||
|
|
||||||
import com.atlassian.xmlrpc.ServiceObject;
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
@ServiceObject("SearchService")
|
@ServiceObject( "SearchService" )
|
||||||
public interface SearchService
|
public interface SearchService
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* quick/general text search which returns a list of artifacts
|
* quick/general text search which returns a list of artifacts
|
||||||
* query for an artifact based on a checksum
|
* query for an artifact based on a checksum
|
||||||
* query for all available versions of an artifact, sorted in version significance order
|
* query for all available versions of an artifact, sorted in version significance order
|
||||||
|
@ -40,21 +39,25 @@ public interface SearchService
|
||||||
* query for all artifacts that depend on a given artifact
|
* query for all artifacts that depend on a given artifact
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public List<Artifact> quickSearch( String queryString )
|
public List<Artifact> quickSearch( String queryString )
|
||||||
throws Exception;
|
throws Exception;
|
||||||
|
|
||||||
public List<Artifact> getArtifactByChecksum( String checksum) throws Exception;
|
public List<Artifact> getArtifactByChecksum( String checksum )
|
||||||
|
throws Exception;
|
||||||
public List<Artifact> getArtifactVersions( String groupId, String artifactId ) throws Exception;
|
|
||||||
|
public List<Artifact> getArtifactVersions( String groupId, String artifactId )
|
||||||
public List<Artifact> getArtifactVersionsByDate( String groupId, String artifactId, String version, Date whenGathered )
|
throws Exception;
|
||||||
throws Exception;
|
|
||||||
|
public List<Artifact> getArtifactVersionsByDate( String groupId, String artifactId, String version,
|
||||||
|
Date whenGathered )
|
||||||
|
throws Exception;
|
||||||
|
|
||||||
|
public List<Dependency> getDependencies( String groupId, String artifactId, String version )
|
||||||
|
throws Exception;
|
||||||
|
|
||||||
|
public List<Artifact> getDependencyTree( String groupId, String artifactId, String version )
|
||||||
|
throws Exception;
|
||||||
|
|
||||||
public List<Dependency> getDependencies( String groupId, String artifactId, String version )
|
|
||||||
throws Exception;
|
|
||||||
|
|
||||||
public List<Artifact> getDependencyTree( String groupId, String artifactId, String version ) throws Exception;
|
|
||||||
|
|
||||||
public List<Artifact> getDependees( String groupId, String artifactId, String version )
|
public List<Artifact> getDependees( String groupId, String artifactId, String version )
|
||||||
throws Exception;
|
throws Exception;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue