diff options
Diffstat (limited to 'archiva-modules/archiva-maven')
548 files changed, 42647 insertions, 0 deletions
diff --git a/archiva-modules/archiva-maven/archiva-maven-metadata/pom.xml b/archiva-modules/archiva-maven/archiva-maven-metadata/pom.xml index f1604347c..aca1c7d4b 100644 --- a/archiva-modules/archiva-maven/archiva-maven-metadata/pom.xml +++ b/archiva-modules/archiva-maven/archiva-maven-metadata/pom.xml @@ -44,6 +44,14 @@ <artifactId>archiva-xml-tools</artifactId> </dependency> <dependency> + <groupId>org.apache.archiva</groupId> + <artifactId>metadata-model</artifactId> + </dependency> + <dependency> + <groupId>commons-lang</groupId> + <artifactId>commons-lang</artifactId> + </dependency> + <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> </dependency> diff --git a/archiva-modules/archiva-maven/archiva-maven-metadata/src/main/java/org/apache/archiva/metadata/model/maven2/MavenArtifactFacet.java b/archiva-modules/archiva-maven/archiva-maven-metadata/src/main/java/org/apache/archiva/metadata/model/maven2/MavenArtifactFacet.java new file mode 100644 index 000000000..56580f38f --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-metadata/src/main/java/org/apache/archiva/metadata/model/maven2/MavenArtifactFacet.java @@ -0,0 +1,144 @@ +package org.apache.archiva.metadata.model.maven2; + +/* + * 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.archiva.metadata.model.MetadataFacet; +import org.apache.commons.lang.StringUtils; + +import java.util.HashMap; +import java.util.Map; + +public class MavenArtifactFacet + implements MetadataFacet +{ + private String classifier; + + private String type; + + private String timestamp; + + private int buildNumber; + + public static final String FACET_ID = "org.apache.archiva.metadata.repository.storage.maven2.artifact"; + + public String getClassifier() + { + return classifier; + } + + public void setClassifier( String classifier ) + { + this.classifier = classifier; + } + + public String getType() + { + return type; + } + + public void setType( String type ) + { + this.type = type; + } + + public String getTimestamp() + { + return timestamp; + } + + public void setTimestamp( String timestamp ) + { + this.timestamp = timestamp; + } + + public int getBuildNumber() + { + return buildNumber; + } + + public void setBuildNumber( int buildNumber ) + { + this.buildNumber = buildNumber; + } + + @Override + public String getFacetId() + { + return FACET_ID; + } + + @Override + public String getName() + { + // TODO: not needed, perhaps artifact/version metadata facet should be separate interface? + return null; + } + + @Override + public Map<String, String> toProperties() + { + Map<String, String> properties = new HashMap<>(); + properties.put( "type", type ); + if ( classifier != null ) + { + properties.put( "classifier", classifier ); + } + if ( timestamp != null ) + { + properties.put( "timestamp", timestamp ); + } + if ( buildNumber > 0 ) + { + properties.put( "buildNumber", Integer.toString( buildNumber ) ); + } + return properties; + } + + @Override + public void fromProperties( Map<String, String> properties ) + { + type = properties.get( "type" ); + classifier = properties.get( "classifier" ); + timestamp = properties.get( "timestamp" ); + String buildNumber = properties.get( "buildNumber" ); + if ( buildNumber != null ) + { + this.buildNumber = Integer.parseInt( buildNumber ); + } + } + + @Override + public boolean equals( Object o ) + { + if ( this == o ) + { + return true; + } + if ( !( o instanceof MavenArtifactFacet ) ) + { + return false; + } + + MavenArtifactFacet that = (MavenArtifactFacet) o; + + return StringUtils.equals( that.getClassifier(), this.classifier ); + } + +} diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/pom.xml b/archiva-modules/archiva-maven/archiva-maven-proxy/pom.xml new file mode 100644 index 000000000..1a1788a18 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/pom.xml @@ -0,0 +1,196 @@ +<?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. + --> +<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/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>org.apache.archiva.maven</groupId> + <artifactId>archiva-maven</artifactId> + <version>3.0.0-SNAPSHOT</version> + </parent> + <artifactId>archiva-maven-proxy</artifactId> + <name>Archiva :: Maven :: Proxy</name> + + <properties> + <site.staging.base>${project.parent.parent.basedir}</site.staging.base> + </properties> + + <dependencies> + <dependency> + <groupId>org.apache.archiva.maven</groupId> + <artifactId>archiva-maven-common</artifactId> + </dependency> + <dependency> + <groupId>org.apache.archiva</groupId> + <artifactId>archiva-plexus-bridge</artifactId> + </dependency> + <dependency> + <groupId>org.apache.archiva</groupId> + <artifactId>archiva-repository-admin-api</artifactId> + </dependency> + <dependency> + <groupId>org.apache.maven.archetype</groupId> + <artifactId>archetype-common</artifactId> + </dependency> + <dependency> + <groupId>org.apache.archiva</groupId> + <artifactId>archiva-proxy</artifactId> + </dependency> + <dependency> + <groupId>org.apache.maven.wagon</groupId> + <artifactId>wagon-provider-api</artifactId> + </dependency> + <dependency> + <groupId>org.apache.maven.wagon</groupId> + <artifactId>wagon-file</artifactId> + <scope>test</scope> + </dependency> + <!-- currently these are runtime as it's declared in the spring context + file, but is it necessary? --> + <dependency> + <groupId>org.apache.maven.wagon</groupId> + <artifactId>wagon-http-lightweight</artifactId> + <scope>runtime</scope> + </dependency> + <dependency> + <groupId>org.apache.maven.wagon</groupId> + <artifactId>wagon-http</artifactId> + <scope>runtime</scope> + <exclusions> + <exclusion> + <groupId>commons-logging</groupId> + <artifactId>commons-logging</artifactId> + </exclusion> + </exclusions> + </dependency> + <dependency> + <groupId>commons-logging</groupId> + <artifactId>commons-logging</artifactId> + </dependency> + <dependency> + <groupId>org.apache.archiva</groupId> + <artifactId>archiva-test-utils</artifactId> + <version>${project.version}</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.ow2.asm</groupId> + <artifactId>asm</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.eclipse.jetty</groupId> + <artifactId>jetty-server</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.assertj</groupId> + <artifactId>assertj-core</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.hsqldb</groupId> + <artifactId>hsqldb</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.apache.archiva.redback.components.registry</groupId> + <artifactId>spring-registry-commons</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.apache.archiva</groupId> + <artifactId>archiva-test-utils</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.apache.archiva</groupId> + <artifactId>archiva-mock</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.assertj</groupId> + <artifactId>assertj-core</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.hsqldb</groupId> + <artifactId>hsqldb</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.apache.archiva.redback</groupId> + <artifactId>redback-rbac-cached</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.apache.derby</groupId> + <artifactId>derby</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.apache.archiva.redback</groupId> + <artifactId>redback-common-test-resources</artifactId> + <scope>test</scope> + </dependency> + + + </dependencies> + + <build> + + <pluginManagement> + <plugins> + <plugin> + <groupId>org.apache.rat</groupId> + <artifactId>apache-rat-plugin</artifactId> + <configuration> + <excludes> + <exclude>src/test/repositories/**</exclude> + </excludes> + </configuration> + </plugin> + </plugins> + </pluginManagement> + </build> + + <!-- + The jaxb dependency is needed by the enunciate plugin starting with JDK9. + Adding to the plugin dependency is not sufficient, so I have to add it as project dependency. + Using provided scope to avoid adding it to packaging. + --> + <profiles> + <profile> + <id>jdk9+</id> + <activation> + <jdk>[1.9,)</jdk> + </activation> + <dependencies> + <dependency> + <groupId>javax.xml.bind</groupId> + <artifactId>jaxb-api</artifactId> + <version>2.3.0</version> + <scope>provided</scope> + </dependency> + </dependencies> + </profile> + </profiles> + +</project> diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/main/java/org/apache/archiva/proxy/maven/MavenRepositoryProxyHandler.java b/archiva-modules/archiva-maven/archiva-maven-proxy/src/main/java/org/apache/archiva/proxy/maven/MavenRepositoryProxyHandler.java new file mode 100644 index 000000000..b59d99835 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/main/java/org/apache/archiva/proxy/maven/MavenRepositoryProxyHandler.java @@ -0,0 +1,373 @@ +package org.apache.archiva.proxy.maven; + +/* + * 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.archiva.configuration.NetworkProxyConfiguration; +import org.apache.archiva.model.RepositoryURL; +import org.apache.archiva.proxy.DefaultRepositoryProxyHandler; +import org.apache.archiva.proxy.NotFoundException; +import org.apache.archiva.proxy.NotModifiedException; +import org.apache.archiva.proxy.ProxyException; +import org.apache.archiva.proxy.model.NetworkProxy; +import org.apache.archiva.proxy.model.ProxyConnector; +import org.apache.archiva.repository.*; +import org.apache.commons.lang.StringUtils; +import org.apache.maven.wagon.ConnectionException; +import org.apache.maven.wagon.ResourceDoesNotExistException; +import org.apache.maven.wagon.Wagon; +import org.apache.maven.wagon.WagonException; +import org.apache.maven.wagon.authentication.AuthenticationException; +import org.apache.maven.wagon.authentication.AuthenticationInfo; +import org.apache.maven.wagon.proxy.ProxyInfo; +import org.apache.maven.wagon.repository.Repository; +import org.springframework.stereotype.Service; + +import javax.inject.Inject; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ConcurrentMap; + +/** + * DefaultRepositoryProxyHandler + * TODO exception handling needs work - "not modified" is not really an exceptional case, and it has more layers than + * your average brown onion + */ +@Service("repositoryProxyConnectors#maven") +public class MavenRepositoryProxyHandler extends DefaultRepositoryProxyHandler { + + private static final List<RepositoryType> REPOSITORY_TYPES = new ArrayList<>(); + + static { + REPOSITORY_TYPES.add(RepositoryType.MAVEN); + } + + @Inject + private WagonFactory wagonFactory; + + private ConcurrentMap<String, ProxyInfo> networkProxyMap = new ConcurrentHashMap<>(); + + @Override + public void initialize() { + super.initialize(); + } + + private void updateWagonProxyInfo(Map<String, NetworkProxy> proxyList) { + this.networkProxyMap.clear(); + List<NetworkProxyConfiguration> networkProxies = getArchivaConfiguration().getConfiguration().getNetworkProxies(); + for (Map.Entry<String, NetworkProxy> proxyEntry : proxyList.entrySet()) { + String key = proxyEntry.getKey(); + NetworkProxy networkProxyDef = proxyEntry.getValue(); + + ProxyInfo proxy = new ProxyInfo(); + + proxy.setType(networkProxyDef.getProtocol()); + proxy.setHost(networkProxyDef.getHost()); + proxy.setPort(networkProxyDef.getPort()); + proxy.setUserName(networkProxyDef.getUsername()); + proxy.setPassword(networkProxyDef.getPassword()); + + this.networkProxyMap.put(key, proxy); + } + } + + @Override + public void setNetworkProxies(Map<String, NetworkProxy> proxies) { + super.setNetworkProxies(proxies); + updateWagonProxyInfo(proxies); + } + + /** + * @param connector + * @param remoteRepository + * @param tmpMd5 + * @param tmpSha1 + * @param tmpResource + * @param url + * @param remotePath + * @param resource + * @param workingDirectory + * @param repository + * @throws ProxyException + * @throws NotModifiedException + */ + protected void transferResources(ProxyConnector connector, RemoteRepositoryContent remoteRepository, Path tmpMd5, + Path tmpSha1, Path tmpResource, String url, String remotePath, Path resource, + Path workingDirectory, ManagedRepositoryContent repository) + throws ProxyException, NotModifiedException { + Wagon wagon = null; + try { + RepositoryURL repoUrl = remoteRepository.getURL(); + String protocol = repoUrl.getProtocol(); + NetworkProxy networkProxy = null; + String proxyId = connector.getProxyId(); + if (StringUtils.isNotBlank(proxyId)) { + + networkProxy = getNetworkProxy(proxyId); + } + WagonFactoryRequest wagonFactoryRequest = new WagonFactoryRequest("wagon#" + protocol, + remoteRepository.getRepository().getExtraHeaders()); + if (networkProxy == null) { + + log.warn("No network proxy with id {} found for connector {}->{}", proxyId, + connector.getSourceRepository().getId(), connector.getTargetRepository().getId()); + } else { + wagonFactoryRequest = wagonFactoryRequest.networkProxy(networkProxy); + } + wagon = wagonFactory.getWagon(wagonFactoryRequest); + if (wagon == null) { + throw new ProxyException("Unsupported target repository protocol: " + protocol); + } + + if (wagon == null) { + throw new ProxyException("Unsupported target repository protocol: " + protocol); + } + + boolean connected = connectToRepository(connector, wagon, remoteRepository); + if (connected) { + transferArtifact(wagon, remoteRepository, remotePath, repository, resource, workingDirectory, + tmpResource); + + // TODO: these should be used to validate the download based on the policies, not always downloaded + // to + // save on connections since md5 is rarely used + transferChecksum(wagon, remoteRepository, remotePath, repository, resource, workingDirectory, ".sha1", + tmpSha1); + transferChecksum(wagon, remoteRepository, remotePath, repository, resource, workingDirectory, ".md5", + tmpMd5); + } + } catch (NotFoundException e) { + urlFailureCache.cacheFailure(url); + throw e; + } catch (NotModifiedException e) { + // Do not cache url here. + throw e; + } catch (ProxyException e) { + urlFailureCache.cacheFailure(url); + throw e; + } catch (WagonFactoryException e) { + throw new ProxyException(e.getMessage(), e); + } finally { + if (wagon != null) { + try { + wagon.disconnect(); + } catch (ConnectionException e) { + log.warn("Unable to disconnect wagon.", e); + } + } + } + } + + protected void transferArtifact(Wagon wagon, RemoteRepositoryContent remoteRepository, String remotePath, + ManagedRepositoryContent repository, Path resource, Path tmpDirectory, + Path destFile) + throws ProxyException { + transferSimpleFile(wagon, remoteRepository, remotePath, repository, resource, destFile); + } + + /** + * <p> + * Quietly transfer the checksum file from the remote repository to the local file. + * </p> + * + * @param wagon the wagon instance (should already be connected) to use. + * @param remoteRepository the remote repository to transfer from. + * @param remotePath the remote path to the resource to get. + * @param repository the managed repository that will hold the file + * @param resource the local file that should contain the downloaded contents + * @param tmpDirectory the temporary directory to download to + * @param ext the type of checksum to transfer (example: ".md5" or ".sha1") + * @throws ProxyException if copying the downloaded file into place did not succeed. + */ + protected void transferChecksum(Wagon wagon, RemoteRepositoryContent remoteRepository, String remotePath, + ManagedRepositoryContent repository, Path resource, Path tmpDirectory, String ext, + Path destFile) + throws ProxyException { + String url = remoteRepository.getURL().getUrl() + remotePath + ext; + + // Transfer checksum does not use the policy. + if (urlFailureCache.hasFailedBefore(url)) { + return; + } + + try { + transferSimpleFile(wagon, remoteRepository, remotePath + ext, repository, resource, destFile); + log.debug("Checksum {} Downloaded: {} to move to {}", url, destFile, resource); + } catch (NotFoundException e) { + urlFailureCache.cacheFailure(url); + log.debug("Transfer failed, checksum not found: {}", url); + // Consume it, do not pass this on. + } catch (NotModifiedException e) { + log.debug("Transfer skipped, checksum not modified: {}", url); + // Consume it, do not pass this on. + } catch (ProxyException e) { + urlFailureCache.cacheFailure(url); + log.warn("Transfer failed on checksum: {} : {}", url, e.getMessage(), e); + // Critical issue, pass it on. + throw e; + } + } + + /** + * Perform the transfer of the remote file to the local file specified. + * + * @param wagon the wagon instance to use. + * @param remoteRepository the remote repository to use + * @param remotePath the remote path to attempt to get + * @param repository the managed repository that will hold the file + * @param origFile the local file to save to + * @throws ProxyException if there was a problem moving the downloaded file into place. + */ + protected void transferSimpleFile(Wagon wagon, RemoteRepositoryContent remoteRepository, String remotePath, + ManagedRepositoryContent repository, Path origFile, Path destFile) + throws ProxyException { + assert (remotePath != null); + + // Transfer the file. + try { + boolean success = false; + + if (!Files.exists(origFile)) { + log.debug("Retrieving {} from {}", remotePath, remoteRepository.getRepository().getName()); + wagon.get(addParameters(remotePath, remoteRepository.getRepository()), destFile.toFile()); + success = true; + + // You wouldn't get here on failure, a WagonException would have been thrown. + log.debug("Downloaded successfully."); + } else { + log.debug("Retrieving {} from {} if updated", remotePath, remoteRepository.getRepository().getName()); + try { + success = wagon.getIfNewer(addParameters(remotePath, remoteRepository.getRepository()), destFile.toFile(), + Files.getLastModifiedTime(origFile).toMillis()); + } catch (IOException e) { + throw new ProxyException("Failed to the modification time of " + origFile.toAbsolutePath()); + } + if (!success) { + throw new NotModifiedException( + "Not downloaded, as local file is newer than remote side: " + origFile.toAbsolutePath()); + } + + if (Files.exists(destFile)) { + log.debug("Downloaded successfully."); + } + } + } catch (ResourceDoesNotExistException e) { + throw new NotFoundException( + "Resource [" + remoteRepository.getURL() + "/" + remotePath + "] does not exist: " + e.getMessage(), + e); + } catch (WagonException e) { + // TODO: shouldn't have to drill into the cause, but TransferFailedException is often not descriptive enough + + String msg = + "Download failure on resource [" + remoteRepository.getURL() + "/" + remotePath + "]:" + e.getMessage(); + if (e.getCause() != null) { + msg += " (cause: " + e.getCause() + ")"; + } + throw new ProxyException(msg, e); + } + } + + /** + * Using wagon, connect to the remote repository. + * + * @param connector the connector configuration to utilize (for obtaining network proxy configuration from) + * @param wagon the wagon instance to establish the connection on. + * @param remoteRepository the remote repository to connect to. + * @return true if the connection was successful. false if not connected. + */ + protected boolean connectToRepository(ProxyConnector connector, Wagon wagon, + RemoteRepositoryContent remoteRepository) { + boolean connected = false; + + final ProxyInfo networkProxy = + connector.getProxyId() == null ? null : this.networkProxyMap.get(connector.getProxyId()); + + if (log.isDebugEnabled()) { + if (networkProxy != null) { + // TODO: move to proxyInfo.toString() + String msg = "Using network proxy " + networkProxy.getHost() + ":" + networkProxy.getPort() + + " to connect to remote repository " + remoteRepository.getURL(); + if (networkProxy.getNonProxyHosts() != null) { + msg += "; excluding hosts: " + networkProxy.getNonProxyHosts(); + } + if (StringUtils.isNotBlank(networkProxy.getUserName())) { + msg += "; as user: " + networkProxy.getUserName(); + } + log.debug(msg); + } + } + + AuthenticationInfo authInfo = null; + String username = ""; + String password = ""; + RepositoryCredentials repCred = remoteRepository.getRepository().getLoginCredentials(); + if (repCred != null && repCred instanceof PasswordCredentials) { + PasswordCredentials pwdCred = (PasswordCredentials) repCred; + username = pwdCred.getUsername(); + password = pwdCred.getPassword() == null ? "" : new String(pwdCred.getPassword()); + } + + if (StringUtils.isNotBlank(username) && StringUtils.isNotBlank(password)) { + log.debug("Using username {} to connect to remote repository {}", username, remoteRepository.getURL()); + authInfo = new AuthenticationInfo(); + authInfo.setUserName(username); + authInfo.setPassword(password); + } + + // Convert seconds to milliseconds + + long timeoutInMilliseconds = remoteRepository.getRepository().getTimeout().toMillis(); + + // Set timeout read and connect + // FIXME olamy having 2 config values + wagon.setReadTimeout((int) timeoutInMilliseconds); + wagon.setTimeout((int) timeoutInMilliseconds); + + try { + Repository wagonRepository = + new Repository(remoteRepository.getId(), remoteRepository.getURL().toString()); + wagon.connect(wagonRepository, authInfo, networkProxy); + connected = true; + } catch (ConnectionException | AuthenticationException e) { + log.warn("Could not connect to {}: {}", remoteRepository.getRepository().getName(), e.getMessage()); + connected = false; + } + + return connected; + } + + + public WagonFactory getWagonFactory() { + return wagonFactory; + } + + public void setWagonFactory(WagonFactory wagonFactory) { + this.wagonFactory = wagonFactory; + } + + @Override + public List<RepositoryType> supports() { + return REPOSITORY_TYPES; + } +} diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/main/resources/META-INF/spring-context.xml b/archiva-modules/archiva-maven/archiva-maven-proxy/src/main/resources/META-INF/spring-context.xml new file mode 100644 index 000000000..ac08cdbc3 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/main/resources/META-INF/spring-context.xml @@ -0,0 +1,41 @@ +<?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. + --> + +<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.xsd + http://www.springframework.org/schema/context + http://www.springframework.org/schema/context/spring-context.xsd" + default-lazy-init="true"> + + <context:annotation-config/> + <context:component-scan base-package="org.apache.archiva.proxy.maven"/> + + <bean name="wagon#http" scope="prototype" class="org.apache.maven.wagon.providers.http.HttpWagon"/> + + <bean name="wagon#https" scope="prototype" class="org.apache.maven.wagon.providers.http.HttpWagon"/> + + <bean name="wagon#http-ntlm" scope="prototype" class="org.apache.maven.wagon.providers.http.LightweightHttpWagon"/> + + <bean name="wagon#https-ntlm" scope="prototype" class="org.apache.maven.wagon.providers.http.LightweightHttpsWagon"/> + +</beans>
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/java/org/apache/archiva/metadata/repository/MockRepositoryArchivaTaskScheduler.java b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/java/org/apache/archiva/metadata/repository/MockRepositoryArchivaTaskScheduler.java new file mode 100644 index 000000000..08bcd9640 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/java/org/apache/archiva/metadata/repository/MockRepositoryArchivaTaskScheduler.java @@ -0,0 +1,58 @@ +package org.apache.archiva.metadata.repository; +/* + * 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.archiva.redback.components.taskqueue.TaskQueueException; +import org.apache.archiva.scheduler.repository.model.RepositoryArchivaTaskScheduler; +import org.apache.archiva.scheduler.repository.model.RepositoryTask; +import org.springframework.stereotype.Service; + +/** + * @author Olivier Lamy + */ +@Service ("archivaTaskScheduler#repositoryMock") +public class MockRepositoryArchivaTaskScheduler + implements RepositoryArchivaTaskScheduler +{ + @Override + public boolean isProcessingRepositoryTask( String repositoryId ) + { + return false; + } + + @Override + public boolean isProcessingRepositoryTask( RepositoryTask task ) + { + return false; + } + + @Override + public void queueTask( RepositoryTask task ) + throws TaskQueueException + { + // no op + } + + @Override + public boolean unQueueTask( RepositoryTask task ) + throws TaskQueueException + { + return false; + } +} diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/java/org/apache/archiva/proxy/AbstractProxyTestCase.java b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/java/org/apache/archiva/proxy/AbstractProxyTestCase.java new file mode 100644 index 000000000..30f780c70 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/java/org/apache/archiva/proxy/AbstractProxyTestCase.java @@ -0,0 +1,618 @@ +package org.apache.archiva.proxy; + +/* + * 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 net.sf.ehcache.CacheManager; +import org.apache.archiva.configuration.ArchivaConfiguration; +import org.apache.archiva.configuration.ManagedRepositoryConfiguration; +import org.apache.archiva.configuration.ProxyConnectorConfiguration; +import org.apache.archiva.configuration.RemoteRepositoryConfiguration; +import org.apache.archiva.policies.CachedFailuresPolicy; +import org.apache.archiva.policies.ChecksumPolicy; +import org.apache.archiva.policies.PropagateErrorsDownloadPolicy; +import org.apache.archiva.policies.PropagateErrorsOnUpdateDownloadPolicy; +import org.apache.archiva.policies.ReleasesPolicy; +import org.apache.archiva.policies.SnapshotsPolicy; +import org.apache.archiva.proxy.model.RepositoryProxyHandler; +import org.apache.archiva.repository.*; +import org.apache.archiva.test.utils.ArchivaSpringJUnit4ClassRunner; +import org.apache.maven.wagon.Wagon; +import org.easymock.EasyMock; +import org.easymock.IMocksControl; +import org.junit.Before; +import org.junit.runner.RunWith; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.context.ApplicationContext; +import org.springframework.test.context.ContextConfiguration; + +import javax.inject.Inject; +import java.io.BufferedReader; +import java.io.FileReader; +import java.io.IOException; +import java.nio.charset.Charset; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.nio.file.attribute.FileTime; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Collection; +import java.util.Date; +import java.util.Locale; +import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; + +import static org.junit.Assert.*; + +/** + * AbstractProxyTestCase + */ +@RunWith( ArchivaSpringJUnit4ClassRunner.class ) +@ContextConfiguration( locations = { "classpath*:/META-INF/spring-context.xml", "classpath:/spring-context.xml" } ) +public abstract class AbstractProxyTestCase +{ + @Inject + protected ApplicationContext applicationContext; + + @Inject + RepositoryRegistry repositoryRegistry; + + protected static final String ID_PROXIED1 = "proxied1"; + + protected static final String ID_PROXIED1_TARGET = "proxied1-target"; + + protected static final String ID_PROXIED2 = "proxied2"; + + protected static final String ID_PROXIED2_TARGET = "proxied2-target"; + + protected static final String ID_DEFAULT_MANAGED = "default-managed-repository"; + + protected static final String REPOPATH_PROXIED1 = "src/test/repositories/proxied1"; + + protected static final String REPOPATH_PROXIED1_TARGET = "target/test-repository/proxied1"; + + protected static final String REPOPATH_PROXIED2 = "src/test/repositories/proxied2"; + + protected static final String REPOPATH_PROXIED2_TARGET = "target/test-repository/proxied2"; + + protected static final String REPOPATH_DEFAULT_MANAGED = "src/test/repositories/managed"; + + // protected static final String REPOPATH_DEFAULT_MANAGED_TARGET = "target/test-repository/managed"; + + protected IMocksControl wagonMockControl; + + protected Wagon wagonMock; + + + protected RepositoryProxyHandler proxyHandler; + + protected ManagedRepositoryContent managedDefaultRepository; + + protected Path managedDefaultDir; + + protected MockConfiguration config; + + protected Logger log = LoggerFactory.getLogger( getClass() ); + + WagonDelegate delegate; + + @Before + public void setUp() + throws Exception + { + config = + (MockConfiguration) applicationContext.getBean( "archivaConfiguration#mock", ArchivaConfiguration.class ); + + config.getConfiguration().setManagedRepositories( new ArrayList<ManagedRepositoryConfiguration>() ); + config.getConfiguration().setRemoteRepositories( new ArrayList<RemoteRepositoryConfiguration>() ); + config.getConfiguration().setProxyConnectors( new ArrayList<ProxyConnectorConfiguration>() ); + + // Setup source repository (using default layout) + String name = getClass().getSimpleName(); + String repoPath = "target/test-repository/managed/" + name; + + managedDefaultRepository = + createRepository( ID_DEFAULT_MANAGED, "Default Managed Repository", repoPath, "default" ); + + managedDefaultDir = Paths.get( managedDefaultRepository.getRepoRoot() ); + + org.apache.archiva.repository.ManagedRepository repoConfig = repositoryRegistry.getManagedRepository(ID_DEFAULT_MANAGED); + + applicationContext.getBean( RepositoryRegistry.class ).putRepository( repoConfig ); + + repositoryRegistry.setArchivaConfiguration( config ); + + // Setup target (proxied to) repository. + saveRemoteRepositoryConfig( ID_PROXIED1, "Proxied Repository 1", + Paths.get( REPOPATH_PROXIED1 ).toUri().toURL().toExternalForm(), "default" ); + + // Setup target (proxied to) repository. + saveRemoteRepositoryConfig( ID_PROXIED2, "Proxied Repository 2", + Paths.get( REPOPATH_PROXIED2 ).toUri().toURL().toExternalForm(), "default" ); + + + repositoryRegistry.reload(); + + if ( repositoryRegistry.getManagedRepository( repoConfig.getId() ) != null ) + { + org.apache.archiva.repository.ManagedRepository managedRepository = repositoryRegistry.getManagedRepository( repoConfig.getId() ); + repositoryRegistry.removeRepository( managedRepository ); + } + + repositoryRegistry.putRepository( repoConfig ); + + + // Setup the proxy handler. + //proxyHandler = applicationContext.getBean (RepositoryProxyHandler) lookup( RepositoryProxyHandler.class.getName() ); + + proxyHandler = applicationContext.getBean( "repositoryProxyConnectors#test", RepositoryProxyHandler.class ); + + + // Setup the wagon mock. + wagonMockControl = EasyMock.createNiceControl(); + wagonMock = wagonMockControl.createMock( Wagon.class ); + + delegate = (WagonDelegate) applicationContext.getBean( "wagon#test", Wagon.class ); + + delegate.setDelegate( wagonMock ); + + CacheManager.getInstance().clearAll(); + + log.info( "\n.\\ {}() \\._________________________________________\n", name ); + } + + protected void assertChecksums( Path expectedFile, String expectedSha1Contents, String expectedMd5Contents ) + throws Exception + { + Path sha1File = expectedFile.toAbsolutePath().resolveSibling( expectedFile.getFileName().toString()+ ".sha1" ); + Path md5File = expectedFile.toAbsolutePath().resolveSibling( expectedFile.getFileName().toString() + ".md5" ); + + if ( expectedSha1Contents == null ) + { + assertFalse( "SHA1 File should NOT exist: " + sha1File.toAbsolutePath(), Files.exists(sha1File) ); + } + else + { + assertTrue( "SHA1 File should exist: " + sha1File.toAbsolutePath(), Files.exists(sha1File) ); + String actualSha1Contents = readChecksumFile( sha1File ); + assertEquals( "SHA1 File contents: " + sha1File.toAbsolutePath(), expectedSha1Contents, actualSha1Contents ); + } + + if ( expectedMd5Contents == null ) + { + assertFalse( "MD5 File should NOT exist: " + md5File.toAbsolutePath(), Files.exists(md5File) ); + } + else + { + assertTrue( "MD5 File should exist: " + md5File.toAbsolutePath(), Files.exists(md5File) ); + String actualMd5Contents = readChecksumFile( md5File ); + assertEquals( "MD5 File contents: " + md5File.toAbsolutePath(), expectedMd5Contents, actualMd5Contents ); + } + } + + protected void assertFileEquals( Path expectedFile, Path actualFile, Path sourceFile ) + throws Exception + { + assertNotNull( "Expected File should not be null.", expectedFile ); + assertNotNull( "Actual File should not be null.", actualFile ); + + assertTrue( "Check actual file exists.", Files.exists(actualFile) ); + assertTrue( "Check file is the same.", Files.isSameFile( expectedFile, + actualFile)); + String expectedContents = + org.apache.commons.io.FileUtils.readFileToString( sourceFile.toFile(), Charset.defaultCharset() ); + String actualContents = + org.apache.commons.io.FileUtils.readFileToString( actualFile.toFile(), Charset.defaultCharset() ); + assertEquals( "Check file contents.", expectedContents, actualContents ); + } + + protected void assertNotDownloaded( Path downloadedFile ) + { + assertNull( "Found file: " + downloadedFile + "; but was expecting a failure", downloadedFile ); + } + + @SuppressWarnings( "unchecked" ) + protected void assertNoTempFiles( Path expectedFile ) + { + Path workingDir = expectedFile.getParent(); + if ( ( workingDir == null ) || !Files.isDirectory( workingDir) ) + { + return; + } + + Collection<Path> tmpFiles = null; + try { + tmpFiles = Files.list(workingDir).filter(path -> Files.isRegularFile(path) && path.getFileName().toString().endsWith(".tmp")).collect(Collectors.toList()); + } catch (IOException e) { + log.error("Could not retrieve tmpFiles {}", workingDir); + } + if ( tmpFiles!=null && !tmpFiles.isEmpty() ) + { + StringBuilder emsg = new StringBuilder(); + emsg.append( "Found Temp Files in dir: " ).append( workingDir.toString() ); + for ( Path tfile : tmpFiles ) + { + emsg.append( "\n " ).append( tfile.getFileName().toString()); + } + fail( emsg.toString() ); + } + } + + /** + * A faster recursive copy that omits .svn directories. + * + * @param sourceDirectory the source directory to copy + * @param destDirectory the target location + * @throws java.io.IOException if there is a copying problem + * @todo get back into plexus-utils, share with converter module + */ + protected void copyDirectoryStructure( Path sourceDirectory, Path destDirectory ) + throws IOException + { + if ( !Files.exists(sourceDirectory) ) + { + throw new IOException( "Source directory doesn't exists (" + sourceDirectory.toAbsolutePath() + ")." ); + } + + Path[] files = Files.list(sourceDirectory).filter(path -> Files.isRegularFile(path)).toArray(Path[]::new); + + String sourcePath = sourceDirectory.toAbsolutePath().toString(); + + for ( int i = 0; i < files.length; i++ ) + { + Path file = files[i]; + + String dest = file.toAbsolutePath().toString(); + + dest = dest.substring( sourcePath.length() + 1 ); + + Path destination = destDirectory.resolve( dest ); + + if ( Files.isRegularFile(file) ) + { + destination = destination.getParent(); + + org.apache.commons.io.FileUtils.copyFile( file.toFile(), destination.resolve( file.getFileName() ).toFile(), false ); + // TODO: Change when there is a FileUtils.copyFileToDirectory(file, destination, boolean) option + //FileUtils.copyFileToDirectory( file, destination ); + } + else if ( Files.isDirectory(file) ) + { + if ( !".svn".equals( file.getFileName().toString() ) ) + { + if ( !Files.exists(destination)) + { + Files.createDirectories(destination); + } + + copyDirectoryStructure( file, destination ); + } + } + else + { + throw new IOException( "Unknown file type: " + file.toAbsolutePath() ); + } + } + } + + + protected ManagedRepositoryContent createRepository( String id, String name, String path, String layout ) + throws Exception + { + ManagedRepository repo = new BasicManagedRepository(id, name, Paths.get(path)); + repositoryRegistry.putRepository(repo); + return repositoryRegistry.getManagedRepository(id).getContent(); + } + + /** + * Read the first line from the checksum file, and return it (trimmed). + */ + protected String readChecksumFile( Path checksumFile ) + throws Exception + { + FileReader freader = null; + BufferedReader buf = null; + + try + { + freader = new FileReader( checksumFile.toFile() ); + buf = new BufferedReader( freader ); + return buf.readLine(); + } + finally + { + if ( buf != null ) + { + buf.close(); + } + + if ( freader != null ) + { + freader.close(); + } + } + } + + protected void saveConnector( String sourceRepoId, String targetRepoId, boolean disabled ) + { + saveConnector( sourceRepoId, targetRepoId, ChecksumPolicy.IGNORE, ReleasesPolicy.ALWAYS, SnapshotsPolicy.ALWAYS, + CachedFailuresPolicy.NO, disabled ); + } + + protected void saveConnector( String sourceRepoId, String targetRepoId, String checksumPolicy, String releasePolicy, + String snapshotPolicy, String cacheFailuresPolicy, boolean disabled ) + { + saveConnector( sourceRepoId, targetRepoId, checksumPolicy, releasePolicy, snapshotPolicy, cacheFailuresPolicy, + PropagateErrorsDownloadPolicy.QUEUE, disabled ); + } + + protected void saveConnector( String sourceRepoId, String targetRepoId, String checksumPolicy, String releasePolicy, + String snapshotPolicy, String cacheFailuresPolicy, String errorPolicy, + boolean disabled ) + { + saveConnector( sourceRepoId, targetRepoId, checksumPolicy, releasePolicy, snapshotPolicy, cacheFailuresPolicy, + errorPolicy, PropagateErrorsOnUpdateDownloadPolicy.NOT_PRESENT, disabled ); + } + + protected void saveConnector( String sourceRepoId, String targetRepoId, String checksumPolicy, String releasePolicy, + String snapshotPolicy, String cacheFailuresPolicy, String errorPolicy, + String errorOnUpdatePolicy, boolean disabled ) + { + ProxyConnectorConfiguration connectorConfig = new ProxyConnectorConfiguration(); + connectorConfig.setSourceRepoId( sourceRepoId ); + connectorConfig.setTargetRepoId( targetRepoId ); + connectorConfig.setProxyId(sourceRepoId); + connectorConfig.addPolicy( ProxyConnectorConfiguration.POLICY_CHECKSUM, checksumPolicy ); + connectorConfig.addPolicy( ProxyConnectorConfiguration.POLICY_RELEASES, releasePolicy ); + connectorConfig.addPolicy( ProxyConnectorConfiguration.POLICY_SNAPSHOTS, snapshotPolicy ); + connectorConfig.addPolicy( ProxyConnectorConfiguration.POLICY_CACHE_FAILURES, cacheFailuresPolicy ); + connectorConfig.addPolicy( ProxyConnectorConfiguration.POLICY_PROPAGATE_ERRORS, errorPolicy ); + connectorConfig.addPolicy( ProxyConnectorConfiguration.POLICY_PROPAGATE_ERRORS_ON_UPDATE, errorOnUpdatePolicy ); + connectorConfig.setDisabled( disabled ); + + int count = config.getConfiguration().getProxyConnectors().size(); + config.getConfiguration().addProxyConnector( connectorConfig ); + + // Proper Triggering ... + String prefix = "proxyConnectors.proxyConnector(" + count + ")"; + config.triggerChange( prefix + ".sourceRepoId", connectorConfig.getSourceRepoId() ); + config.triggerChange( prefix + ".targetRepoId", connectorConfig.getTargetRepoId() ); + config.triggerChange( prefix + ".proxyId", connectorConfig.getProxyId() ); + config.triggerChange( prefix + ".policies.releases", connectorConfig.getPolicy( "releases", "" ) ); + config.triggerChange( prefix + ".policies.checksum", connectorConfig.getPolicy( "checksum", "" ) ); + config.triggerChange( prefix + ".policies.snapshots", connectorConfig.getPolicy( "snapshots", "" ) ); + config.triggerChange( prefix + ".policies.cache-failures", connectorConfig.getPolicy( "cache-failures", "" ) ); + config.triggerChange( prefix + ".policies.propagate-errors", + connectorConfig.getPolicy( "propagate-errors", "" ) ); + config.triggerChange( prefix + ".policies.propagate-errors-on-update", + connectorConfig.getPolicy( "propagate-errors-on-update", "" ) ); + } + + protected void saveManagedRepositoryConfig( String id, String name, String path, String layout ) + { + ManagedRepositoryConfiguration repoConfig = new ManagedRepositoryConfiguration(); + + repoConfig.setId( id ); + repoConfig.setName( name ); + repoConfig.setLayout( layout ); + + repoConfig.setLocation( path ); + + int count = config.getConfiguration().getManagedRepositories().size(); + config.getConfiguration().addManagedRepository( repoConfig ); + + String prefix = "managedRepositories.managedRepository(" + count + ")"; + config.triggerChange( prefix + ".id", repoConfig.getId() ); + config.triggerChange( prefix + ".name", repoConfig.getName() ); + config.triggerChange( prefix + ".location", repoConfig.getLocation() ); + config.triggerChange( prefix + ".layout", repoConfig.getLayout() ); + } + + protected void saveRemoteRepositoryConfig( String id, String name, String url, String layout ) + { + RemoteRepositoryConfiguration repoConfig = new RemoteRepositoryConfiguration(); + + repoConfig.setId( id ); + repoConfig.setName( name ); + repoConfig.setLayout( layout ); + repoConfig.setUrl( url ); + + int count = config.getConfiguration().getRemoteRepositories().size(); + config.getConfiguration().addRemoteRepository( repoConfig ); + + String prefix = "remoteRepositories.remoteRepository(" + count + ")"; + config.triggerChange( prefix + ".id", repoConfig.getId() ); + config.triggerChange( prefix + ".name", repoConfig.getName() ); + config.triggerChange( prefix + ".url", repoConfig.getUrl() ); + config.triggerChange( prefix + ".layout", repoConfig.getLayout() ); + repositoryRegistry.reload(); + } + + protected Path saveTargetedRepositoryConfig( String id, String originalPath, String targetPath, String layout ) + throws IOException + { + Path repoLocation = Paths.get( targetPath ); + org.apache.archiva.common.utils.FileUtils.deleteDirectory( repoLocation ); + copyDirectoryStructure( Paths.get(originalPath) , repoLocation ); + + saveRemoteRepositoryConfig( id, "Target Repo-" + id, targetPath, layout ); + + return repoLocation; + } + + + /** + * Copy the specified resource directory from the src/test/repository/managed/ to + * the testable directory under target/test-repository/managed/${testName}/ + * + * @param resourcePath + * @throws IOException + */ + protected void setupTestableManagedRepository( String resourcePath ) + throws IOException + { + String resourceDir = resourcePath; + + if ( !resourcePath.endsWith( "/" ) ) + { + int idx = resourcePath.lastIndexOf( '/' ); + resourceDir = resourcePath.substring( 0, idx ); + } + + Path sourceRepoDir = Paths.get( REPOPATH_DEFAULT_MANAGED ); + Path sourceDir = sourceRepoDir.resolve(resourceDir ); + + Path destRepoDir = managedDefaultDir; + Path destDir = destRepoDir.resolve(resourceDir ); + + // Cleanout destination dirs. + if ( Files.exists(destDir)) + { + org.apache.archiva.common.utils.FileUtils.deleteDirectory( destDir ); + } + + // Make the destination dir. + Files.createDirectories(destDir); + + // Test the source dir. + if ( !Files.exists(sourceDir) ) + { + // This is just a warning. + log.error( "[WARN] Skipping setup of testable managed repository, source dir does not exist: {}", // + sourceDir ); + } + else + { + + // Test that the source is a dir. + if ( !Files.isDirectory( sourceDir) ) + { + fail( "Unable to setup testable managed repository, source is not a directory: " + sourceDir ); + } + + // Copy directory structure. + copyDirectoryStructure( sourceDir, destDir ); + } + } + + protected void setManagedNewerThanRemote( Path managedFile, Path remoteFile ) + { + setManagedNewerThanRemote( managedFile, remoteFile, 55000 ); + } + + protected void setManagedNewerThanRemote( Path managedFile, Path remoteFile, long time ) + { + assertTrue( "Managed File should exist: ", Files.exists(managedFile) ); + assertTrue( "Remote File should exist: ", Files.exists(remoteFile) ); + + try + { + Files.setLastModifiedTime( managedFile, + FileTime.from(Files.getLastModifiedTime( remoteFile ).toMillis() + time, TimeUnit.MILLISECONDS )); + } + catch ( IOException e ) + { + e.printStackTrace( ); + } + + try + { + assertTrue( Files.getLastModifiedTime( managedFile).compareTo( Files.getLastModifiedTime( remoteFile )) > 0); + } + catch ( IOException e ) + { + e.printStackTrace( ); + } + } + + protected void setManagedOlderThanRemote( Path managedFile, Path remoteFile ) + { + setManagedOlderThanRemote( managedFile, remoteFile, 55000 ); + } + + protected void setManagedOlderThanRemote( Path managedFile, Path remoteFile, long time ) + { + assertTrue( "Managed File should exist: ", Files.exists(managedFile) ); + assertTrue( "Remote File should exist: ", Files.exists(remoteFile) ); + + try + { + Files.setLastModifiedTime( managedFile, + FileTime.from(Files.getLastModifiedTime( remoteFile ).toMillis() - time, TimeUnit.MILLISECONDS )); + } + catch ( IOException e ) + { + e.printStackTrace( ); + } + + try + { + assertTrue( Files.getLastModifiedTime( managedFile ).compareTo(Files.getLastModifiedTime( remoteFile )) < 0 ); + } + catch ( IOException e ) + { + e.printStackTrace( ); + } + + } + + protected void assertNotModified( Path file, long expectedModificationTime ) + { + try + { + assertEquals( "File <" + file.toAbsolutePath() + "> not have been modified.", expectedModificationTime, + Files.getLastModifiedTime( file ).toMillis()); + } + catch ( IOException e ) + { + e.printStackTrace( ); + } + } + + + protected void assertNotExistsInManagedDefaultRepo( Path testFile ) + throws Exception + { + Path managedDefaultPath = managedDefaultDir; + + assertTrue( "Unit Test Failure: File <" + testFile + + "> should be have been defined within the managed default path of <" + managedDefaultPath + + ">", testFile.startsWith( managedDefaultPath ) ); + + assertFalse( "File < " + testFile + "> should not exist in managed default repository.", Files.exists(testFile) ); + } + + protected static Date getFutureDate() + throws ParseException + { + Calendar cal = Calendar.getInstance(); + cal.add( Calendar.YEAR, 1 ); + return cal.getTime(); + } + + protected static Date getPastDate() + throws ParseException + { + return new SimpleDateFormat( "yyyy-MM-dd", Locale.US ).parse( "2000-01-01" ); + } +} diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/java/org/apache/archiva/proxy/CacheFailuresTransferTest.java b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/java/org/apache/archiva/proxy/CacheFailuresTransferTest.java new file mode 100644 index 000000000..0061fa732 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/java/org/apache/archiva/proxy/CacheFailuresTransferTest.java @@ -0,0 +1,185 @@ +package org.apache.archiva.proxy; + +/* + * 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.archiva.common.utils.PathUtil; +import org.apache.archiva.model.ArtifactReference; +import org.apache.archiva.policies.CachedFailuresPolicy; +import org.apache.archiva.policies.ChecksumPolicy; +import org.apache.archiva.policies.ReleasesPolicy; +import org.apache.archiva.policies.SnapshotsPolicy; +import org.apache.archiva.policies.urlcache.UrlFailureCache; +import org.apache.maven.wagon.ResourceDoesNotExistException; +import org.easymock.EasyMock; +import org.junit.Test; + +import javax.inject.Inject; +import java.io.File; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; + +/** + * CacheFailuresTransferTest + * + * + */ +public class CacheFailuresTransferTest + extends AbstractProxyTestCase +{ + // TODO: test some hard failures (eg TransferFailedException) + // TODO: test the various combinations of fetchFrom* (note: need only test when caching is enabled) + + @Inject + UrlFailureCache urlFailureCache; + + @Test + public void testGetWithCacheFailuresOn() + throws Exception + { + String path = "org/apache/maven/test/get-in-second-proxy/1.0/get-in-second-proxy-1.0.jar"; + Path expectedFile = managedDefaultDir.resolve( path ); + setupTestableManagedRepository( path ); + + assertNotExistsInManagedDefaultRepo( expectedFile ); + + ArtifactReference artifact = managedDefaultRepository.toArtifactReference( path ); + + // Configure Repository (usually done within archiva.xml configuration) + saveRemoteRepositoryConfig( "badproxied1", "Bad Proxied 1", "test://bad.machine.com/repo/", "default" ); + saveRemoteRepositoryConfig( "badproxied2", "Bad Proxied 2", "test://bad.machine.com/anotherrepo/", "default" ); + + // Configure Connector (usually done within archiva.xml configuration) + saveConnector( ID_DEFAULT_MANAGED, "badproxied1", ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS, + SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.YES, false ); + saveConnector( ID_DEFAULT_MANAGED, "badproxied2", ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS, + SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.YES, false ); + + wagonMock.get( EasyMock.eq( path ), EasyMock.anyObject( File.class )); + + EasyMock.expectLastCall().andThrow( new ResourceDoesNotExistException( "resource does not exist." ) ).times( 2 ); + + + wagonMockControl.replay(); + + Path downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact ); + + wagonMockControl.verify(); + + // Second attempt to download same artifact use cache + wagonMockControl.reset(); + wagonMockControl.replay(); + downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact ); + wagonMockControl.verify(); + + assertNotDownloaded( downloadedFile); + assertNoTempFiles( expectedFile ); + } + + @Test + public void testGetWithCacheFailuresOff() + throws Exception + { + String path = "org/apache/maven/test/get-in-second-proxy/1.0/get-in-second-proxy-1.0.jar"; + Path expectedFile = managedDefaultDir.resolve( path ); + setupTestableManagedRepository( path ); + + assertNotExistsInManagedDefaultRepo( expectedFile ); + + ArtifactReference artifact = managedDefaultRepository.toArtifactReference( path ); + + // Configure Repository (usually done within archiva.xml configuration) + saveRemoteRepositoryConfig( "badproxied1", "Bad Proxied 1", "test://bad.machine.com/repo/", "default" ); + saveRemoteRepositoryConfig( "badproxied2", "Bad Proxied 2", "test://bad.machine.com/anotherrepo/", "default" ); + + + // Configure Connector (usually done within archiva.xml configuration) + saveConnector( ID_DEFAULT_MANAGED, "badproxied1", ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS, + SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false ); + saveConnector( ID_DEFAULT_MANAGED, "badproxied2", ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS, + SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false ); + + wagonMock.get( EasyMock.eq( path ), EasyMock.anyObject( File.class )); + EasyMock.expectLastCall().andThrow( new ResourceDoesNotExistException( "resource does not exist." ) ).times( 2 ); + + wagonMockControl.replay(); + + Path downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact ); + + wagonMockControl.verify(); + + // Second attempt to download same artifact DOES NOT use cache + wagonMockControl.reset(); + + wagonMock.get( EasyMock.eq( path ), EasyMock.anyObject( File.class )); + EasyMock.expectLastCall().andThrow( new ResourceDoesNotExistException( "resource does not exist." ) ).times( 2 ); + + wagonMockControl.replay(); + + downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact ); + + wagonMockControl.verify(); + + assertNotDownloaded( downloadedFile ); + assertNoTempFiles( expectedFile ); + } + + @Test + public void testGetWhenInBothProxiedButFirstCacheFailure() + throws Exception + { + String path = "org/apache/maven/test/get-in-second-proxy/1.0/get-in-second-proxy-1.0.jar"; + setupTestableManagedRepository( path ); + Path expectedFile = managedDefaultDir.resolve(path ); + ArtifactReference artifact = managedDefaultRepository.toArtifactReference( path ); + + Files.deleteIfExists(expectedFile); + assertFalse( Files.exists(expectedFile) ); + + String url = PathUtil.toUrl( REPOPATH_PROXIED1 + "/" + path ); + + // Intentionally set failure on url in proxied1 (for test) + UrlFailureCache failurlCache = lookupUrlFailureCache(); + failurlCache.cacheFailure( url ); + + // Configure Connector (usually done within archiva.xml configuration) + saveConnector( ID_DEFAULT_MANAGED, "proxied1", ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS, + SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.YES, false ); + saveConnector( ID_DEFAULT_MANAGED, "proxied2", ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS, + SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.YES, false ); + + Path downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact ); + + // Validate that file actually came from proxied2 (as intended). + Path proxied2File = Paths.get( REPOPATH_PROXIED2, path ); + assertFileEquals( expectedFile, downloadedFile, proxied2File ); + assertNoTempFiles( expectedFile ); + } + + protected UrlFailureCache lookupUrlFailureCache() + throws Exception + { + assertNotNull( "URL Failure Cache cannot be null.", urlFailureCache ); + return urlFailureCache; + } +} diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/java/org/apache/archiva/proxy/ChecksumTransferTest.java b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/java/org/apache/archiva/proxy/ChecksumTransferTest.java new file mode 100644 index 000000000..e9ade0479 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/java/org/apache/archiva/proxy/ChecksumTransferTest.java @@ -0,0 +1,555 @@ +package org.apache.archiva.proxy; + +/* + * 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.archiva.common.utils.FileUtils; +import org.apache.archiva.model.ArtifactReference; +import org.apache.archiva.policies.CachedFailuresPolicy; +import org.apache.archiva.policies.ChecksumPolicy; +import org.apache.archiva.policies.ReleasesPolicy; +import org.apache.archiva.policies.SnapshotsPolicy; +import org.apache.maven.wagon.ResourceDoesNotExistException; +import org.easymock.EasyMock; +import org.junit.Test; + +import java.io.File; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.nio.file.StandardCopyOption; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNull; + +/** + * ChecksumTransferTest + * + * + */ +public class ChecksumTransferTest + extends AbstractProxyTestCase +{ + @Test + public void testGetChecksumWhenConnectorIsDisabled() + throws Exception + { + String path = "org/apache/maven/test/get-checksum-both-right/1.0/get-checksum-both-right-1.0.jar"; + setupTestableManagedRepository( path ); + + Path expectedFile = managedDefaultDir.resolve( path ); + ArtifactReference artifact = managedDefaultRepository.toArtifactReference( path ); + + org.apache.archiva.common.utils.FileUtils.deleteDirectory( expectedFile.getParent() ); + assertFalse( Files.exists(expectedFile) ); + + // Configure Connector (usually done within archiva.xml configuration) + saveConnector( ID_DEFAULT_MANAGED, "proxied1", ChecksumPolicy.IGNORE, ReleasesPolicy.ALWAYS, + SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, true ); + + Path downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact ); + + assertNull( downloadedFile ); + } + + @Test + public void testGetChecksumBothCorrect() + throws Exception + { + String path = "org/apache/maven/test/get-checksum-both-right/1.0/get-checksum-both-right-1.0.jar"; + setupTestableManagedRepository( path ); + + Path expectedFile = managedDefaultDir.resolve( path ); + ArtifactReference artifact = managedDefaultRepository.toArtifactReference( path ); + + org.apache.archiva.common.utils.FileUtils.deleteDirectory( expectedFile.getParent() ); + assertFalse( Files.exists(expectedFile) ); + + // Configure Connector (usually done within archiva.xml configuration) + saveConnector( ID_DEFAULT_MANAGED, "proxied1", ChecksumPolicy.IGNORE, ReleasesPolicy.ALWAYS, + SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false ); + + Path downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact ); + + Path proxied1File = Paths.get( REPOPATH_PROXIED1, path ); + assertFileEquals( expectedFile, downloadedFile, proxied1File ); + assertNoTempFiles( expectedFile ); + assertChecksums( expectedFile, "066d76e459f7782c312c31e8a11b3c0f1e3e43a7 *get-checksum-both-right-1.0.jar", + "e58f30c6a150a2e843552438d18e15cb *get-checksum-both-right-1.0.jar" ); + } + + @Test + public void testGetChecksumCorrectSha1NoMd5() + throws Exception + { + String path = "org/apache/maven/test/get-checksum-sha1-only/1.0/get-checksum-sha1-only-1.0.jar"; + setupTestableManagedRepository( path ); + + Path expectedFile = managedDefaultDir.resolve( path ); + ArtifactReference artifact = managedDefaultRepository.toArtifactReference( path ); + + FileUtils.deleteDirectory( expectedFile.getParent() ); + assertFalse( Files.exists(expectedFile) ); + + // Configure Connector (usually done within archiva.xml configuration) + saveConnector( ID_DEFAULT_MANAGED, "proxied1", ChecksumPolicy.IGNORE, ReleasesPolicy.ALWAYS, + SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false ); + + Path downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact ); + + Path proxied1File = Paths.get( REPOPATH_PROXIED1, path ); + assertFileEquals( expectedFile, downloadedFile, proxied1File ); + assertNoTempFiles( expectedFile ); + assertChecksums( expectedFile, "748a3a013bf5eacf2bbb40a2ac7d37889b728837 *get-checksum-sha1-only-1.0.jar", + null ); + } + + @Test + public void testGetChecksumNoSha1CorrectMd5() + throws Exception + { + String path = "org/apache/maven/test/get-checksum-md5-only/1.0/get-checksum-md5-only-1.0.jar"; + setupTestableManagedRepository( path ); + + Path expectedFile = managedDefaultDir.resolve( path ); + ArtifactReference artifact = managedDefaultRepository.toArtifactReference( path ); + + FileUtils.deleteDirectory( expectedFile.getParent() ); + assertFalse( Files.exists(expectedFile) ); + + // Configure Connector (usually done within archiva.xml configuration) + saveConnector( ID_DEFAULT_MANAGED, "proxied1", ChecksumPolicy.IGNORE, ReleasesPolicy.ALWAYS, + SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false ); + + Path downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact ); + + Path proxied1File = Paths.get( REPOPATH_PROXIED1, path ); + assertFileEquals( expectedFile, downloadedFile, proxied1File ); + assertNoTempFiles( expectedFile ); + assertChecksums( expectedFile, null, "f3af5201bf8da801da37db8842846e1c *get-checksum-md5-only-1.0.jar" ); + } + + @Test + public void testGetWithNoChecksumsUsingIgnoredSetting() + throws Exception + { + String path = "org/apache/maven/test/get-default-layout/1.0/get-default-layout-1.0.jar"; + setupTestableManagedRepository( path ); + + Path expectedFile = managedDefaultDir.resolve( path ); + ArtifactReference artifact = managedDefaultRepository.toArtifactReference( path ); + + FileUtils.deleteDirectory( expectedFile.getParent() ); + assertFalse( Files.exists(expectedFile) ); + + // Configure Connector (usually done within archiva.xml configuration) + saveConnector( ID_DEFAULT_MANAGED, "proxied1", ChecksumPolicy.IGNORE, ReleasesPolicy.ALWAYS, + SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false ); + + Path downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact ); + + Path proxied1File = Paths.get( REPOPATH_PROXIED1, path ); + assertFileEquals( expectedFile, downloadedFile, proxied1File ); + assertNoTempFiles( expectedFile ); + assertChecksums( expectedFile, null, null ); + } + + @Test + public void testGetChecksumBadSha1BadMd5IgnoredSetting() + throws Exception + { + String path = "org/apache/maven/test/get-checksum-both-bad/1.0/get-checksum-both-bad-1.0.jar"; + setupTestableManagedRepository( path ); + + Path expectedFile = managedDefaultDir.resolve( path ); + ArtifactReference artifact = managedDefaultRepository.toArtifactReference( path ); + + FileUtils.deleteDirectory( expectedFile.getParent() ); + assertFalse( Files.exists(expectedFile) ); + + // Configure Connector (usually done within archiva.xml configuration) + saveConnector( ID_DEFAULT_MANAGED, "proxied1", ChecksumPolicy.IGNORE, ReleasesPolicy.ALWAYS, + SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false ); + + Path downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact ); + + Path proxied1File = Paths.get( REPOPATH_PROXIED1, path ); + assertFileEquals( expectedFile, downloadedFile, proxied1File ); + assertNoTempFiles( expectedFile ); + assertChecksums( expectedFile, "invalid checksum file", "invalid checksum file" ); + } + + @Test + public void testGetChecksumBadSha1BadMd5FailSetting() + throws Exception + { + String path = "org/apache/maven/test/get-checksum-both-bad/1.0/get-checksum-both-bad-1.0.jar"; + setupTestableManagedRepository( path ); + + Path expectedFile = managedDefaultDir.resolve( path ); + ArtifactReference artifact = managedDefaultRepository.toArtifactReference( path ); + + FileUtils.deleteDirectory( expectedFile.getParent() ); + assertFalse( Files.exists(expectedFile) ); + + // Configure Connector (usually done within archiva.xml configuration) + saveConnector( ID_DEFAULT_MANAGED, "proxied1", ChecksumPolicy.FAIL, ReleasesPolicy.ALWAYS, + SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false ); + + Path downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact ); + + assertNotDownloaded( downloadedFile ); + assertChecksums( expectedFile, null, null ); + } + + @Test + public void testGetChecksumBadSha1BadMd5FixSetting() + throws Exception + { + String path = "org/apache/maven/test/get-checksum-both-bad/1.0/get-checksum-both-bad-1.0.jar"; + setupTestableManagedRepository( path ); + + Path expectedFile = managedDefaultDir.resolve( path ); + ArtifactReference artifact = managedDefaultRepository.toArtifactReference( path ); + + FileUtils.deleteDirectory( expectedFile.getParent() ); + assertFalse( Files.exists(expectedFile) ); + + // Configure Connector (usually done within archiva.xml configuration) + saveConnector( ID_DEFAULT_MANAGED, "proxied1", ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS, + SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false ); + + Path downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact ); + + Path proxied1File = Paths.get( REPOPATH_PROXIED1, path ); + assertFileEquals( expectedFile, downloadedFile, proxied1File ); + assertNoTempFiles( expectedFile ); + assertChecksums( expectedFile, "4ec20a12dc91557330bd0b39d1805be5e329ae56 get-checksum-both-bad-1.0.jar", + "a292491a35925465e693a44809a078b5 get-checksum-both-bad-1.0.jar" ); + } + + @Test + public void testGetChecksumCorrectSha1BadMd5UsingFailSetting() + throws Exception + { + String path = "org/apache/maven/test/get-checksum-sha1-bad-md5/1.0/get-checksum-sha1-bad-md5-1.0.jar"; + setupTestableManagedRepository( path ); + + Path expectedFile = managedDefaultDir.resolve(path); + ArtifactReference artifact = managedDefaultRepository.toArtifactReference( path ); + + FileUtils.deleteDirectory( expectedFile.getParent() ); + assertFalse( Files.exists(expectedFile) ); + + // Configure Connector (usually done within archiva.xml configuration) + saveConnector( ID_DEFAULT_MANAGED, "proxied1", ChecksumPolicy.FAIL, ReleasesPolicy.ALWAYS, + SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false ); + + Path downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact ); + + assertNotDownloaded( downloadedFile ); + assertChecksums( expectedFile, null, null ); + } + + @Test + public void testGetChecksumNoSha1CorrectMd5UsingFailSetting() + throws Exception + { + String path = "org/apache/maven/test/get-checksum-md5-only/1.0/get-checksum-md5-only-1.0.jar"; + setupTestableManagedRepository( path ); + + Path expectedFile = managedDefaultDir.resolve(path); + ArtifactReference artifact = managedDefaultRepository.toArtifactReference( path ); + + FileUtils.deleteDirectory( expectedFile.getParent() ); + assertFalse( Files.exists(expectedFile) ); + + // Configure Connector (usually done within archiva.xml configuration) + saveConnector( ID_DEFAULT_MANAGED, "proxied1", ChecksumPolicy.FAIL, ReleasesPolicy.ALWAYS, + SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false ); + + Path downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact ); + + // This is a success situation. No SHA1 with a Good MD5. + Path proxied1File = Paths.get(REPOPATH_PROXIED1, path); + assertFileEquals( expectedFile, downloadedFile, proxied1File ); + assertNoTempFiles( expectedFile ); + assertChecksums( expectedFile, null, "f3af5201bf8da801da37db8842846e1c *get-checksum-md5-only-1.0.jar" ); + } + + @Test + public void testGetWithNoChecksumsUsingFailSetting() + throws Exception + { + String path = "org/apache/maven/test/get-default-layout/1.0/get-default-layout-1.0.jar"; + setupTestableManagedRepository( path ); + + Path expectedFile = managedDefaultDir.resolve(path); + ArtifactReference artifact = managedDefaultRepository.toArtifactReference( path ); + + FileUtils.deleteDirectory( expectedFile.getParent() ); + assertFalse( Files.exists(expectedFile) ); + + // Configure Connector (usually done within archiva.xml configuration) + saveConnector( ID_DEFAULT_MANAGED, "proxied1", ChecksumPolicy.FAIL, ReleasesPolicy.ALWAYS, + SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false ); + + Path downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact ); + + assertNotDownloaded( downloadedFile ); + assertChecksums( expectedFile, null, null ); + } + + @Test + public void testGetChecksumCorrectSha1BadMd5UsingIgnoredSetting() + throws Exception + { + String path = "org/apache/maven/test/get-checksum-sha1-bad-md5/1.0/get-checksum-sha1-bad-md5-1.0.jar"; + setupTestableManagedRepository( path ); + + Path expectedFile = managedDefaultDir.resolve(path); + ArtifactReference artifact = managedDefaultRepository.toArtifactReference( path ); + + FileUtils.deleteDirectory( expectedFile.getParent() ); + assertFalse( Files.exists(expectedFile) ); + + // Configure Connector (usually done within archiva.xml configuration) + saveConnector( ID_DEFAULT_MANAGED, "proxied1", ChecksumPolicy.IGNORE, ReleasesPolicy.ALWAYS, + SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false ); + + Path downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact ); + + Path proxied1File = Paths.get(REPOPATH_PROXIED1, path); + assertFileEquals( expectedFile, downloadedFile, proxied1File ); + assertNoTempFiles( expectedFile ); + assertChecksums( expectedFile, "3dd1a3a57b807d3ef3fbc6013d926c891cbb8670 *get-checksum-sha1-bad-md5-1.0.jar", + "invalid checksum file" ); + } + + @Test + public void testGetChecksumCorrectSha1BadMd5UsingFixSetting() + throws Exception + { + String path = "org/apache/maven/test/get-checksum-sha1-bad-md5/1.0/get-checksum-sha1-bad-md5-1.0.jar"; + setupTestableManagedRepository( path ); + + Path expectedFile = managedDefaultDir.resolve(path); + ArtifactReference artifact = managedDefaultRepository.toArtifactReference( path ); + + FileUtils.deleteDirectory( expectedFile.getParent() ); + assertFalse( Files.exists(expectedFile) ); + + // Configure Connector (usually done within archiva.xml configuration) + saveConnector( ID_DEFAULT_MANAGED, "proxied1", ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS, + SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false ); + + + Path downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact ); + + Path proxied1File = Paths.get(REPOPATH_PROXIED1, path); + assertFileEquals( expectedFile, downloadedFile, proxied1File ); + assertNoTempFiles( expectedFile ); + assertChecksums( expectedFile, "3dd1a3a57b807d3ef3fbc6013d926c891cbb8670 *get-checksum-sha1-bad-md5-1.0.jar", + "c35f3b76268b73a4ba617f6f275c49ab get-checksum-sha1-bad-md5-1.0.jar" ); + } + + @Test + public void testGetChecksumNoSha1CorrectMd5UsingFixSetting() + throws Exception + { + String path = "org/apache/maven/test/get-checksum-md5-only/1.0/get-checksum-md5-only-1.0.jar"; + setupTestableManagedRepository( path ); + + Path expectedFile = managedDefaultDir.resolve(path); + ArtifactReference artifact = managedDefaultRepository.toArtifactReference( path ); + + FileUtils.deleteDirectory( expectedFile.getParent() ); + assertFalse( Files.exists(expectedFile) ); + + // Configure Connector (usually done within archiva.xml configuration) + saveConnector( ID_DEFAULT_MANAGED, "proxied1", ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS, + SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false ); + + Path downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact ); + + Path proxied1File = Paths.get(REPOPATH_PROXIED1, path); + assertFileEquals( expectedFile, downloadedFile, proxied1File ); + assertNoTempFiles( expectedFile ); + assertChecksums( expectedFile, "71f7dc3f72053a3f2d9fdd6fef9db055ef957ffb get-checksum-md5-only-1.0.jar", + "f3af5201bf8da801da37db8842846e1c *get-checksum-md5-only-1.0.jar" ); + } + + @Test + public void testGetWithNoChecksumsUsingFixSetting() + throws Exception + { + String path = "org/apache/maven/test/get-default-layout/1.0/get-default-layout-1.0.jar"; + setupTestableManagedRepository( path ); + + Path expectedFile = managedDefaultDir.resolve(path); + ArtifactReference artifact = managedDefaultRepository.toArtifactReference( path ); + + FileUtils.deleteDirectory( expectedFile.getParent() ); + assertFalse( Files.exists(expectedFile) ); + + // Configure Connector (usually done within archiva.xml configuration) + saveConnector( ID_DEFAULT_MANAGED, "proxied1", ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS, + SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false ); + + Path downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact ); + + Path proxied1File = Paths.get(REPOPATH_PROXIED1, path); + assertFileEquals( expectedFile, downloadedFile, proxied1File ); + assertNoTempFiles( expectedFile ); + assertChecksums( expectedFile, "1f12821c5e43e1a0b76b9564a6ddb0548ccb9486 get-default-layout-1.0.jar", + "3f7341545f21226b6f49a3c2704cb9be get-default-layout-1.0.jar" ); + } + + @Test + public void testGetChecksumNotFoundOnRemote() + throws Exception + { + String path = "org/apache/maven/test/get-checksum-sha1-only/1.0/get-checksum-sha1-only-1.0.jar"; + setupTestableManagedRepository( path ); + + Path expectedFile = managedDefaultDir.resolve( path ); + ArtifactReference artifact = managedDefaultRepository.toArtifactReference( path ); + + FileUtils.deleteDirectory( expectedFile.getParent() ); + assertFalse( Files.exists(expectedFile.getParent()) ); + assertFalse( Files.exists(expectedFile) ); + + saveRemoteRepositoryConfig( "badproxied", "Bad Proxied", "test://bad.machine.com/repo/", "default" ); + + // Configure Connector (usually done within archiva.xml configuration) + saveConnector( ID_DEFAULT_MANAGED, "badproxied", ChecksumPolicy.IGNORE, ReleasesPolicy.ALWAYS, + SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false ); + + wagonMock.get( EasyMock.eq( path ), EasyMock.anyObject( File.class )); + EasyMock.expectLastCall().once(); + + wagonMock.get( EasyMock.eq( path + ".sha1" ), EasyMock.anyObject( File.class )); + EasyMock.expectLastCall().once(); + + wagonMock.get( EasyMock.eq( path + ".md5" ), EasyMock.anyObject( File.class )); + EasyMock.expectLastCall().andThrow( new ResourceDoesNotExistException( "Resource does not exist." ) ).once(); + + wagonMockControl.replay(); + + Path downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact ); + + wagonMockControl.verify(); + + // Do what the mock doesn't do. + Path proxyPath = Paths.get( REPOPATH_PROXIED1, path ).toAbsolutePath(); + Path localPath = managedDefaultDir.resolve( path ).toAbsolutePath(); + Files.copy( proxyPath, localPath, StandardCopyOption.REPLACE_EXISTING); + Files.copy( proxyPath.resolveSibling( proxyPath.getFileName() + ".sha1" ), + localPath.resolveSibling( localPath.getFileName() + ".sha1" ), StandardCopyOption.REPLACE_EXISTING ); + + // Test results. + Path proxied1File = Paths.get( REPOPATH_PROXIED1, path ); + assertFileEquals( expectedFile, downloadedFile, proxied1File ); + assertNoTempFiles( expectedFile ); + assertChecksums( expectedFile, "748a3a013bf5eacf2bbb40a2ac7d37889b728837 *get-checksum-sha1-only-1.0.jar", + null ); + } + + @Test + public void testGetAlwaysBadChecksumPresentLocallyAbsentRemoteUsingIgnoredSetting() + throws Exception + { + String path = "org/apache/maven/test/get-bad-local-checksum/1.0/get-bad-local-checksum-1.0.jar"; + setupTestableManagedRepository( path ); + + Path expectedFile = managedDefaultDir.resolve( path ); + Path remoteFile = Paths.get( REPOPATH_PROXIED1, path ); + + setManagedOlderThanRemote( expectedFile, remoteFile ); + + ArtifactReference artifact = managedDefaultRepository.toArtifactReference( path ); + + // Configure Connector (usually done within archiva.xml configuration) + saveConnector( ID_DEFAULT_MANAGED, "proxied1", ChecksumPolicy.IGNORE, ReleasesPolicy.ALWAYS, + SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false ); + + Path downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact ); + + Path proxied1File = Paths.get( REPOPATH_PROXIED1, path ); + assertFileEquals( expectedFile, downloadedFile, proxied1File ); + assertNoTempFiles( expectedFile ); + // There are no hashcodes on the proxy side to download, hence the local ones should remain invalid. + assertChecksums( expectedFile, "invalid checksum file", "invalid checksum file" ); + } + + @Test + public void testGetAlwaysBadChecksumPresentLocallyAbsentRemoteUsingFailSetting() + throws Exception + { + String path = "org/apache/maven/test/get-bad-local-checksum/1.0/get-bad-local-checksum-1.0.jar"; + setupTestableManagedRepository( path ); + + Path expectedFile = managedDefaultDir.resolve( path ); + Path remoteFile = Paths.get( REPOPATH_PROXIED1, path ); + + setManagedOlderThanRemote( expectedFile, remoteFile ); + + ArtifactReference artifact = managedDefaultRepository.toArtifactReference( path ); + + // Configure Connector (usually done within archiva.xml configuration) + saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, ChecksumPolicy.FAIL, ReleasesPolicy.ALWAYS, + SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false ); + + Path downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact ); + + assertNotDownloaded( downloadedFile ); + assertNoTempFiles( expectedFile ); + // There are no hashcodes on the proxy side to download. + // The FAIL policy will delete the checksums as bad. + + assertChecksums( expectedFile, "invalid checksum file", "invalid checksum file" ); + } + + @Test + public void testGetAlwaysBadChecksumPresentLocallyAbsentRemoteUsingFixSetting() + throws Exception + { + String path = "org/apache/maven/test/get-bad-local-checksum/1.0/get-bad-local-checksum-1.0.jar"; + setupTestableManagedRepository( path ); + + Path expectedFile = managedDefaultDir.resolve(path); + Path remoteFile = Paths.get(REPOPATH_PROXIED1, path); + + setManagedOlderThanRemote( expectedFile, remoteFile ); + + ArtifactReference artifact = managedDefaultRepository.toArtifactReference( path ); + + // Configure Connector (usually done within archiva.xml configuration) + saveConnector( ID_DEFAULT_MANAGED, "proxied1", ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS, + SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false ); + + Path downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact ); + + Path proxied1File = Paths.get(REPOPATH_PROXIED1, path); + assertFileEquals( expectedFile, downloadedFile, proxied1File ); + assertNoTempFiles( expectedFile ); + assertChecksums( expectedFile, "96a08dc80a108cba8efd3b20aec91b32a0b2cbd4 get-bad-local-checksum-1.0.jar", + "46fdd6ca55bf1d7a7eb0c858f41e0ccd get-bad-local-checksum-1.0.jar" ); + } +} diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/java/org/apache/archiva/proxy/ErrorHandlingTest.java b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/java/org/apache/archiva/proxy/ErrorHandlingTest.java new file mode 100644 index 000000000..cef7501b4 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/java/org/apache/archiva/proxy/ErrorHandlingTest.java @@ -0,0 +1,661 @@ +package org.apache.archiva.proxy; + +/* + * 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.archiva.policies.CachedFailuresPolicy; +import org.apache.archiva.policies.ChecksumPolicy; +import org.apache.archiva.policies.PropagateErrorsDownloadPolicy; +import org.apache.archiva.policies.PropagateErrorsOnUpdateDownloadPolicy; +import org.apache.archiva.policies.ProxyDownloadException; +import org.apache.archiva.policies.ReleasesPolicy; +import org.apache.archiva.policies.SnapshotsPolicy; +import org.apache.archiva.repository.LayoutException; +import org.apache.maven.wagon.ResourceDoesNotExistException; +import org.apache.maven.wagon.TransferFailedException; +import org.apache.maven.wagon.authorization.AuthorizationException; +import org.easymock.EasyMock; +import org.junit.Test; + +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; + +import static org.junit.Assert.*; + +/** + * ErrorHandlingTest + * + * + */ +public class ErrorHandlingTest + extends AbstractProxyTestCase +{ + private static final String PATH_IN_BOTH_REMOTES_NOT_LOCAL = + "org/apache/maven/test/get-in-both-proxies/1.0/get-in-both-proxies-1.0.jar"; + + private static final String PATH_IN_BOTH_REMOTES_AND_LOCAL = + "org/apache/maven/test/get-on-multiple-repos/1.0/get-on-multiple-repos-1.0.pom"; + + private static final String ID_MOCKED_PROXIED1 = "badproxied1"; + + private static final String NAME_MOCKED_PROXIED1 = "Bad Proxied 1"; + + private static final String ID_MOCKED_PROXIED2 = "badproxied2"; + + private static final String NAME_MOCKED_PROXIED2 = "Bad Proxied 2"; + + @Test + public void testPropagateErrorImmediatelyWithErrorThenSuccess() + throws Exception + { + String path = PATH_IN_BOTH_REMOTES_NOT_LOCAL; + Path expectedFile = setupRepositoriesWithLocalFileNotPresent( path ); + + createMockedProxyConnector( ID_MOCKED_PROXIED1, NAME_MOCKED_PROXIED1, PropagateErrorsDownloadPolicy.STOP ); + saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED2, false ); + + simulateGetError( path, expectedFile, createTransferException() ); + + confirmSingleFailure( path, ID_MOCKED_PROXIED1 ); + } + + @Test + public void testPropagateErrorImmediatelyWithNotFoundThenError() + throws Exception + { + String path = PATH_IN_BOTH_REMOTES_NOT_LOCAL; + Path expectedFile = setupRepositoriesWithLocalFileNotPresent( path ); + + createMockedProxyConnector( ID_MOCKED_PROXIED1, NAME_MOCKED_PROXIED1, PropagateErrorsDownloadPolicy.STOP ); + createMockedProxyConnector( ID_MOCKED_PROXIED2, NAME_MOCKED_PROXIED2, PropagateErrorsDownloadPolicy.STOP ); + + simulateGetError( path, expectedFile, createResourceNotFoundException() ); + + simulateGetError( path, expectedFile, createTransferException() ); + + confirmSingleFailure( path, ID_MOCKED_PROXIED2 ); + } + + @Test + public void testPropagateErrorImmediatelyWithSuccessThenError() + throws Exception + { + String path = PATH_IN_BOTH_REMOTES_NOT_LOCAL; + Path expectedFile = setupRepositoriesWithLocalFileNotPresent( path ); + + saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, false ); + + createMockedProxyConnector( ID_MOCKED_PROXIED2, NAME_MOCKED_PROXIED2, PropagateErrorsDownloadPolicy.STOP ); + + confirmSuccess( path, expectedFile, REPOPATH_PROXIED1 ); + } + + @Test + public void testPropagateErrorImmediatelyWithNotFoundThenSuccess() + throws Exception + { + String path = PATH_IN_BOTH_REMOTES_NOT_LOCAL; + Path expectedFile = setupRepositoriesWithLocalFileNotPresent( path ); + + createMockedProxyConnector( ID_MOCKED_PROXIED1, NAME_MOCKED_PROXIED1, PropagateErrorsDownloadPolicy.STOP ); + + saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED2, false ); + + simulateGetError( path, expectedFile, createResourceNotFoundException() ); + + confirmSuccess( path, expectedFile, REPOPATH_PROXIED2 ); + } + + @Test + public void testPropagateErrorAtEndWithErrorThenSuccess() + throws Exception + { + String path = PATH_IN_BOTH_REMOTES_NOT_LOCAL; + Path expectedFile = setupRepositoriesWithLocalFileNotPresent( path ); + + createMockedProxyConnector( ID_MOCKED_PROXIED1, NAME_MOCKED_PROXIED1, PropagateErrorsDownloadPolicy.STOP ); + + saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED2, false ); + + simulateGetError( path, expectedFile, createTransferException() ); + + confirmSingleFailure( path, ID_MOCKED_PROXIED1 ); + } + + @Test + public void testPropagateErrorAtEndWithSuccessThenError() + throws Exception + { + String path = PATH_IN_BOTH_REMOTES_NOT_LOCAL; + Path expectedFile = setupRepositoriesWithLocalFileNotPresent( path ); + + saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, false ); + + createMockedProxyConnector( ID_MOCKED_PROXIED2, NAME_MOCKED_PROXIED2, PropagateErrorsDownloadPolicy.QUEUE ); + + confirmSuccess( path, expectedFile, REPOPATH_PROXIED1 ); + } + + @Test + public void testPropagateErrorAtEndWithNotFoundThenError() + throws Exception + { + String path = PATH_IN_BOTH_REMOTES_NOT_LOCAL; + Path expectedFile = setupRepositoriesWithLocalFileNotPresent( path ); + + createMockedProxyConnector( ID_MOCKED_PROXIED1, NAME_MOCKED_PROXIED1, PropagateErrorsDownloadPolicy.QUEUE ); + + createMockedProxyConnector( ID_MOCKED_PROXIED2, NAME_MOCKED_PROXIED2, PropagateErrorsDownloadPolicy.QUEUE ); + + simulateGetError( path, expectedFile, createResourceNotFoundException() ); + + simulateGetError( path, expectedFile, createTransferException() ); + + confirmSingleFailure( path, ID_MOCKED_PROXIED2 ); + } + + @Test + public void testPropagateErrorAtEndWithErrorThenNotFound() + throws Exception + { + String path = PATH_IN_BOTH_REMOTES_NOT_LOCAL; + Path expectedFile = setupRepositoriesWithLocalFileNotPresent( path ); + + createMockedProxyConnector( ID_MOCKED_PROXIED1, NAME_MOCKED_PROXIED1, PropagateErrorsDownloadPolicy.QUEUE ); + + createMockedProxyConnector( ID_MOCKED_PROXIED2, NAME_MOCKED_PROXIED2, PropagateErrorsDownloadPolicy.QUEUE ); + + simulateGetError( path, expectedFile, createTransferException() ); + + simulateGetError( path, expectedFile, createResourceNotFoundException() ); + + confirmSingleFailure( path, ID_MOCKED_PROXIED1 ); + } + + @Test + public void testPropagateErrorAtEndWithErrorThenError() + throws Exception + { + String path = PATH_IN_BOTH_REMOTES_NOT_LOCAL; + Path expectedFile = setupRepositoriesWithLocalFileNotPresent( path ); + + createMockedProxyConnector( ID_MOCKED_PROXIED1, NAME_MOCKED_PROXIED1, PropagateErrorsDownloadPolicy.QUEUE ); + + createMockedProxyConnector( ID_MOCKED_PROXIED2, NAME_MOCKED_PROXIED2, PropagateErrorsDownloadPolicy.QUEUE ); + + simulateGetError( path, expectedFile, createTransferException() ); + + simulateGetError( path, expectedFile, createTransferException() ); + + confirmFailures( path, new String[]{ID_MOCKED_PROXIED1, ID_MOCKED_PROXIED2} ); + } + + @Test + public void testPropagateErrorAtEndWithNotFoundThenSuccess() + throws Exception + { + String path = PATH_IN_BOTH_REMOTES_NOT_LOCAL; + Path expectedFile = setupRepositoriesWithLocalFileNotPresent( path ); + + createMockedProxyConnector( ID_MOCKED_PROXIED1, NAME_MOCKED_PROXIED1, PropagateErrorsDownloadPolicy.QUEUE ); + + saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED2, false ); + + simulateGetError( path, expectedFile, createResourceNotFoundException() ); + + confirmSuccess( path, expectedFile, REPOPATH_PROXIED2 ); + } + + @Test + public void testIgnoreErrorWithErrorThenSuccess() + throws Exception + { + String path = PATH_IN_BOTH_REMOTES_NOT_LOCAL; + Path expectedFile = setupRepositoriesWithLocalFileNotPresent( path ); + + createMockedProxyConnector( ID_MOCKED_PROXIED1, NAME_MOCKED_PROXIED1, PropagateErrorsDownloadPolicy.IGNORE ); + + saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED2, false ); + + simulateGetError( path, expectedFile, createTransferException() ); + + confirmSuccess( path, expectedFile, REPOPATH_PROXIED2 ); + } + + @Test + public void testIgnoreErrorWithSuccessThenError() + throws Exception + { + String path = PATH_IN_BOTH_REMOTES_NOT_LOCAL; + Path expectedFile = setupRepositoriesWithLocalFileNotPresent( path ); + + saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, false ); + + createMockedProxyConnector( ID_MOCKED_PROXIED2, NAME_MOCKED_PROXIED2, PropagateErrorsDownloadPolicy.IGNORE ); + + confirmSuccess( path, expectedFile, REPOPATH_PROXIED1 ); + } + + @Test + public void testIgnoreErrorWithNotFoundThenError() + throws Exception + { + String path = PATH_IN_BOTH_REMOTES_NOT_LOCAL; + Path expectedFile = setupRepositoriesWithLocalFileNotPresent( path ); + + createMockedProxyConnector( ID_MOCKED_PROXIED1, NAME_MOCKED_PROXIED1, PropagateErrorsDownloadPolicy.IGNORE ); + + createMockedProxyConnector( ID_MOCKED_PROXIED2, NAME_MOCKED_PROXIED2, PropagateErrorsDownloadPolicy.IGNORE ); + + simulateGetError( path, expectedFile, createResourceNotFoundException() ); + + simulateGetError( path, expectedFile, createTransferException() ); + + confirmNotDownloadedNoError( path ); + } + + @Test + public void testIgnoreErrorWithErrorThenNotFound() + throws Exception + { + String path = PATH_IN_BOTH_REMOTES_NOT_LOCAL; + Path expectedFile = setupRepositoriesWithLocalFileNotPresent( path ); + + createMockedProxyConnector( ID_MOCKED_PROXIED1, NAME_MOCKED_PROXIED1, PropagateErrorsDownloadPolicy.IGNORE ); + + createMockedProxyConnector( ID_MOCKED_PROXIED2, NAME_MOCKED_PROXIED2, PropagateErrorsDownloadPolicy.IGNORE ); + + simulateGetError( path, expectedFile, createTransferException() ); + + simulateGetError( path, expectedFile, createResourceNotFoundException() ); + + confirmNotDownloadedNoError( path ); + } + + @Test + public void testIgnoreErrorWithErrorThenError() + throws Exception + { + String path = PATH_IN_BOTH_REMOTES_NOT_LOCAL; + Path expectedFile = setupRepositoriesWithLocalFileNotPresent( path ); + + createMockedProxyConnector( ID_MOCKED_PROXIED1, NAME_MOCKED_PROXIED1, PropagateErrorsDownloadPolicy.IGNORE ); + + createMockedProxyConnector( ID_MOCKED_PROXIED2, NAME_MOCKED_PROXIED2, PropagateErrorsDownloadPolicy.IGNORE ); + + simulateGetError( path, expectedFile, createTransferException() ); + + simulateGetError( path, expectedFile, createTransferException() ); + + confirmNotDownloadedNoError( path ); + } + + @Test + public void testPropagateOnUpdateAlwaysArtifactNotPresent() + throws Exception + { + String path = PATH_IN_BOTH_REMOTES_NOT_LOCAL; + Path expectedFile = setupRepositoriesWithLocalFileNotPresent( path ); + + createMockedProxyConnector( ID_MOCKED_PROXIED1, NAME_MOCKED_PROXIED1, PropagateErrorsDownloadPolicy.STOP, + PropagateErrorsOnUpdateDownloadPolicy.ALWAYS ); + createMockedProxyConnector( ID_MOCKED_PROXIED2, NAME_MOCKED_PROXIED2, PropagateErrorsDownloadPolicy.STOP, + PropagateErrorsOnUpdateDownloadPolicy.ALWAYS ); + + simulateGetError( path, expectedFile, createTransferException() ); + + confirmSingleFailure( path, ID_MOCKED_PROXIED1 ); + } + + @Test + public void testPropagateOnUpdateAlwaysArtifactPresent() + throws Exception + { + String path = PATH_IN_BOTH_REMOTES_AND_LOCAL; + Path expectedFile = setupRepositoriesWithLocalFilePresent( path ); + + createMockedProxyConnector( ID_MOCKED_PROXIED1, NAME_MOCKED_PROXIED1, PropagateErrorsDownloadPolicy.STOP, + PropagateErrorsOnUpdateDownloadPolicy.ALWAYS ); + createMockedProxyConnector( ID_MOCKED_PROXIED2, NAME_MOCKED_PROXIED2, PropagateErrorsDownloadPolicy.STOP, + PropagateErrorsOnUpdateDownloadPolicy.ALWAYS ); + + simulateGetIfNewerError( path, expectedFile, createTransferException() ); + + confirmSingleFailure( path, ID_MOCKED_PROXIED1 ); + } + + @Test + public void testPropagateOnUpdateAlwaysQueueArtifactNotPresent() + throws Exception + { + String path = PATH_IN_BOTH_REMOTES_NOT_LOCAL; + Path expectedFile = setupRepositoriesWithLocalFileNotPresent( path ); + + createMockedProxyConnector( ID_MOCKED_PROXIED1, NAME_MOCKED_PROXIED1, PropagateErrorsDownloadPolicy.QUEUE, + PropagateErrorsOnUpdateDownloadPolicy.ALWAYS ); + createMockedProxyConnector( ID_MOCKED_PROXIED2, NAME_MOCKED_PROXIED2, PropagateErrorsDownloadPolicy.QUEUE, + PropagateErrorsOnUpdateDownloadPolicy.ALWAYS ); + + simulateGetError( path, expectedFile, createTransferException() ); + simulateGetError( path, expectedFile, createTransferException() ); + + confirmFailures( path, new String[] { ID_MOCKED_PROXIED1, ID_MOCKED_PROXIED2 } ); + } + + @Test + public void testPropagateOnUpdateAlwaysQueueArtifactPresent() + throws Exception + { + String path = PATH_IN_BOTH_REMOTES_AND_LOCAL; + Path expectedFile = setupRepositoriesWithLocalFilePresent( path ); + + createMockedProxyConnector( ID_MOCKED_PROXIED1, NAME_MOCKED_PROXIED1, PropagateErrorsDownloadPolicy.QUEUE, + PropagateErrorsOnUpdateDownloadPolicy.ALWAYS ); + createMockedProxyConnector( ID_MOCKED_PROXIED2, NAME_MOCKED_PROXIED2, PropagateErrorsDownloadPolicy.QUEUE, + PropagateErrorsOnUpdateDownloadPolicy.ALWAYS ); + + simulateGetIfNewerError( path, expectedFile, createTransferException() ); + simulateGetIfNewerError( path, expectedFile, createTransferException() ); + + confirmFailures( path, new String[] { ID_MOCKED_PROXIED1, ID_MOCKED_PROXIED2 } ); + } + + @Test + public void testPropagateOnUpdateAlwaysIgnoreArtifactNotPresent() + throws Exception + { + String path = PATH_IN_BOTH_REMOTES_NOT_LOCAL; + Path expectedFile = setupRepositoriesWithLocalFileNotPresent( path ); + + createMockedProxyConnector( ID_MOCKED_PROXIED1, NAME_MOCKED_PROXIED1, PropagateErrorsDownloadPolicy.IGNORE, + PropagateErrorsOnUpdateDownloadPolicy.ALWAYS ); + createMockedProxyConnector( ID_MOCKED_PROXIED2, NAME_MOCKED_PROXIED2, PropagateErrorsDownloadPolicy.IGNORE, + PropagateErrorsOnUpdateDownloadPolicy.ALWAYS ); + + simulateGetError( path, expectedFile, createTransferException() ); + simulateGetError( path, expectedFile, createTransferException() ); + + confirmNotDownloadedNoError( path ); + } + + @Test + public void testPropagateOnUpdateAlwaysIgnoreArtifactPresent() + throws Exception + { + String path = PATH_IN_BOTH_REMOTES_AND_LOCAL; + Path expectedFile = setupRepositoriesWithLocalFilePresent( path ); + + createMockedProxyConnector( ID_MOCKED_PROXIED1, NAME_MOCKED_PROXIED1, PropagateErrorsDownloadPolicy.IGNORE, + PropagateErrorsOnUpdateDownloadPolicy.ALWAYS ); + createMockedProxyConnector( ID_MOCKED_PROXIED2, NAME_MOCKED_PROXIED2, PropagateErrorsDownloadPolicy.IGNORE, + PropagateErrorsOnUpdateDownloadPolicy.ALWAYS ); + + simulateGetIfNewerError( path, expectedFile, createTransferException() ); + simulateGetIfNewerError( path, expectedFile, createTransferException() ); + + confirmNotDownloadedNoError( path ); + assertTrue( Files.exists(expectedFile) ); + } + + @Test + public void testPropagateOnUpdateNotPresentArtifactNotPresent() + throws Exception + { + String path = PATH_IN_BOTH_REMOTES_NOT_LOCAL; + Path expectedFile = setupRepositoriesWithLocalFileNotPresent( path ); + + createMockedProxyConnector( ID_MOCKED_PROXIED1, NAME_MOCKED_PROXIED1, PropagateErrorsDownloadPolicy.STOP, + PropagateErrorsOnUpdateDownloadPolicy.NOT_PRESENT ); + createMockedProxyConnector( ID_MOCKED_PROXIED2, NAME_MOCKED_PROXIED2, PropagateErrorsDownloadPolicy.STOP, + PropagateErrorsOnUpdateDownloadPolicy.NOT_PRESENT ); + + simulateGetError( path, expectedFile, createTransferException() ); + + confirmSingleFailure( path, ID_MOCKED_PROXIED1 ); + } + + @Test + public void testPropagateOnUpdateNotPresentArtifactPresent() + throws Exception + { + String path = PATH_IN_BOTH_REMOTES_AND_LOCAL; + Path expectedFile = setupRepositoriesWithLocalFilePresent( path ); + + createMockedProxyConnector( ID_MOCKED_PROXIED1, NAME_MOCKED_PROXIED1, PropagateErrorsDownloadPolicy.STOP, + PropagateErrorsOnUpdateDownloadPolicy.NOT_PRESENT ); + createMockedProxyConnector( ID_MOCKED_PROXIED2, NAME_MOCKED_PROXIED2, PropagateErrorsDownloadPolicy.STOP, + PropagateErrorsOnUpdateDownloadPolicy.NOT_PRESENT ); + + simulateGetIfNewerError( path, expectedFile, createTransferException() ); + + confirmNotDownloadedNoError( path ); + assertTrue( Files.exists(expectedFile) ); + } + + @Test + public void testPropagateOnUpdateNotPresentQueueArtifactNotPresent() + throws Exception + { + String path = PATH_IN_BOTH_REMOTES_NOT_LOCAL; + Path expectedFile = setupRepositoriesWithLocalFileNotPresent( path ); + + createMockedProxyConnector( ID_MOCKED_PROXIED1, NAME_MOCKED_PROXIED1, PropagateErrorsDownloadPolicy.QUEUE, + PropagateErrorsOnUpdateDownloadPolicy.NOT_PRESENT ); + createMockedProxyConnector( ID_MOCKED_PROXIED2, NAME_MOCKED_PROXIED2, PropagateErrorsDownloadPolicy.QUEUE, + PropagateErrorsOnUpdateDownloadPolicy.NOT_PRESENT ); + + simulateGetError( path, expectedFile, createTransferException() ); + simulateGetError( path, expectedFile, createTransferException() ); + + confirmFailures( path, new String[] { ID_MOCKED_PROXIED1, ID_MOCKED_PROXIED2 } ); + } + + @Test + public void testPropagateOnUpdateNotPresentQueueArtifactPresent() + throws Exception + { + String path = PATH_IN_BOTH_REMOTES_AND_LOCAL; + Path expectedFile = setupRepositoriesWithLocalFilePresent( path ); + + createMockedProxyConnector( ID_MOCKED_PROXIED1, NAME_MOCKED_PROXIED1, PropagateErrorsDownloadPolicy.QUEUE, + PropagateErrorsOnUpdateDownloadPolicy.NOT_PRESENT ); + createMockedProxyConnector( ID_MOCKED_PROXIED2, NAME_MOCKED_PROXIED2, PropagateErrorsDownloadPolicy.QUEUE, + PropagateErrorsOnUpdateDownloadPolicy.NOT_PRESENT ); + + simulateGetIfNewerError( path, expectedFile, createTransferException() ); + simulateGetIfNewerError( path, expectedFile, createTransferException() ); + + confirmNotDownloadedNoError( path ); + assertTrue( Files.exists(expectedFile)); + } + + @Test + public void testPropagateOnUpdateNotPresentIgnoreArtifactNotPresent() + throws Exception + { + String path = PATH_IN_BOTH_REMOTES_NOT_LOCAL; + Path expectedFile = setupRepositoriesWithLocalFileNotPresent( path ); + + createMockedProxyConnector( ID_MOCKED_PROXIED1, NAME_MOCKED_PROXIED1, PropagateErrorsDownloadPolicy.IGNORE, + PropagateErrorsOnUpdateDownloadPolicy.NOT_PRESENT ); + createMockedProxyConnector( ID_MOCKED_PROXIED2, NAME_MOCKED_PROXIED2, PropagateErrorsDownloadPolicy.IGNORE, + PropagateErrorsOnUpdateDownloadPolicy.NOT_PRESENT ); + + simulateGetError( path, expectedFile, createTransferException() ); + simulateGetError( path, expectedFile, createTransferException() ); + + confirmNotDownloadedNoError( path ); + } + + @Test + public void testPropagateOnUpdateNotPresentIgnoreArtifactPresent() + throws Exception + { + String path = PATH_IN_BOTH_REMOTES_AND_LOCAL; + Path expectedFile = setupRepositoriesWithLocalFilePresent( path ); + + createMockedProxyConnector( ID_MOCKED_PROXIED1, NAME_MOCKED_PROXIED1, PropagateErrorsDownloadPolicy.IGNORE, + PropagateErrorsOnUpdateDownloadPolicy.NOT_PRESENT ); + createMockedProxyConnector( ID_MOCKED_PROXIED2, NAME_MOCKED_PROXIED2, PropagateErrorsDownloadPolicy.IGNORE, + PropagateErrorsOnUpdateDownloadPolicy.NOT_PRESENT ); + + simulateGetIfNewerError( path, expectedFile, createTransferException() ); + simulateGetIfNewerError( path, expectedFile, createTransferException() ); + + confirmNotDownloadedNoError( path ); + assertTrue( Files.exists(expectedFile)); + } + + // ------------------------------------------ + // HELPER METHODS + // ------------------------------------------ + + private void createMockedProxyConnector( String id, String name, String errorPolicy ) + { + saveRemoteRepositoryConfig( id, name, "test://bad.machine.com/repo/", "default" ); + saveConnector( ID_DEFAULT_MANAGED, id, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS, SnapshotsPolicy.ALWAYS, + CachedFailuresPolicy.NO, errorPolicy, false ); + } + + private void createMockedProxyConnector( String id, String name, String errorPolicy, String errorOnUpdatePolicy ) + { + saveRemoteRepositoryConfig( id, name, "test://bad.machine.com/repo/", "default" ); + saveConnector( ID_DEFAULT_MANAGED, id, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS, SnapshotsPolicy.ALWAYS, + CachedFailuresPolicy.NO, errorPolicy, errorOnUpdatePolicy, false ); + } + + private Path setupRepositoriesWithLocalFileNotPresent( String path ) + throws Exception + { + setupTestableManagedRepository( path ); + + Path file = managedDefaultDir.resolve( path ); + + assertNotExistsInManagedDefaultRepo( file ); + + return file; + } + + private Path setupRepositoriesWithLocalFilePresent( String path ) + throws Exception + { + setupTestableManagedRepository( path ); + + Path file = managedDefaultDir.resolve( path ); + + assertTrue( Files.exists(file) ); + + return file; + } + + private void simulateGetError( String path, Path expectedFile, Exception throwable ) + throws TransferFailedException, ResourceDoesNotExistException, AuthorizationException + { + wagonMock.get( EasyMock.eq( path ), EasyMock.anyObject( File.class )); + EasyMock.expectLastCall().andThrow(throwable ); + } + + private void simulateGetIfNewerError( String path, Path expectedFile, TransferFailedException exception ) + throws TransferFailedException, ResourceDoesNotExistException, AuthorizationException, IOException + { + wagonMock.getIfNewer( EasyMock.eq( path ), EasyMock.anyObject( File.class ), EasyMock.eq( Files.getLastModifiedTime( expectedFile ).toMillis() )); + EasyMock.expectLastCall().andThrow( exception ); + } + + private Path createExpectedTempFile( Path expectedFile ) + { + return managedDefaultDir.resolve(expectedFile.getFileName().toString() + ".tmp" ).toAbsolutePath(); + } + + private void confirmSingleFailure( String path, String id ) + throws LayoutException + { + confirmFailures( path, new String[]{id} ); + } + + private void confirmFailures( String path, String[] ids ) + throws LayoutException + { + wagonMockControl.replay(); + + // Attempt the proxy fetch. + Path downloadedFile = null; + try + { + downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, + managedDefaultRepository.toArtifactReference( path ) ); + fail( "Proxy should not have succeeded" ); + } + catch ( ProxyDownloadException e ) + { + assertEquals( ids.length, e.getFailures().size() ); + for ( String id : ids ) + { + assertTrue( e.getFailures().keySet().contains( id ) ); + } + } + + wagonMockControl.verify(); + + assertNotDownloaded( downloadedFile ); + } + + private void confirmSuccess( String path, Path expectedFile, String basedir ) + throws Exception + { + Path downloadedFile = performDownload( path ); + + Path proxied1File = Paths.get( basedir, path ); + assertFileEquals( expectedFile, downloadedFile, proxied1File ); + } + + private void confirmNotDownloadedNoError( String path ) + throws Exception + { + Path downloadedFile = performDownload( path ); + + assertNotDownloaded( downloadedFile ); + } + + private Path performDownload( String path ) + throws ProxyDownloadException, LayoutException + { + wagonMockControl.replay(); + + // Attempt the proxy fetch. + Path downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, + managedDefaultRepository.toArtifactReference( path ) ); + + wagonMockControl.verify(); + return downloadedFile; + } + + private static TransferFailedException createTransferException() + { + return new TransferFailedException( "test download exception" ); + } + + private static ResourceDoesNotExistException createResourceNotFoundException() + { + return new ResourceDoesNotExistException( "test download not found" ); + } +} diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/java/org/apache/archiva/proxy/HttpProxyTransferTest.java b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/java/org/apache/archiva/proxy/HttpProxyTransferTest.java new file mode 100644 index 000000000..c3d7c1108 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/java/org/apache/archiva/proxy/HttpProxyTransferTest.java @@ -0,0 +1,251 @@ +package org.apache.archiva.proxy; + +/* + * 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.archiva.configuration.ArchivaConfiguration; +import org.apache.archiva.configuration.NetworkProxyConfiguration; +import org.apache.archiva.configuration.ProxyConnectorConfiguration; +import org.apache.archiva.configuration.RemoteRepositoryConfiguration; +import org.apache.archiva.model.ArtifactReference; +import org.apache.archiva.policies.CachedFailuresPolicy; +import org.apache.archiva.policies.ChecksumPolicy; +import org.apache.archiva.policies.PropagateErrorsDownloadPolicy; +import org.apache.archiva.policies.PropagateErrorsOnUpdateDownloadPolicy; +import org.apache.archiva.policies.ReleasesPolicy; +import org.apache.archiva.policies.SnapshotsPolicy; +import org.apache.archiva.proxy.model.RepositoryProxyHandler; +import org.apache.archiva.repository.*; +import org.apache.archiva.test.utils.ArchivaSpringJUnit4ClassRunner; +import org.apache.commons.io.FileUtils; +import org.assertj.core.api.Assertions; +import org.eclipse.jetty.server.Handler; +import org.eclipse.jetty.server.HttpConnectionFactory; +import org.eclipse.jetty.server.Request; +import org.eclipse.jetty.server.Server; +import org.eclipse.jetty.server.ServerConnector; +import org.eclipse.jetty.server.handler.AbstractHandler; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.context.ApplicationContext; +import org.springframework.test.context.ContextConfiguration; + +import javax.inject.Inject; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.nio.charset.Charset; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; + +import static org.junit.Assert.*; + +/** + * Integration test for connecting over a HTTP proxy. + * + * + */ +@RunWith( ArchivaSpringJUnit4ClassRunner.class ) +@ContextConfiguration( locations = { "classpath*:/META-INF/spring-context.xml", "classpath:/spring-context.xml" } ) +public class HttpProxyTransferTest +{ + private static final String PROXY_ID = "proxy"; + + private static final String MANAGED_ID = "default-managed-repository"; + + private static final String PROXIED_ID = "proxied1"; + + private static final String PROXIED_BASEDIR = "src/test/repositories/proxied1"; + + private RepositoryProxyHandler proxyHandler; + + private ArchivaConfiguration config; + + private ManagedRepositoryContent managedDefaultRepository; + + @Inject + private ApplicationContext applicationContext; + + @Inject + private RepositoryRegistry repositoryRegistry; + + private Server server; + + protected ManagedRepositoryContent createRepository( String id, String name, String path, String layout ) + throws Exception + { + ManagedRepository repo = new BasicManagedRepository(id, name, Paths.get(path)); + repositoryRegistry.putRepository(repo); + return repositoryRegistry.getManagedRepository(id).getContent(); + } + + @Before + public void setUp() + throws Exception + { + proxyHandler = applicationContext.getBean( "repositoryProxyConnectors#test", RepositoryProxyHandler.class ); + + config = applicationContext.getBean( "archivaConfiguration#mock", ArchivaConfiguration.class ); + + // clear from previous tests - TODO the spring context should be initialised per test instead, or the config + // made a complete mock + config.getConfiguration().getProxyConnectors().clear(); + + // Setup source repository (using default layout) + String repoPath = "target/test-repository/managed/" + getClass().getSimpleName(); + + Path destRepoDir = Paths.get( repoPath ); + + // Cleanout destination dirs. + if ( Files.exists(destRepoDir)) + { + FileUtils.deleteDirectory( destRepoDir.toFile() ); + } + + // Make the destination dir. + Files.createDirectories(destRepoDir); + + + Handler handler = new AbstractHandler() + { + @Override + public void handle( String s, Request request, HttpServletRequest httpServletRequest, + HttpServletResponse response ) + throws IOException, ServletException + { + response.setContentType( "text/plain" ); + response.setStatus( HttpServletResponse.SC_OK ); + response.getWriter().print( "get-default-layout-1.0.jar\n\n" ); + assertNotNull( request.getHeader( "Proxy-Connection" ) ); + + ( (Request) request ).setHandled( true ); + } + + public void handle( String target, HttpServletRequest request, HttpServletResponse response, int dispatch ) + throws IOException, ServletException + { + response.setContentType( "text/plain" ); + response.setStatus( HttpServletResponse.SC_OK ); + response.getWriter().print( "get-default-layout-1.0.jar\n\n" ); + assertNotNull( request.getHeader( "Proxy-Connection" ) ); + + ( (Request) request ).setHandled( true ); + } + }; + + server = new Server( ); + ServerConnector serverConnector = new ServerConnector( server, new HttpConnectionFactory()); + server.addConnector( serverConnector ); + server.setHandler( handler ); + server.start(); + + int port = serverConnector.getLocalPort(); + + NetworkProxyConfiguration proxyConfig = new NetworkProxyConfiguration(); + proxyConfig.setHost( "localhost" ); + proxyConfig.setPort( port ); + proxyConfig.setProtocol( "http" ); + proxyConfig.setId( PROXY_ID ); + config.getConfiguration().addNetworkProxy( proxyConfig ); + ( (MockConfiguration) config ).triggerChange("networkProxies.networkProxy(0).host", "localhost"); + + // Setup target (proxied to) repository. + RemoteRepositoryConfiguration repoConfig = new RemoteRepositoryConfiguration(); + + repoConfig.setId( PROXIED_ID ); + repoConfig.setName( "Proxied Repository 1" ); + repoConfig.setLayout( "default" ); + repoConfig.setUrl( "http://www.example.com/" ); + + config.getConfiguration().addRemoteRepository( repoConfig ); + + repositoryRegistry.reload(); + + managedDefaultRepository = createRepository(MANAGED_ID, "Default Managed Repository", repoPath, "default"); + + } + + @After + public void tearDown() + throws Exception + { + server.stop(); + } + + @Test + public void testGetOverHttpProxy() + throws Exception + { + Assertions.assertThat( System.getProperty( "http.proxyHost", "" ) ).isEmpty(); + Assertions.assertThat( System.getProperty( "http.proxyPort", "" ) ).isEmpty(); + + String path = "org/apache/maven/test/get-default-layout/1.0/get-default-layout-1.0.jar"; + + // Configure Connector (usually done within archiva.xml configuration) + addConnector(); + + Path expectedFile = Paths.get( managedDefaultRepository.getRepoRoot() ).resolve( path ); + ArtifactReference artifact = managedDefaultRepository.toArtifactReference( path ); + + // Attempt the proxy fetch. + Path downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact ); + + Path sourceFile = Paths.get( PROXIED_BASEDIR, path ); + assertNotNull( "Expected File should not be null.", expectedFile ); + assertNotNull( "Actual File should not be null.", downloadedFile ); + + assertTrue( "Check actual file exists.", Files.exists(downloadedFile)); + assertTrue( "Check filename path is appropriate.", Files.isSameFile( expectedFile, downloadedFile)); + assertTrue( "Check file path matches.", Files.isSameFile( expectedFile, downloadedFile)); + + String expectedContents = FileUtils.readFileToString( sourceFile.toFile(), Charset.defaultCharset() ); + String actualContents = FileUtils.readFileToString( downloadedFile.toFile(), Charset.defaultCharset() ); + assertEquals( "Check file contents.", expectedContents, actualContents ); + + Assertions.assertThat( System.getProperty( "http.proxyHost" , "") ).isEmpty(); + Assertions.assertThat( System.getProperty( "http.proxyPort" , "") ).isEmpty(); + } + + private void addConnector() + { + ProxyConnectorConfiguration connectorConfig = new ProxyConnectorConfiguration(); + connectorConfig.setProxyId( PROXY_ID ); + connectorConfig.setSourceRepoId( MANAGED_ID ); + connectorConfig.setTargetRepoId( PROXIED_ID ); + connectorConfig.addPolicy( ProxyConnectorConfiguration.POLICY_CHECKSUM, ChecksumPolicy.FIX ); + connectorConfig.addPolicy( ProxyConnectorConfiguration.POLICY_RELEASES, ReleasesPolicy.ONCE ); + connectorConfig.addPolicy( ProxyConnectorConfiguration.POLICY_SNAPSHOTS, SnapshotsPolicy.ONCE ); + connectorConfig.addPolicy( ProxyConnectorConfiguration.POLICY_CACHE_FAILURES, CachedFailuresPolicy.NO ); + connectorConfig.addPolicy( ProxyConnectorConfiguration.POLICY_PROPAGATE_ERRORS, + PropagateErrorsDownloadPolicy.QUEUE ); + connectorConfig.addPolicy( ProxyConnectorConfiguration.POLICY_PROPAGATE_ERRORS_ON_UPDATE, + PropagateErrorsOnUpdateDownloadPolicy.NOT_PRESENT ); + + int count = config.getConfiguration().getProxyConnectors().size(); + config.getConfiguration().addProxyConnector( connectorConfig ); + + // Proper Triggering ... + String prefix = "proxyConnectors.proxyConnector(" + count + ")"; + ( (MockConfiguration) config ).triggerChange( prefix + ".sourceRepoId", connectorConfig.getSourceRepoId() ); + } +} diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/java/org/apache/archiva/proxy/ManagedDefaultTransferTest.java b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/java/org/apache/archiva/proxy/ManagedDefaultTransferTest.java new file mode 100644 index 000000000..017594374 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/java/org/apache/archiva/proxy/ManagedDefaultTransferTest.java @@ -0,0 +1,466 @@ +package org.apache.archiva.proxy; + +/* + * 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.archiva.model.ArtifactReference; +import org.apache.archiva.policies.CachedFailuresPolicy; +import org.apache.archiva.policies.ChecksumPolicy; +import org.apache.archiva.policies.ReleasesPolicy; +import org.apache.archiva.policies.SnapshotsPolicy; +import org.apache.commons.io.FileUtils; +import org.apache.commons.lang.StringUtils; +import org.apache.maven.wagon.ResourceDoesNotExistException; +import org.easymock.EasyMock; +import org.junit.Test; + +import java.io.File; +import java.nio.charset.Charset; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.nio.file.attribute.FileTime; +import java.util.concurrent.TimeUnit; + +import static org.junit.Assert.*; + +/** + * ManagedDefaultTransferTest + */ +public class ManagedDefaultTransferTest + extends AbstractProxyTestCase +{ + @Test + public void testGetDefaultLayoutNotPresentConnectorOffline() + throws Exception + { + String path = "org/apache/maven/test/get-default-layout/1.0/get-default-layout-1.0.jar"; + setupTestableManagedRepository( path ); + + Path expectedFile = managedDefaultDir.resolve(path); + ArtifactReference artifact = managedDefaultRepository.toArtifactReference( path ); + + // Ensure file isn't present first. + assertNotExistsInManagedDefaultRepo( expectedFile ); + + // Configure Connector (usually done within archiva.xml configuration) + saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, ChecksumPolicy.FIX, ReleasesPolicy.ONCE, SnapshotsPolicy.ONCE, + CachedFailuresPolicy.NO, true ); + + // Attempt the proxy fetch. + Path downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact ); + assertNull( "File should not have been downloaded", downloadedFile ); + } + + @Test + public void testGetDefaultLayoutNotPresent() + throws Exception + { + String path = "org/apache/maven/test/get-default-layout/1.0/get-default-layout-1.0.jar"; + setupTestableManagedRepository( path ); + + Path expectedFile = managedDefaultDir.resolve(path); + ArtifactReference artifact = managedDefaultRepository.toArtifactReference( path ); + + // Ensure file isn't present first. + assertNotExistsInManagedDefaultRepo( expectedFile ); + + // Configure Connector (usually done within archiva.xml configuration) + saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, ChecksumPolicy.FIX, ReleasesPolicy.ONCE, SnapshotsPolicy.ONCE, + CachedFailuresPolicy.NO, false ); + + // Attempt the proxy fetch. + Path downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact ); + + Path sourceFile = Paths.get(REPOPATH_PROXIED1, path); + assertFileEquals( expectedFile, downloadedFile, sourceFile ); + assertNoTempFiles( expectedFile ); + } + + @Test + public void testGetDefaultLayoutNotPresentPassthrough() + throws Exception + { + String path = "org/apache/maven/test/get-default-layout/1.0/get-default-layout-1.0.jar.asc"; + setupTestableManagedRepository( path ); + + Path expectedFile = managedDefaultDir.resolve(path); + + // Ensure file isn't present first. + assertNotExistsInManagedDefaultRepo( expectedFile ); + + // Configure Connector (usually done within archiva.xml configuration) + saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, ChecksumPolicy.FIX, ReleasesPolicy.ONCE, SnapshotsPolicy.ONCE, + CachedFailuresPolicy.NO, false ); + + // Attempt the proxy fetch. + Path downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, path ); + + Path sourceFile = Paths.get(REPOPATH_PROXIED1, path); + assertFileEquals( expectedFile, downloadedFile, sourceFile ); + assertFalse( Files.exists( downloadedFile.getParent().resolve(downloadedFile.getFileName() + ".sha1" )) ); + assertFalse( Files.exists(downloadedFile.getParent().resolve(downloadedFile.getFileName() + ".md5" ) )); + assertFalse( Files.exists( downloadedFile.getParent().resolve(downloadedFile.getFileName() + ".asc" ) )); + assertNoTempFiles( expectedFile ); + } + + /** + * The attempt here should result in no file being transferred. + * <p/> + * The file exists locally, and the policy is ONCE. + * + * @throws Exception + */ + @Test + public void testGetDefaultLayoutAlreadyPresentPolicyOnce() + throws Exception + { + String path = "org/apache/maven/test/get-default-layout-present/1.0/get-default-layout-present-1.0.jar"; + setupTestableManagedRepository( path ); + + Path expectedFile = managedDefaultDir.resolve(path); + + ArtifactReference artifact = managedDefaultRepository.toArtifactReference( path ); + + assertTrue( Files.exists(expectedFile) ); + + // Configure Connector (usually done within archiva.xml configuration) + saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, ChecksumPolicy.FIX, ReleasesPolicy.ONCE, SnapshotsPolicy.ONCE, + CachedFailuresPolicy.NO, false ); + + // Attempt the proxy fetch. + Path downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact ); + + assertFileEquals( expectedFile, downloadedFile, expectedFile ); + assertNoTempFiles( expectedFile ); + } + + /** + * The attempt here should result in no file being transferred. + * <p/> + * The file exists locally, and the policy is ONCE. + * + * @throws Exception + */ + @Test + public void testGetDefaultLayoutAlreadyPresentPassthrough() + throws Exception + { + String path = "org/apache/maven/test/get-default-layout-present/1.0/get-default-layout-present-1.0.jar.asc"; + setupTestableManagedRepository( path ); + + Path expectedFile = managedDefaultDir.resolve(path); + Path remoteFile = Paths.get(REPOPATH_PROXIED1, path); + + assertTrue( Files.exists(expectedFile) ); + + // Set the managed File to be newer than local. + setManagedOlderThanRemote( expectedFile, remoteFile ); + long originalModificationTime = Files.getLastModifiedTime(expectedFile).toMillis(); + + // Configure Connector (usually done within archiva.xml configuration) + saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, ChecksumPolicy.FIX, ReleasesPolicy.ONCE, SnapshotsPolicy.ONCE, + CachedFailuresPolicy.NO, false ); + + // Attempt the proxy fetch. + Path downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, path ); + + assertNotDownloaded( downloadedFile ); + assertNotModified( expectedFile, originalModificationTime ); + assertNoTempFiles( expectedFile ); + } + + /** + * <p> + * Request a file, that exists locally, and remotely. + * </p> + * <p> + * All policies are set to IGNORE. + * </p> + * <p> + * Managed file is newer than remote file. + * </p> + * <p> + * Transfer should not have occured, as managed file is newer. + * </p> + * + * @throws Exception + */ + @Test + public void testGetDefaultLayoutAlreadyPresentNewerThanRemotePolicyIgnored() + throws Exception + { + String path = "org/apache/maven/test/get-default-layout-present/1.0/get-default-layout-present-1.0.jar"; + setupTestableManagedRepository( path ); + + Path expectedFile = managedDefaultDir.resolve(path); + Path remoteFile = Paths.get(REPOPATH_PROXIED1, path); + + // Set the managed File to be newer than local. + setManagedNewerThanRemote( expectedFile, remoteFile ); + + long originalModificationTime = Files.getLastModifiedTime( expectedFile).toMillis(); + ArtifactReference artifact = managedDefaultRepository.toArtifactReference( path ); + + assertTrue( Files.exists(expectedFile) ); + + // Configure Connector (usually done within archiva.xml configuration) + saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS, + SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false ); + + // Attempt the proxy fetch. + Path downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact ); + + assertNotDownloaded( downloadedFile ); + assertNotModified( expectedFile, originalModificationTime ); + assertNoTempFiles( expectedFile ); + } + + /** + * <p> + * Request a file, that exists locally, and remotely. + * </p> + * <p> + * All policies are set to IGNORE. + * </p> + * <p> + * Managed file is older than Remote file. + * </p> + * <p> + * Transfer should have occured, as managed file is older than remote. + * </p> + * + * @throws Exception + */ + @Test + public void testGetDefaultLayoutAlreadyPresentOlderThanRemotePolicyIgnored() + throws Exception + { + String path = "org/apache/maven/test/get-default-layout-present/1.0/get-default-layout-present-1.0.jar"; + setupTestableManagedRepository( path ); + + Path expectedFile = managedDefaultDir.resolve(path); + Path remoteFile = Paths.get(REPOPATH_PROXIED1, path); + + // Set the managed file to be newer than remote file. + setManagedOlderThanRemote( expectedFile, remoteFile ); + + ArtifactReference artifact = managedDefaultRepository.toArtifactReference( path ); + + assertTrue( Files.exists(expectedFile) ); + + // Configure Connector (usually done within archiva.xml configuration) + saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS, + SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false ); + + // Attempt the proxy fetch. + Path downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact ); + + Path proxiedFile = Paths.get(REPOPATH_PROXIED1, path); + assertFileEquals( expectedFile, downloadedFile, proxiedFile ); + assertNoTempFiles( expectedFile ); + } + + /** + * The attempt here should result in file being transferred. + * <p/> + * The file exists locally, is over 6 years old, and the policy is DAILY. + * + * @throws Exception + */ + @Test + public void testGetDefaultLayoutRemoteUpdate() + throws Exception + { + String path = "org/apache/maven/test/get-default-layout-present/1.0/get-default-layout-present-1.0.jar"; + setupTestableManagedRepository( path ); + + Path expectedFile = managedDefaultDir.resolve(path); + ArtifactReference artifact = managedDefaultRepository.toArtifactReference( path ); + + assertTrue( Files.exists(expectedFile) ); + Files.setLastModifiedTime( expectedFile, FileTime.from(getPastDate().getTime(), TimeUnit.MILLISECONDS )); + + // Configure Connector (usually done within archiva.xml configuration) + saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, ChecksumPolicy.FIX, ReleasesPolicy.DAILY, SnapshotsPolicy.DAILY, + CachedFailuresPolicy.NO, false ); + + // Attempt the proxy fetch. + Path downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact ); + + Path proxiedFile = Paths.get(REPOPATH_PROXIED1, path); + assertFileEquals( expectedFile, downloadedFile, proxiedFile ); + assertNoTempFiles( expectedFile ); + } + + @Test + public void testGetWhenInBothProxiedRepos() + throws Exception + { + String path = "org/apache/maven/test/get-in-both-proxies/1.0/get-in-both-proxies-1.0.jar"; + setupTestableManagedRepository( path ); + + Path expectedFile = managedDefaultDir.resolve(path); + ArtifactReference artifact = managedDefaultRepository.toArtifactReference( path ); + + assertNotExistsInManagedDefaultRepo( expectedFile ); + + // Configure Connector (usually done within archiva.xml configuration) + saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, false ); + saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED2, false ); + + // Attempt the proxy fetch. + Path downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact ); + + Path proxied1File = Paths.get(REPOPATH_PROXIED1, path); + Path proxied2File = Paths.get(REPOPATH_PROXIED2, path); + assertFileEquals( expectedFile, downloadedFile, proxied1File ); + assertNoTempFiles( expectedFile ); + + // TODO: is this check even needed if it passes above? + String actualContents = FileUtils.readFileToString( downloadedFile.toFile(), Charset.defaultCharset() ); + String badContents = FileUtils.readFileToString( proxied2File.toFile(), Charset.defaultCharset() ); + assertFalse( "Downloaded file contents should not be that of proxy 2", + StringUtils.equals( actualContents, badContents ) ); + } + + @Test + public void testGetInSecondProxiedRepo() + throws Exception + { + String path = "org/apache/maven/test/get-in-second-proxy/1.0/get-in-second-proxy-1.0.jar"; + setupTestableManagedRepository( path ); + + Path expectedFile = managedDefaultDir.resolve(path); + ArtifactReference artifact = managedDefaultRepository.toArtifactReference( path ); + + assertNotExistsInManagedDefaultRepo( expectedFile ); + + // Configure Connector (usually done within archiva.xml configuration) + saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, false ); + saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED2, false ); + + // Attempt the proxy fetch. + Path downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact ); + + Path proxied2File = Paths.get(REPOPATH_PROXIED2, path); + assertFileEquals( expectedFile, downloadedFile, proxied2File ); + assertNoTempFiles( expectedFile ); + } + + @Test + public void testNotFoundInAnyProxies() + throws Exception + { + String path = "org/apache/maven/test/does-not-exist/1.0/does-not-exist-1.0.jar"; + setupTestableManagedRepository( path ); + + Path expectedFile = managedDefaultDir.resolve(path); + ArtifactReference artifact = managedDefaultRepository.toArtifactReference( path ); + + assertNotExistsInManagedDefaultRepo( expectedFile ); + + // Configure Connector (usually done within archiva.xml configuration) + saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, false ); + saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED2, false ); + + // Attempt the proxy fetch. + Path downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact ); + + assertNull( "File returned was: " + downloadedFile + "; should have got a not found exception", + downloadedFile ); + assertNoTempFiles( expectedFile ); + } + + @Test + public void testGetInSecondProxiedRepoFirstFails() + throws Exception + { + String path = "org/apache/maven/test/get-in-second-proxy/1.0/get-in-second-proxy-1.0.jar"; + setupTestableManagedRepository( path ); + + Path expectedFile = managedDefaultDir.resolve(path); + ArtifactReference artifact = managedDefaultRepository.toArtifactReference( path ); + + assertNotExistsInManagedDefaultRepo( expectedFile ); + + // Configure Repository (usually done within archiva.xml configuration) + saveRemoteRepositoryConfig( "badproxied", "Bad Proxied", "test://bad.machine.com/repo/", "default" ); + + wagonMock.get( EasyMock.eq( path), EasyMock.anyObject( File.class ) ); + EasyMock.expectLastCall().andThrow( new ResourceDoesNotExistException( "transfer failed" ) ); + wagonMockControl.replay(); + + // Configure Connector (usually done within archiva.xml configuration) + saveConnector( ID_DEFAULT_MANAGED, "badproxied", false ); + saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED2, false ); + + // Attempt the proxy fetch. + Path downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact ); + + wagonMockControl.verify(); + + Path proxied2File = Paths.get(REPOPATH_PROXIED2, path); + assertFileEquals( expectedFile, downloadedFile, proxied2File ); + assertNoTempFiles( expectedFile ); + } + + @Test + public void testGetAllRepositoriesFail() + throws Exception + { + String path = "org/apache/maven/test/get-in-second-proxy/1.0/get-in-second-proxy-1.0.jar"; + setupTestableManagedRepository( path ); + + Path expectedFile = managedDefaultDir.resolve( path ); + ArtifactReference artifact = managedDefaultRepository.toArtifactReference( path ); + + assertNotExistsInManagedDefaultRepo( expectedFile ); + + // Configure Repository (usually done within archiva.xml configuration) + saveRemoteRepositoryConfig( "badproxied1", "Bad Proxied 1", "test://bad.machine.com/repo/", "default" ); + saveRemoteRepositoryConfig( "badproxied2", "Bad Proxied 2", "test://dead.machine.com/repo/", "default" ); + + // Configure Connector (usually done within archiva.xml configuration) + saveConnector( ID_DEFAULT_MANAGED, "badproxied1", false ); + saveConnector( ID_DEFAULT_MANAGED, "badproxied2", false ); + + Path tmpFile = expectedFile.getParent().resolve(expectedFile.getFileName() + ".tmp" ); + + wagonMock.get( EasyMock.eq( path ), EasyMock.anyObject( File.class ) ); + EasyMock.expectLastCall().andThrow( new ResourceDoesNotExistException( "Can't find resource." ) ); + + wagonMock.get( EasyMock.eq( path ), EasyMock.anyObject( File.class ) ); + EasyMock.expectLastCall().andThrow( new ResourceDoesNotExistException( "Can't find resource." ) ); + + wagonMockControl.replay(); + + Path downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact ); + + assertNotDownloaded( downloadedFile ); + + wagonMockControl.verify(); + assertNoTempFiles( expectedFile ); + + // TODO: do not want failures to present as a not found [MRM-492] + // TODO: How much information on each failure should we pass back to the user vs. logging in the proxy? + } + + +} diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/java/org/apache/archiva/proxy/MetadataTransferTest.java b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/java/org/apache/archiva/proxy/MetadataTransferTest.java new file mode 100644 index 000000000..23bfb8503 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/java/org/apache/archiva/proxy/MetadataTransferTest.java @@ -0,0 +1,1405 @@ +package org.apache.archiva.proxy; + +/* + * 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.archiva.common.utils.VersionUtil; +import org.apache.archiva.configuration.ProxyConnectorConfiguration; +import org.apache.archiva.maven2.metadata.MavenMetadataReader; +import org.apache.archiva.model.ArchivaRepositoryMetadata; +import org.apache.archiva.model.Plugin; +import org.apache.archiva.model.ProjectReference; +import org.apache.archiva.model.SnapshotVersion; +import org.apache.archiva.model.VersionedReference; +import org.apache.archiva.policies.CachedFailuresPolicy; +import org.apache.archiva.policies.ChecksumPolicy; +import org.apache.archiva.policies.ReleasesPolicy; +import org.apache.archiva.policies.SnapshotsPolicy; +import org.apache.archiva.repository.metadata.MetadataTools; +import org.apache.archiva.repository.metadata.RepositoryMetadataException; +import org.apache.archiva.repository.metadata.RepositoryMetadataWriter; +import org.apache.commons.lang.StringUtils; +import org.apache.maven.wagon.TransferFailedException; +import org.custommonkey.xmlunit.DetailedDiff; +import org.custommonkey.xmlunit.Diff; +import org.easymock.EasyMock; +import org.junit.Test; + +import javax.inject.Inject; +import javax.inject.Named; +import java.io.File; +import java.io.StringWriter; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.ArrayList; +import java.util.Arrays; + +import static org.junit.Assert.*; + +/** + * MetadataTransferTest - Tests the various fetching / merging concepts surrounding the maven-metadata.xml files + * present in the repository. + * <p/> + * Test Case Naming is as follows. + * <p/> + * <code> + * public void testGet[Release|Snapshot|Project]Metadata[Not]Proxied[Not|On]Local[Not|On|Multiple]Remote + * </code> + * <p/> + * <pre> + * Which should leave the following matrix of test cases. + * + * Metadata | Proxied | Local | Remote + * ----------+----------+-------+--------- + * Release | Not | Not | n/a (1) + * Release | Not | On | n/a (1) + * Release | | Not | Not + * Release | | Not | On + * Release | | Not | Multiple + * Release | | On | Not + * Release | | On | On + * Release | | On | Multiple + * Snapshot | Not | Not | n/a (1) + * Snapshot | Not | On | n/a (1) + * Snapshot | | Not | Not + * Snapshot | | Not | On + * Snapshot | | Not | Multiple + * Snapshot | | On | Not + * Snapshot | | On | On + * Snapshot | | On | Multiple + * Project | Not | Not | n/a (1) + * Project | Not | On | n/a (1) + * Project | | Not | Not + * Project | | Not | On + * Project | | Not | Multiple + * Project | | On | Not + * Project | | On | On + * Project | | On | Multiple + * + * (1) If it isn't proxied, no point in having a remote. + * </pre> + * + * + */ +public class MetadataTransferTest + extends AbstractProxyTestCase +{ + + @Inject + @Named(value = "metadataTools#mocked") + private MetadataTools metadataTools; + + + @Test + public void testGetProjectMetadataProxiedNotLocalOnRemoteConnectoDisabled() + throws Exception + { + // New project metadata that does not exist locally but exists on remote. + String requestedResource = "org/apache/maven/test/get-found-in-proxy/maven-metadata.xml"; + setupTestableManagedRepository( requestedResource ); + + // Configure Connector (usually done within archiva.xml configuration) + saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS, + SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, true ); + + assertResourceNotFound( requestedResource ); + assertNoRepoMetadata( ID_PROXIED1, requestedResource ); + + Path expectedFile = managedDefaultDir.resolve(requestedResource); + + ProjectReference metadata = createProjectReference( requestedResource ); + + Path downloadedFile = proxyHandler.fetchMetadataFromProxies( managedDefaultRepository, + managedDefaultRepository.toMetadataPath( + metadata ) ).getFile(); + + assertNull( "Should not have downloaded a file.", downloadedFile ); + assertNoTempFiles( expectedFile ); + } + + // TODO: same test for other fetch* methods + @Test + public void testFetchFromTwoProxiesWhenFirstConnectionFails() + throws Exception + { + // Project metadata that does not exist locally, but has multiple versions in remote repos + String requestedResource = "org/apache/maven/test/get-default-layout/maven-metadata.xml"; + setupTestableManagedRepository( requestedResource ); + + saveRemoteRepositoryConfig( "badproxied1", "Bad Proxied 1", "test://bad.machine.com/repo/", "default" ); + + // Configure Connector (usually done within archiva.xml configuration) + saveConnector( ID_DEFAULT_MANAGED, "badproxied1", ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS, + SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false ); + saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED2, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS, + SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false ); + + assertResourceNotFound( requestedResource ); + assertNoRepoMetadata( "badproxied1", requestedResource ); + assertNoRepoMetadata( ID_PROXIED2, requestedResource ); + + // ensure that a hard failure in the first proxy connector is skipped and the second repository checked + Path expectedFile = managedDefaultDir.resolve( + metadataTools.getRepositorySpecificName( "badproxied1", requestedResource ) ); + + wagonMock.get( EasyMock.eq( requestedResource ), EasyMock.anyObject( File.class )); + EasyMock.expectLastCall().andThrow( new TransferFailedException( "can't connect" ) ); + + + wagonMockControl.replay(); + + assertFetchProjectOrGroup( requestedResource ); + + wagonMockControl.verify(); + + assertProjectMetadataContents( requestedResource, new String[]{ "1.0.1" }, "1.0.1", "1.0.1" ); + assertNoRepoMetadata( "badproxied1", requestedResource ); + assertRepoProjectMetadata( ID_PROXIED2, requestedResource, new String[]{ "1.0.1" } ); + } + + /** + * Attempt to get the project metadata for non-existant artifact. + * <p/> + * Expected result: the maven-metadata.xml file is not created on the managed repository, nor returned + * to the requesting client. + */ + @Test + public void testGetProjectMetadataNotProxiedNotLocal() + throws Exception + { + // The artifactId "get-default-metadata-nonexistant" does not exist (intentionally). + String requestedResource = "org/apache/maven/test/get-default-metadata-nonexistant/maven-metadata.xml"; + setupTestableManagedRepository( requestedResource ); + + config.getConfiguration().setProxyConnectors( new ArrayList<ProxyConnectorConfiguration>( ) ); + + assertResourceNotFound( requestedResource ); + + // No proxy setup, nothing fetched, failure expected. + assertFetchProjectOrGroupFailed( requestedResource ); + + // No local artifactId, and no fetch, should equal no metadata file downloaded / created / updated. + assertResourceNotFound( requestedResource ); + } + + @Test + public void testGetProjectMetadataNotProxiedOnLocal() + throws Exception + { + + // Project metadata that exists and has multiple versions + String requestedResource = "org/apache/maven/test/get-project-metadata/maven-metadata.xml"; + setupTestableManagedRepository( requestedResource ); + + config.getConfiguration().setProxyConnectors( new ArrayList<ProxyConnectorConfiguration>( ) ); + + assertResourceExists( requestedResource ); + + // No proxy setup, nothing fetched from remote, but local exists. + assertFetchProjectOrGroup( requestedResource ); + + // Nothing fetched. Should only contain contents of what is in the repository. + // A metadata update is not performed in this use case. Local metadata content is only + // updated via the metadata updater consumer. + assertProjectMetadataContents( requestedResource, new String[]{ "1.0" }, null, null ); + } + + @Test + public void testGetProjectMetadataProxiedNotLocalMultipleRemotes() + throws Exception + { + // Project metadata that does not exist locally, but has multiple versions in remote repos + String requestedResource = "org/apache/maven/test/get-default-layout/maven-metadata.xml"; + setupTestableManagedRepository( requestedResource ); + + // Configure Connector (usually done within archiva.xml configuration) + saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS, + SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false ); + saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED2, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS, + SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false ); + + assertResourceNotFound( requestedResource ); + assertNoRepoMetadata( ID_PROXIED1, requestedResource ); + assertNoRepoMetadata( ID_PROXIED2, requestedResource ); + + // Two proxies setup, metadata fetched from both remotes. + assertFetchProjectOrGroup( requestedResource ); + + // Nothing fetched. Should only contain contents of what is in the repository. + assertProjectMetadataContents( requestedResource, new String[]{ "1.0", "1.0.1" }, "1.0.1", "1.0.1" ); + assertRepoProjectMetadata( ID_PROXIED1, requestedResource, new String[]{ "1.0" } ); + assertRepoProjectMetadata( ID_PROXIED2, requestedResource, new String[]{ "1.0.1" } ); + } + + @Test + public void testGetProjectMetadataProxiedNotLocalNotRemote() + throws Exception + { + // Non-existant project metadata that does not exist locally and doesn't exist on remotes. + String requestedResource = "org/apache/maven/test/get-bogus-artifact/maven-metadata.xml"; + setupTestableManagedRepository( requestedResource ); + + // Configure Connector (usually done within archiva.xml configuration) + saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS, + SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false ); + saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED2, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS, + SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false ); + + assertResourceNotFound( requestedResource ); + assertNoRepoMetadata( ID_PROXIED1, requestedResource ); + assertNoRepoMetadata( ID_PROXIED2, requestedResource ); + + // Two proxies setup, nothing fetched from remotes, local does not exist. + assertFetchProjectOrGroupFailed( requestedResource ); + + // Nothing fetched. Nothing should exist. + assertResourceNotFound( requestedResource ); + assertNoRepoMetadata( ID_PROXIED1, requestedResource ); + assertNoRepoMetadata( ID_PROXIED2, requestedResource ); + } + + @Test + public void testGetProjectMetadataProxiedNotLocalOnRemote() + throws Exception + { + // New project metadata that does not exist locally but exists on remote. + String requestedResource = "org/apache/maven/test/get-found-in-proxy/maven-metadata.xml"; + setupTestableManagedRepository( requestedResource ); + + // Configure Connector (usually done within archiva.xml configuration) + saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS, + SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false ); + + assertResourceNotFound( requestedResource ); + assertNoRepoMetadata( ID_PROXIED1, requestedResource ); + + // One proxy setup, metadata fetched from remote, local does not exist. + assertFetchProjectOrGroup( requestedResource ); + + // Remote fetched. Local created/updated. + assertProjectMetadataContents( requestedResource, new String[]{ "1.0.5" }, "1.0.5", "1.0.5" ); + assertRepoProjectMetadata( ID_PROXIED1, requestedResource, new String[]{ "1.0.5" } ); + } + + @Test + public void testGetProjectMetadataProxiedOnLocalMultipleRemote() + throws Exception + { + // Project metadata that exist locally, and has multiple versions in remote repos + String requestedResource = "org/apache/maven/test/get-on-multiple-repos/maven-metadata.xml"; + setupTestableManagedRepository( requestedResource ); + + // Configure Connector (usually done within archiva.xml configuration) + saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS, + SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false ); + saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED2, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS, + SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false ); + + assertProjectMetadataContents( requestedResource, new String[]{ "1.0" }, null, null ); + assertNoRepoMetadata( ID_PROXIED1, requestedResource ); + assertNoRepoMetadata( ID_PROXIED2, requestedResource ); + + // Two proxies setup, metadata fetched from both remotes. + assertFetchProjectOrGroup( requestedResource ); + + // metadata fetched from both repos, and merged with local version. + assertProjectMetadataContents( requestedResource, new String[]{ "1.0", "1.0.1", "2.0" }, "2.0", "2.0" ); + assertRepoProjectMetadata( ID_PROXIED1, requestedResource, new String[]{ "1.0", "2.0" } ); + assertRepoProjectMetadata( ID_PROXIED2, requestedResource, new String[]{ "1.0", "1.0.1" } ); + } + + @Test + public void testGetProjectMetadataProxiedOnLocalNotRemote() + throws Exception + { + + // Project metadata that exist locally, and does not exist in remote repos. + String requestedResource = "org/apache/maven/test/get-not-on-remotes/maven-metadata.xml"; + setupTestableManagedRepository( requestedResource ); + + + config.getConfiguration().setProxyConnectors( new ArrayList<ProxyConnectorConfiguration>( ) ); + // Configure Connector (usually done within archiva.xml configuration) + saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS, + SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false ); + saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED2, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS, + SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false ); + + assertProjectMetadataContents( requestedResource, new String[]{ "1.0-beta-2" }, null, null ); + assertNoRepoMetadata( ID_PROXIED1, requestedResource ); + assertNoRepoMetadata( ID_PROXIED2, requestedResource ); + + // Two proxies setup, metadata fetch from remotes fail (because they dont exist). + assertFetchProjectOrGroup( requestedResource ); + + // metadata not fetched from both repos, and local version exists. + // Since there was no updated metadata content from a remote/proxy, a metadata update on + // the local file never ran. Local only updates are performed via the metadata updater consumer. + assertProjectMetadataContents( requestedResource, new String[]{ "1.0-beta-2" }, null, null ); + assertNoRepoMetadata( ID_PROXIED1, requestedResource ); + assertNoRepoMetadata( ID_PROXIED2, requestedResource ); + } + + @Test + public void testGetProjectMetadataProxiedOnLocalOnRemote() + throws Exception + { + // Project metadata that exist locally and exists on remote. + String requestedResource = "org/apache/maven/test/get-on-local-on-remote/maven-metadata.xml"; + setupTestableManagedRepository( requestedResource ); + + // Configure Connector (usually done within archiva.xml configuration) + saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS, + SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false ); + + assertProjectMetadataContents( requestedResource, new String[]{ "1.0.8", "1.0.22" }, null, null ); + assertNoRepoMetadata( ID_PROXIED1, requestedResource ); + + // One proxy setup, metadata fetched from remote, local exists. + assertFetchProjectOrGroup( requestedResource ); + + // Remote fetched. Local updated. + assertProjectMetadataContents( requestedResource, new String[]{ "1.0.8", "1.0.22", "2.0" }, "2.0", "2.0" ); + assertRepoProjectMetadata( ID_PROXIED1, requestedResource, new String[]{ "1.0.22", "2.0" } ); + } + + /** + * A request for a release maven-metadata.xml file that does not exist locally, and the managed + * repository has no proxied repositories set up. + * <p/> + * Expected result: the maven-metadata.xml file is not created on the managed repository, nor returned + * to the requesting client. + */ + @Test + public void testGetReleaseMetadataNotProxiedNotLocal() + throws Exception + { + // The artifactId "get-default-metadata-nonexistant" does not exist (intentionally). + String requestedResource = "org/apache/maven/test/get-default-metadata-nonexistant/1.0/maven-metadata.xml"; + setupTestableManagedRepository( requestedResource ); + + assertNoMetadata( requestedResource ); + + // No proxy setup, nothing fetched, failure expected. + assertFetchVersionedFailed( requestedResource ); + + // No local artifactId, and no fetch, should equal no metadata file downloaded / created / updated. + assertNoMetadata( requestedResource ); + } + + /** + * A request for a maven-metadata.xml file that does exist locally, and the managed + * repository has no proxied repositories set up. + * <p/> + * Expected result: the maven-metadata.xml file is updated locally, based off of the managed repository + * information, and then returned to the client. + */ + @Test + public void testGetReleaseMetadataNotProxiedOnLocal() + throws Exception + { + String requestedResource = "org/apache/maven/test/get-default-metadata/1.0/maven-metadata.xml"; + setupTestableManagedRepository( requestedResource ); + + assertResourceExists( requestedResource ); + + assertFetchVersioned( requestedResource ); + + assertReleaseMetadataContents( requestedResource ); + } + + /** + * A request for a release maven-metadata.xml file that does not exist on the managed repository, but + * exists on multiple remote repositories. + * <p/> + * Expected result: the maven-metadata.xml file is downloaded from the remote into the repository specific + * file location on the managed repository, a merge of the contents to the requested + * maven-metadata.xml is performed, and then the merged maven-metadata.xml file is + * returned to the client. + */ + @Test + public void testGetReleaseMetadataProxiedNotLocalMultipleRemotes() + throws Exception + { + String requestedResource = "org/apache/maven/test/get-default-layout/1.0/maven-metadata.xml"; + setupTestableManagedRepository( requestedResource ); + + // Configure Connector (usually done within archiva.xml configuration) + saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS, + SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false ); + saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED2, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS, + SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false ); + + assertResourceNotFound( requestedResource ); + assertNoRepoMetadata( ID_PROXIED1, requestedResource ); + assertNoRepoMetadata( ID_PROXIED2, requestedResource ); + + assertFetchVersioned( requestedResource ); + + assertReleaseMetadataContents( requestedResource ); + assertRepoReleaseMetadataContents( ID_PROXIED1, requestedResource ); + assertRepoReleaseMetadataContents( ID_PROXIED2, requestedResource ); + } + + /** + * A request for a maven-metadata.xml file that does not exist locally, nor does it exist in a remote + * proxied repository. + * <p/> + * Expected result: the maven-metadata.xml file is created locally, based off of managed repository + * information, and then return to the client. + */ + @Test + public void testGetReleaseMetadataProxiedNotLocalNotRemote() + throws Exception + { + String requestedResource = "org/apache/maven/test/get-bad-metadata/1.0/maven-metadata.xml"; + setupTestableManagedRepository( requestedResource ); + + // Configure Connector (usually done within archiva.xml configuration) + saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS, + SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false ); + + assertResourceNotFound( requestedResource ); + + assertFetchProjectOrGroupFailed( requestedResource ); + + assertResourceNotFound( requestedResource ); + assertNoRepoMetadata( ID_PROXIED1, requestedResource ); + } + + /** + * A request for a maven-metadata.xml file that does not exist on the managed repository, but + * exists on 1 remote repository. + * <p/> + * Expected result: the maven-metadata.xml file is downloaded from the remote into the repository specific + * file location on the managed repository, a merge of the contents to the requested + * maven-metadata.xml is performed, and then the merged maven-metadata.xml file is + * returned to the client. + */ + @Test + public void testGetReleaseMetadataProxiedNotLocalOnRemote() + throws Exception + { + String requestedResource = "org/apache/maven/test/get-default-layout/1.0/maven-metadata.xml"; + setupTestableManagedRepository( requestedResource ); + + // Configure Connector (usually done within archiva.xml configuration) + saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS, + SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false ); + + assertNoRepoMetadata( ID_PROXIED1, requestedResource ); + + assertFetchVersioned( requestedResource ); + + assertReleaseMetadataContents( requestedResource ); + assertRepoReleaseMetadataContents( ID_PROXIED1, requestedResource ); + } + + /** + * A request for a maven-metadata.xml file that exists in the managed repository, but + * not on any remote repository. + * <p/> + * Expected result: the maven-metadata.xml file does not exist on the remote proxied repository and + * is not downloaded. There is no repository specific metadata file on the managed + * repository. The managed repository maven-metadata.xml is returned to the + * client as-is. + */ + @Test + public void testGetReleaseMetadataProxiedOnLocalNotRemote() + throws Exception + { + String requestedResource = "org/apache/maven/test/get-not-on-remotes/1.0-beta-2/maven-metadata.xml"; + setupTestableManagedRepository( requestedResource ); + + // Configure Connector (usually done within archiva.xml configuration) + saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS, + SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false ); + + assertReleaseMetadataContents( requestedResource ); + + assertFetchVersioned( requestedResource ); + + assertReleaseMetadataContents( requestedResource ); + assertNoRepoMetadata( ID_PROXIED1, requestedResource ); + } + + /** + * A request for a maven-metadata.xml file that exists in the managed repository, and on multiple + * remote repositories. + * <p/> + * Expected result: the maven-metadata.xml file on the remote proxied repository is downloaded + * and merged into the contents of the existing managed repository copy of + * the maven-metadata.xml file. + */ + @Test + public void testGetReleaseMetadataProxiedOnLocalMultipleRemote() + throws Exception + { + String requestedResource = "org/apache/maven/test/get-on-multiple-repos/1.0/maven-metadata.xml"; + setupTestableManagedRepository( requestedResource ); + + // Configure Connector (usually done within archiva.xml configuration) + saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS, + SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false ); + saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED2, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS, + SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false ); + + assertReleaseMetadataContents( requestedResource ); + assertNoRepoMetadata( ID_PROXIED1, requestedResource ); + assertNoRepoMetadata( ID_PROXIED2, requestedResource ); + + assertFetchVersioned( requestedResource ); + + assertReleaseMetadataContents( requestedResource ); + assertRepoReleaseMetadataContents( ID_PROXIED1, requestedResource ); + assertRepoReleaseMetadataContents( ID_PROXIED2, requestedResource ); + } + + /** + * A request for a maven-metadata.xml file that exists in the managed repository, and on one + * remote repository. + * <p/> + * Expected result: the maven-metadata.xml file on the remote proxied repository is downloaded + * and merged into the contents of the existing managed repository copy of + * the maven-metadata.xml file. + */ + @Test + public void testGetReleaseMetadataProxiedOnLocalOnRemote() + throws Exception + { + String requestedResource = "org/apache/maven/test/get-on-local-on-remote/1.0.22/maven-metadata.xml"; + setupTestableManagedRepository( requestedResource ); + + // Configure Connector (usually done within archiva.xml configuration) + saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS, + SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false ); + + assertReleaseMetadataContents( requestedResource ); + assertNoRepoMetadata( ID_PROXIED1, requestedResource ); + + assertFetchVersioned( requestedResource ); + + assertReleaseMetadataContents( requestedResource ); + assertRepoReleaseMetadataContents( ID_PROXIED1, requestedResource ); + } + + @Test + public void testGetSnapshotMetadataNotProxiedNotLocal() + throws Exception + { + // The artifactId "get-default-metadata-nonexistant" does not exist (intentionally). + String requestedResource = + "org/apache/maven/test/get-default-metadata-nonexistant/1.0-SNAPSHOT/maven-metadata.xml"; + setupTestableManagedRepository( requestedResource ); + + assertNoMetadata( requestedResource ); + + // No proxy setup, nothing fetched, no local file, failure expected. + assertFetchVersionedFailed( requestedResource ); + + // No local artifactId, and no fetch, should equal no metadata file downloaded / created / updated. + assertNoMetadata( requestedResource ); + } + + @Test + public void testGetSnapshotMetadataNotProxiedOnLocal() + throws Exception + { + // The artifactId exists locally (but not on a remote repo) + String requestedResource = + "org/apache/maven/test/get-snapshot-on-local-not-remote/2.0-alpha-2-SNAPSHOT/maven-metadata.xml"; + setupTestableManagedRepository( requestedResource ); + + assertResourceExists( requestedResource ); + + // No proxy setup, nothing fetched from remote, local file exists, fetch should succeed. + assertFetchVersioned( requestedResource ); + + // Local metadata exists, should be updated to reflect the latest release. + assertSnapshotMetadataContents( requestedResource, "20070821", "220304", 2 ); + } + + @Test + public void testGetSnapshotMetadataProxiedNotLocalMultipleRemotes() + throws Exception + { + String requestedResource = + "org/apache/maven/test/get-timestamped-snapshot-in-both/1.0-SNAPSHOT/maven-metadata.xml"; + setupTestableManagedRepository( requestedResource ); + + // Configure Connector (usually done within archiva.xml configuration) + saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS, + SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false ); + saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED2, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS, + SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false ); + + assertResourceNotFound( requestedResource ); + assertNoRepoMetadata( ID_PROXIED1, requestedResource ); + assertNoRepoMetadata( ID_PROXIED2, requestedResource ); + + // Proxying 2 repos, both have content, local file updated. + assertFetchVersioned( requestedResource ); + + assertSnapshotMetadataContents( requestedResource, "20070101", "000103", 2 ); + assertRepoSnapshotMetadataContents( ID_PROXIED1, requestedResource, "20061227", "112101", 2 ); + assertRepoSnapshotMetadataContents( ID_PROXIED2, requestedResource, "20070101", "000103", 2 ); + } + + @Test + public void testGetSnapshotMetadataProxiedNotLocalNotRemote() + throws Exception + { + // The artifactId "get-default-metadata-nonexistant" does not exist (intentionally). + String requestedResource = + "org/apache/maven/test/get-default-metadata-nonexistant/1.0-SNAPSHOT/maven-metadata.xml"; + setupTestableManagedRepository( requestedResource ); + + // Configure Connector (usually done within archiva.xml configuration) + saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS, + SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false ); + + assertNoMetadata( requestedResource ); + + // One proxy setup, nothing fetched, no local file, failure expected. + assertFetchVersionedFailed( requestedResource ); + + // No local artifactId, and no fetch, should equal no metadata file downloaded / created / updated. + assertNoMetadata( requestedResource ); + assertNoRepoMetadata( ID_PROXIED1, requestedResource ); + } + + @Test + public void testGetSnapshotMetadataProxiedNotLocalOnRemote() + throws Exception + { + // Artifact exists only in the proxied1 location. + String requestedResource = "org/apache/maven/test/get-metadata-snapshot/1.0-SNAPSHOT/maven-metadata.xml"; + setupTestableManagedRepository( requestedResource ); + + // Configure Connector (usually done within archiva.xml configuration) + saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS, + SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false ); + + assertResourceNotFound( requestedResource ); + + // One proxy setup, one metadata fetched, local file created/updated. + assertFetchVersioned( requestedResource ); + + // Local artifact Id should contain latest (which in this case is from proxied download) + assertSnapshotMetadataContents( requestedResource, "20050831", "101112", 1 ); + assertRepoSnapshotMetadataContents( ID_PROXIED1, requestedResource, "20050831", "101112", 1 ); + } + + @Test + public void testGetSnapshotMetadataProxiedOnLocalMultipleRemote() + throws Exception + { + String requestedResource = "org/apache/maven/test/get-snapshot-popular/2.0-SNAPSHOT/maven-metadata.xml"; + setupTestableManagedRepository( requestedResource ); + + // Configure Connector (usually done within archiva.xml configuration) + saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS, + SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false ); + saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED2, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS, + SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false ); + + assertSnapshotMetadataContents( requestedResource, "20070822", "021008", 3 ); + assertNoRepoMetadata( ID_PROXIED1, requestedResource ); + assertNoRepoMetadata( ID_PROXIED2, requestedResource ); + + // Proxying 2 repos, both have content, local file updated. + assertFetchVersioned( requestedResource ); + + assertSnapshotMetadataContents( requestedResource, "20070823", "212711", 6 ); + assertRepoSnapshotMetadataContents( ID_PROXIED1, requestedResource, "20070822", "145534", 9 ); + assertRepoSnapshotMetadataContents( ID_PROXIED2, requestedResource, "20070823", "212711", 6 ); + } + + @Test + public void testGetSnapshotMetadataProxiedOnLocalNotRemote() + throws Exception + { + // The artifactId exists locally (but not on a remote repo) + String requestedResource = + "org/apache/maven/test/get-snapshot-on-local-not-remote/2.0-alpha-2-SNAPSHOT/maven-metadata.xml"; + setupTestableManagedRepository( requestedResource ); + + // Configure Connector (usually done within archiva.xml configuration) + saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS, + SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false ); + saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED2, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS, + SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false ); + + assertResourceExists( requestedResource ); + assertNoRepoMetadata( ID_PROXIED1, requestedResource ); + assertNoRepoMetadata( ID_PROXIED2, requestedResource ); + + // two proxies setup, nothing fetched from either remote, local file exists, fetch should succeed. + assertFetchVersioned( requestedResource ); + + // Local metadata exists, repo metadatas should not exist, local file updated. + assertSnapshotMetadataContents( requestedResource, "20070821", "220304", 2 ); + assertNoRepoMetadata( ID_PROXIED1, requestedResource ); + assertNoRepoMetadata( ID_PROXIED2, requestedResource ); + } + + @Test + public void testGetSnapshotMetadataProxiedOnLocalOnRemote() + throws Exception + { + // The artifactId exists locally (but not on a remote repo) + String requestedResource = + "org/apache/maven/test/get-present-metadata-snapshot/1.0-SNAPSHOT/maven-metadata.xml"; + setupTestableManagedRepository( requestedResource ); + + // Configure Connector (usually done within archiva.xml configuration) + saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS, + SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false ); + + assertSnapshotMetadataContents( requestedResource, "20050831", "101112", 1 ); + assertNoRepoMetadata( ID_PROXIED1, requestedResource ); + + // two proxies setup, nothing fetched from either remote, local file exists, fetch should succeed. + assertFetchVersioned( requestedResource ); + + // Local metadata exists, repo metadata exists, local file updated. + assertSnapshotMetadataContents( requestedResource, "20050831", "101112", 1 ); + assertRepoSnapshotMetadataContents( ID_PROXIED1, requestedResource, "20050831", "101112", 1 ); + } + + @Test + public void testGetGroupMetadataNotProxiedNotLocal() + throws Exception + { + // The artifactId "get-default-metadata-nonexistant" does not exist (intentionally). + String requestedResource = "org/apache/maven/test/groups/get-default-metadata-nonexistant/maven-metadata.xml"; + setupTestableManagedRepository( requestedResource ); + + assertResourceNotFound( requestedResource ); + + // No proxy setup, nothing fetched, failure expected. + assertFetchProjectOrGroupFailed( requestedResource ); + + // No local artifactId, and no fetch, should equal no metadata file downloaded / created / updated. + assertResourceNotFound( requestedResource ); + } + + @Test + public void testGetGroupMetadataNotProxiedOnLocal() + throws Exception + { + // Project metadata that exists and has multiple versions + String requestedResource = "org/apache/maven/test/groups/get-project-metadata/maven-metadata.xml"; + setupTestableManagedRepository( requestedResource ); + + assertResourceExists( requestedResource ); + + // No proxy setup, nothing fetched from remote, but local exists. + assertFetchProjectOrGroup( requestedResource ); + + // Nothing fetched. Should only contain contents of what is in the repository. + // A metadata update is not performed in this use case. Local metadata content is only + // updated via the metadata updater consumer. + assertGroupMetadataContents( requestedResource, new String[]{ "plugin1" } ); + } + + @Test + public void testGetGroupMetadataProxiedNotLocalMultipleRemotes() + throws Exception + { + // Project metadata that does not exist locally, but has multiple versions in remote repos + String requestedResource = "org/apache/maven/test/groups/get-default-layout/maven-metadata.xml"; + setupTestableManagedRepository( requestedResource ); + + // Configure Connector (usually done within archiva.xml configuration) + saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS, + SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false ); + saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED2, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS, + SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false ); + + assertResourceNotFound( requestedResource ); + assertNoRepoMetadata( ID_PROXIED1, requestedResource ); + assertNoRepoMetadata( ID_PROXIED2, requestedResource ); + + // Two proxies setup, metadata fetched from both remotes. + assertFetchProjectOrGroup( requestedResource ); + + // Nothing fetched. Should only contain contents of what is in the repository. + assertGroupMetadataContents( requestedResource, new String[]{ "plugin2", "plugin1" } ); + assertRepoGroupMetadataContents( ID_PROXIED1, requestedResource, new String[]{ "plugin1" } ); + assertRepoGroupMetadataContents( ID_PROXIED2, requestedResource, new String[]{ "plugin2" } ); + } + + @Test + public void testGetGroupsMetadataProxiedNotLocalNotRemote() + throws Exception + { + // Non-existant project metadata that does not exist locally and doesn't exist on remotes. + String requestedResource = "org/apache/maven/test/groups/get-bogus-artifact/maven-metadata.xml"; + setupTestableManagedRepository( requestedResource ); + + // Configure Connector (usually done within archiva.xml configuration) + saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS, + SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false ); + saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED2, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS, + SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false ); + + assertResourceNotFound( requestedResource ); + assertNoRepoMetadata( ID_PROXIED1, requestedResource ); + assertNoRepoMetadata( ID_PROXIED2, requestedResource ); + + // Two proxies setup, nothing fetched from remotes, local does not exist. + assertFetchProjectOrGroupFailed( requestedResource ); + + // Nothing fetched. Nothing should exist. + assertResourceNotFound( requestedResource ); + assertNoRepoMetadata( ID_PROXIED1, requestedResource ); + assertNoRepoMetadata( ID_PROXIED2, requestedResource ); + } + + @Test + public void testGetGroupMetadataProxiedNotLocalOnRemote() + throws Exception + { + // New project metadata that does not exist locally but exists on remote. + String requestedResource = "org/apache/maven/test/groups/get-found-in-proxy/maven-metadata.xml"; + setupTestableManagedRepository( requestedResource ); + + // Configure Connector (usually done within archiva.xml configuration) + saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS, + SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false ); + + assertResourceNotFound( requestedResource ); + assertNoRepoMetadata( ID_PROXIED1, requestedResource ); + + // One proxy setup, metadata fetched from remote, local does not exist. + assertFetchProjectOrGroup( requestedResource ); + + // Remote fetched. Local created/updated. + assertGroupMetadataContents( requestedResource, new String[]{ "plugin3" } ); + assertRepoGroupMetadataContents( ID_PROXIED1, requestedResource, new String[]{ "plugin3" } ); + } + + @Test + public void testGetGroupMetadataProxiedOnLocalMultipleRemote() + throws Exception + { + // Project metadata that exist locally, and has multiple versions in remote repos + String requestedResource = "org/apache/maven/test/groups/get-on-multiple-repos/maven-metadata.xml"; + setupTestableManagedRepository( requestedResource ); + + // Configure Connector (usually done within archiva.xml configuration) + saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS, + SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false ); + saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED2, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS, + SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false ); + + assertGroupMetadataContents( requestedResource, new String[]{ "plugin1" } ); + assertNoRepoMetadata( ID_PROXIED1, requestedResource ); + assertNoRepoMetadata( ID_PROXIED2, requestedResource ); + + // Two proxies setup, metadata fetched from both remotes. + assertFetchProjectOrGroup( requestedResource ); + + // metadata fetched from both repos, and merged with local version. + assertGroupMetadataContents( requestedResource, new String[]{ "plugin1", "plugin2", "plugin4" } ); + assertRepoGroupMetadataContents( ID_PROXIED1, requestedResource, new String[]{ "plugin1", "plugin4" } ); + assertRepoGroupMetadataContents( ID_PROXIED2, requestedResource, new String[]{ "plugin1", "plugin2" } ); + } + + @Test + public void testGetGroupMetadataProxiedOnLocalNotRemote() + throws Exception + { + // Project metadata that exist locally, and does not exist in remote repos. + String requestedResource = "org/apache/maven/test/groups/get-not-on-remotes/maven-metadata.xml"; + setupTestableManagedRepository( requestedResource ); + + // Configure Connector (usually done within archiva.xml configuration) + saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS, + SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false ); + saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED2, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS, + SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false ); + + assertGroupMetadataContents( requestedResource, new String[]{ "plugin5" } ); + assertNoRepoMetadata( ID_PROXIED1, requestedResource ); + assertNoRepoMetadata( ID_PROXIED2, requestedResource ); + + // Two proxies setup, metadata fetch from remotes fail (because they dont exist). + assertFetchProjectOrGroup( requestedResource ); + + // metadata not fetched from both repos, and local version exists. + // Since there was no updated metadata content from a remote/proxy, a metadata update on + // the local file never ran. Local only updates are performed via the metadata updater consumer. + assertGroupMetadataContents( requestedResource, new String[]{ "plugin5" } ); + assertNoRepoMetadata( ID_PROXIED1, requestedResource ); + assertNoRepoMetadata( ID_PROXIED2, requestedResource ); + } + + @Test + public void testGetGroupMetadataProxiedOnLocalOnRemote() + throws Exception + { + // Project metadata that exist locally and exists on remote. + String requestedResource = "org/apache/maven/test/groups/get-on-local-on-remote/maven-metadata.xml"; + setupTestableManagedRepository( requestedResource ); + + // Configure Connector (usually done within archiva.xml configuration) + saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS, + SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO, false ); + + assertGroupMetadataContents( requestedResource, new String[]{ "plugin6", "plugin7" } ); + assertNoRepoMetadata( ID_PROXIED1, requestedResource ); + + // One proxy setup, metadata fetched from remote, local exists. + assertFetchProjectOrGroup( requestedResource ); + + // Remote fetched. Local updated. + assertGroupMetadataContents( requestedResource, new String[]{ "plugin6", "plugin7", "plugin4" } ); + assertRepoGroupMetadataContents( ID_PROXIED1, requestedResource, new String[]{ "plugin7", "plugin4" } ); + } + + /** + * Transfer the metadata file. + * + * @param requestedResource the requested resource + * @throws Exception + */ + private void assertFetchProjectOrGroup( String requestedResource ) + throws Exception + { + Path expectedFile = managedDefaultDir.resolve(requestedResource); + + ProjectReference metadata = createProjectReference( requestedResource ); + + Path downloadedFile = proxyHandler.fetchMetadataFromProxies( managedDefaultRepository, + managedDefaultRepository.toMetadataPath( + metadata ) ).getFile(); + + assertNotNull( "Should have downloaded a file.", downloadedFile ); + assertNoTempFiles( expectedFile ); + } + + private ProjectReference createProjectReference( String path ) + throws RepositoryMetadataException + { + return metadataTools.toProjectReference( path ); + } + + /** + * Transfer the metadata file, not expected to succeed. + * + * @param requestedResource the requested resource + * @throws Exception + */ + private void assertFetchProjectOrGroupFailed( String requestedResource ) + throws Exception + { + Path expectedFile = managedDefaultDir.resolve(requestedResource); + ProjectReference metadata = createProjectReference( requestedResource ); + + Path downloadedFile = proxyHandler.fetchMetadataFromProxies( managedDefaultRepository, + managedDefaultRepository.toMetadataPath( + metadata ) ).getFile(); + + assertNull( downloadedFile ); + assertNoTempFiles( expectedFile ); + } + + /** + * Transfer the metadata file. + * + * @param requestedResource the requested resource + * @throws Exception + */ + private void assertFetchVersioned( String requestedResource ) + throws Exception + { + Path expectedFile = managedDefaultDir.resolve(requestedResource); + + VersionedReference metadata = createVersionedReference( requestedResource ); + + Path downloadedFile = proxyHandler.fetchMetadataFromProxies( managedDefaultRepository, + managedDefaultRepository.toMetadataPath( + metadata ) ).getFile(); + + assertNotNull( "Should have downloaded a file.", downloadedFile ); + assertNoTempFiles( expectedFile ); + } + + private VersionedReference createVersionedReference( String path ) + throws RepositoryMetadataException + { + return metadataTools.toVersionedReference( path ); + } + + /** + * Transfer the metadata file, not expected to succeed. + * + * @param requestedResource the requested resource + * @throws Exception + */ + private void assertFetchVersionedFailed( String requestedResource ) + throws Exception + { + Path expectedFile = managedDefaultDir.resolve(requestedResource); + VersionedReference metadata = createVersionedReference( requestedResource ); + + Path downloadedFile = proxyHandler.fetchMetadataFromProxies( managedDefaultRepository, + managedDefaultRepository.toMetadataPath( + metadata ) ).getFile(); + + assertNull( downloadedFile ); + assertNoTempFiles( expectedFile ); + } + + /** + * Test for the existance of the requestedResource in the default managed repository. + * + * @param requestedResource the requested resource + * @throws Exception + */ + private void assertResourceExists( String requestedResource ) + throws Exception + { + Path actualFile = managedDefaultDir.resolve(requestedResource); + assertTrue( "Resource should exist: " + requestedResource, Files.exists(actualFile) ); + } + + private void assertMetadataEquals( String expectedMetadataXml, Path actualFile ) + throws Exception + { + assertNotNull( "Actual File should not be null.", actualFile ); + + assertTrue( "Actual file exists.", Files.exists(actualFile) ); + + StringWriter actualContents = new StringWriter(); + ArchivaRepositoryMetadata metadata = MavenMetadataReader.read( actualFile ); + RepositoryMetadataWriter.write( metadata, actualContents ); + + DetailedDiff detailedDiff = new DetailedDiff( new Diff( expectedMetadataXml, actualContents.toString() ) ); + if ( !detailedDiff.similar() ) + { + assertEquals( expectedMetadataXml, actualContents ); + } + + // assertEquals( "Check file contents.", expectedMetadataXml, actualContents ); + } + + /** + * Ensures that the requested resource is not present in the managed repository. + * + * @param requestedResource the requested resource + * @throws Exception + */ + private void assertNoMetadata( String requestedResource ) + throws Exception + { + Path expectedFile = managedDefaultDir.resolve(requestedResource); + assertFalse( "metadata should not exist: " + expectedFile, Files.exists(expectedFile) ); + } + + /** + * Ensures that the proxied repository specific maven metadata file does NOT exist in the + * managed repository. + * + * @param proxiedRepoId the proxied repository id to validate with. + * @param requestedResource the resource requested. + */ + private void assertNoRepoMetadata( String proxiedRepoId, String requestedResource ) + { + String proxiedFile = metadataTools.getRepositorySpecificName( proxiedRepoId, requestedResource ); + + Path actualFile = managedDefaultDir.resolve(proxiedFile); + assertFalse( "Repo specific metadata should not exist: " + actualFile, Files.exists(actualFile) ); + } + + private void assertGroupMetadataContents( String requestedResource, String expectedPlugins[] ) + throws Exception + { + Path actualFile = managedDefaultDir.resolve(requestedResource); + assertTrue( "Snapshot Metadata should exist: " + requestedResource, Files.exists(actualFile) ); + + ProjectReference actualMetadata = createGroupReference( requestedResource ); + + assertGroupMetadata( actualFile, actualMetadata, expectedPlugins ); + } + + private ProjectReference createGroupReference( String requestedResource ) + throws RepositoryMetadataException + { + ProjectReference projectReference = createProjectReference( requestedResource ); + projectReference.setGroupId( projectReference.getGroupId() + "." + projectReference.getArtifactId() ); + projectReference.setArtifactId( null ); + return projectReference; + } + + private void assertRepoGroupMetadataContents( String proxiedRepoId, String requestedResource, + String expectedPlugins[] ) + throws Exception + { + String proxiedFile = metadataTools.getRepositorySpecificName( proxiedRepoId, requestedResource ); + + Path actualFile = managedDefaultDir.resolve(proxiedFile); + assertTrue( "Repo Specific Group Metadata should exist: " + requestedResource, Files.exists(actualFile) ); + + ProjectReference actualMetadata = createGroupReference( requestedResource ); + + assertGroupMetadata( actualFile, actualMetadata, expectedPlugins ); + } + + private void assertGroupMetadata( Path actualFile, ProjectReference actualMetadata, String expectedPlugins[] ) + throws Exception + { + // Build expected metadata XML + StringWriter expectedMetadataXml = new StringWriter(); + ArchivaRepositoryMetadata m = new ArchivaRepositoryMetadata(); + m.setGroupId( actualMetadata.getGroupId() ); + + for ( String pluginId : expectedPlugins ) + { + Plugin p = new Plugin(); + p.setPrefix( pluginId ); + p.setArtifactId( pluginId + "-maven-plugin" ); + p.setName( "The " + pluginId + " Plugin" ); + m.getPlugins().add( p ); + } + + RepositoryMetadataWriter.write( m, expectedMetadataXml ); + + // Compare the file to the actual contents. + assertMetadataEquals( expectedMetadataXml.toString(), actualFile ); + } + + /** + * Test for the existance of the requestedResource in the default managed repository, and if it exists, + * does it contain the specified list of expected versions? + * + * @param requestedResource the requested resource + * @throws Exception + */ + private void assertProjectMetadataContents( String requestedResource, String expectedVersions[], + String latestVersion, String releaseVersion ) + throws Exception + { + Path actualFile = managedDefaultDir.resolve(requestedResource); + assertTrue( Files.exists(actualFile) ); + + ProjectReference metadata = createProjectReference( requestedResource ); + + // Build expected metadata XML + StringWriter expectedMetadataXml = new StringWriter(); + ArchivaRepositoryMetadata m = new ArchivaRepositoryMetadata(); + m.setGroupId( metadata.getGroupId() ); + m.setArtifactId( metadata.getArtifactId() ); + m.setLatestVersion( latestVersion ); + m.setReleasedVersion( releaseVersion ); + + if ( expectedVersions != null ) + { + m.getAvailableVersions().addAll( Arrays.asList( expectedVersions ) ); + } + + RepositoryMetadataWriter.write( m, expectedMetadataXml ); + + // Compare the file to the actual contents. + assertMetadataEquals( expectedMetadataXml.toString(), actualFile ); + } + + /** + * Test for the existance of the requestedResource in the default managed repository, and if it exists, + * does it contain the expected release maven-metadata.xml contents? + * + * @param requestedResource the requested resource + * @throws Exception + */ + private void assertReleaseMetadataContents( String requestedResource ) + throws Exception + { + Path actualFile = managedDefaultDir.resolve(requestedResource); + assertTrue( "Release Metadata should exist: " + requestedResource, Files.exists(actualFile) ); + + VersionedReference metadata = createVersionedReference( requestedResource ); + + // Build expected metadata XML + StringWriter expectedMetadataXml = new StringWriter(); + ArchivaRepositoryMetadata m = new ArchivaRepositoryMetadata(); + m.setGroupId( metadata.getGroupId() ); + m.setArtifactId( metadata.getArtifactId() ); + m.setVersion( metadata.getVersion() ); + RepositoryMetadataWriter.write( m, expectedMetadataXml ); + + // Compare the file to the actual contents. + assertMetadataEquals( expectedMetadataXml.toString(), actualFile ); + } + + /** + * Test for the existance of the snapshot metadata in the default managed repository, and if it exists, + * does it contain the expected release maven-metadata.xml contents? + * + * @param requestedResource the requested resource + * @param expectedDate the date in "yyyyMMdd" format + * @param expectedTime the time in "hhmmss" format + * @param expectedBuildnumber the build number + * @throws Exception + */ + private void assertSnapshotMetadataContents( String requestedResource, String expectedDate, String expectedTime, + int expectedBuildnumber ) + throws Exception + { + Path actualFile = managedDefaultDir.resolve(requestedResource); + assertTrue( "Snapshot Metadata should exist: " + requestedResource, Files.exists(actualFile) ); + + VersionedReference actualMetadata = createVersionedReference( requestedResource ); + + assertSnapshotMetadata( actualFile, actualMetadata, expectedDate, expectedTime, expectedBuildnumber ); + } + + /** + * Test for the existance of the proxied repository specific snapshot metadata in the default managed + * repository, and if it exists, does it contain the expected release maven-metadata.xml contents? + * + * @param proxiedRepoId the repository id of the proxied repository. + * @param requestedResource the requested resource + * @param expectedDate the date in "yyyyMMdd" format + * @param expectedTime the time in "hhmmss" format + * @param expectedBuildnumber the build number + * @throws Exception + */ + private void assertRepoSnapshotMetadataContents( String proxiedRepoId, String requestedResource, + String expectedDate, String expectedTime, int expectedBuildnumber ) + throws Exception + { + String proxiedFile = metadataTools.getRepositorySpecificName( proxiedRepoId, requestedResource ); + + Path actualFile = managedDefaultDir.resolve(proxiedFile); + assertTrue( "Repo Specific Snapshot Metadata should exist: " + requestedResource, Files.exists(actualFile) ); + + VersionedReference actualMetadata = createVersionedReference( requestedResource ); + + assertSnapshotMetadata( actualFile, actualMetadata, expectedDate, expectedTime, expectedBuildnumber ); + } + + private void assertSnapshotMetadata( Path actualFile, VersionedReference actualMetadata, String expectedDate, + String expectedTime, int expectedBuildnumber ) + throws RepositoryMetadataException, Exception + { + // Build expected metadata XML + StringWriter expectedMetadataXml = new StringWriter(); + ArchivaRepositoryMetadata m = new ArchivaRepositoryMetadata(); + m.setGroupId( actualMetadata.getGroupId() ); + m.setArtifactId( actualMetadata.getArtifactId() ); + m.setVersion( VersionUtil.getBaseVersion( actualMetadata.getVersion() ) ); + + m.setSnapshotVersion( new SnapshotVersion() ); + + if ( StringUtils.isNotBlank( expectedDate ) && StringUtils.isNotBlank( expectedTime ) ) + { + m.getSnapshotVersion().setTimestamp( expectedDate + "." + expectedTime ); + } + + m.getSnapshotVersion().setBuildNumber( expectedBuildnumber ); + + m.setLastUpdated( expectedDate + expectedTime ); + + RepositoryMetadataWriter.write( m, expectedMetadataXml ); + + // Compare the file to the actual contents. + assertMetadataEquals( expectedMetadataXml.toString(), actualFile ); + } + + /** + * Ensures that the repository specific maven metadata file exists, and contains the appropriate + * list of expected versions within. + * + * @param proxiedRepoId + * @param requestedResource + * @param expectedProxyVersions + */ + private void assertRepoProjectMetadata( String proxiedRepoId, String requestedResource, + String[] expectedProxyVersions ) + throws Exception + { + String proxiedFile = metadataTools.getRepositorySpecificName( proxiedRepoId, requestedResource ); + + Path actualFile = managedDefaultDir.resolve(proxiedFile); + assertTrue( Files.exists(actualFile) ); + + ProjectReference metadata = createProjectReference( requestedResource ); + + // Build expected metadata XML + StringWriter expectedMetadataXml = new StringWriter(); + ArchivaRepositoryMetadata m = new ArchivaRepositoryMetadata(); + m.setGroupId( metadata.getGroupId() ); + m.setArtifactId( metadata.getArtifactId() ); + + if ( expectedProxyVersions != null ) + { + m.getAvailableVersions().addAll( Arrays.asList( expectedProxyVersions ) ); + } + + RepositoryMetadataWriter.write( m, expectedMetadataXml ); + + // Compare the file to the actual contents. + assertMetadataEquals( expectedMetadataXml.toString(), actualFile ); + } + + /** + * Ensures that the repository specific maven metadata file exists, and contains the appropriate + * list of expected versions within. + * + * @param proxiedRepoId + * @param requestedResource + */ + private void assertRepoReleaseMetadataContents( String proxiedRepoId, String requestedResource ) + throws Exception + { + String proxiedFile = metadataTools.getRepositorySpecificName( proxiedRepoId, requestedResource ); + + Path actualFile = managedDefaultDir.resolve(proxiedFile); + assertTrue( "Release metadata for repo should exist: " + actualFile, Files.exists(actualFile) ); + + VersionedReference metadata = createVersionedReference( requestedResource ); + + // Build expected metadata XML + StringWriter expectedMetadataXml = new StringWriter(); + ArchivaRepositoryMetadata m = new ArchivaRepositoryMetadata(); + m.setGroupId( metadata.getGroupId() ); + m.setArtifactId( metadata.getArtifactId() ); + m.setVersion( metadata.getVersion() ); + RepositoryMetadataWriter.write( m, expectedMetadataXml ); + + // Compare the file to the actual contents. + assertMetadataEquals( expectedMetadataXml.toString(), actualFile ); + } + + /** + * Test for the non-existance of the requestedResource in the default managed repository. + * + * @param requestedResource the requested resource + * @throws Exception + */ + private void assertResourceNotFound( String requestedResource ) + throws Exception + { + Path actualFile = managedDefaultDir.resolve(requestedResource); + assertFalse( "Resource should not exist: " + requestedResource, Files.exists(actualFile) ); + } + +} diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/java/org/apache/archiva/proxy/MockConfiguration.java b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/java/org/apache/archiva/proxy/MockConfiguration.java new file mode 100644 index 000000000..fd6e66eb2 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/java/org/apache/archiva/proxy/MockConfiguration.java @@ -0,0 +1,193 @@ +package org.apache.archiva.proxy; + +/* + * 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.archiva.configuration.ArchivaConfiguration; +import org.apache.archiva.configuration.Configuration; +import org.apache.archiva.configuration.ConfigurationListener; +import org.apache.archiva.configuration.FileType; +import org.apache.archiva.configuration.FileTypes; +import org.apache.archiva.configuration.RepositoryScanningConfiguration; +import org.apache.archiva.redback.components.registry.Registry; +import org.apache.archiva.redback.components.registry.RegistryException; +import org.apache.archiva.redback.components.registry.RegistryListener; +import org.apache.commons.lang.StringUtils; +import org.easymock.EasyMock; +import org.easymock.IMocksControl; +import org.springframework.stereotype.Service; + +import javax.annotation.PostConstruct; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.Collections; +import java.util.HashSet; +import java.util.List; +import java.util.Locale; +import java.util.Set; + +/** + * MockConfiguration + * + * + */ +@Service( "archivaConfiguration#mock" ) +public class MockConfiguration + implements ArchivaConfiguration +{ + + private Configuration configuration = new Configuration(); + + private Set<RegistryListener> registryListeners = new HashSet<RegistryListener>(); + + private Set<ConfigurationListener> configListeners = new HashSet<ConfigurationListener>(); + + private IMocksControl registryControl; + + private Registry registryMock; + + public MockConfiguration() + { + registryControl = EasyMock.createNiceControl( ); + registryMock = registryControl.createMock( Registry.class ); + } + + @PostConstruct + public void initialize() + throws Exception + { + + configuration.setRepositoryScanning( new RepositoryScanningConfiguration() + { + @Override + public List<FileType> getFileTypes() + { + FileType fileType = new FileType(); + fileType.setId( FileTypes.ARTIFACTS ); + fileType.setPatterns( Collections.singletonList( "**/*" ) ); + return Collections.singletonList( fileType ); + } + } ); + } + + @Override + public void addChangeListener( org.apache.archiva.redback.components.registry.RegistryListener listener ) + { + registryListeners.add( listener ); + } + + @Override + public void removeChangeListener( RegistryListener listener ) + { + registryListeners.remove( listener ); + } + + @Override + public Configuration getConfiguration() + { + return configuration; + } + + @Override + public void save( Configuration configuration ) + throws RegistryException + { + /* do nothing */ + } + + public void triggerChange( String name, String value ) + { + for ( org.apache.archiva.redback.components.registry.RegistryListener listener : registryListeners ) + { + try + { + listener.afterConfigurationChange( registryMock, name, value ); + } + catch ( Exception e ) + { + e.printStackTrace(); + } + } + } + + @Override + public void addListener( ConfigurationListener listener ) + { + configListeners.add( listener ); + } + + @Override + public void removeListener( ConfigurationListener listener ) + { + configListeners.remove( listener ); + } + + @Override + public boolean isDefaulted() + { + return false; + } + + @Override + public void reload() + { + // no op + } + + @Override + public Locale getDefaultLocale( ) + { + return Locale.getDefault(); + } + + @Override + public List<Locale.LanguageRange> getLanguagePriorities( ) + { + return Locale.LanguageRange.parse( "en,fr,de" ); + } + + @Override + public Path getAppServerBaseDir() { + if (System.getProperties().containsKey("appserver.base")) { + return Paths.get(System.getProperty("appserver.base")); + } else { + return Paths.get(""); + } + } + + + @Override + public Path getRepositoryBaseDir() { + return getDataDirectory().resolve("repositories"); + } + + @Override + public Path getRemoteRepositoryBaseDir() { + return getDataDirectory().resolve("remotes"); + } + + @Override + public Path getDataDirectory() { + if (configuration!=null && StringUtils.isNotEmpty(configuration.getArchivaRuntimeConfiguration().getDataDirectory())) { + return Paths.get(configuration.getArchivaRuntimeConfiguration().getDataDirectory()); + } else { + return getAppServerBaseDir().resolve("data"); + } + } +} diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/java/org/apache/archiva/proxy/SnapshotTransferTest.java b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/java/org/apache/archiva/proxy/SnapshotTransferTest.java new file mode 100644 index 000000000..9ab0585bf --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/java/org/apache/archiva/proxy/SnapshotTransferTest.java @@ -0,0 +1,329 @@ +package org.apache.archiva.proxy; + +/* + * 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.archiva.model.ArtifactReference; +import org.apache.archiva.policies.CachedFailuresPolicy; +import org.apache.archiva.policies.ChecksumPolicy; +import org.apache.archiva.policies.ReleasesPolicy; +import org.apache.archiva.policies.SnapshotsPolicy; +import org.junit.Test; + +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.nio.file.attribute.FileTime; +import java.util.concurrent.TimeUnit; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +/** + * SnapshotTransferTest + * + * + */ +public class SnapshotTransferTest + extends AbstractProxyTestCase +{ + @Test + public void testSnapshotNonExistant() + throws Exception + { + String path = "org/apache/maven/test/does-not-exist/1.0-SNAPSHOT/does-not-exist-1.0-SNAPSHOT.jar"; + setupTestableManagedRepository( path ); + + Path expectedFile = managedDefaultDir.resolve(path); + ArtifactReference artifact = managedDefaultRepository.toArtifactReference( path ); + + Files.deleteIfExists(expectedFile); + assertFalse( Files.exists(expectedFile) ); + + // Configure Connector (usually done within archiva.xml configuration) + saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, false); + + Path downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact ); + assertNotDownloaded( downloadedFile ); + assertNoTempFiles( expectedFile ); + } + + @Test + public void testTimestampDrivenSnapshotNotPresentAlready() + throws Exception + { + String path = "org/apache/maven/test/get-timestamped-snapshot/1.0-SNAPSHOT/get-timestamped-snapshot-1.0-SNAPSHOT.jar"; + setupTestableManagedRepository( path ); + + Path expectedFile = managedDefaultDir.resolve(path); + ArtifactReference artifact = managedDefaultRepository.toArtifactReference( path ); + + Files.deleteIfExists(expectedFile); + assertFalse( Files.exists(expectedFile) ); + + // Configure Connector (usually done within archiva.xml configuration) + saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, false); + + Path downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact ); + + Path proxiedFile = Paths.get(REPOPATH_PROXIED1, path); + assertFileEquals( expectedFile, downloadedFile, proxiedFile ); + assertNoTempFiles( expectedFile ); + } + + @Test + public void testNewerTimestampDrivenSnapshotOnFirstRepo() + throws Exception + { + String path = "org/apache/maven/test/get-present-timestamped-snapshot/1.0-SNAPSHOT/get-present-timestamped-snapshot-1.0-SNAPSHOT.jar"; + setupTestableManagedRepository( path ); + + Path expectedFile = managedDefaultDir.resolve(path); + ArtifactReference artifact = managedDefaultRepository.toArtifactReference( path ); + + assertTrue( Files.exists(expectedFile) ); + Files.setLastModifiedTime( expectedFile, FileTime.from( getPastDate().getTime(), TimeUnit.MILLISECONDS )); + + // Configure Connector (usually done within archiva.xml configuration) + saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, false); + + Path downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact ); + + Path proxiedFile = Paths.get(REPOPATH_PROXIED1, path); + assertFileEquals( expectedFile, downloadedFile, proxiedFile ); + assertNoTempFiles( expectedFile ); + } + + @Test + public void testOlderTimestampDrivenSnapshotOnFirstRepo() + throws Exception + { + String path = "org/apache/maven/test/get-present-timestamped-snapshot/1.0-SNAPSHOT/get-present-timestamped-snapshot-1.0-SNAPSHOT.jar"; + setupTestableManagedRepository( path ); + + Path expectedFile = managedDefaultDir.resolve(path); + Path remoteFile = Paths.get(REPOPATH_PROXIED1, path); + + setManagedNewerThanRemote( expectedFile, remoteFile ); + + ArtifactReference artifact = managedDefaultRepository.toArtifactReference( path ); + + // Configure Connector (usually done within archiva.xml configuration) + saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, false ); + + // Attempt to download. + Path downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact ); + + // Should not have downloaded as managed is newer than remote. + assertNotDownloaded( downloadedFile ); + assertNoTempFiles( expectedFile ); + } + + /** + * TODO: Has problems with wagon implementation not preserving timestamp. + */ + /* + public void testNewerTimestampDrivenSnapshotOnSecondRepoThanFirstNotPresentAlready() + throws Exception + { + String path = "org/apache/maven/test/get-timestamped-snapshot-in-both/1.0-SNAPSHOT/get-timestamped-snapshot-in-both-1.0-SNAPSHOT.jar"; + setupTestableManagedRepository( path ); + + Path expectedFile = managedDefaultDir.resolve(path); + ArtifactReference artifact = createArtifactReference( "default", path ); + + Files.delete(expectedFile); + assertFalse( Files.exists(expectedFile) ); + + // Create customized proxy / target repository + File targetProxyDir = saveTargetedRepositoryConfig( ID_PROXIED1_TARGET, REPOPATH_PROXIED1, + REPOPATH_PROXIED1_TARGET, "default" ); + + new File( targetProxyDir, path ).setLastModified( getPastDate().getTime() ); + + // Configure Connector (usually done within archiva.xml configuration) + saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1_TARGET, ChecksumPolicy.IGNORED, ReleasesPolicy.IGNORED, + SnapshotsPolicy.IGNORED, CachedFailuresPolicy.IGNORED ); + saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED2, ChecksumPolicy.IGNORED, ReleasesPolicy.IGNORED, + SnapshotsPolicy.IGNORED, CachedFailuresPolicy.IGNORED ); + + File downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact ); + + // Should have downloaded the content from proxy2, as proxy1 has an old (by file.lastModified check) version. + Path proxiedFile = Paths.get(REPOPATH_PROXIED2, path); + assertFileEquals( expectedFile, downloadedFile, proxiedFile ); + assertNoTempFiles( expectedFile ); + } + + public void testOlderTimestampDrivenSnapshotOnSecondRepoThanFirstNotPresentAlready() + throws Exception + { + String path = "org/apache/maven/test/get-timestamped-snapshot-in-both/1.0-SNAPSHOT/get-timestamped-snapshot-in-both-1.0-SNAPSHOT.jar"; + setupTestableManagedRepository( path ); + + Path expectedFile = managedDefaultDir.resolve(path); + ArtifactReference artifact = createArtifactReference( "default", path ); + + Files.delete(expectedFile); + assertFalse( Files.exists(expectedFile) ); + + // Create customized proxy / target repository + File targetProxyDir = saveTargetedRepositoryConfig( ID_PROXIED2_TARGET, REPOPATH_PROXIED2, + REPOPATH_PROXIED2_TARGET, "default" ); + + new File( targetProxyDir, path ).setLastModified( getPastDate().getTime() ); + + // Configure Connector (usually done within archiva.xml configuration) + saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, ChecksumPolicy.IGNORED, ReleasesPolicy.IGNORED, + SnapshotsPolicy.IGNORED, CachedFailuresPolicy.IGNORED ); + saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED2_TARGET, ChecksumPolicy.IGNORED, ReleasesPolicy.IGNORED, + SnapshotsPolicy.IGNORED, CachedFailuresPolicy.IGNORED ); + + File downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact ); + + File proxiedFile = new File( REPOPATH_PROXIED1_TARGET, path ); + assertFileEquals( expectedFile, downloadedFile, proxiedFile ); + assertNoTempFiles( expectedFile ); + } */ + + @Test + public void testTimestampDrivenSnapshotNotExpired() + throws Exception + { + String path = "org/apache/maven/test/get-present-timestamped-snapshot/1.0-SNAPSHOT/get-present-timestamped-snapshot-1.0-SNAPSHOT.jar"; + setupTestableManagedRepository( path ); + + Path expectedFile = managedDefaultDir.resolve(path); + ArtifactReference artifact = managedDefaultRepository.toArtifactReference( path ); + + assertTrue( Files.exists(expectedFile) ); + + Path proxiedFile = Paths.get(REPOPATH_PROXIED1, path); + Files.setLastModifiedTime( proxiedFile, FileTime.from( getFutureDate().getTime(), TimeUnit.MILLISECONDS )); + + // Configure Connector (usually done within archiva.xml configuration) + saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, false); + + Path downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact ); + + assertFileEquals( expectedFile, downloadedFile, proxiedFile ); + assertNoTempFiles( expectedFile ); + } + + @Test + public void testTimestampDrivenSnapshotNotUpdated() + throws Exception + { + String path = "org/apache/maven/test/get-present-timestamped-snapshot/1.0-SNAPSHOT/get-present-timestamped-snapshot-1.0-SNAPSHOT.jar"; + setupTestableManagedRepository( path ); + + Path expectedFile = managedDefaultDir.resolve(path); + Path remoteFile = Paths.get(REPOPATH_PROXIED1, path); + + setManagedNewerThanRemote( expectedFile, remoteFile, 12000000 ); + long expectedTimestamp = Files.getLastModifiedTime( expectedFile ).toMillis(); + + ArtifactReference artifact = managedDefaultRepository.toArtifactReference( path ); + + // Configure Connector (usually done within archiva.xml configuration) + saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, false); + + Path downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact ); + + assertNotDownloaded( downloadedFile ); + assertNotModified( expectedFile, expectedTimestamp ); + assertNoTempFiles( expectedFile ); + } + + @Test + public void testTimestampDrivenSnapshotNotPresentAlreadyExpiredCacheFailure() + throws Exception + { + String path = "org/apache/maven/test/get-timestamped-snapshot/1.0-SNAPSHOT/get-timestamped-snapshot-1.0-SNAPSHOT.jar"; + setupTestableManagedRepository( path ); + + Path expectedFile = managedDefaultDir.resolve(path); + ArtifactReference artifact = managedDefaultRepository.toArtifactReference( path ); + + Files.deleteIfExists(expectedFile); + assertFalse( Files.exists(expectedFile) ); + + // Configure Connector (usually done within archiva.xml configuration) + saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, ChecksumPolicy.IGNORE, ReleasesPolicy.ALWAYS, + SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.YES , false); + saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED2, ChecksumPolicy.IGNORE, ReleasesPolicy.ALWAYS, + SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.YES , false); + + Path downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact ); + + Path proxiedFile = Paths.get(REPOPATH_PROXIED1, path); + assertFileEquals( expectedFile, downloadedFile, proxiedFile ); + assertNoTempFiles( expectedFile ); + } + + @Test + public void testMetadataDrivenSnapshotNotPresentAlready() + throws Exception + { + String path = "org/apache/maven/test/get-metadata-snapshot/1.0-SNAPSHOT/get-metadata-snapshot-1.0-20050831.101112-1.jar"; + setupTestableManagedRepository( path ); + + Path expectedFile = managedDefaultDir.resolve(path); + ArtifactReference artifact = managedDefaultRepository.toArtifactReference( path ); + + Files.deleteIfExists(expectedFile); + assertFalse( Files.exists(expectedFile) ); + + // Configure Connector (usually done within archiva.xml configuration) + saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, false); + + Path downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact ); + + Path proxiedFile = Paths.get(REPOPATH_PROXIED1, path); + assertFileEquals( expectedFile, downloadedFile, proxiedFile ); + assertNoTempFiles( expectedFile ); + } + + @Test + public void testGetMetadataDrivenSnapshotRemoteUpdate() + throws Exception + { + // Metadata driven snapshots (using a full timestamp) are treated like a release. It is the timing of the + // updates to the metadata files that triggers which will be downloaded + + String path = "org/apache/maven/test/get-present-metadata-snapshot/1.0-SNAPSHOT/get-present-metadata-snapshot-1.0-20050831.101112-1.jar"; + setupTestableManagedRepository( path ); + + Path expectedFile = managedDefaultDir.resolve(path); + ArtifactReference artifact = managedDefaultRepository.toArtifactReference( path ); + + assertTrue( Files.exists(expectedFile) ); + + Files.setLastModifiedTime( expectedFile, FileTime.from( getPastDate().getTime(), TimeUnit.MILLISECONDS )); + + // Configure Connector (usually done within archiva.xml configuration) + saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, false); + + Path downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact ); + + Path proxiedFile = Paths.get(REPOPATH_PROXIED1, path); + assertFileEquals( expectedFile, downloadedFile, proxiedFile ); + assertNoTempFiles( expectedFile ); + } +} diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/java/org/apache/archiva/proxy/WagonDelegate.java b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/java/org/apache/archiva/proxy/WagonDelegate.java new file mode 100644 index 000000000..702fe99c7 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/java/org/apache/archiva/proxy/WagonDelegate.java @@ -0,0 +1,286 @@ +package org.apache.archiva.proxy; + +/* + * 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.wagon.ConnectionException; +import org.apache.maven.wagon.ResourceDoesNotExistException; +import org.apache.maven.wagon.TransferFailedException; +import org.apache.maven.wagon.Wagon; +import org.apache.maven.wagon.authentication.AuthenticationException; +import org.apache.maven.wagon.authentication.AuthenticationInfo; +import org.apache.maven.wagon.authorization.AuthorizationException; +import org.apache.maven.wagon.events.SessionListener; +import org.apache.maven.wagon.events.TransferListener; +import org.apache.maven.wagon.proxy.ProxyInfo; +import org.apache.maven.wagon.proxy.ProxyInfoProvider; +import org.apache.maven.wagon.repository.Repository; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; + +import java.io.File; +import java.io.IOException; +import java.nio.charset.Charset; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.List; + +/** + * A dummy wagon implementation + */ +@Service ("wagon#test") +public class WagonDelegate + implements Wagon +{ + private Logger log = LoggerFactory.getLogger( WagonDelegate.class ); + + private Wagon delegate; + + private String contentToGet; + + @Override + public void get( String resourceName, File destination ) + throws TransferFailedException, ResourceDoesNotExistException, AuthorizationException + { + log.debug( ".get({}, {})", resourceName, destination ); + delegate.get( resourceName, destination ); + create( destination.toPath() ); + } + + @Override + public boolean getIfNewer( String resourceName, File destination, long timestamp ) + throws TransferFailedException, ResourceDoesNotExistException, AuthorizationException + { + log.info( ".getIfNewer({}, {}, {})", resourceName, destination, timestamp ); + + boolean result = delegate.getIfNewer( resourceName, destination, timestamp ); + createIfMissing( destination.toPath() ); + return result; + } + + @Override + public void put( File source, String destination ) + throws TransferFailedException, ResourceDoesNotExistException, AuthorizationException + { + delegate.put( source, destination ); + } + + @Override + public void putDirectory( File sourceDirectory, String destinationDirectory ) + throws TransferFailedException, ResourceDoesNotExistException, AuthorizationException + { + delegate.putDirectory( sourceDirectory, destinationDirectory ); + } + + @Override + public boolean resourceExists( String resourceName ) + throws TransferFailedException, AuthorizationException + { + return delegate.resourceExists( resourceName ); + } + + @SuppressWarnings ("unchecked") + @Override + public List<String> getFileList( String destinationDirectory ) + throws TransferFailedException, ResourceDoesNotExistException, AuthorizationException + { + return delegate.getFileList( destinationDirectory ); + } + + @Override + public boolean supportsDirectoryCopy() + { + return delegate.supportsDirectoryCopy(); + } + + @Override + public void setTimeout( int val ) + { + // ignore + } + + @Override + public int getTimeout() + { + return 0; + } + + @Override + public void setReadTimeout( int timeoutValue ) + { + // ignore + } + + @Override + public int getReadTimeout() + { + return 0; + } + + @Override + public Repository getRepository() + { + return delegate.getRepository(); + } + + @Override + public void connect( Repository source ) + throws ConnectionException, AuthenticationException + { + delegate.connect( source ); + } + + @Override + public void connect( Repository source, ProxyInfo proxyInfo ) + throws ConnectionException, AuthenticationException + { + delegate.connect( source, proxyInfo ); + } + + @Override + public void connect( Repository source, ProxyInfoProvider proxyInfoProvider ) + throws ConnectionException, AuthenticationException + { + delegate.connect( source, proxyInfoProvider ); + } + + @Override + public void connect( Repository source, AuthenticationInfo authenticationInfo ) + throws ConnectionException, AuthenticationException + { + delegate.connect( source, authenticationInfo ); + } + + @Override + public void connect( Repository source, AuthenticationInfo authenticationInfo, ProxyInfo proxyInfo ) + throws ConnectionException, AuthenticationException + { + delegate.connect( source, authenticationInfo, proxyInfo ); + } + + @Override + public void connect( Repository source, AuthenticationInfo authenticationInfo, ProxyInfoProvider proxyInfoProvider ) + throws ConnectionException, AuthenticationException + { + delegate.connect( source, authenticationInfo, proxyInfoProvider ); + } + + @SuppressWarnings ("deprecation") + @Override + public void openConnection() + throws ConnectionException, AuthenticationException + { + delegate.openConnection(); + } + + @Override + public void disconnect() + throws ConnectionException + { + delegate.disconnect(); + } + + @Override + public void addSessionListener( SessionListener listener ) + { + delegate.addSessionListener( listener ); + } + + @Override + public void removeSessionListener( SessionListener listener ) + { + delegate.removeSessionListener( listener ); + } + + @Override + public boolean hasSessionListener( SessionListener listener ) + { + return delegate.hasSessionListener( listener ); + } + + @Override + public void addTransferListener( TransferListener listener ) + { + delegate.addTransferListener( listener ); + } + + @Override + public void removeTransferListener( TransferListener listener ) + { + delegate.removeTransferListener( listener ); + } + + @Override + public boolean hasTransferListener( TransferListener listener ) + { + return delegate.hasTransferListener( listener ); + } + + @Override + public boolean isInteractive() + { + return delegate.isInteractive(); + } + + @Override + public void setInteractive( boolean interactive ) + { + delegate.setInteractive( interactive ); + } + + public void setDelegate( Wagon delegate ) + { + this.delegate = delegate; + } + + void setContentToGet( String content ) + { + contentToGet = content; + } + + private void createIfMissing( Path destination ) + { + // since the mock won't actually copy a file, create an empty one to simulate file existence + if ( !Files.exists(destination) ) + { + create( destination ); + } + } + + private void create( Path destination ) + { + try + { + Files.createDirectories(destination.getParent()); + if ( contentToGet == null ) + { + Files.createFile(destination); + } + else + { + org.apache.archiva.common.utils.FileUtils.writeStringToFile(destination, Charset.defaultCharset(), contentToGet); + } + } + catch ( IOException e ) + { + throw new RuntimeException( e.getMessage(), e ); + } + } +} diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/java/org/apache/archiva/proxy/common/WagonFactoryTest.java b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/java/org/apache/archiva/proxy/common/WagonFactoryTest.java new file mode 100644 index 000000000..f7289383c --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/java/org/apache/archiva/proxy/common/WagonFactoryTest.java @@ -0,0 +1,61 @@ +package org.apache.archiva.proxy.common; + +/* + * 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 junit.framework.TestCase; +import org.apache.archiva.proxy.maven.WagonFactory; +import org.apache.archiva.proxy.maven.WagonFactoryRequest; +import org.apache.archiva.test.utils.ArchivaSpringJUnit4ClassRunner; +import org.apache.maven.wagon.Wagon; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.test.context.ContextConfiguration; + +import javax.inject.Inject; + +/** + * Test the WagonFactory works through Spring to be bound into the RepositoryProxyHandler implementation. + */ +@RunWith ( ArchivaSpringJUnit4ClassRunner.class ) +@ContextConfiguration ( locations = { "classpath*:/META-INF/spring-context.xml" } ) +public class WagonFactoryTest + extends TestCase +{ + + @Inject + WagonFactory factory; + + @Test + public void testLookupSuccessiveWagons() + throws Exception + { + + Wagon first = factory.getWagon( new org.apache.archiva.proxy.maven.WagonFactoryRequest().protocol( "wagon#file" ) ); + + Wagon second = factory.getWagon( new org.apache.archiva.proxy.maven.WagonFactoryRequest().protocol( "wagon#file" ) ); + + // ensure we support only protocol name too + Wagon third = factory.getWagon( new WagonFactoryRequest().protocol( "file" ) ); + + assertNotSame( first, second ); + + assertNotSame( first, third ); + } +} diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/java/org/apache/archiva/repository/mock/ArchivaIndexManagerMock.java b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/java/org/apache/archiva/repository/mock/ArchivaIndexManagerMock.java new file mode 100644 index 000000000..65d8196b9 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/java/org/apache/archiva/repository/mock/ArchivaIndexManagerMock.java @@ -0,0 +1,90 @@ +package org.apache.archiva.repository.mock; + +/* + * 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.archiva.indexer.ArchivaIndexManager; +import org.apache.archiva.indexer.ArchivaIndexingContext; +import org.apache.archiva.indexer.IndexCreationFailedException; +import org.apache.archiva.indexer.IndexUpdateFailedException; +import org.apache.archiva.repository.Repository; +import org.apache.archiva.repository.RepositoryType; +import org.springframework.stereotype.Service; + +import java.net.URI; +import java.util.Collection; + +/** + * @author Martin Stockhammer <martin_s@apache.org> + */ +@Service("archivaIndexManager#maven") +public class ArchivaIndexManagerMock implements ArchivaIndexManager { + + + + @Override + public void pack(ArchivaIndexingContext context) throws IndexUpdateFailedException { + + } + + @Override + public void scan(ArchivaIndexingContext context) throws IndexUpdateFailedException { + + } + + @Override + public void update(ArchivaIndexingContext context, boolean fullUpdate) throws IndexUpdateFailedException { + + } + + @Override + public void addArtifactsToIndex(ArchivaIndexingContext context, Collection<URI> artifactReference) throws IndexUpdateFailedException { + + } + + @Override + public void removeArtifactsFromIndex(ArchivaIndexingContext context, Collection<URI> artifactReference) throws IndexUpdateFailedException { + + } + + @Override + public boolean supportsRepository(RepositoryType type) { + return true; + } + + @Override + public ArchivaIndexingContext createContext(Repository repository) throws IndexCreationFailedException { + return null; + } + + @Override + public ArchivaIndexingContext reset(ArchivaIndexingContext context) throws IndexUpdateFailedException { + return null; + } + + @Override + public ArchivaIndexingContext move(ArchivaIndexingContext context, Repository repo) throws IndexCreationFailedException { + return null; + } + + @Override + public void updateLocalIndexPath(Repository repo) { + + } +} diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/java/org/apache/archiva/repository/mock/ManagedRepositoryContentMock.java b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/java/org/apache/archiva/repository/mock/ManagedRepositoryContentMock.java new file mode 100644 index 000000000..e185c3e73 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/java/org/apache/archiva/repository/mock/ManagedRepositoryContentMock.java @@ -0,0 +1,387 @@ +package org.apache.archiva.repository.mock; + +/* + * 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.archiva.common.utils.VersionUtil; +import org.apache.archiva.metadata.model.ArtifactMetadata; +import org.apache.archiva.metadata.model.maven2.MavenArtifactFacet; +import org.apache.archiva.model.ArchivaArtifact; +import org.apache.archiva.model.ArtifactReference; +import org.apache.archiva.model.ProjectReference; +import org.apache.archiva.model.VersionedReference; +import org.apache.archiva.repository.*; +import org.apache.archiva.repository.content.PathParser; +import org.apache.commons.lang.StringUtils; +import org.springframework.stereotype.Service; + +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.HashMap; +import java.util.Map; +import java.util.Set; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** + * @author Martin Stockhammer <martin_s@apache.org> + */ +@Service("managedRepositoryContent#mock") +public class ManagedRepositoryContentMock implements ManagedRepositoryContent +{ + private static final String PATH_SEPARATOR = "/"; + private static final String GROUP_SEPARATOR = "."; + public static final String MAVEN_METADATA = "maven-metadata.xml"; + + + private ManagedRepository repository; + + ManagedRepositoryContentMock(ManagedRepository repo) { + this.repository = repo; + } + + @Override + public void deleteVersion( VersionedReference reference ) throws ContentNotFoundException + { + + } + + @Override + public void deleteArtifact( ArtifactReference artifactReference ) throws ContentNotFoundException + { + + } + + @Override + public void deleteGroupId( String groupId ) throws ContentNotFoundException + { + + } + + @Override + public void deleteProject( String namespace, String projectId ) throws RepositoryException + { + + } + + @Override + public String getId( ) + { + return repository.getId(); + } + + @Override + public Set<ArtifactReference> getRelatedArtifacts( ArtifactReference reference ) throws ContentNotFoundException + { + return null; + } + + @Override + public String getRepoRoot( ) + { + return Paths.get("", "target", "test-repository", "managed").toString(); + } + + @Override + public ManagedRepository getRepository( ) + { + return repository; + } + + @Override + public Set<String> getVersions( ProjectReference reference ) throws ContentNotFoundException, LayoutException + { + return null; + } + + @Override + public Set<String> getVersions( VersionedReference reference ) throws ContentNotFoundException + { + return null; + } + + @Override + public boolean hasContent( ArtifactReference reference ) + { + return false; + } + + @Override + public boolean hasContent( ProjectReference reference ) + { + return false; + } + + @Override + public boolean hasContent( VersionedReference reference ) + { + return false; + } + + @Override + public void setRepository( ManagedRepository repo ) + { + this.repository = repo; + } + + private Map<ArtifactReference, String> refs = new HashMap<>(); + + @Override + public ArtifactReference toArtifactReference( String path ) throws LayoutException + { + if ( StringUtils.isBlank( path ) ) + { + throw new LayoutException( "Unable to convert blank path." ); + } + + ArtifactMetadata metadata = getArtifactForPath("test-repository", path); + + ArtifactReference artifact = new ArtifactReference(); + artifact.setGroupId( metadata.getNamespace() ); + artifact.setArtifactId( metadata.getProject() ); + artifact.setVersion( metadata.getVersion() ); + MavenArtifactFacet facet = (MavenArtifactFacet) metadata.getFacet( MavenArtifactFacet.FACET_ID ); + if ( facet != null ) + { + artifact.setClassifier( facet.getClassifier() ); + artifact.setType( facet.getType() ); + } + refs.put(artifact, path); + return artifact; + } + + public ArtifactMetadata getArtifactForPath( String repoId, String relativePath ) + { + String[] parts = relativePath.replace( '\\', '/' ).split( "/" ); + + int len = parts.length; + if ( len < 4 ) + { + throw new IllegalArgumentException( + "Not a valid artifact path in a Maven 2 repository, not enough directories: " + relativePath ); + } + + String id = parts[--len]; + String baseVersion = parts[--len]; + String artifactId = parts[--len]; + StringBuilder groupIdBuilder = new StringBuilder(); + for ( int i = 0; i < len - 1; i++ ) + { + groupIdBuilder.append( parts[i] ); + groupIdBuilder.append( '.' ); + } + groupIdBuilder.append( parts[len - 1] ); + + return getArtifactFromId( repoId, groupIdBuilder.toString(), artifactId, baseVersion, id ); + } + + private static final Pattern TIMESTAMP_PATTERN = Pattern.compile( "([0-9]{8}.[0-9]{6})-([0-9]+).*" ); + + + + public ArtifactMetadata getArtifactFromId( String repoId, String namespace, String projectId, String projectVersion, + String id ) + { + if ( !id.startsWith( projectId + "-" ) ) + { + throw new IllegalArgumentException( "Not a valid artifact path in a Maven 2 repository, filename '" + id + + "' doesn't start with artifact ID '" + projectId + "'" ); + } + + MavenArtifactFacet facet = new MavenArtifactFacet(); + + int index = projectId.length() + 1; + String version; + String idSubStrFromVersion = id.substring( index ); + if ( idSubStrFromVersion.startsWith( projectVersion ) && !VersionUtil.isUniqueSnapshot( projectVersion ) ) + { + // non-snapshot versions, or non-timestamped snapshot versions + version = projectVersion; + } + else if ( VersionUtil.isGenericSnapshot( projectVersion ) ) + { + // timestamped snapshots + try + { + int mainVersionLength = projectVersion.length() - 8; // 8 is length of "SNAPSHOT" + if ( mainVersionLength == 0 ) + { + throw new IllegalArgumentException( + "Timestamped snapshots must contain the main version, filename was '" + id + "'" ); + } + + Matcher m = TIMESTAMP_PATTERN.matcher( idSubStrFromVersion.substring( mainVersionLength ) ); + m.matches(); + String timestamp = m.group( 1 ); + String buildNumber = m.group( 2 ); + facet.setTimestamp( timestamp ); + facet.setBuildNumber( Integer.parseInt( buildNumber ) ); + version = idSubStrFromVersion.substring( 0, mainVersionLength ) + timestamp + "-" + buildNumber; + } + catch ( IllegalStateException e ) + { + throw new IllegalArgumentException( "Not a valid artifact path in a Maven 2 repository, filename '" + id + + "' doesn't contain a timestamped version matching snapshot '" + + projectVersion + "'", e); + } + } + else + { + // invalid + throw new IllegalArgumentException( + "Not a valid artifact path in a Maven 2 repository, filename '" + id + "' doesn't contain version '" + + projectVersion + "'" ); + } + + String classifier; + String ext; + index += version.length(); + if ( index == id.length() ) + { + // no classifier or extension + classifier = null; + ext = null; + } + else + { + char c = id.charAt( index ); + if ( c == '-' ) + { + // classifier up until '.' + int extIndex = id.indexOf( '.', index ); + if ( extIndex >= 0 ) + { + classifier = id.substring( index + 1, extIndex ); + ext = id.substring( extIndex + 1 ); + } + else + { + classifier = id.substring( index + 1 ); + ext = null; + } + } + else if ( c == '.' ) + { + // rest is the extension + classifier = null; + ext = id.substring( index + 1 ); + } + else + { + throw new IllegalArgumentException( "Not a valid artifact path in a Maven 2 repository, filename '" + id + + "' expected classifier or extension but got '" + + id.substring( index ) + "'" ); + } + } + + ArtifactMetadata metadata = new ArtifactMetadata(); + metadata.setId( id ); + metadata.setNamespace( namespace ); + metadata.setProject( projectId ); + metadata.setRepositoryId( repoId ); + metadata.setProjectVersion( projectVersion ); + metadata.setVersion( version ); + + facet.setClassifier( classifier ); + + // we use our own provider here instead of directly accessing Maven's artifact handlers as it has no way + // to select the correct order to apply multiple extensions mappings to a preferred type + // TODO: this won't allow the user to decide order to apply them if there are conflicts or desired changes - + // perhaps the plugins could register missing entries in configuration, then we just use configuration + // here? + + String type = null; + + + // use extension as default + if ( type == null ) + { + type = ext; + } + + // TODO: should we allow this instead? + if ( type == null ) + { + throw new IllegalArgumentException( + "Not a valid artifact path in a Maven 2 repository, filename '" + id + "' does not have a type" ); + } + + facet.setType( type ); + metadata.addFacet( facet ); + + return metadata; + } + + + @Override + public Path toFile( ArtifactReference reference ) + { + return Paths.get(getRepoRoot(), refs.get(reference)); + } + + @Override + public Path toFile( ArchivaArtifact reference ) + { + return null; + } + + private String formatAsDirectory( String directory ) + { + return directory.replace( GROUP_SEPARATOR, PATH_SEPARATOR ); + } + + public String toMetadataPath( ProjectReference reference ) + { + StringBuilder path = new StringBuilder(); + + path.append( formatAsDirectory( reference.getGroupId() ) ).append( PATH_SEPARATOR ); + path.append( reference.getArtifactId() ).append( PATH_SEPARATOR ); + path.append( MAVEN_METADATA ); + + return path.toString(); + } + + public String toMetadataPath( VersionedReference reference ) + { + StringBuilder path = new StringBuilder(); + + path.append( formatAsDirectory( reference.getGroupId() ) ).append( PATH_SEPARATOR ); + path.append( reference.getArtifactId() ).append( PATH_SEPARATOR ); + if ( reference.getVersion() != null ) + { + // add the version only if it is present + path.append( VersionUtil.getBaseVersion( reference.getVersion() ) ).append( PATH_SEPARATOR ); + } + path.append( MAVEN_METADATA ); + + return path.toString(); + } + + @Override + public String toPath( ArtifactReference reference ) + { + return null; + } + + @Override + public String toPath( ArchivaArtifact reference ) + { + return null; + } +} diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/java/org/apache/archiva/repository/mock/RemoteRepositoryContentMock.java b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/java/org/apache/archiva/repository/mock/RemoteRepositoryContentMock.java new file mode 100644 index 000000000..4ab4a5aae --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/java/org/apache/archiva/repository/mock/RemoteRepositoryContentMock.java @@ -0,0 +1,92 @@ +package org.apache.archiva.repository.mock; + +/* + * 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.archiva.common.utils.VersionUtil; +import org.apache.archiva.model.ArtifactReference; +import org.apache.archiva.model.RepositoryURL; +import org.apache.archiva.repository.LayoutException; +import org.apache.archiva.repository.RemoteRepository; +import org.apache.archiva.repository.RemoteRepositoryContent; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; + +/** + * @author Martin Stockhammer <martin_s@apache.org> + */ +@Service("remoteRepositoryContent#mock") +public class RemoteRepositoryContentMock implements RemoteRepositoryContent +{ + RemoteRepository repository; + + RemoteRepositoryContentMock(RemoteRepository repo) { + this.repository = repo; + } + + @Override + public String getId( ) + { + return repository.getId(); + } + + @Override + public RemoteRepository getRepository( ) + { + return repository; + } + + @Override + public RepositoryURL getURL( ) + { + return new RepositoryURL(repository.getLocation().toString()); + } + + @Override + public void setRepository( RemoteRepository repo ) + { + this.repository = repo; + } + + @Override + public ArtifactReference toArtifactReference( String path ) throws LayoutException + { + return null; + } + + @Override + public String toPath( ArtifactReference reference ) + { + String baseVersion; + if (VersionUtil.isSnapshot(reference.getVersion())) { + baseVersion=VersionUtil.getBaseVersion(reference.getVersion()); + } else { + baseVersion=reference.getVersion(); + } + return reference.getGroupId().replaceAll("\\.", "/")+"/"+reference.getArtifactId()+"/"+baseVersion+"/" + +reference.getArtifactId()+"-"+reference.getVersion()+( + StringUtils.isNotEmpty(reference.getClassifier()) ? "-"+reference.getClassifier() : "")+"."+reference.getType(); + } + + @Override + public RepositoryURL toURL( ArtifactReference reference ) + { + return null; + } +} diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/java/org/apache/archiva/repository/mock/RepositoryContentProviderMock.java b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/java/org/apache/archiva/repository/mock/RepositoryContentProviderMock.java new file mode 100644 index 000000000..2822ae976 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/java/org/apache/archiva/repository/mock/RepositoryContentProviderMock.java @@ -0,0 +1,66 @@ +package org.apache.archiva.repository.mock; + +/* + * 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.archiva.repository.*; +import org.springframework.stereotype.Service; + +import java.util.HashSet; +import java.util.Set; + +@Service("repositoryContentProvider#mock") +public class RepositoryContentProviderMock implements RepositoryContentProvider { + + private static final Set<RepositoryType> REPOSITORY_TYPES = new HashSet<>(); + static { + REPOSITORY_TYPES.add(RepositoryType.MAVEN); + REPOSITORY_TYPES.add(RepositoryType.NPM); + } + + @Override + public boolean supportsLayout(String layout) { + return true; + } + + @Override + public Set<RepositoryType> getSupportedRepositoryTypes() { + return REPOSITORY_TYPES; + } + + @Override + public boolean supports(RepositoryType type) { + return true; + } + + @Override + public RemoteRepositoryContent createRemoteContent(RemoteRepository repository) throws RepositoryException { + return new RemoteRepositoryContentMock(repository); + } + + @Override + public ManagedRepositoryContent createManagedContent(ManagedRepository repository) throws RepositoryException { + return new ManagedRepositoryContentMock(repository); + } + + @Override + public <T extends RepositoryContent, V extends Repository> T createContent(Class<T> clazz, V repository) throws RepositoryException { + return null; + } +} diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/java/org/apache/archiva/repository/mock/RepositoryProviderMock.java b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/java/org/apache/archiva/repository/mock/RepositoryProviderMock.java new file mode 100644 index 000000000..691d7eefa --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/java/org/apache/archiva/repository/mock/RepositoryProviderMock.java @@ -0,0 +1,240 @@ +package org.apache.archiva.repository.mock; + +/* + * 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.archiva.configuration.ManagedRepositoryConfiguration; +import org.apache.archiva.configuration.RemoteRepositoryConfiguration; +import org.apache.archiva.repository.BasicManagedRepository; +import org.apache.archiva.repository.BasicRemoteRepository; +import org.apache.archiva.repository.EditableManagedRepository; +import org.apache.archiva.repository.EditableRemoteRepository; +import org.apache.archiva.repository.ManagedRepository; +import org.apache.archiva.repository.PasswordCredentials; +import org.apache.archiva.repository.ReleaseScheme; +import org.apache.archiva.repository.RemoteRepository; +import org.apache.archiva.repository.RepositoryCredentials; +import org.apache.archiva.repository.RepositoryEvent; +import org.apache.archiva.repository.RepositoryException; +import org.apache.archiva.repository.RepositoryProvider; +import org.apache.archiva.repository.RepositoryType; +import org.apache.archiva.repository.features.ArtifactCleanupFeature; +import org.apache.archiva.repository.features.IndexCreationFeature; +import org.apache.archiva.repository.features.RemoteIndexFeature; +import org.apache.archiva.repository.features.StagingRepositoryFeature; +import org.springframework.stereotype.Service; + +import java.net.URI; +import java.nio.file.Paths; +import java.time.Duration; +import java.time.Period; +import java.util.HashSet; +import java.util.Set; + +/** + * Just a simple mock class for the repository provider + */ +@Service("mockRepositoryProvider") +public class RepositoryProviderMock implements RepositoryProvider +{ + + private static final Set<RepositoryType> TYPES = new HashSet<>( ); + + static + { + TYPES.add( RepositoryType.MAVEN ); + TYPES.add( RepositoryType.NPM ); + } + + @Override + public Set<RepositoryType> provides( ) + { + return TYPES; + } + + @Override + public EditableManagedRepository createManagedInstance( String id, String name ) + { + return new BasicManagedRepository( id, name , Paths.get("target/repositories")); + } + + @Override + public EditableRemoteRepository createRemoteInstance( String id, String name ) + { + return new BasicRemoteRepository( id, name, Paths.get("target/remotes") ); + } + + @Override + public ManagedRepository createManagedInstance( ManagedRepositoryConfiguration configuration ) throws RepositoryException + { + BasicManagedRepository managedRepository = new BasicManagedRepository( configuration.getId( ), configuration.getName( ) , Paths.get("target/repositories")); + updateManagedInstance( managedRepository, configuration ); + return managedRepository; + } + + + @Override + public void updateManagedInstance( EditableManagedRepository managedRepository, ManagedRepositoryConfiguration configuration ) throws RepositoryException + { + try + { + managedRepository.setName( managedRepository.getPrimaryLocale(), configuration.getName( ) ); + managedRepository.setLocation( new URI( configuration.getLocation( )==null ?"" : configuration.getLocation() ) ); + managedRepository.setBaseUri( new URI( "" ) ); + managedRepository.setBlocksRedeployment( configuration.isBlockRedeployments( ) ); + managedRepository.setDescription( managedRepository.getPrimaryLocale(), configuration.getDescription( ) ); + managedRepository.setLayout( configuration.getLayout( ) ); + managedRepository.setScanned( configuration.isScanned( ) ); + managedRepository.setSchedulingDefinition( configuration.getRefreshCronExpression( ) ); + if (configuration.isReleases()) { + managedRepository.addActiveReleaseScheme( ReleaseScheme.RELEASE ); + } + if (configuration.isSnapshots()) { + managedRepository.addActiveReleaseScheme( ReleaseScheme.SNAPSHOT ); + } + ArtifactCleanupFeature acf = managedRepository.getFeature( ArtifactCleanupFeature.class ).get( ); + acf.setRetentionPeriod( Period.ofDays( configuration.getRetentionPeriod( ) ) ); + acf.setDeleteReleasedSnapshots( configuration.isDeleteReleasedSnapshots( ) ); + acf.setRetentionCount( configuration.getRetentionCount( ) ); + IndexCreationFeature icf = managedRepository.getFeature( IndexCreationFeature.class ).get( ); + icf.setIndexPath( new URI( configuration.getIndexDir( ) ) ); + icf.setSkipPackedIndexCreation( configuration.isSkipPackedIndexCreation( ) ); + StagingRepositoryFeature srf = managedRepository.getFeature( StagingRepositoryFeature.class ).get( ); + srf.setStageRepoNeeded( configuration.isStageRepoNeeded( ) ); + } + catch ( Exception e ) + { + throw new RepositoryException( "Error", e ); + } + + } + + + @Override + public ManagedRepository createStagingInstance( ManagedRepositoryConfiguration configuration ) throws RepositoryException + { + String id = configuration.getId( ) + StagingRepositoryFeature.STAGING_REPO_POSTFIX; + BasicManagedRepository managedRepository = new BasicManagedRepository( id, configuration.getName( ), Paths.get("target/repositories") ); + updateManagedInstance( managedRepository, configuration ); + return managedRepository; + } + + @Override + public RemoteRepository createRemoteInstance( RemoteRepositoryConfiguration configuration ) throws RepositoryException + { + BasicRemoteRepository remoteRepository = new BasicRemoteRepository( configuration.getId( ), configuration.getName( ), Paths.get("target/remotes") ); + updateRemoteInstance( remoteRepository, configuration ); + return remoteRepository; + } + + @SuppressWarnings("unchecked") + @Override + public void updateRemoteInstance( EditableRemoteRepository remoteRepository, RemoteRepositoryConfiguration configuration ) throws RepositoryException + { + try + { + remoteRepository.setName( remoteRepository.getPrimaryLocale(), configuration.getName( ) ); + remoteRepository.setBaseUri( new URI( "" ) ); + remoteRepository.setDescription( remoteRepository.getPrimaryLocale(), configuration.getDescription( ) ); + remoteRepository.setLayout( configuration.getLayout( ) ); + remoteRepository.setSchedulingDefinition( configuration.getRefreshCronExpression( ) ); + remoteRepository.setCheckPath( configuration.getCheckPath( ) ); + remoteRepository.setExtraHeaders( configuration.getExtraHeaders( ) ); + remoteRepository.setExtraParameters( configuration.getExtraParameters( ) ); + remoteRepository.setTimeout( Duration.ofSeconds( configuration.getTimeout( ) ) ); + char[] pwd = configuration.getPassword()==null ? "".toCharArray() : configuration.getPassword().toCharArray(); + remoteRepository.setCredentials( new PasswordCredentials( configuration.getUsername( ), pwd ) ); + remoteRepository.setLocation( new URI( configuration.getUrl( )==null ? "" : configuration.getUrl() ) ); + RemoteIndexFeature rif = remoteRepository.getFeature( RemoteIndexFeature.class ).get( ); + rif.setDownloadRemoteIndexOnStartup( configuration.isDownloadRemoteIndexOnStartup( ) ); + rif.setDownloadRemoteIndex( configuration.isDownloadRemoteIndex( ) ); + rif.setIndexUri( new URI( configuration.getIndexDir( ) ) ); + rif.setDownloadTimeout( Duration.ofSeconds( configuration.getRemoteDownloadTimeout( ) ) ); + rif.setProxyId( configuration.getRemoteDownloadNetworkProxyId( ) ); + IndexCreationFeature icf = remoteRepository.getFeature(IndexCreationFeature.class).get(); + icf.setIndexPath(new URI(".index" )); + } + catch ( Exception e ) + { + throw new RepositoryException( "Error", e ); + } + + } + + @Override + public ManagedRepositoryConfiguration getManagedConfiguration( ManagedRepository managedRepository ) throws RepositoryException + { + ManagedRepositoryConfiguration configuration = new ManagedRepositoryConfiguration( ); + configuration.setId( managedRepository.getId( ) ); + configuration.setName(managedRepository.getName()); + configuration.setLocation( managedRepository.getLocation( ) == null ? "" : managedRepository.getLocation().toString( ) ); + configuration.setBlockRedeployments( managedRepository.blocksRedeployments( ) ); + configuration.setDescription( managedRepository.getDescription( ) ); + configuration.setLayout( managedRepository.getLayout( ) ); + configuration.setScanned( managedRepository.isScanned( ) ); + configuration.setRefreshCronExpression( managedRepository.getSchedulingDefinition( ) ); + configuration.setReleases( managedRepository.getActiveReleaseSchemes().contains(ReleaseScheme.RELEASE) ); + configuration.setSnapshots( managedRepository.getActiveReleaseSchemes().contains(ReleaseScheme.SNAPSHOT) ); + ArtifactCleanupFeature acf = managedRepository.getFeature( ArtifactCleanupFeature.class ).get( ); + configuration.setRetentionPeriod( acf.getRetentionPeriod( ).getDays( ) ); + configuration.setDeleteReleasedSnapshots( acf.isDeleteReleasedSnapshots( ) ); + configuration.setRetentionCount( acf.getRetentionCount( ) ); + IndexCreationFeature icf = managedRepository.getFeature( IndexCreationFeature.class ).get( ); + configuration.setSkipPackedIndexCreation( icf.isSkipPackedIndexCreation( ) ); + configuration.setIndexDir( icf.getIndexPath( ) == null ? "" : icf.getIndexPath().toString( ) ); + StagingRepositoryFeature srf = managedRepository.getFeature( StagingRepositoryFeature.class ).get( ); + configuration.setStageRepoNeeded( srf.isStageRepoNeeded( ) ); + return configuration; + } + + + @Override + public RemoteRepositoryConfiguration getRemoteConfiguration( RemoteRepository remoteRepository ) throws RepositoryException + { + RemoteRepositoryConfiguration configuration = new RemoteRepositoryConfiguration( ); + configuration.setId( remoteRepository.getId( ) ); + configuration.setName( remoteRepository.getName( ) ); + configuration.setDescription( remoteRepository.getDescription( ) ); + configuration.setLayout( remoteRepository.getLayout( ) ); + configuration.setRefreshCronExpression( remoteRepository.getSchedulingDefinition( ) ); + configuration.setCheckPath( remoteRepository.getCheckPath( ) ); + configuration.setExtraHeaders( remoteRepository.getExtraHeaders( ) ); + configuration.setExtraParameters( remoteRepository.getExtraParameters( ) ); + configuration.setTimeout( (int) remoteRepository.getTimeout( ).getSeconds( ) ); + RepositoryCredentials creds = remoteRepository.getLoginCredentials( ); + if (creds!=null) + { + PasswordCredentials pwdCreds = (PasswordCredentials) creds; + configuration.setUsername( pwdCreds.getUsername( ) ); + configuration.setPassword( new String( pwdCreds.getPassword( ) ) ); + } + configuration.setUrl( remoteRepository.getLocation( ) == null ? "" : remoteRepository.getLocation().toString( ) ); + RemoteIndexFeature rif = remoteRepository.getFeature( RemoteIndexFeature.class ).get( ); + configuration.setDownloadRemoteIndex( rif.isDownloadRemoteIndex( ) ); + configuration.setDownloadRemoteIndexOnStartup( rif.isDownloadRemoteIndexOnStartup( ) ); + configuration.setIndexDir( rif.getIndexUri( )==null ? "" : rif.getIndexUri().toString( ) ); + configuration.setRemoteDownloadNetworkProxyId( rif.getProxyId( ) ); + return configuration; + } + + @Override + public <T> void raise(RepositoryEvent<T> event) { + + } +} diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/create-managed-to-proxy-map.sh b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/create-managed-to-proxy-map.sh new file mode 100755 index 000000000..ffaaa584b --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/create-managed-to-proxy-map.sh @@ -0,0 +1,60 @@ +#!/bin/bash + + +MYWD=`pwd` + +function makeListing() +{ + LISTID=$1 + + cd $MYWD/$LISTID + find . -type f -not -wholename "*/\.*" | sort > $MYWD/$LISTID.tmp +} + +function isInRepo() +{ + LISTID=$1 + FILEID=$2 + + grep -q "$FILEID" $MYWD/$LISTID.tmp + RETCODE=$? + if [ $RETCODE -eq 0 ] ; then + LISTID=${LISTID/proxied/} + echo "[${LISTID:0:1}]" + else + echo " " + fi +} + +makeListing "managed" +makeListing "proxied1" +makeListing "proxied2" + +cd $MYWD + +TS=`date` + +echo "$0 - executed on $TS" +echo "" +echo "Determining location of files." +echo " Key: [m] == managed" +echo " [1] == proxy 1 (proxied1)" +echo " [2] == proxy 2 (proxied2)" +echo "" +echo " -m- -1- -2- | -------------------------------------------- " + +FILELIST=`cat managed.tmp proxied1.tmp proxied2.tmp | sort -u` + +for FF in $FILELIST +do + INMANAGED=`isInRepo "managed" "$FF"` + INPROXY1=`isInRepo "proxied1" "$FF"` + INPROXY2=`isInRepo "proxied2" "$FF"` + + echo " $INMANAGED $INPROXY1 $INPROXY2 | $FF" +done + +echo " --- --- --- | -------------------------------------------- " + +rm -f managed.tmp proxied1.tmp proxied2.tmp + diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed-to-proxy-map.txt b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed-to-proxy-map.txt new file mode 100644 index 000000000..3b4967824 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed-to-proxy-map.txt @@ -0,0 +1,89 @@ +./create-managed-to-proxy-map.sh - executed on Wed Aug 29 18:17:23 MST 2007 + +Determining location of files. + Key: [m] == managed + [1] == proxy 1 (proxied1) + [2] == proxy 2 (proxied2) + + -m- -1- -2- | -------------------------------------------- + [m] [1] | ./org/apache/maven/test/get-bad-local-checksum/1.0/get-bad-local-checksum-1.0.jar + [m] | ./org/apache/maven/test/get-bad-local-checksum/1.0/get-bad-local-checksum-1.0.jar.md5 + [m] | ./org/apache/maven/test/get-bad-local-checksum/1.0/get-bad-local-checksum-1.0.jar.sha1 + [1] | ./org/apache/maven/test/get-checksum-both-bad/1.0/get-checksum-both-bad-1.0.jar + [1] | ./org/apache/maven/test/get-checksum-both-bad/1.0/get-checksum-both-bad-1.0.jar.md5 + [1] | ./org/apache/maven/test/get-checksum-both-bad/1.0/get-checksum-both-bad-1.0.jar.sha1 + [1] | ./org/apache/maven/test/get-checksum-both-right/1.0/get-checksum-both-right-1.0.jar + [1] | ./org/apache/maven/test/get-checksum-both-right/1.0/get-checksum-both-right-1.0.jar.md5 + [1] | ./org/apache/maven/test/get-checksum-both-right/1.0/get-checksum-both-right-1.0.jar.sha1 + [m] [1] | ./org/apache/maven/test/get-checksum-from-managed-repo/1.0/get-checksum-from-managed-repo-1.0.jar.sha1 + [1] | ./org/apache/maven/test/get-checksum-md5-bad-sha1/1.0/get-checksum-md5-bad-sha1-1.0.jar + [1] | ./org/apache/maven/test/get-checksum-md5-bad-sha1/1.0/get-checksum-md5-bad-sha1-1.0.jar.md5 + [1] | ./org/apache/maven/test/get-checksum-md5-bad-sha1/1.0/get-checksum-md5-bad-sha1-1.0.jar.sha1 + [1] | ./org/apache/maven/test/get-checksum-md5-only/1.0/get-checksum-md5-only-1.0.jar + [1] | ./org/apache/maven/test/get-checksum-md5-only/1.0/get-checksum-md5-only-1.0.jar.md5 + [1] | ./org/apache/maven/test/get-checksum-sha1-bad-md5/1.0/get-checksum-sha1-bad-md5-1.0.jar + [1] | ./org/apache/maven/test/get-checksum-sha1-bad-md5/1.0/get-checksum-sha1-bad-md5-1.0.jar.md5 + [1] | ./org/apache/maven/test/get-checksum-sha1-bad-md5/1.0/get-checksum-sha1-bad-md5-1.0.jar.sha1 + [1] | ./org/apache/maven/test/get-checksum-sha1-only/1.0/get-checksum-sha1-only-1.0.jar + [1] | ./org/apache/maven/test/get-checksum-sha1-only/1.0/get-checksum-sha1-only-1.0.jar.sha1 + [2] | ./org/apache/maven/test/get-default-layout/1.0.1/get-default-layout-1.0.1.pom + [1] [2] | ./org/apache/maven/test/get-default-layout/1.0/get-default-layout-1.0.jar + [1] [2] | ./org/apache/maven/test/get-default-layout/1.0/maven-metadata.xml + [1] [2] | ./org/apache/maven/test/get-default-layout/maven-metadata.xml + [m] [1] | ./org/apache/maven/test/get-default-layout-present/1.0/get-default-layout-present-1.0.jar + [m] | ./org/apache/maven/test/get-default-layout-present/1.0/get-default-layout-present-1.0.jar.md5 + [m] | ./org/apache/maven/test/get-default-layout-present-with-pom/1.0/get-default-layout-present-with-pom-1.0.jar + [m] | ./org/apache/maven/test/get-default-layout-present-with-pom/1.0/get-default-layout-present-with-pom-1.0.pom + [m] | ./org/apache/maven/test/get-default-metadata/1.0/get-default-metadata-1.0.jar + [m] [1] | ./org/apache/maven/test/get-default-metadata/1.0/maven-metadata.xml + [m] | ./org/apache/maven/test/get-doubly-relocated-artefact/1.0/get-doubly-relocated-artefact-1.0.pom + [1] | ./org/apache/maven/test/get-found-in-proxy/1.0.5/get-found-in-proxy-1.0.5-javadoc.jar + [1] | ./org/apache/maven/test/get-found-in-proxy/maven-metadata.xml + [1] [2] | ./org/apache/maven/test/get-in-both-proxies/1.0/get-in-both-proxies-1.0.jar + [2] | ./org/apache/maven/test/get-in-second-proxy/1.0/get-in-second-proxy-1.0.jar + [m] [1] [2] | ./org/apache/maven/test/get-merged-metadata/maven-metadata.xml + [1] | ./org/apache/maven/test/get-metadata-snapshot/1.0-SNAPSHOT/get-metadata-snapshot-1.0-20050831.101112-1.jar + [1] | ./org/apache/maven/test/get-metadata-snapshot/1.0-SNAPSHOT/maven-metadata.xml + [m] | ./org/apache/maven/test/get-not-on-remotes/1.0-beta-2/get-not-on-remotes-1.0-beta-2.jar + [m] | ./org/apache/maven/test/get-not-on-remotes/1.0-beta-2/maven-metadata.xml + [m] | ./org/apache/maven/test/get-not-on-remotes/maven-metadata.xml + [m] | ./org/apache/maven/test/get-on-local-on-remote/1.0.22/get-on-local-on-remote-1.0.22.pom + [m] [1] | ./org/apache/maven/test/get-on-local-on-remote/1.0.22/maven-metadata.xml + [m] | ./org/apache/maven/test/get-on-local-on-remote/1.0.8/get-on-local-on-remote-1.0.8.pom + [m] [1] | ./org/apache/maven/test/get-on-local-on-remote/maven-metadata.xml + [m] | ./org/apache/maven/test/get-on-multiple-repos/1.0/get-on-multiple-repos-1.0.pom + [m] [1] [2] | ./org/apache/maven/test/get-on-multiple-repos/1.0/maven-metadata.xml + [m] [1] [2] | ./org/apache/maven/test/get-on-multiple-repos/maven-metadata.xml + [m] [1] | ./org/apache/maven/test/get-present-metadata-snapshot/1.0-SNAPSHOT/get-present-metadata-snapshot-1.0-20050831.101112-1.jar + [m] [1] | ./org/apache/maven/test/get-present-metadata-snapshot/1.0-SNAPSHOT/maven-metadata.xml + [m] [1] | ./org/apache/maven/test/get-present-timestamped-snapshot/1.0-SNAPSHOT/get-present-timestamped-snapshot-1.0-SNAPSHOT.jar + [m] | ./org/apache/maven/test/get-project-metadata/1.0/get-project-metadata-1.0.jar + [m] | ./org/apache/maven/test/get-project-metadata/1.1/get-project-metadata-1.1.jar + [m] | ./org/apache/maven/test/get-project-metadata/2.0/get-project-metadata-2.0.pom + [m] | ./org/apache/maven/test/get-project-metadata/maven-metadata.xml + [m] | ./org/apache/maven/test/get-release-metadata/2.2/get-release-metadata-2.2.jar + [m] | ./org/apache/maven/test/get-release-metadata/2.2/maven-metadata.xml + [m] | ./org/apache/maven/test/get-relocated-artefact/1.0/get-relocated-artefact-1.0.pom + [m] | ./org/apache/maven/test/get-relocated-artefact-with-pom/1.0/get-relocated-artefact-with-pom-1.0.pom + [m] | ./org/apache/maven/test/get-removed-from-proxies/1.0/get-removed-from-proxies-1.0.jar + [m] | ./org/apache/maven/test/get-removed-metadata/1.0/maven-metadata.xml + [m] | ./org/apache/maven/test/get-snapshot-on-local-not-remote/2.0-alpha-2-SNAPSHOT/get-snapshot-on-local-not-remote-2.0-alpha-2-20070821.123456-1.jar + [m] | ./org/apache/maven/test/get-snapshot-on-local-not-remote/2.0-alpha-2-SNAPSHOT/get-snapshot-on-local-not-remote-2.0-alpha-2-20070821.220304-2.jar + [m] | ./org/apache/maven/test/get-snapshot-on-local-not-remote/2.0-alpha-2-SNAPSHOT/maven-metadata.xml + [1] | ./org/apache/maven/test/get-snapshot-popular/2.0-SNAPSHOT/get-snapshot-popular-2.0-20070819.040004-1.jar + [m] [2] | ./org/apache/maven/test/get-snapshot-popular/2.0-SNAPSHOT/get-snapshot-popular-2.0-20070821.102030-1.jar + [m] | ./org/apache/maven/test/get-snapshot-popular/2.0-SNAPSHOT/get-snapshot-popular-2.0-20070821.185701-2.jar + [m] | ./org/apache/maven/test/get-snapshot-popular/2.0-SNAPSHOT/get-snapshot-popular-2.0-20070822.021008-3.jar + [1] | ./org/apache/maven/test/get-snapshot-popular/2.0-SNAPSHOT/get-snapshot-popular-2.0-20070822.145534-9.jar + [2] | ./org/apache/maven/test/get-snapshot-popular/2.0-SNAPSHOT/get-snapshot-popular-2.0-20070823.111741-5.jar + [2] | ./org/apache/maven/test/get-snapshot-popular/2.0-SNAPSHOT/get-snapshot-popular-2.0-20070823.212711-6.jar + [m] [1] [2] | ./org/apache/maven/test/get-snapshot-popular/2.0-SNAPSHOT/maven-metadata.xml + [1] | ./org/apache/maven/test/get-timestamped-snapshot/1.0-SNAPSHOT/get-timestamped-snapshot-1.0-SNAPSHOT.jar + [1] [2] | ./org/apache/maven/test/get-timestamped-snapshot-in-both/1.0-SNAPSHOT/get-timestamped-snapshot-in-both-1.0-20061222.034118-1.jar + [1] | ./org/apache/maven/test/get-timestamped-snapshot-in-both/1.0-SNAPSHOT/get-timestamped-snapshot-in-both-1.0-20061227.112101-2.jar + [2] | ./org/apache/maven/test/get-timestamped-snapshot-in-both/1.0-SNAPSHOT/get-timestamped-snapshot-in-both-1.0-20070101.000103-2.jar + [1] [2] | ./org/apache/maven/test/get-timestamped-snapshot-in-both/1.0-SNAPSHOT/get-timestamped-snapshot-in-both-1.0-SNAPSHOT.jar + [1] [2] | ./org/apache/maven/test/get-timestamped-snapshot-in-both/1.0-SNAPSHOT/maven-metadata.xml + [m] [1] | ./org/apache/maven/test/get-updated-metadata/1.0-SNAPSHOT/maven-metadata.xml + [m] [1] | ./org/apache/maven/test/get-updated-metadata/maven-metadata.xml + --- --- --- | -------------------------------------------- diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-bad-local-checksum/1.0/get-bad-local-checksum-1.0.jar b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-bad-local-checksum/1.0/get-bad-local-checksum-1.0.jar new file mode 100644 index 000000000..62a1e1c71 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-bad-local-checksum/1.0/get-bad-local-checksum-1.0.jar @@ -0,0 +1,3 @@ +get-bad-local-checksum-1.0.jar
+(managed)
+
diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-bad-local-checksum/1.0/get-bad-local-checksum-1.0.jar.md5 b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-bad-local-checksum/1.0/get-bad-local-checksum-1.0.jar.md5 new file mode 100644 index 000000000..5fd0ae2b7 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-bad-local-checksum/1.0/get-bad-local-checksum-1.0.jar.md5 @@ -0,0 +1 @@ +invalid checksum file
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-bad-local-checksum/1.0/get-bad-local-checksum-1.0.jar.sha1 b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-bad-local-checksum/1.0/get-bad-local-checksum-1.0.jar.sha1 new file mode 100644 index 000000000..5fd0ae2b7 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-bad-local-checksum/1.0/get-bad-local-checksum-1.0.jar.sha1 @@ -0,0 +1 @@ +invalid checksum file
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-checksum-from-managed-repo/1.0/get-checksum-from-managed-repo-1.0.jar.sha1 b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-checksum-from-managed-repo/1.0/get-checksum-from-managed-repo-1.0.jar.sha1 new file mode 100644 index 000000000..5558e53ee --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-checksum-from-managed-repo/1.0/get-checksum-from-managed-repo-1.0.jar.sha1 @@ -0,0 +1 @@ +066d76e459f7782c312c31e8a11b3c0f1e3e43a7 *get-checksum-from-managed-repo-1.0.jar diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-default-layout-present-with-pom/1.0/get-default-layout-present-with-pom-1.0.jar b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-default-layout-present-with-pom/1.0/get-default-layout-present-with-pom-1.0.jar new file mode 100644 index 000000000..a3b38382c --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-default-layout-present-with-pom/1.0/get-default-layout-present-with-pom-1.0.jar @@ -0,0 +1,3 @@ +get-default-layout-present-1.0.jar +(managed) + diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-default-layout-present-with-pom/1.0/get-default-layout-present-with-pom-1.0.pom b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-default-layout-present-with-pom/1.0/get-default-layout-present-with-pom-1.0.pom new file mode 100644 index 000000000..b2f94e307 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-default-layout-present-with-pom/1.0/get-default-layout-present-with-pom-1.0.pom @@ -0,0 +1,24 @@ +<!-- + ~ 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> + <groupId>org.apache.maven.test</groupId> + <artifactId>get-default-layout-present-with-pom</artifactId> + <version>1.0</version> +</project> diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-default-layout-present/1.0/get-default-layout-present-1.0.jar b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-default-layout-present/1.0/get-default-layout-present-1.0.jar new file mode 100644 index 000000000..a3b38382c --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-default-layout-present/1.0/get-default-layout-present-1.0.jar @@ -0,0 +1,3 @@ +get-default-layout-present-1.0.jar +(managed) + diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-default-layout-present/1.0/get-default-layout-present-1.0.jar.asc b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-default-layout-present/1.0/get-default-layout-present-1.0.jar.asc new file mode 100644 index 000000000..c3f4c234e --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-default-layout-present/1.0/get-default-layout-present-1.0.jar.asc @@ -0,0 +1,7 @@ +-----BEGIN PGP SIGNATURE----- +Version: GnuPG v1.4.8 (Darwin) + +iEYEABECAAYFAkiAQxIACgkQTusOMqfRa9T2xACfcvI2fjAXoAHGwJm0zXPJ2rWW +OPoAn23dSOEJhyNUY2hgUlH2wSQiADeP +=ZOwh +-----END PGP SIGNATURE----- diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-default-layout-present/1.0/get-default-layout-present-1.0.jar.md5 b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-default-layout-present/1.0/get-default-layout-present-1.0.jar.md5 new file mode 100644 index 000000000..b597d8ce4 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-default-layout-present/1.0/get-default-layout-present-1.0.jar.md5 @@ -0,0 +1 @@ +7dfb7ade9a8fa90bfbfac52d3090b8c2 *get-default-layout-present-1.0.jar diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-default-metadata/1.0/get-default-metadata-1.0.jar b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-default-metadata/1.0/get-default-metadata-1.0.jar new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-default-metadata/1.0/get-default-metadata-1.0.jar diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-default-metadata/1.0/maven-metadata.xml b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-default-metadata/1.0/maven-metadata.xml new file mode 100644 index 000000000..e008e501c --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-default-metadata/1.0/maven-metadata.xml @@ -0,0 +1,24 @@ +<!-- + ~ 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.test</groupId> + <artifactId>get-default-metadata</artifactId> + <version>1.0</version> +</metadata> diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-doubly-relocated-artefact/1.0/get-doubly-relocated-artefact-1.0.pom b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-doubly-relocated-artefact/1.0/get-doubly-relocated-artefact-1.0.pom new file mode 100644 index 000000000..f8c149eb6 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-doubly-relocated-artefact/1.0/get-doubly-relocated-artefact-1.0.pom @@ -0,0 +1,32 @@ +<!-- + ~ 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> + <modelVersion>4.0.0</modelVersion> + <groupId>org.apache.maven.test</groupId> + <artifactId>get-doubly-relocated-artefact</artifactId> + <version>1.0</version> + + <distributionManagement> + <relocation> + <artifactId>get-relocated-artefact</artifactId> + </relocation> + </distributionManagement> + +</project>
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-merged-metadata/maven-metadata.xml b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-merged-metadata/maven-metadata.xml new file mode 100644 index 000000000..00af1a181 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-merged-metadata/maven-metadata.xml @@ -0,0 +1,33 @@ +<!-- + ~ 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.test</groupId> + <artifactId>get-merged-metadata</artifactId> + <versioning> + <versions> + <version>0.9</version> + <!-- unique --> + <version>1.0</version> + <!-- merged with proxied2 --> + <version>2.0</version> + <!-- merged with proxied1 --> + </versions> + </versioning> +</metadata>
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-not-on-remotes/1.0-beta-2/get-not-on-remotes-1.0-beta-2.jar b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-not-on-remotes/1.0-beta-2/get-not-on-remotes-1.0-beta-2.jar new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-not-on-remotes/1.0-beta-2/get-not-on-remotes-1.0-beta-2.jar diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-not-on-remotes/1.0-beta-2/maven-metadata.xml b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-not-on-remotes/1.0-beta-2/maven-metadata.xml new file mode 100644 index 000000000..965b836c0 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-not-on-remotes/1.0-beta-2/maven-metadata.xml @@ -0,0 +1,24 @@ +<!-- + ~ 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.test</groupId> + <artifactId>get-not-on-remotes</artifactId> + <version>1.0-beta-2</version> +</metadata> diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-not-on-remotes/maven-metadata.xml b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-not-on-remotes/maven-metadata.xml new file mode 100644 index 000000000..4eef73fd4 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-not-on-remotes/maven-metadata.xml @@ -0,0 +1,28 @@ +<!-- + ~ 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.test</groupId> + <artifactId>get-not-on-remotes</artifactId> + <versioning> + <versions> + <version>1.0-beta-2</version> + </versions> + </versioning> +</metadata> diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-on-local-on-remote/1.0.22/get-on-local-on-remote-1.0.22.pom b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-on-local-on-remote/1.0.22/get-on-local-on-remote-1.0.22.pom new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-on-local-on-remote/1.0.22/get-on-local-on-remote-1.0.22.pom diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-on-local-on-remote/1.0.22/maven-metadata.xml b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-on-local-on-remote/1.0.22/maven-metadata.xml new file mode 100644 index 000000000..6fece769d --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-on-local-on-remote/1.0.22/maven-metadata.xml @@ -0,0 +1,24 @@ +<!-- + ~ 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.test</groupId> + <artifactId>get-on-local-on-remote</artifactId> + <version>1.0.22</version> +</metadata> diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-on-local-on-remote/1.0.8/get-on-local-on-remote-1.0.8.pom b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-on-local-on-remote/1.0.8/get-on-local-on-remote-1.0.8.pom new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-on-local-on-remote/1.0.8/get-on-local-on-remote-1.0.8.pom diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-on-local-on-remote/maven-metadata.xml b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-on-local-on-remote/maven-metadata.xml new file mode 100644 index 000000000..9ae11e4d7 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-on-local-on-remote/maven-metadata.xml @@ -0,0 +1,29 @@ +<!-- + ~ 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.test</groupId> + <artifactId>get-on-local-on-remote</artifactId> + <versioning> + <versions> + <version>1.0.8</version> + <version>1.0.22</version> + </versions> + </versioning> +</metadata> diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-on-multiple-repos/1.0/get-on-multiple-repos-1.0.pom b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-on-multiple-repos/1.0/get-on-multiple-repos-1.0.pom new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-on-multiple-repos/1.0/get-on-multiple-repos-1.0.pom diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-on-multiple-repos/1.0/maven-metadata.xml b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-on-multiple-repos/1.0/maven-metadata.xml new file mode 100644 index 000000000..6bfd5dd9a --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-on-multiple-repos/1.0/maven-metadata.xml @@ -0,0 +1,24 @@ +<!-- + ~ 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.test</groupId> + <artifactId>get-on-multiple-repos</artifactId> + <version>1.0</version> +</metadata> diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-on-multiple-repos/maven-metadata.xml b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-on-multiple-repos/maven-metadata.xml new file mode 100644 index 000000000..04b49855d --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-on-multiple-repos/maven-metadata.xml @@ -0,0 +1,28 @@ +<!-- + ~ 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.test</groupId> + <artifactId>get-on-multiple-repos</artifactId> + <versioning> + <versions> + <version>1.0</version> + </versions> + </versioning> +</metadata> diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-present-metadata-snapshot/1.0-SNAPSHOT/get-present-metadata-snapshot-1.0-20050831.101112-1.jar b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-present-metadata-snapshot/1.0-SNAPSHOT/get-present-metadata-snapshot-1.0-20050831.101112-1.jar new file mode 100644 index 000000000..b71eb7b74 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-present-metadata-snapshot/1.0-SNAPSHOT/get-present-metadata-snapshot-1.0-20050831.101112-1.jar @@ -0,0 +1,2 @@ +get-present-metadata-snapshot-1.0-20050831.101112-1.jar
+(managed)
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-present-metadata-snapshot/1.0-SNAPSHOT/maven-metadata.xml b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-present-metadata-snapshot/1.0-SNAPSHOT/maven-metadata.xml new file mode 100644 index 000000000..dd7496af5 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-present-metadata-snapshot/1.0-SNAPSHOT/maven-metadata.xml @@ -0,0 +1,31 @@ +<!-- + ~ 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.test</groupId> + <artifactId>get-present-metadata-snapshot</artifactId> + <version>1.0-SNAPSHOT</version> + <versioning> + <snapshot> + <timestamp>20050831.101112</timestamp> + <buildNumber>1</buildNumber> + </snapshot> + <lastUpdated>20050831101112</lastUpdated> + </versioning> +</metadata> diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-present-timestamped-snapshot/1.0-SNAPSHOT/get-present-timestamped-snapshot-1.0-SNAPSHOT.jar b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-present-timestamped-snapshot/1.0-SNAPSHOT/get-present-timestamped-snapshot-1.0-SNAPSHOT.jar new file mode 100644 index 000000000..0c2d93e3c --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-present-timestamped-snapshot/1.0-SNAPSHOT/get-present-timestamped-snapshot-1.0-SNAPSHOT.jar @@ -0,0 +1,2 @@ +get-present-timestamped-snapshot-1.0-SNAPSHOT.jar
+(managed)
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-project-metadata/1.0/get-project-metadata-1.0.jar b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-project-metadata/1.0/get-project-metadata-1.0.jar new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-project-metadata/1.0/get-project-metadata-1.0.jar diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-project-metadata/1.1/get-project-metadata-1.1.jar b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-project-metadata/1.1/get-project-metadata-1.1.jar new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-project-metadata/1.1/get-project-metadata-1.1.jar diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-project-metadata/2.0/get-project-metadata-2.0.pom b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-project-metadata/2.0/get-project-metadata-2.0.pom new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-project-metadata/2.0/get-project-metadata-2.0.pom diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-project-metadata/maven-metadata.xml b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-project-metadata/maven-metadata.xml new file mode 100644 index 000000000..a9fd6ef34 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-project-metadata/maven-metadata.xml @@ -0,0 +1,28 @@ +<!-- + ~ 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.test</groupId> + <artifactId>get-project-metadata</artifactId> + <versioning> + <versions> + <version>1.0</version> + </versions> + </versioning> +</metadata> diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-release-metadata/2.2/get-release-metadata-2.2.jar b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-release-metadata/2.2/get-release-metadata-2.2.jar new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-release-metadata/2.2/get-release-metadata-2.2.jar diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-release-metadata/2.2/maven-metadata.xml b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-release-metadata/2.2/maven-metadata.xml new file mode 100644 index 000000000..8fc2a153f --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-release-metadata/2.2/maven-metadata.xml @@ -0,0 +1,24 @@ +<!-- + ~ 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.test</groupId> + <artifactId>get-release-metadata</artifactId> + <version>2.2</version> +</metadata> diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-relocated-artefact-with-pom/1.0/get-relocated-artefact-with-pom-1.0.pom b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-relocated-artefact-with-pom/1.0/get-relocated-artefact-with-pom-1.0.pom new file mode 100644 index 000000000..384f369f5 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-relocated-artefact-with-pom/1.0/get-relocated-artefact-with-pom-1.0.pom @@ -0,0 +1,32 @@ +<!-- + ~ 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> + <modelVersion>4.0.0</modelVersion> + <groupId>org.apache.maven.test</groupId> + <artifactId>get-relocated-artefact-with-pom</artifactId> + <version>1.0</version> + + <distributionManagement> + <relocation> + <artifactId>get-default-layout-present-with-pom</artifactId> + </relocation> + </distributionManagement> + +</project>
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-relocated-artefact/1.0/get-relocated-artefact-1.0.pom b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-relocated-artefact/1.0/get-relocated-artefact-1.0.pom new file mode 100644 index 000000000..ae50586ec --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-relocated-artefact/1.0/get-relocated-artefact-1.0.pom @@ -0,0 +1,32 @@ +<!-- + ~ 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> + <modelVersion>4.0.0</modelVersion> + <groupId>org.apache.maven.test</groupId> + <artifactId>get-relocated-artefact</artifactId> + <version>1.0</version> + + <distributionManagement> + <relocation> + <artifactId>get-default-layout-present</artifactId> + </relocation> + </distributionManagement> + +</project>
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-removed-from-proxies/1.0/get-removed-from-proxies-1.0.jar b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-removed-from-proxies/1.0/get-removed-from-proxies-1.0.jar new file mode 100644 index 000000000..54dc5ee86 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-removed-from-proxies/1.0/get-removed-from-proxies-1.0.jar @@ -0,0 +1,3 @@ +get-removed-from-proxies-1.0.jar +(managed) + diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-removed-metadata/1.0/maven-metadata.xml b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-removed-metadata/1.0/maven-metadata.xml new file mode 100644 index 000000000..f2c41db2e --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-removed-metadata/1.0/maven-metadata.xml @@ -0,0 +1,22 @@ +<!-- + ~ 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> + +</metadata>
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-snapshot-on-local-not-remote/2.0-alpha-2-SNAPSHOT/get-snapshot-on-local-not-remote-2.0-alpha-2-20070821.123456-1.jar b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-snapshot-on-local-not-remote/2.0-alpha-2-SNAPSHOT/get-snapshot-on-local-not-remote-2.0-alpha-2-20070821.123456-1.jar new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-snapshot-on-local-not-remote/2.0-alpha-2-SNAPSHOT/get-snapshot-on-local-not-remote-2.0-alpha-2-20070821.123456-1.jar diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-snapshot-on-local-not-remote/2.0-alpha-2-SNAPSHOT/get-snapshot-on-local-not-remote-2.0-alpha-2-20070821.220304-2.jar b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-snapshot-on-local-not-remote/2.0-alpha-2-SNAPSHOT/get-snapshot-on-local-not-remote-2.0-alpha-2-20070821.220304-2.jar new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-snapshot-on-local-not-remote/2.0-alpha-2-SNAPSHOT/get-snapshot-on-local-not-remote-2.0-alpha-2-20070821.220304-2.jar diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-snapshot-on-local-not-remote/2.0-alpha-2-SNAPSHOT/maven-metadata.xml b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-snapshot-on-local-not-remote/2.0-alpha-2-SNAPSHOT/maven-metadata.xml new file mode 100644 index 000000000..55e1f3039 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-snapshot-on-local-not-remote/2.0-alpha-2-SNAPSHOT/maven-metadata.xml @@ -0,0 +1,31 @@ +<!-- + ~ 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.test</groupId> + <artifactId>get-snapshot-on-local-not-remote</artifactId> + <version>2.0-alpha-2-SNAPSHOT</version> + <versioning> + <snapshot> + <timestamp>20070821.220304</timestamp> + <buildNumber>2</buildNumber> + </snapshot> + <lastUpdated>20070821220304</lastUpdated> + </versioning> +</metadata> diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-snapshot-popular/2.0-SNAPSHOT/get-snapshot-popular-2.0-20070821.102030-1.jar b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-snapshot-popular/2.0-SNAPSHOT/get-snapshot-popular-2.0-20070821.102030-1.jar new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-snapshot-popular/2.0-SNAPSHOT/get-snapshot-popular-2.0-20070821.102030-1.jar diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-snapshot-popular/2.0-SNAPSHOT/get-snapshot-popular-2.0-20070821.185701-2.jar b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-snapshot-popular/2.0-SNAPSHOT/get-snapshot-popular-2.0-20070821.185701-2.jar new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-snapshot-popular/2.0-SNAPSHOT/get-snapshot-popular-2.0-20070821.185701-2.jar diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-snapshot-popular/2.0-SNAPSHOT/get-snapshot-popular-2.0-20070822.021008-3.jar b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-snapshot-popular/2.0-SNAPSHOT/get-snapshot-popular-2.0-20070822.021008-3.jar new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-snapshot-popular/2.0-SNAPSHOT/get-snapshot-popular-2.0-20070822.021008-3.jar diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-snapshot-popular/2.0-SNAPSHOT/maven-metadata.xml b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-snapshot-popular/2.0-SNAPSHOT/maven-metadata.xml new file mode 100644 index 000000000..55e253e89 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-snapshot-popular/2.0-SNAPSHOT/maven-metadata.xml @@ -0,0 +1,31 @@ +<!-- + ~ 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.test</groupId> + <artifactId>get-snapshot-popular</artifactId> + <version>2.0-SNAPSHOT</version> + <versioning> + <snapshot> + <timestamp>20070822.021008</timestamp> + <buildNumber>3</buildNumber> + </snapshot> + <lastUpdated>20070822021008</lastUpdated> + </versioning> +</metadata> diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-updated-metadata/.metadata-proxied1 b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-updated-metadata/.metadata-proxied1 new file mode 100644 index 000000000..2a83df1ce --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-updated-metadata/.metadata-proxied1 @@ -0,0 +1,25 @@ +<!-- + ~ Copyright 2005-2006 The Apache Software Foundation. + ~ + ~ Licensed under the Apache License, Version 2.0 (the "License"); + ~ you may not use this file except in compliance with the License. + ~ You may obtain a copy of the License at + ~ + ~ http://www.apache.org/licenses/LICENSE-2.0 + ~ + ~ Unless required by applicable law or agreed to in writing, software + ~ distributed under the License is distributed on an "AS IS" BASIS, + ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + ~ See the License for the specific language governing permissions and + ~ limitations under the License. + --> + +<metadata> + <groupId>org.apache.maven.test</groupId> + <artifactId>get-updated-metadata</artifactId> + <versioning> + <versions> + <version>1.0</version> + </versions> + </versioning> +</metadata> diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-updated-metadata/1.0-SNAPSHOT/.metadata-proxied1 b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-updated-metadata/1.0-SNAPSHOT/.metadata-proxied1 new file mode 100644 index 000000000..cd7216a64 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-updated-metadata/1.0-SNAPSHOT/.metadata-proxied1 @@ -0,0 +1,27 @@ +<!-- + ~ Copyright 2005-2006 The Apache Software Foundation. + ~ + ~ Licensed under the Apache License, Version 2.0 (the "License"); + ~ you may not use this file except in compliance with the License. + ~ You may obtain a copy of the License at + ~ + ~ http://www.apache.org/licenses/LICENSE-2.0 + ~ + ~ Unless required by applicable law or agreed to in writing, software + ~ distributed under the License is distributed on an "AS IS" BASIS, + ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + ~ See the License for the specific language governing permissions and + ~ limitations under the License. + --> + +<metadata> + <groupId>org.apache.maven.test</groupId> + <artifactId>get-updated-metadata</artifactId> + <version>1.0-SNAPSHOT</version> + <versioning> + <snapshot> + <timestamp>20050831.1011112</timestamp> + <buildNumber>1</buildNumber> + </snapshot> + </versioning> +</metadata>
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-updated-metadata/1.0-SNAPSHOT/maven-metadata.xml b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-updated-metadata/1.0-SNAPSHOT/maven-metadata.xml new file mode 100644 index 000000000..e9830b0fb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-updated-metadata/1.0-SNAPSHOT/maven-metadata.xml @@ -0,0 +1,30 @@ +<!-- + ~ 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.test</groupId> + <artifactId>get-updated-metadata</artifactId> + <version>1.0-SNAPSHOT</version> + <versioning> + <snapshot> + <timestamp>20050831.1011112</timestamp> + <buildNumber>1</buildNumber> + </snapshot> + </versioning> +</metadata>
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-updated-metadata/maven-metadata.xml b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-updated-metadata/maven-metadata.xml new file mode 100644 index 000000000..242873e10 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/get-updated-metadata/maven-metadata.xml @@ -0,0 +1,28 @@ +<!-- + ~ 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.test</groupId> + <artifactId>get-updated-metadata</artifactId> + <versioning> + <versions> + <version>1.0</version> + </versions> + </versioning> +</metadata>
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/groups/get-not-on-remotes/maven-metadata.xml b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/groups/get-not-on-remotes/maven-metadata.xml new file mode 100644 index 000000000..6053adcf4 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/groups/get-not-on-remotes/maven-metadata.xml @@ -0,0 +1,29 @@ +<!-- + ~ 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.test.groups.get-not-on-remotes</groupId> + <plugins> + <plugin> + <prefix>plugin5</prefix> + <artifactId>plugin5-maven-plugin</artifactId> + <name>The plugin5 Plugin</name> + </plugin> + </plugins> +</metadata> diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/groups/get-on-local-on-remote/maven-metadata.xml b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/groups/get-on-local-on-remote/maven-metadata.xml new file mode 100644 index 000000000..14196bdc1 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/groups/get-on-local-on-remote/maven-metadata.xml @@ -0,0 +1,34 @@ +<!-- + ~ 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.test.groups.get-on-local-on-remote</groupId> + <plugins> + <plugin> + <prefix>plugin6</prefix> + <artifactId>plugin6-maven-plugin</artifactId> + <name>The plugin6 Plugin</name> + </plugin> + <plugin> + <prefix>plugin7</prefix> + <artifactId>plugin7-maven-plugin</artifactId> + <name>The plugin7 Plugin</name> + </plugin> + </plugins> +</metadata> diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/groups/get-on-multiple-repos/maven-metadata.xml b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/groups/get-on-multiple-repos/maven-metadata.xml new file mode 100644 index 000000000..a04428913 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/groups/get-on-multiple-repos/maven-metadata.xml @@ -0,0 +1,29 @@ +<!-- + ~ 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.test.groups.get-on-multiple-repos</groupId> + <plugins> + <plugin> + <prefix>plugin1</prefix> + <artifactId>plugin1-maven-plugin</artifactId> + <name>The plugin1 Plugin</name> + </plugin> + </plugins> +</metadata> diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/groups/get-project-metadata/maven-metadata.xml b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/groups/get-project-metadata/maven-metadata.xml new file mode 100644 index 000000000..e0829c112 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/managed/org/apache/maven/test/groups/get-project-metadata/maven-metadata.xml @@ -0,0 +1,29 @@ +<!-- + ~ 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.test.groups.get-project-metadata</groupId> + <plugins> + <plugin> + <prefix>plugin1</prefix> + <artifactId>plugin1-maven-plugin</artifactId> + <name>The plugin1 Plugin</name> + </plugin> + </plugins> +</metadata> diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-bad-local-checksum/1.0/get-bad-local-checksum-1.0.jar b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-bad-local-checksum/1.0/get-bad-local-checksum-1.0.jar new file mode 100644 index 000000000..b5d8045c9 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-bad-local-checksum/1.0/get-bad-local-checksum-1.0.jar @@ -0,0 +1,3 @@ +get-bad-local-checksum-1.0.jar
+(proxied 1)
+
diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-checksum-both-bad/1.0/get-checksum-both-bad-1.0.jar b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-checksum-both-bad/1.0/get-checksum-both-bad-1.0.jar new file mode 100644 index 000000000..98fae8093 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-checksum-both-bad/1.0/get-checksum-both-bad-1.0.jar @@ -0,0 +1,2 @@ +get-checksum-both-bad-1.0.jar
+
diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-checksum-both-bad/1.0/get-checksum-both-bad-1.0.jar.md5 b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-checksum-both-bad/1.0/get-checksum-both-bad-1.0.jar.md5 new file mode 100644 index 000000000..5fd0ae2b7 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-checksum-both-bad/1.0/get-checksum-both-bad-1.0.jar.md5 @@ -0,0 +1 @@ +invalid checksum file
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-checksum-both-bad/1.0/get-checksum-both-bad-1.0.jar.sha1 b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-checksum-both-bad/1.0/get-checksum-both-bad-1.0.jar.sha1 new file mode 100644 index 000000000..cf3e1ef62 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-checksum-both-bad/1.0/get-checksum-both-bad-1.0.jar.sha1 @@ -0,0 +1 @@ +invalid checksum file diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-checksum-both-right/1.0/get-checksum-both-right-1.0.jar b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-checksum-both-right/1.0/get-checksum-both-right-1.0.jar new file mode 100644 index 000000000..7fa9ec4a0 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-checksum-both-right/1.0/get-checksum-both-right-1.0.jar @@ -0,0 +1 @@ +get-checksum-both-right-1.0.jar
diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-checksum-both-right/1.0/get-checksum-both-right-1.0.jar.md5 b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-checksum-both-right/1.0/get-checksum-both-right-1.0.jar.md5 new file mode 100644 index 000000000..9b9e3374c --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-checksum-both-right/1.0/get-checksum-both-right-1.0.jar.md5 @@ -0,0 +1 @@ +e58f30c6a150a2e843552438d18e15cb *get-checksum-both-right-1.0.jar
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-checksum-both-right/1.0/get-checksum-both-right-1.0.jar.sha1 b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-checksum-both-right/1.0/get-checksum-both-right-1.0.jar.sha1 new file mode 100644 index 000000000..6661b7da5 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-checksum-both-right/1.0/get-checksum-both-right-1.0.jar.sha1 @@ -0,0 +1 @@ +066d76e459f7782c312c31e8a11b3c0f1e3e43a7 *get-checksum-both-right-1.0.jar diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-checksum-from-managed-repo/1.0/get-checksum-from-managed-repo-1.0.jar.sha1 b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-checksum-from-managed-repo/1.0/get-checksum-from-managed-repo-1.0.jar.sha1 new file mode 100644 index 000000000..c2fea5868 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-checksum-from-managed-repo/1.0/get-checksum-from-managed-repo-1.0.jar.sha1 @@ -0,0 +1,2 @@ +066d76e459f7782c312c31e8a11b3c0f1e3e43a7 *get-checksum-from-managed-repo-1.0.jar +(proxied 1) diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-checksum-md5-bad-sha1/1.0/get-checksum-md5-bad-sha1-1.0.jar b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-checksum-md5-bad-sha1/1.0/get-checksum-md5-bad-sha1-1.0.jar new file mode 100644 index 000000000..68e3480fc --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-checksum-md5-bad-sha1/1.0/get-checksum-md5-bad-sha1-1.0.jar @@ -0,0 +1,2 @@ +get-checksum-md5-bad-sha1-1.0.jar
+
diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-checksum-md5-bad-sha1/1.0/get-checksum-md5-bad-sha1-1.0.jar.md5 b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-checksum-md5-bad-sha1/1.0/get-checksum-md5-bad-sha1-1.0.jar.md5 new file mode 100644 index 000000000..d785caa7f --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-checksum-md5-bad-sha1/1.0/get-checksum-md5-bad-sha1-1.0.jar.md5 @@ -0,0 +1 @@ +8a02aa67549d27b2a03cd4547439c6d3 *get-checksum-md5-bad-sha1-1.0.jar
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-checksum-md5-bad-sha1/1.0/get-checksum-md5-bad-sha1-1.0.jar.sha1 b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-checksum-md5-bad-sha1/1.0/get-checksum-md5-bad-sha1-1.0.jar.sha1 new file mode 100644 index 000000000..cf3e1ef62 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-checksum-md5-bad-sha1/1.0/get-checksum-md5-bad-sha1-1.0.jar.sha1 @@ -0,0 +1 @@ +invalid checksum file diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-checksum-md5-only/1.0/get-checksum-md5-only-1.0.jar b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-checksum-md5-only/1.0/get-checksum-md5-only-1.0.jar new file mode 100644 index 000000000..915323d0e --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-checksum-md5-only/1.0/get-checksum-md5-only-1.0.jar @@ -0,0 +1,2 @@ +get-checksum-md5-only-1.0.jar + diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-checksum-md5-only/1.0/get-checksum-md5-only-1.0.jar.md5 b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-checksum-md5-only/1.0/get-checksum-md5-only-1.0.jar.md5 new file mode 100644 index 000000000..0e8431f4b --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-checksum-md5-only/1.0/get-checksum-md5-only-1.0.jar.md5 @@ -0,0 +1 @@ +f3af5201bf8da801da37db8842846e1c *get-checksum-md5-only-1.0.jar diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-checksum-sha1-bad-md5/1.0/get-checksum-sha1-bad-md5-1.0.jar b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-checksum-sha1-bad-md5/1.0/get-checksum-sha1-bad-md5-1.0.jar new file mode 100644 index 000000000..f02c91843 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-checksum-sha1-bad-md5/1.0/get-checksum-sha1-bad-md5-1.0.jar @@ -0,0 +1,2 @@ +get-checksum-sha1-bad-md5-1.0.jar + diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-checksum-sha1-bad-md5/1.0/get-checksum-sha1-bad-md5-1.0.jar.md5 b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-checksum-sha1-bad-md5/1.0/get-checksum-sha1-bad-md5-1.0.jar.md5 new file mode 100644 index 000000000..cf3e1ef62 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-checksum-sha1-bad-md5/1.0/get-checksum-sha1-bad-md5-1.0.jar.md5 @@ -0,0 +1 @@ +invalid checksum file diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-checksum-sha1-bad-md5/1.0/get-checksum-sha1-bad-md5-1.0.jar.sha1 b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-checksum-sha1-bad-md5/1.0/get-checksum-sha1-bad-md5-1.0.jar.sha1 new file mode 100644 index 000000000..3e2d43198 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-checksum-sha1-bad-md5/1.0/get-checksum-sha1-bad-md5-1.0.jar.sha1 @@ -0,0 +1 @@ +3dd1a3a57b807d3ef3fbc6013d926c891cbb8670 *get-checksum-sha1-bad-md5-1.0.jar diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-checksum-sha1-only/1.0/get-checksum-sha1-only-1.0.jar b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-checksum-sha1-only/1.0/get-checksum-sha1-only-1.0.jar new file mode 100644 index 000000000..efd9ed015 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-checksum-sha1-only/1.0/get-checksum-sha1-only-1.0.jar @@ -0,0 +1,2 @@ +get-checksum-sha1-only-1.0.jar + diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-checksum-sha1-only/1.0/get-checksum-sha1-only-1.0.jar.sha1 b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-checksum-sha1-only/1.0/get-checksum-sha1-only-1.0.jar.sha1 new file mode 100644 index 000000000..e64dccfd8 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-checksum-sha1-only/1.0/get-checksum-sha1-only-1.0.jar.sha1 @@ -0,0 +1 @@ +748a3a013bf5eacf2bbb40a2ac7d37889b728837 *get-checksum-sha1-only-1.0.jar diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-default-layout-present/1.0/get-default-layout-present-1.0.jar b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-default-layout-present/1.0/get-default-layout-present-1.0.jar new file mode 100644 index 000000000..15fd36d5d --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-default-layout-present/1.0/get-default-layout-present-1.0.jar @@ -0,0 +1,3 @@ +get-default-layout-present-1.0.jar +(proxied 1) + diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-default-layout-present/1.0/get-default-layout-present-1.0.jar.asc b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-default-layout-present/1.0/get-default-layout-present-1.0.jar.asc new file mode 100644 index 000000000..07bf0cfd6 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-default-layout-present/1.0/get-default-layout-present-1.0.jar.asc @@ -0,0 +1 @@ +THIS IS THE WRONG CONTENT! diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-default-layout/1.0/get-default-layout-1.0.jar b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-default-layout/1.0/get-default-layout-1.0.jar new file mode 100644 index 000000000..a129891a7 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-default-layout/1.0/get-default-layout-1.0.jar @@ -0,0 +1,2 @@ +get-default-layout-1.0.jar + diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-default-layout/1.0/get-default-layout-1.0.jar.asc b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-default-layout/1.0/get-default-layout-1.0.jar.asc new file mode 100644 index 000000000..bf07c716d --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-default-layout/1.0/get-default-layout-1.0.jar.asc @@ -0,0 +1,7 @@ +-----BEGIN PGP SIGNATURE----- +Version: GnuPG v1.4.8 (Darwin) + +iEUEABECAAYFAkiAKPMACgkQTusOMqfRa9RpcQCfUsvdYGZ7P97TYXzQ0MclsV2r +ASkAmJNCpmKjersaTXmsCupNGAJu38c= +=/yRo +-----END PGP SIGNATURE----- diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-default-layout/1.0/maven-metadata.xml b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-default-layout/1.0/maven-metadata.xml new file mode 100644 index 000000000..22dc39c2d --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-default-layout/1.0/maven-metadata.xml @@ -0,0 +1,24 @@ +<!-- + ~ 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.test</groupId> + <artifactId>get-default-layout</artifactId> + <version>1.0</version> +</metadata> diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-default-layout/maven-metadata.xml b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-default-layout/maven-metadata.xml new file mode 100644 index 000000000..65d343154 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-default-layout/maven-metadata.xml @@ -0,0 +1,28 @@ +<!-- + ~ 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.test</groupId> + <artifactId>get-default-layout</artifactId> + <versioning> + <versions> + <version>1.0</version> + </versions> + </versioning> +</metadata> diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-default-metadata/1.0/maven-metadata.xml b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-default-metadata/1.0/maven-metadata.xml new file mode 100644 index 000000000..f53003c56 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-default-metadata/1.0/maven-metadata.xml @@ -0,0 +1,24 @@ +<!-- + ~ 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.test</groupId> + <artifactId>get-default-metadata</artifactId> + <version>1.0</version> +</metadata>
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-found-in-proxy/1.0.5/get-found-in-proxy-1.0.5-javadoc.jar b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-found-in-proxy/1.0.5/get-found-in-proxy-1.0.5-javadoc.jar new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-found-in-proxy/1.0.5/get-found-in-proxy-1.0.5-javadoc.jar diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-found-in-proxy/maven-metadata.xml b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-found-in-proxy/maven-metadata.xml new file mode 100644 index 000000000..10e06230c --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-found-in-proxy/maven-metadata.xml @@ -0,0 +1,28 @@ +<!-- + ~ 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.test</groupId> + <artifactId>get-found-in-proxy</artifactId> + <versioning> + <versions> + <version>1.0.5</version> + </versions> + </versioning> +</metadata> diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-in-both-proxies/1.0/get-in-both-proxies-1.0.jar b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-in-both-proxies/1.0/get-in-both-proxies-1.0.jar new file mode 100644 index 000000000..3cc35fa29 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-in-both-proxies/1.0/get-in-both-proxies-1.0.jar @@ -0,0 +1,3 @@ +get-in-both-proxies-1.0.jar +(proxied 1) + diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-merged-metadata/maven-metadata.xml b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-merged-metadata/maven-metadata.xml new file mode 100644 index 000000000..6f9ac0f52 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-merged-metadata/maven-metadata.xml @@ -0,0 +1,33 @@ +<!-- + ~ 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.test</groupId> + <artifactId>get-merged-metadata</artifactId> + <versioning> + <versions> + <version>2.0</version> + <!-- merge with managed --> + <version>3.0</version> + <!-- merge with proxied2 --> + <version>5.0</version> + <!-- unique --> + </versions> + </versioning> +</metadata>
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-metadata-snapshot/1.0-SNAPSHOT/get-metadata-snapshot-1.0-20050831.101112-1.jar b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-metadata-snapshot/1.0-SNAPSHOT/get-metadata-snapshot-1.0-20050831.101112-1.jar new file mode 100644 index 000000000..139c17b97 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-metadata-snapshot/1.0-SNAPSHOT/get-metadata-snapshot-1.0-20050831.101112-1.jar @@ -0,0 +1 @@ +get-metadata-snapshot-1.0-SNAPSHOT.jar
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-metadata-snapshot/1.0-SNAPSHOT/maven-metadata.xml b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-metadata-snapshot/1.0-SNAPSHOT/maven-metadata.xml new file mode 100644 index 000000000..7ac63f44a --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-metadata-snapshot/1.0-SNAPSHOT/maven-metadata.xml @@ -0,0 +1,31 @@ +<!-- + ~ 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.test</groupId> + <artifactId>get-metadata-snapshot</artifactId> + <version>1.0-SNAPSHOT</version> + <versioning> + <snapshot> + <timestamp>20050831.101112</timestamp> + <buildNumber>1</buildNumber> + </snapshot> + <lastUpdated>20050831101112</lastUpdated> + </versioning> +</metadata> diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-on-local-on-remote/1.0.22/maven-metadata.xml b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-on-local-on-remote/1.0.22/maven-metadata.xml new file mode 100644 index 000000000..6fece769d --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-on-local-on-remote/1.0.22/maven-metadata.xml @@ -0,0 +1,24 @@ +<!-- + ~ 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.test</groupId> + <artifactId>get-on-local-on-remote</artifactId> + <version>1.0.22</version> +</metadata> diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-on-local-on-remote/maven-metadata.xml b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-on-local-on-remote/maven-metadata.xml new file mode 100644 index 000000000..583a5e1cf --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-on-local-on-remote/maven-metadata.xml @@ -0,0 +1,29 @@ +<!-- + ~ 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.test</groupId> + <artifactId>get-on-local-on-remote</artifactId> + <versioning> + <versions> + <version>1.0.22</version> + <version>2.0</version> + </versions> + </versioning> +</metadata> diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-on-multiple-repos/1.0/maven-metadata.xml b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-on-multiple-repos/1.0/maven-metadata.xml new file mode 100644 index 000000000..6bfd5dd9a --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-on-multiple-repos/1.0/maven-metadata.xml @@ -0,0 +1,24 @@ +<!-- + ~ 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.test</groupId> + <artifactId>get-on-multiple-repos</artifactId> + <version>1.0</version> +</metadata> diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-on-multiple-repos/maven-metadata.xml b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-on-multiple-repos/maven-metadata.xml new file mode 100644 index 000000000..0f4e941e8 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-on-multiple-repos/maven-metadata.xml @@ -0,0 +1,29 @@ +<!-- + ~ 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.test</groupId> + <artifactId>get-on-multiple-repos</artifactId> + <versioning> + <versions> + <version>1.0</version> + <version>2.0</version> + </versions> + </versioning> +</metadata> diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-present-metadata-snapshot/1.0-SNAPSHOT/get-present-metadata-snapshot-1.0-20050831.101112-1.jar b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-present-metadata-snapshot/1.0-SNAPSHOT/get-present-metadata-snapshot-1.0-20050831.101112-1.jar new file mode 100644 index 000000000..8bbffa00f --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-present-metadata-snapshot/1.0-SNAPSHOT/get-present-metadata-snapshot-1.0-20050831.101112-1.jar @@ -0,0 +1,2 @@ +get-present-metadata-snapshot-1.0-20050831.101112-1.jar
+(proxied 1)
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-present-metadata-snapshot/1.0-SNAPSHOT/maven-metadata.xml b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-present-metadata-snapshot/1.0-SNAPSHOT/maven-metadata.xml new file mode 100644 index 000000000..dd7496af5 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-present-metadata-snapshot/1.0-SNAPSHOT/maven-metadata.xml @@ -0,0 +1,31 @@ +<!-- + ~ 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.test</groupId> + <artifactId>get-present-metadata-snapshot</artifactId> + <version>1.0-SNAPSHOT</version> + <versioning> + <snapshot> + <timestamp>20050831.101112</timestamp> + <buildNumber>1</buildNumber> + </snapshot> + <lastUpdated>20050831101112</lastUpdated> + </versioning> +</metadata> diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-present-timestamped-snapshot/1.0-SNAPSHOT/get-present-timestamped-snapshot-1.0-SNAPSHOT.jar b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-present-timestamped-snapshot/1.0-SNAPSHOT/get-present-timestamped-snapshot-1.0-SNAPSHOT.jar new file mode 100644 index 000000000..0bf178413 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-present-timestamped-snapshot/1.0-SNAPSHOT/get-present-timestamped-snapshot-1.0-SNAPSHOT.jar @@ -0,0 +1,2 @@ +get-present-timestamped-snapshot-1.0-SNAPSHOT.jar
+(proxied 1)
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-snapshot-popular/2.0-SNAPSHOT/get-snapshot-popular-2.0-20070819.040004-1.jar b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-snapshot-popular/2.0-SNAPSHOT/get-snapshot-popular-2.0-20070819.040004-1.jar new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-snapshot-popular/2.0-SNAPSHOT/get-snapshot-popular-2.0-20070819.040004-1.jar diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-snapshot-popular/2.0-SNAPSHOT/get-snapshot-popular-2.0-20070822.145534-9.jar b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-snapshot-popular/2.0-SNAPSHOT/get-snapshot-popular-2.0-20070822.145534-9.jar new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-snapshot-popular/2.0-SNAPSHOT/get-snapshot-popular-2.0-20070822.145534-9.jar diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-snapshot-popular/2.0-SNAPSHOT/maven-metadata.xml b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-snapshot-popular/2.0-SNAPSHOT/maven-metadata.xml new file mode 100644 index 000000000..c2c6983a9 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-snapshot-popular/2.0-SNAPSHOT/maven-metadata.xml @@ -0,0 +1,31 @@ +<!-- + ~ 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.test</groupId> + <artifactId>get-snapshot-popular</artifactId> + <version>2.0-SNAPSHOT</version> + <versioning> + <snapshot> + <timestamp>20070822.145534</timestamp> + <buildNumber>9</buildNumber> + </snapshot> + <lastUpdated>20070822145534</lastUpdated> + </versioning> +</metadata> diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-timestamped-snapshot-in-both/1.0-SNAPSHOT/get-timestamped-snapshot-in-both-1.0-20061222.034118-1.jar b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-timestamped-snapshot-in-both/1.0-SNAPSHOT/get-timestamped-snapshot-in-both-1.0-20061222.034118-1.jar new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-timestamped-snapshot-in-both/1.0-SNAPSHOT/get-timestamped-snapshot-in-both-1.0-20061222.034118-1.jar diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-timestamped-snapshot-in-both/1.0-SNAPSHOT/get-timestamped-snapshot-in-both-1.0-20061227.112101-2.jar b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-timestamped-snapshot-in-both/1.0-SNAPSHOT/get-timestamped-snapshot-in-both-1.0-20061227.112101-2.jar new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-timestamped-snapshot-in-both/1.0-SNAPSHOT/get-timestamped-snapshot-in-both-1.0-20061227.112101-2.jar diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-timestamped-snapshot-in-both/1.0-SNAPSHOT/get-timestamped-snapshot-in-both-1.0-SNAPSHOT.jar b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-timestamped-snapshot-in-both/1.0-SNAPSHOT/get-timestamped-snapshot-in-both-1.0-SNAPSHOT.jar new file mode 100644 index 000000000..dfacfaa15 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-timestamped-snapshot-in-both/1.0-SNAPSHOT/get-timestamped-snapshot-in-both-1.0-SNAPSHOT.jar @@ -0,0 +1,2 @@ +get-timestamped-snapshot-in-both-1.0-SNAPSHOT.jar
+(proxied 1)
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-timestamped-snapshot-in-both/1.0-SNAPSHOT/maven-metadata.xml b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-timestamped-snapshot-in-both/1.0-SNAPSHOT/maven-metadata.xml new file mode 100644 index 000000000..55b9bd28a --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-timestamped-snapshot-in-both/1.0-SNAPSHOT/maven-metadata.xml @@ -0,0 +1,31 @@ +<!-- + ~ 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.test</groupId> + <artifactId>get-timestamped-snapshot-in-both</artifactId> + <version>1.0-SNAPSHOT</version> + <versioning> + <snapshot> + <timestamp>20061227.112101</timestamp> + <buildNumber>2</buildNumber> + </snapshot> + <lastUpdated>20061227112101</lastUpdated> + </versioning> +</metadata> diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-timestamped-snapshot/1.0-SNAPSHOT/get-timestamped-snapshot-1.0-SNAPSHOT.jar b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-timestamped-snapshot/1.0-SNAPSHOT/get-timestamped-snapshot-1.0-SNAPSHOT.jar new file mode 100644 index 000000000..af86df92f --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-timestamped-snapshot/1.0-SNAPSHOT/get-timestamped-snapshot-1.0-SNAPSHOT.jar @@ -0,0 +1 @@ +get-timestamped-snapshot-1.0-SNAPSHOT.jar
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-updated-metadata/1.0-SNAPSHOT/maven-metadata.xml b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-updated-metadata/1.0-SNAPSHOT/maven-metadata.xml new file mode 100644 index 000000000..5005e6c0e --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-updated-metadata/1.0-SNAPSHOT/maven-metadata.xml @@ -0,0 +1,30 @@ +<!-- + ~ 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.test</groupId> + <artifactId>get-updated-metadata</artifactId> + <version>1.0-SNAPSHOT</version> + <versioning> + <snapshot> + <timestamp>20050831.111213</timestamp> + <buildNumber>2</buildNumber> + </snapshot> + </versioning> +</metadata>
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-updated-metadata/maven-metadata.xml b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-updated-metadata/maven-metadata.xml new file mode 100644 index 000000000..085576ddb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-updated-metadata/maven-metadata.xml @@ -0,0 +1,29 @@ +<!-- + ~ 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.test</groupId> + <artifactId>get-updated-metadata</artifactId> + <versioning> + <versions> + <version>1.0</version> + <version>2.0</version> + </versions> + </versioning> +</metadata>
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/groups/get-default-layout/maven-metadata.xml b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/groups/get-default-layout/maven-metadata.xml new file mode 100644 index 000000000..9f6bf9239 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/groups/get-default-layout/maven-metadata.xml @@ -0,0 +1,29 @@ +<!-- + ~ 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.test.groups.get-default-layout</groupId> + <plugins> + <plugin> + <prefix>plugin1</prefix> + <artifactId>plugin1-maven-plugin</artifactId> + <name>The plugin1 Plugin</name> + </plugin> + </plugins> +</metadata> diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/groups/get-found-in-proxy/maven-metadata.xml b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/groups/get-found-in-proxy/maven-metadata.xml new file mode 100644 index 000000000..90102867a --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/groups/get-found-in-proxy/maven-metadata.xml @@ -0,0 +1,29 @@ +<!-- + ~ 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.test.groups.get-found-in-proxy</groupId> + <plugins> + <plugin> + <prefix>plugin3</prefix> + <artifactId>plugin3-maven-plugin</artifactId> + <name>The plugin3 Plugin</name> + </plugin> + </plugins> +</metadata> diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/groups/get-on-local-on-remote/maven-metadata.xml b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/groups/get-on-local-on-remote/maven-metadata.xml new file mode 100644 index 000000000..23f12bbf1 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/groups/get-on-local-on-remote/maven-metadata.xml @@ -0,0 +1,34 @@ +<!-- + ~ 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.test.groups.get-on-local-on-remote</groupId> + <plugins> + <plugin> + <prefix>plugin7</prefix> + <artifactId>plugin7-maven-plugin</artifactId> + <name>The plugin7 Plugin</name> + </plugin> + <plugin> + <prefix>plugin4</prefix> + <artifactId>plugin4-maven-plugin</artifactId> + <name>The plugin4 Plugin</name> + </plugin> + </plugins> +</metadata> diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/groups/get-on-multiple-repos/maven-metadata.xml b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/groups/get-on-multiple-repos/maven-metadata.xml new file mode 100644 index 000000000..3abe069e7 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied1/org/apache/maven/test/groups/get-on-multiple-repos/maven-metadata.xml @@ -0,0 +1,34 @@ +<!-- + ~ 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.test.groups.get-on-multiple-repos</groupId> + <plugins> + <plugin> + <prefix>plugin1</prefix> + <artifactId>plugin1-maven-plugin</artifactId> + <name>The plugin1 Plugin</name> + </plugin> + <plugin> + <prefix>plugin4</prefix> + <artifactId>plugin4-maven-plugin</artifactId> + <name>The plugin4 Plugin</name> + </plugin> + </plugins> +</metadata> diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied2/org/apache/maven/test/get-default-layout/1.0.1/get-default-layout-1.0.1.pom b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied2/org/apache/maven/test/get-default-layout/1.0.1/get-default-layout-1.0.1.pom new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied2/org/apache/maven/test/get-default-layout/1.0.1/get-default-layout-1.0.1.pom diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied2/org/apache/maven/test/get-default-layout/1.0/get-default-layout-1.0.jar b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied2/org/apache/maven/test/get-default-layout/1.0/get-default-layout-1.0.jar new file mode 100644 index 000000000..a129891a7 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied2/org/apache/maven/test/get-default-layout/1.0/get-default-layout-1.0.jar @@ -0,0 +1,2 @@ +get-default-layout-1.0.jar + diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied2/org/apache/maven/test/get-default-layout/1.0/maven-metadata.xml b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied2/org/apache/maven/test/get-default-layout/1.0/maven-metadata.xml new file mode 100644 index 000000000..22dc39c2d --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied2/org/apache/maven/test/get-default-layout/1.0/maven-metadata.xml @@ -0,0 +1,24 @@ +<!-- + ~ 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.test</groupId> + <artifactId>get-default-layout</artifactId> + <version>1.0</version> +</metadata> diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied2/org/apache/maven/test/get-default-layout/maven-metadata.xml b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied2/org/apache/maven/test/get-default-layout/maven-metadata.xml new file mode 100644 index 000000000..2d76cccb2 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied2/org/apache/maven/test/get-default-layout/maven-metadata.xml @@ -0,0 +1,28 @@ +<!-- + ~ 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.test</groupId> + <artifactId>get-default-layout</artifactId> + <versioning> + <versions> + <version>1.0.1</version> + </versions> + </versioning> +</metadata> diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied2/org/apache/maven/test/get-in-both-proxies/1.0/get-in-both-proxies-1.0.jar b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied2/org/apache/maven/test/get-in-both-proxies/1.0/get-in-both-proxies-1.0.jar new file mode 100644 index 000000000..e46d60ac3 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied2/org/apache/maven/test/get-in-both-proxies/1.0/get-in-both-proxies-1.0.jar @@ -0,0 +1,3 @@ +get-in-both-proxies-1.0.jar +(proxied 2) + diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied2/org/apache/maven/test/get-in-second-proxy/1.0/get-in-second-proxy-1.0.jar b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied2/org/apache/maven/test/get-in-second-proxy/1.0/get-in-second-proxy-1.0.jar new file mode 100644 index 000000000..3460f656d --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied2/org/apache/maven/test/get-in-second-proxy/1.0/get-in-second-proxy-1.0.jar @@ -0,0 +1,2 @@ +get-in-second-proxy-1.0.jar + diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied2/org/apache/maven/test/get-merged-metadata/maven-metadata.xml b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied2/org/apache/maven/test/get-merged-metadata/maven-metadata.xml new file mode 100644 index 000000000..a8d714f84 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied2/org/apache/maven/test/get-merged-metadata/maven-metadata.xml @@ -0,0 +1,33 @@ +<!-- + ~ 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.test</groupId> + <artifactId>get-merged-metadata</artifactId> + <versioning> + <versions> + <version>1.0</version> + <!-- merged with managed --> + <version>3.0</version> + <!-- merged with proxied1 --> + <version>4.0</version> + <!-- unique --> + </versions> + </versioning> +</metadata>
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied2/org/apache/maven/test/get-on-multiple-repos/1.0/maven-metadata.xml b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied2/org/apache/maven/test/get-on-multiple-repos/1.0/maven-metadata.xml new file mode 100644 index 000000000..6bfd5dd9a --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied2/org/apache/maven/test/get-on-multiple-repos/1.0/maven-metadata.xml @@ -0,0 +1,24 @@ +<!-- + ~ 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.test</groupId> + <artifactId>get-on-multiple-repos</artifactId> + <version>1.0</version> +</metadata> diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied2/org/apache/maven/test/get-on-multiple-repos/maven-metadata.xml b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied2/org/apache/maven/test/get-on-multiple-repos/maven-metadata.xml new file mode 100644 index 000000000..db3a24f18 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied2/org/apache/maven/test/get-on-multiple-repos/maven-metadata.xml @@ -0,0 +1,29 @@ +<!-- + ~ 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.test</groupId> + <artifactId>get-on-multiple-repos</artifactId> + <versioning> + <versions> + <version>1.0</version> + <version>1.0.1</version> + </versions> + </versioning> +</metadata> diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied2/org/apache/maven/test/get-snapshot-popular/2.0-SNAPSHOT/get-snapshot-popular-2.0-20070821.102030-1.jar b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied2/org/apache/maven/test/get-snapshot-popular/2.0-SNAPSHOT/get-snapshot-popular-2.0-20070821.102030-1.jar new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied2/org/apache/maven/test/get-snapshot-popular/2.0-SNAPSHOT/get-snapshot-popular-2.0-20070821.102030-1.jar diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied2/org/apache/maven/test/get-snapshot-popular/2.0-SNAPSHOT/get-snapshot-popular-2.0-20070823.111741-5.jar b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied2/org/apache/maven/test/get-snapshot-popular/2.0-SNAPSHOT/get-snapshot-popular-2.0-20070823.111741-5.jar new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied2/org/apache/maven/test/get-snapshot-popular/2.0-SNAPSHOT/get-snapshot-popular-2.0-20070823.111741-5.jar diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied2/org/apache/maven/test/get-snapshot-popular/2.0-SNAPSHOT/get-snapshot-popular-2.0-20070823.212711-6.jar b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied2/org/apache/maven/test/get-snapshot-popular/2.0-SNAPSHOT/get-snapshot-popular-2.0-20070823.212711-6.jar new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied2/org/apache/maven/test/get-snapshot-popular/2.0-SNAPSHOT/get-snapshot-popular-2.0-20070823.212711-6.jar diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied2/org/apache/maven/test/get-snapshot-popular/2.0-SNAPSHOT/maven-metadata.xml b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied2/org/apache/maven/test/get-snapshot-popular/2.0-SNAPSHOT/maven-metadata.xml new file mode 100644 index 000000000..6b4f5894b --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied2/org/apache/maven/test/get-snapshot-popular/2.0-SNAPSHOT/maven-metadata.xml @@ -0,0 +1,31 @@ +<!-- + ~ 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.test</groupId> + <artifactId>get-snapshot-popular</artifactId> + <version>2.0-SNAPSHOT</version> + <versioning> + <snapshot> + <timestamp>20070823.212711</timestamp> + <buildNumber>6</buildNumber> + </snapshot> + <lastUpdated>20070823212711</lastUpdated> + </versioning> +</metadata> diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied2/org/apache/maven/test/get-timestamped-snapshot-in-both/1.0-SNAPSHOT/get-timestamped-snapshot-in-both-1.0-20061222.034118-1.jar b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied2/org/apache/maven/test/get-timestamped-snapshot-in-both/1.0-SNAPSHOT/get-timestamped-snapshot-in-both-1.0-20061222.034118-1.jar new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied2/org/apache/maven/test/get-timestamped-snapshot-in-both/1.0-SNAPSHOT/get-timestamped-snapshot-in-both-1.0-20061222.034118-1.jar diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied2/org/apache/maven/test/get-timestamped-snapshot-in-both/1.0-SNAPSHOT/get-timestamped-snapshot-in-both-1.0-20070101.000103-2.jar b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied2/org/apache/maven/test/get-timestamped-snapshot-in-both/1.0-SNAPSHOT/get-timestamped-snapshot-in-both-1.0-20070101.000103-2.jar new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied2/org/apache/maven/test/get-timestamped-snapshot-in-both/1.0-SNAPSHOT/get-timestamped-snapshot-in-both-1.0-20070101.000103-2.jar diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied2/org/apache/maven/test/get-timestamped-snapshot-in-both/1.0-SNAPSHOT/get-timestamped-snapshot-in-both-1.0-SNAPSHOT.jar b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied2/org/apache/maven/test/get-timestamped-snapshot-in-both/1.0-SNAPSHOT/get-timestamped-snapshot-in-both-1.0-SNAPSHOT.jar new file mode 100644 index 000000000..915b2b22c --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied2/org/apache/maven/test/get-timestamped-snapshot-in-both/1.0-SNAPSHOT/get-timestamped-snapshot-in-both-1.0-SNAPSHOT.jar @@ -0,0 +1,2 @@ +get-timestamped-snapshot-in-both-1.0-SNAPSHOT.jar
+(proxied 2)
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied2/org/apache/maven/test/get-timestamped-snapshot-in-both/1.0-SNAPSHOT/maven-metadata.xml b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied2/org/apache/maven/test/get-timestamped-snapshot-in-both/1.0-SNAPSHOT/maven-metadata.xml new file mode 100644 index 000000000..78fbecc59 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied2/org/apache/maven/test/get-timestamped-snapshot-in-both/1.0-SNAPSHOT/maven-metadata.xml @@ -0,0 +1,31 @@ +<!-- + ~ 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.test</groupId> + <artifactId>get-timestamped-snapshot-in-both</artifactId> + <version>1.0-SNAPSHOT</version> + <versioning> + <snapshot> + <timestamp>20070101.000103</timestamp> + <buildNumber>2</buildNumber> + </snapshot> + <lastUpdated>20070101000103</lastUpdated> + </versioning> +</metadata> diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied2/org/apache/maven/test/groups/get-default-layout/maven-metadata.xml b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied2/org/apache/maven/test/groups/get-default-layout/maven-metadata.xml new file mode 100644 index 000000000..41109859e --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied2/org/apache/maven/test/groups/get-default-layout/maven-metadata.xml @@ -0,0 +1,29 @@ +<!-- + ~ 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.test.groups.get-default-layout</groupId> + <plugins> + <plugin> + <prefix>plugin2</prefix> + <artifactId>plugin2-maven-plugin</artifactId> + <name>The plugin2 Plugin</name> + </plugin> + </plugins> +</metadata> diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied2/org/apache/maven/test/groups/get-on-multiple-repos/maven-metadata.xml b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied2/org/apache/maven/test/groups/get-on-multiple-repos/maven-metadata.xml new file mode 100644 index 000000000..b7db006fe --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/repositories/proxied2/org/apache/maven/test/groups/get-on-multiple-repos/maven-metadata.xml @@ -0,0 +1,34 @@ +<!-- + ~ 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.test.groups.get-on-multiple-repos</groupId> + <plugins> + <plugin> + <prefix>plugin1</prefix> + <artifactId>plugin1-maven-plugin</artifactId> + <name>The plugin1 Plugin</name> + </plugin> + <plugin> + <prefix>plugin2</prefix> + <artifactId>plugin2-maven-plugin</artifactId> + <name>The plugin2 Plugin</name> + </plugin> + </plugins> +</metadata> diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/resources/META-INF/spring-context.xml b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/resources/META-INF/spring-context.xml new file mode 100644 index 000000000..f900a933b --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/resources/META-INF/spring-context.xml @@ -0,0 +1,68 @@ +<?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. + --> + +<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" xmlns:tx="http://www.springframework.org/schema/tx" + 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 http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd" + default-lazy-init="true"> + + <context:component-scan base-package="org.apache.archiva.proxy.maven"/> + + <bean name="wagon#file" scope="prototype" class="org.apache.maven.wagon.providers.file.FileWagon"/> + + <alias name="userConfiguration#redback" alias="userConfiguration#default"/> + + <!-- *** + JPA settings + *** --> + <bean name="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> + <property name="jpaVendorAdapter" > + <bean class="org.springframework.orm.jpa.vendor.OpenJpaVendorAdapter" /> + </property> + <property name="persistenceXmlLocation" value="classpath:META-INF/persistence-hsqldb.xml" /> + <property name="jpaPropertyMap"> + <map> + <entry key="openjpa.ConnectionURL" value="jdbc:hsqldb:mem:redback_database" /> + <entry key="openjpa.ConnectionDriverName" value="org.hsqldb.jdbcDriver" /> + <entry key="openjpa.ConnectionUserName" value="sa" /> + <entry key="openjpa.ConnectionPassword" value="" /> + <entry key="openjpa.Log" value="${openjpa.Log:DefaultLevel=INFO,Runtime=ERROR,Tool=ERROR,SQL=ERROR,Schema=ERROR,MetaData=ERROR}" /> + <entry key="openjpa.jdbc.SynchronizeMappings" value="buildSchema(ForeignKeys=true)" /> + <entry key="openjpa.jdbc.MappingDefaults" + value="ForeignKeyDeleteAction=restrict,JoinForeignKeyDeleteAction=restrict"/> + </map> + </property> + + </bean> + + <bean name="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager" > + <property name="entityManagerFactory" ref="entityManagerFactory" /> + </bean> + + <tx:annotation-driven /> + <!-- *** + End of JPA settings + *** --> + +</beans>
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/resources/spring-context.xml b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/resources/spring-context.xml new file mode 100755 index 000000000..f10fb3e86 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/resources/spring-context.xml @@ -0,0 +1,127 @@ +<?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. + --> + +<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" xmlns:tx="http://www.springframework.org/schema/tx" + 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 http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd" + default-lazy-init="true"> + + <context:annotation-config/> + <context:component-scan base-package="org.apache.archiva.metadata.repository,org.apache.archiva.proxy,org.apache.archiva.repository.mock"/> + <alias name="mockRepositoryProvider" alias="mavenRepositoryProvider" /> + + <alias name="archivaConfiguration#mock" alias="archivaConfiguration#default"/> + <alias name="archivaConfiguration#mock" alias="archivaConfiguration"/> + <alias name="archivaTaskScheduler#repositoryMock" alias="archivaTaskScheduler#repository" /> + + <bean name="scheduler" class="org.apache.archiva.redback.components.scheduler.DefaultScheduler"> + <property name="properties"> + <props> + <prop key="org.quartz.scheduler.instanceName">scheduler1</prop> + <prop key="org.quartz.threadPool.class">org.quartz.simpl.SimpleThreadPool</prop> + <prop key="org.quartz.threadPool.threadCount">1</prop> + <prop key="org.quartz.threadPool.threadPriority">4</prop> + <prop key="org.quartz.jobStore.class">org.quartz.simpl.RAMJobStore</prop> + </props> + </property> + </bean> + + <bean name="repositoryContentFactory#mocked" class="org.apache.archiva.repository.RepositoryContentFactory"> + <property name="archivaConfiguration" ref="archivaConfiguration#mock"/> + </bean> + + + <bean name="repositoryContentProvider#mocked" class="org.apache.archiva.repository.mock.RepositoryContentProviderMock" > + + </bean> + + + <bean name="repositoryProxyConnectors#test" class="org.apache.archiva.proxy.maven.MavenRepositoryProxyHandler"> + <property name="archivaConfiguration" ref="archivaConfiguration#mock"/> + <property name="repositoryFactory" ref="repositoryContentFactory#mocked"/> + <property name="metadataTools" ref="metadataTools#mocked"/> + </bean> + + <bean name="metadataTools#default" class="org.apache.archiva.repository.metadata.MetadataTools"> + <property name="configuration" ref="archivaConfiguration#mock"/> + </bean> + + <bean name="metadataTools#mocked" class="org.apache.archiva.repository.metadata.MetadataTools"> + <property name="configuration" ref="archivaConfiguration#mock"/> + </bean> + + + <bean name="cache#url-failures-cache" class="org.apache.archiva.redback.components.cache.ehcache.EhcacheCache" lazy-init="true" + destroy-method="dispose"> + <property name="diskExpiryThreadIntervalSeconds" value="600"/> + <property name="diskPersistent" value="false"/> + <property name="diskStorePath" value="${appserver.base}/tmp/urlcache"/> + <property name="maxElementsInMemory" value="1000"/> + <property name="memoryEvictionPolicy" value="LRU"/> + <property name="name" value="url-failures-cache"/> + <property name="overflowToDisk" value="false"/> + <!-- 45 minutes = 2700 seconds --> + <property name="timeToIdleSeconds" value="2700"/> + <!-- 30 minutes = 1800 seconds --> + <property name="timeToLiveSeconds" value="1800"/> + </bean> + + <bean name="wagon#test" class="org.apache.archiva.proxy.WagonDelegate" scope="singleton"/> + <bean name="wagon#file" scope="prototype" class="org.apache.maven.wagon.providers.file.FileWagon"/> + + <alias name="userConfiguration#redback" alias="userConfiguration#default"/> + + <!-- *** + JPA settings + *** --> + <bean name="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> + <property name="jpaVendorAdapter" > + <bean class="org.springframework.orm.jpa.vendor.OpenJpaVendorAdapter" /> + </property> + <property name="persistenceXmlLocation" value="classpath:META-INF/persistence-hsqldb.xml" /> + <property name="jpaPropertyMap"> + <map> + <entry key="openjpa.ConnectionURL" value="jdbc:hsqldb:mem:redback_database" /> + <entry key="openjpa.ConnectionDriverName" value="org.hsqldb.jdbcDriver" /> + <entry key="openjpa.ConnectionUserName" value="sa" /> + <entry key="openjpa.ConnectionPassword" value="" /> + <entry key="openjpa.Log" value="${openjpa.Log:DefaultLevel=INFO,Runtime=ERROR,Tool=ERROR,SQL=ERROR,Schema=ERROR,MetaData=ERROR}" /> + <entry key="openjpa.jdbc.SynchronizeMappings" value="buildSchema(ForeignKeys=true)" /> + <entry key="openjpa.jdbc.MappingDefaults" + value="ForeignKeyDeleteAction=restrict,JoinForeignKeyDeleteAction=restrict"/> + </map> + </property> + + </bean> + + <bean name="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager" > + <property name="entityManagerFactory" ref="entityManagerFactory" /> + </bean> + + <tx:annotation-driven /> + <!-- *** + End of JPA settings + *** --> + +</beans>
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/pom.xml b/archiva-modules/archiva-maven/archiva-maven-repository/pom.xml new file mode 100644 index 000000000..7eba9e946 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/pom.xml @@ -0,0 +1,263 @@ +<?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/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>org.apache.archiva.maven</groupId> + <artifactId>archiva-maven</artifactId> + <version>3.0.0-SNAPSHOT</version> + </parent> + <artifactId>archiva-maven-repository</artifactId> + <name>Archiva :: Maven :: Repository Support</name> + + <properties> + <site.staging.base>${project.parent.parent.basedir}</site.staging.base> + </properties> + + <dependencies> + <dependency> + <groupId>org.apache.archiva</groupId> + <artifactId>metadata-model</artifactId> + </dependency> + <dependency> + <groupId>org.apache.archiva.maven</groupId> + <artifactId>archiva-maven-metadata</artifactId> + </dependency> + <dependency> + <groupId>org.apache.archiva</groupId> + <artifactId>metadata-repository-api</artifactId> + </dependency> + <dependency> + <groupId>org.apache.archiva.maven</groupId> + <artifactId>archiva-maven-metadata</artifactId> + </dependency> + <dependency> + <groupId>org.apache.archiva</groupId> + <artifactId>archiva-proxy-api</artifactId> + </dependency> + <dependency> + <groupId>org.apache.archiva</groupId> + <artifactId>archiva-model</artifactId> + </dependency> + <dependency> + <groupId>org.apache.archiva.maven</groupId> + <artifactId>archiva-maven-proxy</artifactId> + <exclusions> + <exclusion> + <groupId>commons-logging</groupId> + <artifactId>commons-logging-api</artifactId> + </exclusion> + </exclusions> + </dependency> + <dependency> + <groupId>org.eclipse.sisu</groupId> + <artifactId>org.eclipse.sisu.plexus</artifactId> + </dependency> + <dependency> + <groupId>com.google.inject</groupId> + <artifactId>guice</artifactId> + <classifier>no_aop</classifier> + </dependency> + <dependency> + <groupId>org.apache.archiva</groupId> + <artifactId>archiva-plexus-bridge</artifactId> + </dependency> + <dependency> + <groupId>commons-logging</groupId> + <artifactId>commons-logging</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-model-builder</artifactId> + </dependency> + <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-artifact</artifactId> + </dependency> + <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-artifact-manager</artifactId> + </dependency> + <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-repository-metadata</artifactId> + </dependency> + <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-model</artifactId> + </dependency> + + <dependency> + <groupId>org.apache.maven.resolver</groupId> + <artifactId>maven-resolver</artifactId> + <type>pom</type> + </dependency> + <dependency> + <groupId>org.apache.maven.resolver</groupId> + <artifactId>maven-resolver-transport-file</artifactId> + </dependency> + <dependency> + <groupId>org.apache.maven.resolver</groupId> + <artifactId>maven-resolver-connector-basic</artifactId> + </dependency> + + <dependency> + <groupId>org.apache.archiva</groupId> + <artifactId>archiva-configuration</artifactId> + </dependency> + <dependency> + <groupId>org.apache.archiva.maven</groupId> + <artifactId>archiva-maven-model</artifactId> + </dependency> + <dependency> + <groupId>org.apache.maven.wagon</groupId> + <artifactId>wagon-provider-api</artifactId> + </dependency> + <dependency> + <groupId>org.modelmapper</groupId> + <artifactId>modelmapper</artifactId> + </dependency> + <dependency> + <groupId>org.apache.maven.wagon</groupId> + <artifactId>wagon-http</artifactId> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>org.apache.maven.wagon</groupId> + <artifactId>wagon-http-lightweight</artifactId> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>org.springframework</groupId> + <artifactId>spring-test</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.apache.archiva</groupId> + <artifactId>test-repository</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.apache.archiva</groupId> + <artifactId>archiva-mock</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.apache.archiva</groupId> + <artifactId>archiva-test-utils</artifactId> + <version>${project.version}</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.mockito</groupId> + <artifactId>mockito-all</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.assertj</groupId> + <artifactId>assertj-core</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.apache.logging.log4j</groupId> + <artifactId>log4j-1.2-api</artifactId> + </dependency> + + <dependency> + <groupId>xerces</groupId> + <artifactId>xercesImpl</artifactId> + <scope>test</scope> + </dependency> + + <!-- Needed for JDK >= 9 --> + <dependency> + <groupId>javax.annotation</groupId> + <artifactId>javax.annotation-api</artifactId> + <scope>test</scope> + </dependency> + + <dependency> + <groupId>javax.xml.bind</groupId> + <artifactId>jaxb-api</artifactId> + <scope>test</scope> + </dependency> + + <dependency> + <groupId>org.ow2.asm</groupId> + <artifactId>asm</artifactId> + <scope>test</scope> + </dependency> + + + </dependencies> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-dependency-plugin</artifactId> + <executions> + <execution> + <id>test-repository</id> + <phase>process-test-classes</phase> + <goals> + <goal>unpack-dependencies</goal> + </goals> + <configuration> + <includeArtifactIds>test-repository</includeArtifactIds> + <outputDirectory>target/test-repository</outputDirectory> + <excludes>META-INF/**</excludes> + </configuration> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-surefire-plugin</artifactId> + <configuration> + <systemPropertyVariables> + <appserver.base>${project.build.directory}/appserver-base</appserver.base> + </systemPropertyVariables> + </configuration> + </plugin> + </plugins> + <pluginManagement> + <plugins> + <plugin> + <groupId>org.apache.rat</groupId> + <artifactId>apache-rat-plugin</artifactId> + <configuration> + <excludes> + <!-- TODO: move repo into a subdirectory --> + <exclude>src/test/resources/com/**</exclude> + <exclude>src/test/resources/commons-io/**</exclude> + <exclude>src/test/resources/test-repo/**</exclude> + <exclude>src/test/resources/m1-repo-filelist.txt</exclude> + <exclude>src/test/repositories/**</exclude> + <exclude>src/test/expected-poms/**</exclude> + <exclude>src/test/resources/resolver-status.properties</exclude> + <exclude>src/test/resources/test01.properties</exclude> + </excludes> + </configuration> + </plugin> + </plugins> + </pluginManagement> + </build> +</project> diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/dependency/tree/maven2/ArchivaRepositoryConnectorFactory.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/dependency/tree/maven2/ArchivaRepositoryConnectorFactory.java new file mode 100644 index 000000000..dd401aef4 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/dependency/tree/maven2/ArchivaRepositoryConnectorFactory.java @@ -0,0 +1,99 @@ +package org.apache.archiva.dependency.tree.maven2; +/* + * 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.eclipse.aether.connector.basic.BasicRepositoryConnectorFactory; +import org.eclipse.aether.spi.connector.RepositoryConnectorFactory; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.eclipse.aether.RepositorySystemSession; +import org.eclipse.aether.repository.RemoteRepository; +import org.eclipse.aether.spi.connector.ArtifactDownload; +import org.eclipse.aether.spi.connector.ArtifactUpload; +import org.eclipse.aether.spi.connector.MetadataDownload; +import org.eclipse.aether.spi.connector.MetadataUpload; +import org.eclipse.aether.spi.connector.RepositoryConnector; +import org.eclipse.aether.transfer.NoRepositoryConnectorException; + +import java.util.Collection; + +/** + * + * Creates a dummy connector, if the default connectory factory fails to create one. + * + * @author Olivier Lamy + * @since 1.4-M3 + */ +public class ArchivaRepositoryConnectorFactory + implements RepositoryConnectorFactory +{ + + private BasicRepositoryConnectorFactory delegate = new BasicRepositoryConnectorFactory(); + + public ArchivaRepositoryConnectorFactory() + { + // no op but empty constructor needed by aether + } + + @Override + public RepositoryConnector newInstance( RepositorySystemSession session, RemoteRepository repository ) + throws NoRepositoryConnectorException + { + try + { + return delegate.newInstance( session, repository ); + } + catch ( NoRepositoryConnectorException e ) + { + + } + + return new RepositoryConnector() + { + + private Logger log = LoggerFactory.getLogger( getClass() ); + + @Override + public void get( Collection<? extends ArtifactDownload> artifactDownloads, + Collection<? extends MetadataDownload> metadataDownloads ) + { + log.debug( "get" ); + } + + @Override + public void put( Collection<? extends ArtifactUpload> artifactUploads, + Collection<? extends MetadataUpload> metadataUploads ) + { + log.debug( "put" ); + } + + @Override + public void close() + { + log.debug( "close" ); + } + }; + } + + @Override + public float getPriority( ) + { + return 0; + } +} diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/dependency/tree/maven2/DependencyTreeBuilder.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/dependency/tree/maven2/DependencyTreeBuilder.java new file mode 100644 index 000000000..9f3bb7f9a --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/dependency/tree/maven2/DependencyTreeBuilder.java @@ -0,0 +1,38 @@ +package org.apache.archiva.dependency.tree.maven2; +/* + * 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.archiva.maven2.model.TreeEntry; +import org.eclipse.aether.graph.DependencyVisitor; + +import java.util.List; + +/** + * @author Olivier Lamy + */ +public interface DependencyTreeBuilder +{ + void buildDependencyTree( List<String> repositoryIds, String groupId, String artifactId, String version, + DependencyVisitor dependencyVisitor ) + throws Exception; + + List<TreeEntry> buildDependencyTree( List<String> repositoryIds, String groupId, String artifactId, String version ) + throws Exception; +} + diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/dependency/tree/maven2/DependencyTreeBuilderException.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/dependency/tree/maven2/DependencyTreeBuilderException.java new file mode 100644 index 000000000..ea71d785b --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/dependency/tree/maven2/DependencyTreeBuilderException.java @@ -0,0 +1,32 @@ +package org.apache.archiva.dependency.tree.maven2; +/* + * 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 Olivier Lamy + * @since 1.4-M3 + */ +public class DependencyTreeBuilderException + extends Exception +{ + public DependencyTreeBuilderException( String message, Throwable t ) + { + super( message, t ); + } +} diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/dependency/tree/maven2/Maven3DependencyTreeBuilder.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/dependency/tree/maven2/Maven3DependencyTreeBuilder.java new file mode 100644 index 000000000..d200d081a --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/dependency/tree/maven2/Maven3DependencyTreeBuilder.java @@ -0,0 +1,282 @@ +package org.apache.archiva.dependency.tree.maven2; +/* + * 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.archiva.admin.model.RepositoryAdminException; +import org.apache.archiva.admin.model.beans.NetworkProxy; +import org.apache.archiva.admin.model.beans.ProxyConnector; +import org.apache.archiva.admin.model.networkproxy.NetworkProxyAdmin; +import org.apache.archiva.admin.model.proxyconnector.ProxyConnectorAdmin; +import org.apache.archiva.common.plexusbridge.PlexusSisuBridge; +import org.apache.archiva.common.plexusbridge.PlexusSisuBridgeException; +import org.apache.archiva.common.utils.VersionUtil; +import org.apache.archiva.maven2.metadata.MavenMetadataReader; +import org.apache.archiva.maven2.model.TreeEntry; +import org.apache.archiva.metadata.repository.storage.RepositoryPathTranslator; +import org.apache.archiva.model.ArchivaRepositoryMetadata; +import org.apache.archiva.repository.ManagedRepository; +import org.apache.archiva.repository.RemoteRepository; +import org.apache.archiva.repository.RepositoryRegistry; +import org.apache.archiva.repository.maven2.MavenSystemManager; +import org.apache.archiva.repository.metadata.MetadataTools; +import org.apache.archiva.xml.XMLException; +import org.apache.commons.lang.StringUtils; +import org.apache.maven.artifact.Artifact; +import org.apache.maven.bridge.MavenRepositorySystem; +import org.eclipse.aether.RepositorySystem; +import org.eclipse.aether.RepositorySystemSession; +import org.eclipse.aether.artifact.DefaultArtifact; +import org.eclipse.aether.collection.CollectRequest; +import org.eclipse.aether.collection.CollectResult; +import org.eclipse.aether.collection.DependencyCollectionException; +import org.eclipse.aether.graph.Dependency; +import org.eclipse.aether.graph.DependencyVisitor; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; + +import javax.annotation.PostConstruct; +import javax.inject.Inject; +import javax.inject.Named; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author Olivier Lamy + * @since 1.4-M3 + */ +@Service("dependencyTreeBuilder#maven3") +public class Maven3DependencyTreeBuilder + implements DependencyTreeBuilder +{ + private Logger log = LoggerFactory.getLogger( Maven3DependencyTreeBuilder.class ); + + @Inject + private PlexusSisuBridge plexusSisuBridge; + + private MavenRepositorySystem mavenRepositorySystem; + + @Inject + @Named( "repositoryPathTranslator#maven2" ) + private RepositoryPathTranslator pathTranslator; + + @Inject + private ProxyConnectorAdmin proxyConnectorAdmin; + + @Inject + private NetworkProxyAdmin networkProxyAdmin; + + @Inject + RepositoryRegistry repositoryRegistry; + + @Inject + MavenSystemManager mavenSystemManager; + + + @PostConstruct + public void initialize() + throws PlexusSisuBridgeException + { + mavenRepositorySystem = plexusSisuBridge.lookup(MavenRepositorySystem.class); + } + + + + public void buildDependencyTree( List<String> repositoryIds, String groupId, String artifactId, String version, + DependencyVisitor dependencyVisitor ) + throws DependencyTreeBuilderException + { + + Artifact projectArtifact = mavenRepositorySystem.createProjectArtifact(groupId, artifactId, version); + ManagedRepository repository = findArtifactInRepositories( repositoryIds, projectArtifact ); + + if ( repository == null ) + { + // metadata could not be resolved + log.info("Did not find repository with artifact {}/{}/{}", groupId, artifactId, version); + return; + } + + List<org.apache.archiva.repository.RemoteRepository> remoteRepositories = new ArrayList<>(); + Map<String, NetworkProxy> networkProxies = new HashMap<>(); + + try + { + // MRM-1411 + // TODO: this is a workaround for a lack of proxy capability in the resolvers - replace when it can all be + // handled there. It doesn't cache anything locally! + + Map<String, List<ProxyConnector>> proxyConnectorsMap = proxyConnectorAdmin.getProxyConnectorAsMap(); + List<ProxyConnector> proxyConnectors = proxyConnectorsMap.get( repository.getId() ); + if ( proxyConnectors != null ) + { + for ( ProxyConnector proxyConnector : proxyConnectors ) + { + remoteRepositories.add( + repositoryRegistry.getRemoteRepository( proxyConnector.getTargetRepoId() ) ); + + NetworkProxy networkProxyConfig = networkProxyAdmin.getNetworkProxy( proxyConnector.getProxyId() ); + + if ( networkProxyConfig != null ) + { + // key/value: remote repo ID/proxy info + networkProxies.put( proxyConnector.getTargetRepoId(), networkProxyConfig ); + } + } + } + } + catch ( RepositoryAdminException e ) + { + throw new DependencyTreeBuilderException( e.getMessage(), e ); + } + + // FIXME take care of relative path + ResolveRequest resolveRequest = new ResolveRequest(); + resolveRequest.dependencyVisitor = dependencyVisitor; + resolveRequest.localRepoDir = repository.getContent().getRepoRoot(); + resolveRequest.groupId = groupId; + resolveRequest.artifactId = artifactId; + resolveRequest.version = version; + resolveRequest.remoteRepositories = remoteRepositories; + resolveRequest.networkProxies = networkProxies; + resolve( resolveRequest ); + } + + + @Override + public List<TreeEntry> buildDependencyTree( List<String> repositoryIds, String groupId, String artifactId, + String version ) + throws DependencyTreeBuilderException + { + + List<TreeEntry> treeEntries = new ArrayList<>(); + TreeDependencyNodeVisitor treeDependencyNodeVisitor = new TreeDependencyNodeVisitor( treeEntries ); + + buildDependencyTree( repositoryIds, groupId, artifactId, version, treeDependencyNodeVisitor ); + + log.debug( "treeEntries: {}", treeEntries ); + return treeEntries; + } + + private static class ResolveRequest + { + String localRepoDir, groupId, artifactId, version; + + DependencyVisitor dependencyVisitor; + + List<org.apache.archiva.repository.RemoteRepository> remoteRepositories; + + Map<String, NetworkProxy> networkProxies; + + } + + + private void resolve( ResolveRequest resolveRequest ) + { + + RepositorySystem system = mavenSystemManager.getRepositorySystem(); + RepositorySystemSession session = MavenSystemManager.newRepositorySystemSession( resolveRequest.localRepoDir ); + + org.eclipse.aether.artifact.Artifact artifact = new DefaultArtifact( + resolveRequest.groupId + ":" + resolveRequest.artifactId + ":" + resolveRequest.version ); + + CollectRequest collectRequest = new CollectRequest(); + collectRequest.setRoot( new Dependency( artifact, "" ) ); + + // add remote repositories + for ( RemoteRepository remoteRepository : resolveRequest.remoteRepositories ) + { + org.eclipse.aether.repository.RemoteRepository repo = new org.eclipse.aether.repository.RemoteRepository.Builder( remoteRepository.getId( ), "default", remoteRepository.getLocation( ).toString() ).build( ); + collectRequest.addRepository(repo); + } + collectRequest.setRequestContext( "project" ); + + //collectRequest.addRepository( repo ); + + try + { + CollectResult collectResult = system.collectDependencies( session, collectRequest ); + collectResult.getRoot().accept( resolveRequest.dependencyVisitor ); + log.debug("Collected dependency results for resolve"); + } + catch ( DependencyCollectionException e ) + { + log.error( "Error while collecting dependencies (resolve): {}", e.getMessage(), e ); + } + + + + } + + private ManagedRepository findArtifactInRepositories( List<String> repositoryIds, Artifact projectArtifact ) { + for ( String repoId : repositoryIds ) + { + ManagedRepository managedRepo = repositoryRegistry.getManagedRepository(repoId); + Path repoDir = managedRepo.getLocalPath(); + + Path file = pathTranslator.toFile( repoDir, projectArtifact.getGroupId(), projectArtifact.getArtifactId(), + projectArtifact.getBaseVersion(), + projectArtifact.getArtifactId() + "-" + projectArtifact.getVersion() + + ".pom" ); + + if ( Files.exists(file) ) + { + return managedRepo; + } + // try with snapshot version + if ( StringUtils.endsWith( projectArtifact.getBaseVersion(), VersionUtil.SNAPSHOT ) ) + { + Path metadataFile = file.getParent().resolve( MetadataTools.MAVEN_METADATA ); + if ( Files.exists(metadataFile) ) + { + try + { + ArchivaRepositoryMetadata archivaRepositoryMetadata = MavenMetadataReader.read( metadataFile); + int buildNumber = archivaRepositoryMetadata.getSnapshotVersion().getBuildNumber(); + String timeStamp = archivaRepositoryMetadata.getSnapshotVersion().getTimestamp(); + // rebuild file name with timestamped version and build number + String timeStampFileName = + new StringBuilder( projectArtifact.getArtifactId() ).append( '-' ).append( + StringUtils.remove( projectArtifact.getBaseVersion(), + "-" + VersionUtil.SNAPSHOT ) ).append( '-' ).append( + timeStamp ).append( '-' ).append( Integer.toString( buildNumber ) ).append( + ".pom" ).toString(); + Path timeStampFile = file.getParent().resolve( timeStampFileName ); + log.debug( "try to find timestamped snapshot version file: {}", timeStampFile); + if ( Files.exists(timeStampFile) ) + { + return managedRepo; + } + } + catch ( XMLException e ) + { + log.warn( "skip fail to find timestamped snapshot pom: {}", e.getMessage() ); + } + } + } + } + return null; + } + +} diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/dependency/tree/maven2/TreeDependencyNodeVisitor.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/dependency/tree/maven2/TreeDependencyNodeVisitor.java new file mode 100644 index 000000000..a53ee670c --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/dependency/tree/maven2/TreeDependencyNodeVisitor.java @@ -0,0 +1,94 @@ +package org.apache.archiva.dependency.tree.maven2; +/* + * 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.archiva.maven2.model.Artifact; +import org.apache.archiva.maven2.model.TreeEntry; +import org.eclipse.aether.graph.DependencyVisitor; +import org.modelmapper.ModelMapper; +import org.modelmapper.convention.MatchingStrategies; +import org.eclipse.aether.graph.DependencyNode; +import org.eclipse.aether.graph.DependencyVisitor; + +import java.util.List; + +/** + * @author Olivier Lamy + * @since 1.4-M3 + */ +public class TreeDependencyNodeVisitor + implements DependencyVisitor +{ + + final List<TreeEntry> treeEntries; + + private TreeEntry currentEntry; + + private org.eclipse.aether.graph.DependencyNode firstDependencyNode; + + public TreeDependencyNodeVisitor( List<TreeEntry> treeEntries ) + { + this.treeEntries = treeEntries; + } + + + @Override + public boolean visitEnter( DependencyNode dependencyNode ) + { + TreeEntry entry = + new TreeEntry( getModelMapper().map( dependencyNode.getDependency().getArtifact(), Artifact.class ) ); + entry.getArtifact().setFileExtension( dependencyNode.getDependency().getArtifact().getExtension() ); + entry.getArtifact().setScope( dependencyNode.getDependency().getScope() ); + entry.setParent( currentEntry ); + currentEntry = entry; + + if ( firstDependencyNode == null ) + { + firstDependencyNode = dependencyNode; + treeEntries.add( currentEntry ); + } + else + { + currentEntry.getParent().getChilds().add( currentEntry ); + } + return true; + } + + @Override + public boolean visitLeave( DependencyNode dependencyNode ) + { + currentEntry = currentEntry.getParent(); + return true; + } + + private static class ModelMapperHolder + { + private static ModelMapper MODEL_MAPPER = new ModelMapper(); + + static + { + MODEL_MAPPER.getConfiguration().setMatchingStrategy( MatchingStrategies.STRICT ); + } + } + + protected ModelMapper getModelMapper() + { + return ModelMapperHolder.MODEL_MAPPER; + } +} diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/ArtifactMappingProvider.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/ArtifactMappingProvider.java new file mode 100644 index 000000000..6d2335e52 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/ArtifactMappingProvider.java @@ -0,0 +1,27 @@ +package org.apache.archiva.metadata.repository.storage.maven2; + +/* + * 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. + */ + +public interface ArtifactMappingProvider +{ + String mapClassifierAndExtensionToType( String classifier, String ext ); + + String mapTypeToExtension( String type ); +} diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/ArtifactMetadataVersionComparator.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/ArtifactMetadataVersionComparator.java new file mode 100644 index 000000000..6e171edf9 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/ArtifactMetadataVersionComparator.java @@ -0,0 +1,43 @@ +package org.apache.archiva.metadata.repository.storage.maven2; +/* + * 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.archiva.metadata.model.ArtifactMetadata; +import org.apache.maven.artifact.versioning.DefaultArtifactVersion; + +import java.util.Comparator; + +/** + * @author Olivier Lamy + * @since 1.4-M3 + */ +public class ArtifactMetadataVersionComparator + implements Comparator<ArtifactMetadata> +{ + public static ArtifactMetadataVersionComparator INSTANCE = new ArtifactMetadataVersionComparator(); + + @Override + public int compare( ArtifactMetadata o1, ArtifactMetadata o2 ) + { + // sort by version (reverse), then ID + int result = + new DefaultArtifactVersion( o2.getVersion() ).compareTo( new DefaultArtifactVersion( o1.getVersion() ) ); + return result != 0 ? result : o1.getId().compareTo( o2.getId() ); + } +} diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/DefaultArtifactMappingProvider.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/DefaultArtifactMappingProvider.java new file mode 100644 index 000000000..01ea55970 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/DefaultArtifactMappingProvider.java @@ -0,0 +1,90 @@ +package org.apache.archiva.metadata.repository.storage.maven2; + +/* + * 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.springframework.stereotype.Service; + +import java.util.HashMap; +import java.util.Map; + +/** + * + */ +@Service( "artifactMappingProvider#default" ) +public class DefaultArtifactMappingProvider + implements ArtifactMappingProvider +{ + private final Map<String, String> classifierAndExtensionToTypeMap; + + private final Map<String, String> typeToExtensionMap; + + public DefaultArtifactMappingProvider() + { + classifierAndExtensionToTypeMap = new HashMap<>( 4 ); + + // Maven 2.2.1 supplied types (excluding defaults where extension == type and no classifier) + classifierAndExtensionToTypeMap.put( "client:jar", "ejb-client" ); + classifierAndExtensionToTypeMap.put( "sources:jar", "java-source" ); + classifierAndExtensionToTypeMap.put( "javadoc:jar", "javadoc" ); + classifierAndExtensionToTypeMap.put( "tests:jar", "test-jar" ); + + typeToExtensionMap = new HashMap<>(); + + // Maven 2.2.1 supplied types (excluding defaults where extension == type and no classifier) + typeToExtensionMap.put( "ejb-client", "jar" ); + typeToExtensionMap.put( "ejb", "jar" ); + typeToExtensionMap.put( "java-source", "jar" ); + typeToExtensionMap.put( "javadoc", "jar" ); + typeToExtensionMap.put( "test-jar", "jar" ); + typeToExtensionMap.put( "maven-plugin", "jar" ); + + // Additional type + typeToExtensionMap.put( "maven-archetype", "jar" ); + + // TODO: move to maven 1 plugin - but note that it won't have the interface type and might need to reproduce the + // same thing + typeToExtensionMap.put( "maven-one-plugin", "jar" ); + typeToExtensionMap.put( "javadoc.jar", "jar" ); + typeToExtensionMap.put( "uberjar", "jar" ); + typeToExtensionMap.put( "distribution-tgz", "tar.gz" ); + typeToExtensionMap.put( "distribution-zip", "zip" ); + typeToExtensionMap.put( "aspect", "jar" ); + } + + @Override + public String mapClassifierAndExtensionToType( String classifier, String ext ) + { + if ( classifier == null ) + { + classifier = ""; + } + if ( ext == null ) + { + ext = ""; + } + return classifierAndExtensionToTypeMap.get( classifier + ":" + ext ); + } + + @Override + public String mapTypeToExtension( String type ) + { + return typeToExtensionMap.get( type ); + } +} diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/DummyLifecycleBindingsInjector.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/DummyLifecycleBindingsInjector.java new file mode 100644 index 000000000..e0cf7118a --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/DummyLifecycleBindingsInjector.java @@ -0,0 +1,40 @@ +package org.apache.archiva.metadata.repository.storage.maven2; + +/* + * 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.model.Model; +import org.apache.maven.model.building.ModelBuildingRequest; +import org.apache.maven.model.building.ModelProblemCollector; +import org.apache.maven.model.plugin.LifecycleBindingsInjector; + +/** + * Required as plexus-spring doesn't understand the optional = true argument added to Plexus and used here. + * + * + */ +public class DummyLifecycleBindingsInjector + implements LifecycleBindingsInjector +{ + @Override + public void injectLifecycleBindings( Model model, ModelBuildingRequest modelBuildingRequest, ModelProblemCollector modelProblemCollector ) + { + // left intentionally blank + } +} diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryPathTranslator.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryPathTranslator.java new file mode 100644 index 000000000..b91036809 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryPathTranslator.java @@ -0,0 +1,345 @@ +package org.apache.archiva.metadata.repository.storage.maven2; + +/* + * 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.archiva.common.utils.VersionUtil; +import org.apache.archiva.metadata.model.ArtifactMetadata; +import org.apache.archiva.metadata.model.maven2.MavenArtifactFacet; +import org.apache.archiva.metadata.repository.storage.RepositoryPathTranslator; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; + +import javax.annotation.PostConstruct; +import javax.inject.Inject; +import java.nio.file.Path; +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** + * + */ +@Service( "repositoryPathTranslator#maven2" ) +public class Maven2RepositoryPathTranslator + implements RepositoryPathTranslator +{ + + private Logger log = LoggerFactory.getLogger( getClass() ); + + private static final char GROUP_SEPARATOR = '.'; + + private static final Pattern TIMESTAMP_PATTERN = Pattern.compile( "([0-9]{8}.[0-9]{6})-([0-9]+).*" ); + + + private static final Pattern MAVEN_PLUGIN_PATTERN = Pattern.compile( "^(maven-.*-plugin)|(.*-maven-plugin)$" ); + + /** + * + * see #initialize + */ + @Inject + private List<ArtifactMappingProvider> artifactMappingProviders; + + public Maven2RepositoryPathTranslator() + { + // noop + } + + @PostConstruct + public void initialize() + { + //artifactMappingProviders = new ArrayList<ArtifactMappingProvider>( + // applicationContext.getBeansOfType( ArtifactMappingProvider.class ).values() ); + + } + + + public Maven2RepositoryPathTranslator( List<ArtifactMappingProvider> artifactMappingProviders ) + { + this.artifactMappingProviders = artifactMappingProviders; + } + + @Override + public Path toFile(Path basedir, String namespace, String projectId, String projectVersion, String filename ) + { + return basedir.resolve( toPath( namespace, projectId, projectVersion, filename ) ); + } + + @Override + public Path toFile( Path basedir, String namespace, String projectId, String projectVersion ) + { + return basedir.resolve( toPath( namespace, projectId, projectVersion ) ); + } + + @Override + public String toPath( String namespace, String projectId, String projectVersion, String filename ) + { + StringBuilder path = new StringBuilder(); + + appendNamespaceToProjectVersion( path, namespace, projectId, projectVersion ); + path.append( PATH_SEPARATOR ); + path.append( filename ); + + return path.toString(); + } + + private void appendNamespaceToProjectVersion( StringBuilder path, String namespace, String projectId, + String projectVersion ) + { + appendNamespaceAndProject( path, namespace, projectId ); + path.append( projectVersion ); + } + + public String toPath( String namespace, String projectId, String projectVersion ) + { + StringBuilder path = new StringBuilder(); + + appendNamespaceToProjectVersion( path, namespace, projectId, projectVersion ); + + return path.toString(); + } + + public String toPath( String namespace ) + { + StringBuilder path = new StringBuilder(); + + appendNamespace( path, namespace ); + + return path.toString(); + } + + @Override + public String toPath( String namespace, String projectId ) + { + StringBuilder path = new StringBuilder(); + + appendNamespaceAndProject( path, namespace, projectId ); + + return path.toString(); + } + + private void appendNamespaceAndProject( StringBuilder path, String namespace, String projectId ) + { + appendNamespace( path, namespace ); + path.append( projectId ).append( PATH_SEPARATOR ); + } + + private void appendNamespace( StringBuilder path, String namespace ) + { + path.append( formatAsDirectory( namespace ) ).append( PATH_SEPARATOR ); + } + + @Override + public Path toFile( Path basedir, String namespace, String projectId ) + { + return basedir.resolve( toPath( namespace, projectId ) ); + } + + @Override + public Path toFile( Path basedir, String namespace ) + { + return basedir.resolve( toPath( namespace ) ); + } + + private String formatAsDirectory( String directory ) + { + return directory.replace( GROUP_SEPARATOR, PATH_SEPARATOR ); + } + + @Override + public ArtifactMetadata getArtifactForPath( String repoId, String relativePath ) + { + String[] parts = relativePath.replace( '\\', '/' ).split( "/" ); + + int len = parts.length; + if ( len < 4 ) + { + throw new IllegalArgumentException( + "Not a valid artifact path in a Maven 2 repository, not enough directories: " + relativePath ); + } + + String id = parts[--len]; + String baseVersion = parts[--len]; + String artifactId = parts[--len]; + StringBuilder groupIdBuilder = new StringBuilder(); + for ( int i = 0; i < len - 1; i++ ) + { + groupIdBuilder.append( parts[i] ); + groupIdBuilder.append( '.' ); + } + groupIdBuilder.append( parts[len - 1] ); + + return getArtifactFromId( repoId, groupIdBuilder.toString(), artifactId, baseVersion, id ); + } + + @Override + public ArtifactMetadata getArtifactFromId( String repoId, String namespace, String projectId, String projectVersion, + String id ) + { + if ( !id.startsWith( projectId + "-" ) ) + { + throw new IllegalArgumentException( "Not a valid artifact path in a Maven 2 repository, filename '" + id + + "' doesn't start with artifact ID '" + projectId + "'" ); + } + + MavenArtifactFacet facet = new MavenArtifactFacet(); + + int index = projectId.length() + 1; + String version; + String idSubStrFromVersion = id.substring( index ); + if ( idSubStrFromVersion.startsWith( projectVersion ) && !VersionUtil.isUniqueSnapshot( projectVersion ) ) + { + // non-snapshot versions, or non-timestamped snapshot versions + version = projectVersion; + } + else if ( VersionUtil.isGenericSnapshot( projectVersion ) ) + { + // timestamped snapshots + try + { + int mainVersionLength = projectVersion.length() - 8; // 8 is length of "SNAPSHOT" + if ( mainVersionLength == 0 ) + { + throw new IllegalArgumentException( + "Timestamped snapshots must contain the main version, filename was '" + id + "'" ); + } + + Matcher m = TIMESTAMP_PATTERN.matcher( idSubStrFromVersion.substring( mainVersionLength ) ); + m.matches(); + String timestamp = m.group( 1 ); + String buildNumber = m.group( 2 ); + facet.setTimestamp( timestamp ); + facet.setBuildNumber( Integer.parseInt( buildNumber ) ); + version = idSubStrFromVersion.substring( 0, mainVersionLength ) + timestamp + "-" + buildNumber; + } + catch ( IllegalStateException e ) + { + throw new IllegalArgumentException( "Not a valid artifact path in a Maven 2 repository, filename '" + id + + "' doesn't contain a timestamped version matching snapshot '" + + projectVersion + "'", e); + } + } + else + { + // invalid + throw new IllegalArgumentException( + "Not a valid artifact path in a Maven 2 repository, filename '" + id + "' doesn't contain version '" + + projectVersion + "'" ); + } + + String classifier; + String ext; + index += version.length(); + if ( index == id.length() ) + { + // no classifier or extension + classifier = null; + ext = null; + } + else + { + char c = id.charAt( index ); + if ( c == '-' ) + { + // classifier up until '.' + int extIndex = id.indexOf( '.', index ); + if ( extIndex >= 0 ) + { + classifier = id.substring( index + 1, extIndex ); + ext = id.substring( extIndex + 1 ); + } + else + { + classifier = id.substring( index + 1 ); + ext = null; + } + } + else if ( c == '.' ) + { + // rest is the extension + classifier = null; + ext = id.substring( index + 1 ); + } + else + { + throw new IllegalArgumentException( "Not a valid artifact path in a Maven 2 repository, filename '" + id + + "' expected classifier or extension but got '" + + id.substring( index ) + "'" ); + } + } + + ArtifactMetadata metadata = new ArtifactMetadata(); + metadata.setId( id ); + metadata.setNamespace( namespace ); + metadata.setProject( projectId ); + metadata.setRepositoryId( repoId ); + metadata.setProjectVersion( projectVersion ); + metadata.setVersion( version ); + + facet.setClassifier( classifier ); + + // we use our own provider here instead of directly accessing Maven's artifact handlers as it has no way + // to select the correct order to apply multiple extensions mappings to a preferred type + // TODO: this won't allow the user to decide order to apply them if there are conflicts or desired changes - + // perhaps the plugins could register missing entries in configuration, then we just use configuration + // here? + + String type = null; + for ( ArtifactMappingProvider mapping : artifactMappingProviders ) + { + type = mapping.mapClassifierAndExtensionToType( classifier, ext ); + if ( type != null ) + { + break; + } + } + + // TODO: this is cheating! We should check the POM metadata instead + if ( type == null && "jar".equals( ext ) && isArtifactIdValidMavenPlugin( projectId ) ) + { + type = "maven-plugin"; + } + + // use extension as default + if ( type == null ) + { + type = ext; + } + + // TODO: should we allow this instead? + if ( type == null ) + { + throw new IllegalArgumentException( + "Not a valid artifact path in a Maven 2 repository, filename '" + id + "' does not have a type" ); + } + + facet.setType( type ); + metadata.addFacet( facet ); + + return metadata; + } + + + public boolean isArtifactIdValidMavenPlugin( String artifactId ) + { + return MAVEN_PLUGIN_PATTERN.matcher( artifactId ).matches(); + } +} diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryStorage.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryStorage.java new file mode 100644 index 000000000..b7011ca1a --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryStorage.java @@ -0,0 +1,976 @@ +package org.apache.archiva.metadata.repository.storage.maven2; + +/* + * 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.archiva.checksum.ChecksumAlgorithm; +import org.apache.archiva.checksum.ChecksummedFile; +import org.apache.archiva.common.Try; +import org.apache.archiva.common.utils.VersionUtil; +import org.apache.archiva.maven2.metadata.MavenMetadataReader; +import org.apache.archiva.metadata.model.ArtifactMetadata; +import org.apache.archiva.metadata.model.ProjectMetadata; +import org.apache.archiva.metadata.model.ProjectVersionMetadata; +import org.apache.archiva.metadata.model.facets.RepositoryProblemFacet; +import org.apache.archiva.metadata.repository.filter.Filter; +import org.apache.archiva.metadata.repository.storage.ReadMetadataRequest; +import org.apache.archiva.metadata.repository.storage.RelocationException; +import org.apache.archiva.metadata.repository.storage.RepositoryPathTranslator; +import org.apache.archiva.metadata.repository.storage.RepositoryStorage; +import org.apache.archiva.metadata.repository.storage.RepositoryStorageMetadataInvalidException; +import org.apache.archiva.metadata.repository.storage.RepositoryStorageMetadataNotFoundException; +import org.apache.archiva.metadata.repository.storage.RepositoryStorageRuntimeException; +import org.apache.archiva.model.ArchivaRepositoryMetadata; +import org.apache.archiva.model.ArtifactReference; +import org.apache.archiva.model.SnapshotVersion; +import org.apache.archiva.policies.ProxyDownloadException; +import org.apache.archiva.proxy.ProxyRegistry; +import org.apache.archiva.proxy.maven.WagonFactory; +import org.apache.archiva.proxy.model.NetworkProxy; +import org.apache.archiva.proxy.model.ProxyConnector; +import org.apache.archiva.proxy.model.RepositoryProxyHandler; +import org.apache.archiva.repository.*; +import org.apache.archiva.repository.content.PathParser; +import org.apache.archiva.repository.maven2.MavenSystemManager; +import org.apache.archiva.xml.XMLException; +import org.apache.commons.lang.ArrayUtils; +import org.apache.commons.lang.StringUtils; +import org.apache.maven.model.CiManagement; +import org.apache.maven.model.Dependency; +import org.apache.maven.model.DistributionManagement; +import org.apache.maven.model.IssueManagement; +import org.apache.maven.model.License; +import org.apache.maven.model.MailingList; +import org.apache.maven.model.Model; +import org.apache.maven.model.Organization; +import org.apache.maven.model.Relocation; +import org.apache.maven.model.Scm; +import org.apache.maven.model.building.DefaultModelBuilderFactory; +import org.apache.maven.model.building.DefaultModelBuildingRequest; +import org.apache.maven.model.building.ModelBuilder; +import org.apache.maven.model.building.ModelBuildingException; +import org.apache.maven.model.building.ModelBuildingRequest; +import org.apache.maven.model.building.ModelProblem; +import org.apache.maven.model.io.xpp3.MavenXpp3Reader; +import org.codehaus.plexus.util.xml.pull.XmlPullParserException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.context.ApplicationContext; +import org.springframework.stereotype.Service; + +import javax.annotation.PostConstruct; +import javax.inject.Inject; +import javax.inject.Named; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.Reader; +import java.nio.charset.Charset; +import java.nio.file.Files; +import java.nio.file.NoSuchFileException; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.function.Predicate; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +// import java.io.FileNotFoundException; + +/** + * <p> + * Maven 2 repository format storage implementation. This class currently takes parameters to indicate the repository to + * deal with rather than being instantiated per-repository. + * FIXME: instantiate one per repository and allocate permanently from a factory (which can be obtained within the session). + * </p> + * <p> + * The session is passed in as an argument to obtain any necessary resources, rather than the class being instantiated + * within the session in the context of a single managed repository's resolution needs. + * </p> + */ +@Service("repositoryStorage#maven2") +public class Maven2RepositoryStorage + implements RepositoryStorage { + + private static final Logger LOGGER = LoggerFactory.getLogger(Maven2RepositoryStorage.class); + + private ModelBuilder builder; + + @Inject + RepositoryRegistry repositoryRegistry; + + @Inject + @Named("repositoryPathTranslator#maven2") + private RepositoryPathTranslator pathTranslator; + + @Inject + private WagonFactory wagonFactory; + + @Inject + private ApplicationContext applicationContext; + + @Inject + @Named("pathParser#default") + private PathParser pathParser; + + @Inject + private ProxyRegistry proxyRegistry; + + @Inject + private MavenSystemManager mavenSystemManager; + + private static final String METADATA_FILENAME_START = "maven-metadata"; + + private static final String METADATA_FILENAME = METADATA_FILENAME_START + ".xml"; + + // This array must be lexically sorted + private static final String[] IGNORED_FILES = {METADATA_FILENAME, "resolver-status.properties"}; + + private static final MavenXpp3Reader MAVEN_XPP_3_READER = new MavenXpp3Reader(); + + + @PostConstruct + public void initialize() { + builder = new DefaultModelBuilderFactory().newInstance(); + + } + + @Override + public ProjectMetadata readProjectMetadata(String repoId, String namespace, String projectId) { + // TODO: could natively implement the "shared model" concept from the browse action to avoid needing it there? + return null; + } + + @Override + public ProjectVersionMetadata readProjectVersionMetadata(ReadMetadataRequest readMetadataRequest) + throws RepositoryStorageMetadataNotFoundException, RepositoryStorageMetadataInvalidException, + RepositoryStorageRuntimeException { + + ManagedRepository managedRepository = repositoryRegistry.getManagedRepository(readMetadataRequest.getRepositoryId()); + boolean isReleases = managedRepository.getActiveReleaseSchemes().contains(ReleaseScheme.RELEASE); + boolean isSnapshots = managedRepository.getActiveReleaseSchemes().contains(ReleaseScheme.SNAPSHOT); + String artifactVersion = readMetadataRequest.getProjectVersion(); + // olamy: in case of browsing via the ui we can mix repos (parent of a SNAPSHOT can come from release repo) + if (!readMetadataRequest.isBrowsingRequest()) { + if (VersionUtil.isSnapshot(artifactVersion)) { + // skygo trying to improve speed by honoring managed configuration MRM-1658 + if (isReleases && !isSnapshots) { + throw new RepositoryStorageRuntimeException("lookforsnaponreleaseonly", + "managed repo is configured for release only"); + } + } else { + if (!isReleases && isSnapshots) { + throw new RepositoryStorageRuntimeException("lookforsreleaseonsneponly", + "managed repo is configured for snapshot only"); + } + } + } + Path basedir = Paths.get(managedRepository.getLocation()); + if (VersionUtil.isSnapshot(artifactVersion)) { + Path metadataFile = pathTranslator.toFile(basedir, readMetadataRequest.getNamespace(), + readMetadataRequest.getProjectId(), artifactVersion, + METADATA_FILENAME); + try { + ArchivaRepositoryMetadata metadata = MavenMetadataReader.read(metadataFile); + + // re-adjust to timestamp if present, otherwise retain the original -SNAPSHOT filename + SnapshotVersion snapshotVersion = metadata.getSnapshotVersion(); + if (snapshotVersion != null) { + artifactVersion = + artifactVersion.substring(0, artifactVersion.length() - 8); // remove SNAPSHOT from end + artifactVersion = + artifactVersion + snapshotVersion.getTimestamp() + "-" + snapshotVersion.getBuildNumber(); + } + } catch (XMLException e) { + // unable to parse metadata - LOGGER it, and continue with the version as the original SNAPSHOT version + LOGGER.warn("Invalid metadata: {} - {}", metadataFile, e.getMessage()); + } + } + + // TODO: won't work well with some other layouts, might need to convert artifact parts to ID by path translator + String id = readMetadataRequest.getProjectId() + "-" + artifactVersion + ".pom"; + Path file = + pathTranslator.toFile(basedir, readMetadataRequest.getNamespace(), readMetadataRequest.getProjectId(), + readMetadataRequest.getProjectVersion(), id); + + if (!Files.exists(file)) { + // metadata could not be resolved + throw new RepositoryStorageMetadataNotFoundException( + "The artifact's POM file '" + file.toAbsolutePath() + "' was missing"); + } + + // TODO: this is a workaround until we can properly resolve using proxies as well - this doesn't cache + // anything locally! + List<RemoteRepository> remoteRepositories = new ArrayList<>(); + Map<String, NetworkProxy> networkProxies = new HashMap<>(); + + Map<String, List<ProxyConnector>> proxyConnectorsMap = proxyRegistry.getProxyConnectorAsMap(); + List<ProxyConnector> proxyConnectors = proxyConnectorsMap.get(readMetadataRequest.getRepositoryId()); + if (proxyConnectors != null) { + for (ProxyConnector proxyConnector : proxyConnectors) { + RemoteRepository remoteRepoConfig = + repositoryRegistry.getRemoteRepository(proxyConnector.getTargetRepository().getId()); + + if (remoteRepoConfig != null) { + remoteRepositories.add(remoteRepoConfig); + + NetworkProxy networkProxyConfig = + proxyRegistry.getNetworkProxy(proxyConnector.getProxyId()); + + if (networkProxyConfig != null) { + // key/value: remote repo ID/proxy info + networkProxies.put(proxyConnector.getTargetRepository().getId(), networkProxyConfig); + } + } + } + } + + // That's a browsing request so we can a mix of SNAPSHOT and release artifacts (especially with snapshots which + // can have released parent pom + if (readMetadataRequest.isBrowsingRequest()) { + remoteRepositories.addAll(repositoryRegistry.getRemoteRepositories()); + } + + ModelBuildingRequest req = + new DefaultModelBuildingRequest().setProcessPlugins(false).setPomFile(file.toFile()).setTwoPhaseBuilding( + false).setValidationLevel(ModelBuildingRequest.VALIDATION_LEVEL_MINIMAL); + + //MRM-1607. olamy this will resolve jdk profiles on the current running archiva jvm + req.setSystemProperties(System.getProperties()); + + // MRM-1411 + req.setModelResolver( + new RepositoryModelResolver(managedRepository, pathTranslator, wagonFactory, remoteRepositories, + networkProxies, managedRepository, mavenSystemManager)); + + Model model; + try { + model = builder.build(req).getEffectiveModel(); + } catch (ModelBuildingException e) { + String msg = "The artifact's POM file '" + file + "' was invalid: " + e.getMessage(); + + List<ModelProblem> modelProblems = e.getProblems(); + for (ModelProblem problem : modelProblems) { + // MRM-1411, related to MRM-1335 + // this means that the problem was that the parent wasn't resolved! + // olamy really hackhish but fail with java profile so use error message + // || ( StringUtils.startsWith( problem.getMessage(), "Failed to determine Java version for profile" ) ) + // but setTwoPhaseBuilding(true) fix that + if (((problem.getException() instanceof FileNotFoundException + || problem.getException() instanceof NoSuchFileException + ) && e.getModelId() != null && + !e.getModelId().equals(problem.getModelId()))) { + LOGGER.warn("The artifact's parent POM file '{}' cannot be resolved. " + + "Using defaults for project version metadata..", file); + + ProjectVersionMetadata metadata = new ProjectVersionMetadata(); + metadata.setId(readMetadataRequest.getProjectVersion()); + + MavenProjectFacet facet = new MavenProjectFacet(); + facet.setGroupId(readMetadataRequest.getNamespace()); + facet.setArtifactId(readMetadataRequest.getProjectId()); + facet.setPackaging("jar"); + metadata.addFacet(facet); + + String errMsg = + "Error in resolving artifact's parent POM file. " + (problem.getException() == null + ? problem.getMessage() + : problem.getException().getMessage()); + RepositoryProblemFacet repoProblemFacet = new RepositoryProblemFacet(); + repoProblemFacet.setRepositoryId(readMetadataRequest.getRepositoryId()); + repoProblemFacet.setId(readMetadataRequest.getRepositoryId()); + repoProblemFacet.setMessage(errMsg); + repoProblemFacet.setProblem(errMsg); + repoProblemFacet.setProject(readMetadataRequest.getProjectId()); + repoProblemFacet.setVersion(readMetadataRequest.getProjectVersion()); + repoProblemFacet.setNamespace(readMetadataRequest.getNamespace()); + + metadata.addFacet(repoProblemFacet); + + return metadata; + } + } + + throw new RepositoryStorageMetadataInvalidException("invalid-pom", msg, e); + } + + // Check if the POM is in the correct location + boolean correctGroupId = readMetadataRequest.getNamespace().equals(model.getGroupId()); + boolean correctArtifactId = readMetadataRequest.getProjectId().equals(model.getArtifactId()); + boolean correctVersion = readMetadataRequest.getProjectVersion().equals(model.getVersion()); + if (!correctGroupId || !correctArtifactId || !correctVersion) { + StringBuilder message = new StringBuilder("Incorrect POM coordinates in '" + file + "':"); + if (!correctGroupId) { + message.append("\nIncorrect group ID: ").append(model.getGroupId()); + } + if (!correctArtifactId) { + message.append("\nIncorrect artifact ID: ").append(model.getArtifactId()); + } + if (!correctVersion) { + message.append("\nIncorrect version: ").append(model.getVersion()); + } + + throw new RepositoryStorageMetadataInvalidException("mislocated-pom", message.toString()); + } + + ProjectVersionMetadata metadata = new ProjectVersionMetadata(); + metadata.setCiManagement(convertCiManagement(model.getCiManagement())); + metadata.setDescription(model.getDescription()); + metadata.setId(readMetadataRequest.getProjectVersion()); + metadata.setIssueManagement(convertIssueManagement(model.getIssueManagement())); + metadata.setLicenses(convertLicenses(model.getLicenses())); + metadata.setMailingLists(convertMailingLists(model.getMailingLists())); + metadata.setDependencies(convertDependencies(model.getDependencies())); + metadata.setName(model.getName()); + metadata.setOrganization(convertOrganization(model.getOrganization())); + metadata.setScm(convertScm(model.getScm())); + metadata.setUrl(model.getUrl()); + metadata.setProperties(model.getProperties()); + + MavenProjectFacet facet = new MavenProjectFacet(); + facet.setGroupId(model.getGroupId() != null ? model.getGroupId() : model.getParent().getGroupId()); + facet.setArtifactId(model.getArtifactId()); + facet.setPackaging(model.getPackaging()); + if (model.getParent() != null) { + MavenProjectParent parent = new MavenProjectParent(); + parent.setGroupId(model.getParent().getGroupId()); + parent.setArtifactId(model.getParent().getArtifactId()); + parent.setVersion(model.getParent().getVersion()); + facet.setParent(parent); + } + metadata.addFacet(facet); + + return metadata; + + + } + + public void setWagonFactory(WagonFactory wagonFactory) { + this.wagonFactory = wagonFactory; + } + + private List<org.apache.archiva.metadata.model.Dependency> convertDependencies(List<Dependency> dependencies) { + List<org.apache.archiva.metadata.model.Dependency> l = new ArrayList<>(); + for (Dependency dependency : dependencies) { + org.apache.archiva.metadata.model.Dependency newDependency = + new org.apache.archiva.metadata.model.Dependency(); + newDependency.setArtifactId(dependency.getArtifactId()); + newDependency.setClassifier(dependency.getClassifier()); + newDependency.setGroupId(dependency.getGroupId()); + newDependency.setOptional(dependency.isOptional()); + newDependency.setScope(dependency.getScope()); + newDependency.setSystemPath(dependency.getSystemPath()); + newDependency.setType(dependency.getType()); + newDependency.setVersion(dependency.getVersion()); + l.add(newDependency); + } + return l; + } + + private org.apache.archiva.metadata.model.Scm convertScm(Scm scm) { + org.apache.archiva.metadata.model.Scm newScm = null; + if (scm != null) { + newScm = new org.apache.archiva.metadata.model.Scm(); + newScm.setConnection(scm.getConnection()); + newScm.setDeveloperConnection(scm.getDeveloperConnection()); + newScm.setUrl(scm.getUrl()); + } + return newScm; + } + + private org.apache.archiva.metadata.model.Organization convertOrganization(Organization organization) { + org.apache.archiva.metadata.model.Organization org = null; + if (organization != null) { + org = new org.apache.archiva.metadata.model.Organization(); + org.setName(organization.getName()); + org.setUrl(organization.getUrl()); + } + return org; + } + + private List<org.apache.archiva.metadata.model.License> convertLicenses(List<License> licenses) { + List<org.apache.archiva.metadata.model.License> l = new ArrayList<>(); + for (License license : licenses) { + org.apache.archiva.metadata.model.License newLicense = new org.apache.archiva.metadata.model.License(); + newLicense.setName(license.getName()); + newLicense.setUrl(license.getUrl()); + l.add(newLicense); + } + return l; + } + + private List<org.apache.archiva.metadata.model.MailingList> convertMailingLists(List<MailingList> mailingLists) { + List<org.apache.archiva.metadata.model.MailingList> l = new ArrayList<>(); + for (MailingList mailingList : mailingLists) { + org.apache.archiva.metadata.model.MailingList newMailingList = + new org.apache.archiva.metadata.model.MailingList(); + newMailingList.setName(mailingList.getName()); + newMailingList.setMainArchiveUrl(mailingList.getArchive()); + newMailingList.setPostAddress(mailingList.getPost()); + newMailingList.setSubscribeAddress(mailingList.getSubscribe()); + newMailingList.setUnsubscribeAddress(mailingList.getUnsubscribe()); + newMailingList.setOtherArchives(mailingList.getOtherArchives()); + l.add(newMailingList); + } + return l; + } + + private org.apache.archiva.metadata.model.IssueManagement convertIssueManagement(IssueManagement issueManagement) { + org.apache.archiva.metadata.model.IssueManagement im = null; + if (issueManagement != null) { + im = new org.apache.archiva.metadata.model.IssueManagement(); + im.setSystem(issueManagement.getSystem()); + im.setUrl(issueManagement.getUrl()); + } + return im; + } + + private org.apache.archiva.metadata.model.CiManagement convertCiManagement(CiManagement ciManagement) { + org.apache.archiva.metadata.model.CiManagement ci = null; + if (ciManagement != null) { + ci = new org.apache.archiva.metadata.model.CiManagement(); + ci.setSystem(ciManagement.getSystem()); + ci.setUrl(ciManagement.getUrl()); + } + return ci; + } + + @Override + public Collection<String> listRootNamespaces(String repoId, Filter<String> filter) + throws RepositoryStorageRuntimeException { + Path dir = getRepositoryBasedir(repoId); + + return getSortedFiles(dir, filter); + } + + private static Collection<String> getSortedFiles(Path dir, Filter<String> filter) { + + try (Stream<Path> stream = Files.list(dir)) { + final Predicate<Path> dFilter = new DirectoryFilter(filter); + return stream.filter(Files::isDirectory) + .filter(dFilter) + .map(path -> path.getFileName().toString()) + .sorted().collect(Collectors.toList()); + + } catch (IOException e) { + LOGGER.error("Could not read directory list {}: {}", dir, e.getMessage(), e); + return Collections.emptyList(); + } + } + + private Path getRepositoryBasedir(String repoId) + throws RepositoryStorageRuntimeException { + ManagedRepository repositoryConfiguration = repositoryRegistry.getManagedRepository(repoId); + + return Paths.get(repositoryConfiguration.getLocation()); + } + + @Override + public Collection<String> listNamespaces(String repoId, String namespace, Filter<String> filter) + throws RepositoryStorageRuntimeException { + Path dir = pathTranslator.toFile(getRepositoryBasedir(repoId), namespace); + if (!(Files.exists(dir) && Files.isDirectory(dir))) { + return Collections.emptyList(); + } + // scan all the directories which are potential namespaces. Any directories known to be projects are excluded + Predicate<Path> dFilter = new DirectoryFilter(filter); + try (Stream<Path> stream = Files.list(dir)) { + return stream.filter(dFilter).filter(path -> !isProject(path, filter)).map(path -> path.getFileName().toString()) + .sorted().collect(Collectors.toList()); + } catch (IOException e) { + LOGGER.error("Could not read directory {}: {}", dir, e.getMessage(), e); + return Collections.emptyList(); + } + } + + @Override + public Collection<String> listProjects(String repoId, String namespace, Filter<String> filter) + throws RepositoryStorageRuntimeException { + Path dir = pathTranslator.toFile(getRepositoryBasedir(repoId), namespace); + if (!(Files.exists(dir) && Files.isDirectory(dir))) { + return Collections.emptyList(); + } + // scan all directories in the namespace, and only include those that are known to be projects + final Predicate<Path> dFilter = new DirectoryFilter(filter); + try (Stream<Path> stream = Files.list(dir)) { + return stream.filter(dFilter).filter(path -> isProject(path, filter)).map(path -> path.getFileName().toString()) + .sorted().collect(Collectors.toList()); + } catch (IOException e) { + LOGGER.error("Could not read directory {}: {}", dir, e.getMessage(), e); + return Collections.emptyList(); + } + + } + + @Override + public Collection<String> listProjectVersions(String repoId, String namespace, String projectId, + Filter<String> filter) + throws RepositoryStorageRuntimeException { + Path dir = pathTranslator.toFile(getRepositoryBasedir(repoId), namespace, projectId); + if (!(Files.exists(dir) && Files.isDirectory(dir))) { + return Collections.emptyList(); + } + + // all directories in a project directory can be considered a version + return getSortedFiles(dir, filter); + } + + @Override + public Collection<ArtifactMetadata> readArtifactsMetadata(ReadMetadataRequest readMetadataRequest) + throws RepositoryStorageRuntimeException { + Path dir = pathTranslator.toFile(getRepositoryBasedir(readMetadataRequest.getRepositoryId()), + readMetadataRequest.getNamespace(), readMetadataRequest.getProjectId(), + readMetadataRequest.getProjectVersion()); + if (!(Files.exists(dir) && Files.isDirectory(dir))) { + return Collections.emptyList(); + } + + // all files that are not metadata and not a checksum / signature are considered artifacts + final Predicate<Path> dFilter = new ArtifactDirectoryFilter(readMetadataRequest.getFilter()); + try (Stream<Path> stream = Files.list(dir)) { + // Returns a map TRUE -> (success values), FALSE -> (Exceptions) + Map<Boolean, List<Try<ArtifactMetadata>>> result = stream.filter(dFilter).map(path -> { + try { + return Try.success(getArtifactFromFile(readMetadataRequest.getRepositoryId(), readMetadataRequest.getNamespace(), + readMetadataRequest.getProjectId(), readMetadataRequest.getProjectVersion(), + path)); + } catch (Exception e) { + LOGGER.debug("Could not create metadata for {}: {}", path, e.getMessage(), e); + return Try.<ArtifactMetadata>failure(e); + } + } + ).collect(Collectors.groupingBy(Try::isSuccess)); + if (result.containsKey(Boolean.FALSE) && result.get(Boolean.FALSE).size() > 0 && (!result.containsKey(Boolean.TRUE) || result.get(Boolean.TRUE).size() == 0)) { + LOGGER.error("Could not get artifact metadata. Directory: {}. Number of errors {}.", dir, result.get(Boolean.FALSE).size()); + Try<ArtifactMetadata> failure = result.get(Boolean.FALSE).get(0); + LOGGER.error("Sample exception {}", failure.getError().getMessage(), failure.getError()); + throw new RepositoryStorageRuntimeException(readMetadataRequest.getRepositoryId(), "Could not retrieve metadata of the files"); + } else { + if (!result.containsKey(Boolean.TRUE) || result.get(Boolean.TRUE) == null) { + return Collections.emptyList(); + } + return result.get(Boolean.TRUE).stream().map(tr -> tr.get()).collect(Collectors.toList()); + } + } catch (IOException e) { + LOGGER.error("Could not read directory {}: {}", dir, e.getMessage(), e); + } + return Collections.emptyList(); + + } + + @Override + public ArtifactMetadata readArtifactMetadataFromPath(String repoId, String path) + throws RepositoryStorageRuntimeException { + ArtifactMetadata metadata = pathTranslator.getArtifactForPath(repoId, path); + + try { + populateArtifactMetadataFromFile(metadata, getRepositoryBasedir(repoId).resolve(path)); + } catch (IOException e) { + throw new RepositoryStorageRuntimeException(repoId, "Error during metadata retrieval of " + path + " :" + e.getMessage(), e); + } + + return metadata; + } + + private ArtifactMetadata getArtifactFromFile(String repoId, String namespace, String projectId, + String projectVersion, Path file) throws IOException { + ArtifactMetadata metadata = + pathTranslator.getArtifactFromId(repoId, namespace, projectId, projectVersion, file.getFileName().toString()); + + populateArtifactMetadataFromFile(metadata, file); + + return metadata; + } + + @Override + public void applyServerSideRelocation(ManagedRepositoryContent managedRepository, ArtifactReference artifact) + throws ProxyDownloadException { + if ("pom".equals(artifact.getType())) { + return; + } + + // Build the artifact POM reference + ArtifactReference pomReference = new ArtifactReference(); + pomReference.setGroupId(artifact.getGroupId()); + pomReference.setArtifactId(artifact.getArtifactId()); + pomReference.setVersion(artifact.getVersion()); + pomReference.setType("pom"); + + RepositoryType repositoryType = managedRepository.getRepository().getType(); + if (!proxyRegistry.hasHandler(repositoryType)) { + throw new ProxyDownloadException("No proxy handler found for repository type "+repositoryType, new HashMap<>()); + } + + RepositoryProxyHandler proxyHandler = proxyRegistry.getHandler(repositoryType).get(0); + + // Get the artifact POM from proxied repositories if needed + proxyHandler.fetchFromProxies(managedRepository, pomReference); + + // Open and read the POM from the managed repo + Path pom = managedRepository.toFile(pomReference); + + if (!Files.exists(pom)) { + return; + } + + try { + // MavenXpp3Reader leaves the file open, so we need to close it ourselves. + + Model model = null; + try (Reader reader = Files.newBufferedReader(pom, Charset.defaultCharset())) { + model = MAVEN_XPP_3_READER.read(reader); + } + + DistributionManagement dist = model.getDistributionManagement(); + if (dist != null) { + Relocation relocation = dist.getRelocation(); + if (relocation != null) { + // artifact is relocated : update the repositoryPath + if (relocation.getGroupId() != null) { + artifact.setGroupId(relocation.getGroupId()); + } + if (relocation.getArtifactId() != null) { + artifact.setArtifactId(relocation.getArtifactId()); + } + if (relocation.getVersion() != null) { + artifact.setVersion(relocation.getVersion()); + } + } + } + } catch (IOException e) { + // Unable to read POM : ignore. + } catch (XmlPullParserException e) { + // Invalid POM : ignore + } + } + + + @Override + public String getFilePath(String requestPath, org.apache.archiva.repository.ManagedRepository managedRepository) { + // managedRepository can be null + // extract artifact reference from url + // groupId:artifactId:version:packaging:classifier + //org/apache/archiva/archiva-checksum/1.4-M4-SNAPSHOT/archiva-checksum-1.4-M4-SNAPSHOT.jar + String logicalResource = null; + String requestPathInfo = StringUtils.defaultString(requestPath); + + //remove prefix ie /repository/blah becomes /blah + requestPathInfo = removePrefix(requestPathInfo); + + // Remove prefixing slash as the repository id doesn't contain it; + if (requestPathInfo.startsWith("/")) { + requestPathInfo = requestPathInfo.substring(1); + } + + int slash = requestPathInfo.indexOf('/'); + if (slash > 0) { + logicalResource = requestPathInfo.substring(slash); + + if (logicalResource.endsWith("/..")) { + logicalResource += "/"; + } + + if (logicalResource != null && logicalResource.startsWith("//")) { + logicalResource = logicalResource.substring(1); + } + + if (logicalResource == null) { + logicalResource = "/"; + } + } else { + logicalResource = "/"; + } + return logicalResource; + + } + + @Override + public String getFilePathWithVersion(final String requestPath, ManagedRepositoryContent managedRepositoryContent) + throws XMLException, RelocationException { + + if (StringUtils.endsWith(requestPath, METADATA_FILENAME)) { + return getFilePath(requestPath, managedRepositoryContent.getRepository()); + } + + String filePath = getFilePath(requestPath, managedRepositoryContent.getRepository()); + + ArtifactReference artifactReference = null; + try { + artifactReference = pathParser.toArtifactReference(filePath); + } catch (LayoutException e) { + return filePath; + } + + if (StringUtils.endsWith(artifactReference.getVersion(), VersionUtil.SNAPSHOT)) { + // read maven metadata to get last timestamp + Path metadataDir = Paths.get(managedRepositoryContent.getRepoRoot(), filePath).getParent(); + if (!Files.exists(metadataDir)) { + return filePath; + } + Path metadataFile = metadataDir.resolve(METADATA_FILENAME); + if (!Files.exists(metadataFile)) { + return filePath; + } + ArchivaRepositoryMetadata archivaRepositoryMetadata = MavenMetadataReader.read(metadataFile); + int buildNumber = archivaRepositoryMetadata.getSnapshotVersion().getBuildNumber(); + String timestamp = archivaRepositoryMetadata.getSnapshotVersion().getTimestamp(); + + // MRM-1846 + if (buildNumber < 1 && timestamp == null) { + return filePath; + } + + // org/apache/archiva/archiva-checksum/1.4-M4-SNAPSHOT/archiva-checksum-1.4-M4-SNAPSHOT.jar + // -> archiva-checksum-1.4-M4-20130425.081822-1.jar + + filePath = StringUtils.replace(filePath, // + artifactReference.getArtifactId() // + + "-" + artifactReference.getVersion(), // + artifactReference.getArtifactId() // + + "-" + StringUtils.remove(artifactReference.getVersion(), + "-" + VersionUtil.SNAPSHOT) // + + "-" + timestamp // + + "-" + buildNumber); + + throw new RelocationException("/repository/" + managedRepositoryContent.getRepository().getId() + + (StringUtils.startsWith(filePath, "/") ? "" : "/") + filePath, + RelocationException.RelocationType.TEMPORARY); + + } + + return filePath; + } + + //----------------------------- + // internal + //----------------------------- + + /** + * FIXME remove + * + * @param href + * @return + */ + private static String removePrefix(final String href) { + String[] parts = StringUtils.split(href, '/'); + parts = (String[]) ArrayUtils.subarray(parts, 1, parts.length); + if (parts == null || parts.length == 0) { + return "/"; + } + + String joinedString = StringUtils.join(parts, '/'); + if (href.endsWith("/")) { + joinedString = joinedString + "/"; + } + + return joinedString; + } + + private static void populateArtifactMetadataFromFile(ArtifactMetadata metadata, Path file) throws IOException { + metadata.setWhenGathered(new Date()); + metadata.setFileLastModified(Files.getLastModifiedTime(file).toMillis()); + ChecksummedFile checksummedFile = new ChecksummedFile(file); + try { + metadata.setMd5(checksummedFile.calculateChecksum(ChecksumAlgorithm.MD5)); + } catch (IOException e) { + LOGGER.error("Unable to checksum file {}: {},MD5", file, e.getMessage()); + } + try { + metadata.setSha1(checksummedFile.calculateChecksum(ChecksumAlgorithm.SHA1)); + } catch (IOException e) { + LOGGER.error("Unable to checksum file {}: {},SHA1", file, e.getMessage()); + } + metadata.setSize(Files.size(file)); + } + + private boolean isProject(Path dir, Filter<String> filter) { + // scan directories for a valid project version subdirectory, meaning this must be a project directory + final Predicate<Path> dFilter = new DirectoryFilter(filter); + try (Stream<Path> stream = Files.list(dir)) { + boolean projFound = stream.filter(dFilter) + .anyMatch(path -> isProjectVersion(path)); + if (projFound) { + return true; + } + } catch (IOException e) { + LOGGER.error("Could not read directory list {}: {}", dir, e.getMessage(), e); + } + + // if a metadata file is present, check if this is the "artifactId" directory, marking it as a project + ArchivaRepositoryMetadata metadata = readMetadata(dir); + if (metadata != null && dir.getFileName().toString().equals(metadata.getArtifactId())) { + return true; + } + + return false; + } + + private boolean isProjectVersion(Path dir) { + final String artifactId = dir.getParent().getFileName().toString(); + final String projectVersion = dir.getFileName().toString(); + + // check if there is a POM artifact file to ensure it is a version directory + + Predicate<Path> filter; + if (VersionUtil.isSnapshot(projectVersion)) { + filter = new PomFilenameFilter(artifactId, projectVersion); + } else { + final String pomFile = artifactId + "-" + projectVersion + ".pom"; + filter = new PomFileFilter(pomFile); + } + try (Stream<Path> stream = Files.list(dir)) { + if (stream.filter(Files::isRegularFile).anyMatch(filter)) { + return true; + } + } catch (IOException e) { + LOGGER.error("Could not list directory {}: {}", dir, e.getMessage(), e); + } + + // if a metadata file is present, check if this is the "version" directory, marking it as a project version + ArchivaRepositoryMetadata metadata = readMetadata(dir); + if (metadata != null && projectVersion.equals(metadata.getVersion())) { + return true; + } + + return false; + } + + private ArchivaRepositoryMetadata readMetadata(Path directory) { + ArchivaRepositoryMetadata metadata = null; + Path metadataFile = directory.resolve(METADATA_FILENAME); + if (Files.exists(metadataFile)) { + try { + metadata = MavenMetadataReader.read(metadataFile); + } catch (XMLException e) { + // ignore missing or invalid metadata + } + } + return metadata; + } + + private static class DirectoryFilter + implements Predicate<Path> { + private final Filter<String> filter; + + public DirectoryFilter(Filter<String> filter) { + this.filter = filter; + } + + @Override + public boolean test(Path dir) { + final String name = dir.getFileName().toString(); + if (!filter.accept(name)) { + return false; + } else if (name.startsWith(".")) { + return false; + } else if (!Files.isDirectory(dir)) { + return false; + } + return true; + } + } + + private static class ArtifactDirectoryFilter + implements Predicate<Path> { + private final Filter<String> filter; + + private ArtifactDirectoryFilter(Filter<String> filter) { + this.filter = filter; + } + + @Override + public boolean test(Path dir) { + final String name = dir.getFileName().toString(); + // TODO compare to logic in maven-repository-layer + if (!filter.accept(name)) { + return false; + } else if (name.startsWith(".")) { + return false; + } else if (name.endsWith(".md5") || name.endsWith(".sha1") || name.endsWith(".asc")) { + return false; + } else if (Arrays.binarySearch(IGNORED_FILES, name) >= 0) { + return false; + } else if (Files.isDirectory(dir)) { + return false; + } + // some files from remote repositories can have name like maven-metadata-archiva-vm-all-public.xml + else if (StringUtils.startsWith(name, METADATA_FILENAME_START) && StringUtils.endsWith(name, ".xml")) { + return false; + } + + return true; + + } + } + + + private static final class PomFilenameFilter + implements Predicate<Path> { + + private final String artifactId, projectVersion; + + private PomFilenameFilter(String artifactId, String projectVersion) { + this.artifactId = artifactId; + this.projectVersion = projectVersion; + } + + @Override + public boolean test(Path dir) { + final String name = dir.getFileName().toString(); + if (name.startsWith(artifactId + "-") && name.endsWith(".pom")) { + String v = name.substring(artifactId.length() + 1, name.length() - 4); + v = VersionUtil.getBaseVersion(v); + if (v.equals(projectVersion)) { + return true; + } + } + return false; + } + + } + + private static class PomFileFilter + implements Predicate<Path> { + private final String pomFile; + + private PomFileFilter(String pomFile) { + this.pomFile = pomFile; + } + + @Override + public boolean test(Path dir) { + return pomFile.equals(dir.getFileName().toString()); + } + } + + + public PathParser getPathParser() { + return pathParser; + } + + public void setPathParser(PathParser pathParser) { + this.pathParser = pathParser; + } +} diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/MavenArtifactFacetFactory.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/MavenArtifactFacetFactory.java new file mode 100644 index 000000000..e0c57ba76 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/MavenArtifactFacetFactory.java @@ -0,0 +1,45 @@ +package org.apache.archiva.metadata.repository.storage.maven2; + +/* + * 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.archiva.metadata.model.MetadataFacet; +import org.apache.archiva.metadata.model.MetadataFacetFactory; +import org.apache.archiva.metadata.model.maven2.MavenArtifactFacet; +import org.springframework.stereotype.Service; + +/** + * + */ +@Service("metadataFacetFactory#org.apache.archiva.metadata.repository.storage.maven2.artifact") +public class MavenArtifactFacetFactory + implements MetadataFacetFactory +{ + @Override + public MetadataFacet createMetadataFacet() + { + return new MavenArtifactFacet(); + } + + @Override + public MetadataFacet createMetadataFacet( String repositoryId, String name ) + { + throw new UnsupportedOperationException( "There is no valid name for artifact facets" ); + } +}
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/MavenProjectFacet.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/MavenProjectFacet.java new file mode 100644 index 000000000..190658a8d --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/MavenProjectFacet.java @@ -0,0 +1,164 @@ +package org.apache.archiva.metadata.repository.storage.maven2; + +/* + * 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.archiva.metadata.model.MetadataFacet; + +import java.util.HashMap; +import java.util.Map; + +public class MavenProjectFacet + implements MetadataFacet +{ + private String groupId; + + private String artifactId; + + private MavenProjectParent parent; + + private String packaging; + + public static final String FACET_ID = "org.apache.archiva.metadata.repository.storage.maven2.project"; + + public String getGroupId() + { + return groupId; + } + + public void setGroupId( String groupId ) + { + this.groupId = groupId; + } + + public String getArtifactId() + { + return artifactId; + } + + public void setArtifactId( String artifactId ) + { + this.artifactId = artifactId; + } + + public MavenProjectParent getParent() + { + return parent; + } + + public void setParent( MavenProjectParent parent ) + { + this.parent = parent; + } + + public String getPackaging() + { + return packaging; + } + + public void setPackaging( String packaging ) + { + this.packaging = packaging; + } + + @Override + public String getFacetId() + { + return FACET_ID; + } + + @Override + public String getName() + { + // TODO: not needed, perhaps version metadata facet should be separate interface? + return null; + } + + @Override + public Map<String, String> toProperties() + { + HashMap<String, String> properties = new HashMap<>(); + properties.put( "groupId", groupId ); + properties.put( "artifactId", artifactId ); + properties.put( "packaging", packaging ); + if ( parent != null ) + { + properties.put( "parent.groupId", parent.getGroupId() ); + properties.put( "parent.artifactId", parent.getArtifactId() ); + properties.put( "parent.version", parent.getVersion() ); + } + return properties; + } + + @Override + public void fromProperties( Map<String, String> properties ) + { + groupId = properties.get( "groupId" ); + artifactId = properties.get( "artifactId" ); + packaging = properties.get( "packaging" ); + String parentArtifactId = properties.get( "parent.artifactId" ); + if ( parentArtifactId != null ) + { + MavenProjectParent parent = new MavenProjectParent(); + parent.setGroupId( properties.get( "parent.groupId" ) ); + parent.setArtifactId( parentArtifactId ); + parent.setVersion( properties.get( "parent.version" ) ); + this.parent = parent; + } + } + + @Override + public boolean equals( Object o ) + { + if ( this == o ) + { + return true; + } + if ( !( o instanceof MavenProjectFacet ) ) + { + return false; + } + + MavenProjectFacet that = (MavenProjectFacet) o; + + if ( !artifactId.equals( that.artifactId ) ) + { + return false; + } + if ( !groupId.equals( that.groupId ) ) + { + return false; + } + if ( !packaging.equals( that.packaging ) ) + { + return false; + } + + return true; + } + + @Override + public int hashCode() + { + int result = groupId.hashCode(); + result = 31 * result + artifactId.hashCode(); + result = 31 * result + packaging.hashCode(); + return result; + } +} diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/MavenProjectFacetFactory.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/MavenProjectFacetFactory.java new file mode 100644 index 000000000..a7bd89a29 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/MavenProjectFacetFactory.java @@ -0,0 +1,44 @@ +package org.apache.archiva.metadata.repository.storage.maven2; + +/* + * 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.archiva.metadata.model.MetadataFacet; +import org.apache.archiva.metadata.model.MetadataFacetFactory; +import org.springframework.stereotype.Service; + +/** + * + */ +@Service( "metadataFacetFactory#org.apache.archiva.metadata.repository.storage.maven2.project" ) +public class MavenProjectFacetFactory + implements MetadataFacetFactory +{ + @Override + public MetadataFacet createMetadataFacet() + { + return new MavenProjectFacet(); + } + + @Override + public MetadataFacet createMetadataFacet( String repositoryId, String name ) + { + throw new UnsupportedOperationException( "There is no valid name for project version facets" ); + } +} diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/MavenProjectParent.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/MavenProjectParent.java new file mode 100644 index 000000000..d9757d716 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/MavenProjectParent.java @@ -0,0 +1,59 @@ +package org.apache.archiva.metadata.repository.storage.maven2; + +/* + * 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. + */ + +public class MavenProjectParent +{ + private String groupId; + + private String artifactId; + + private String version; + + public String getVersion() + { + return version; + } + + public void setVersion( String version ) + { + this.version = version; + } + + public String getArtifactId() + { + return artifactId; + } + + public void setArtifactId( String artifactId ) + { + this.artifactId = artifactId; + } + + public String getGroupId() + { + return groupId; + } + + public void setGroupId( String groupId ) + { + this.groupId = groupId; + } +} diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/RepositoryModelResolver.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/RepositoryModelResolver.java new file mode 100644 index 000000000..c214a5051 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/RepositoryModelResolver.java @@ -0,0 +1,594 @@ +package org.apache.archiva.metadata.repository.storage.maven2; + +/* + * 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.archiva.common.utils.VersionUtil; +import org.apache.archiva.maven2.metadata.MavenMetadataReader; +import org.apache.archiva.metadata.repository.storage.RepositoryPathTranslator; +import org.apache.archiva.model.ArchivaRepositoryMetadata; +import org.apache.archiva.model.SnapshotVersion; +import org.apache.archiva.proxy.maven.WagonFactory; +import org.apache.archiva.proxy.maven.WagonFactoryException; +import org.apache.archiva.proxy.maven.WagonFactoryRequest; +import org.apache.archiva.proxy.model.NetworkProxy; +import org.apache.archiva.repository.ManagedRepository; +import org.apache.archiva.repository.RemoteRepository; +import org.apache.archiva.repository.RepositoryCredentials; +import org.apache.archiva.repository.maven2.MavenSystemManager; +import org.apache.archiva.xml.XMLException; +import org.apache.commons.lang.StringUtils; +import org.apache.http.auth.UsernamePasswordCredentials; +import org.apache.maven.model.Dependency; +import org.apache.maven.model.Parent; +import org.apache.maven.model.Repository; +import org.apache.maven.model.building.FileModelSource; +import org.apache.maven.model.building.ModelSource; +import org.apache.maven.model.resolution.InvalidRepositoryException; +import org.apache.maven.model.resolution.ModelResolver; +import org.apache.maven.model.resolution.UnresolvableModelException; +import org.apache.maven.wagon.ConnectionException; +import org.apache.maven.wagon.ResourceDoesNotExistException; +import org.apache.maven.wagon.TransferFailedException; +import org.apache.maven.wagon.Wagon; +import org.apache.maven.wagon.authentication.AuthenticationException; +import org.apache.maven.wagon.authentication.AuthenticationInfo; +import org.apache.maven.wagon.authorization.AuthorizationException; +import org.apache.maven.wagon.proxy.ProxyInfo; +import org.eclipse.aether.RepositorySystemSession; +import org.eclipse.aether.artifact.Artifact; +import org.eclipse.aether.artifact.DefaultArtifact; +import org.eclipse.aether.impl.VersionRangeResolver; +import org.eclipse.aether.resolution.VersionRangeRequest; +import org.eclipse.aether.resolution.VersionRangeResolutionException; +import org.eclipse.aether.resolution.VersionRangeResult; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class RepositoryModelResolver + implements ModelResolver +{ + + private final Map<String, NetworkProxy> networkProxyMap = new HashMap<>(); + + private RepositorySystemSession session; + private VersionRangeResolver versionRangeResolver; + + private Path basedir; + + private RepositoryPathTranslator pathTranslator; + + private WagonFactory wagonFactory; + + private List<RemoteRepository> remoteRepositories; + + private ManagedRepository targetRepository; + + private static final Logger log = LoggerFactory.getLogger( RepositoryModelResolver.class ); + + private static final String METADATA_FILENAME = "maven-metadata.xml"; + + private MavenSystemManager mavenSystemManager; + + + + private ManagedRepository managedRepository; + + public RepositoryModelResolver( Path basedir, RepositoryPathTranslator pathTranslator ) + { + this.basedir = basedir; + + this.pathTranslator = pathTranslator; + } + + public RepositoryModelResolver(ManagedRepository managedRepository, RepositoryPathTranslator pathTranslator, + WagonFactory wagonFactory, List<RemoteRepository> remoteRepositories, + Map<String, NetworkProxy> networkProxiesMap, ManagedRepository targetRepository, + MavenSystemManager mavenSystemManager) + { + this( Paths.get( managedRepository.getLocation() ), pathTranslator ); + + this.managedRepository = managedRepository; + + this.wagonFactory = wagonFactory; + + this.remoteRepositories = remoteRepositories; + + this.networkProxyMap.clear(); + this.networkProxyMap.putAll(networkProxiesMap); + + this.targetRepository = targetRepository; + + this.session = MavenSystemManager.newRepositorySystemSession( managedRepository.getLocalPath().toString() ); + + this.versionRangeResolver = mavenSystemManager.getLocator().getService(VersionRangeResolver.class); + + this.mavenSystemManager = mavenSystemManager; + } + + + @Override + public ModelSource resolveModel( String groupId, String artifactId, String version ) + throws UnresolvableModelException + { + String filename = artifactId + "-" + version + ".pom"; + // TODO: we need to convert 1.0-20091120.112233-1 type paths to baseVersion for the below call - add a test + + Path model = pathTranslator.toFile( basedir, groupId, artifactId, version, filename ); + + if ( !Files.exists(model) ) + { + /** + * + */ + // is a SNAPSHOT ? so we can try to find locally before asking remote repositories. + if ( StringUtils.contains( version, VersionUtil.SNAPSHOT ) ) + { + Path localSnapshotModel = findTimeStampedSnapshotPom( groupId, artifactId, version, model.getParent().toString() ); + if ( localSnapshotModel != null ) + { + return new FileModelSource( localSnapshotModel.toFile() ); + } + + } + + for ( RemoteRepository remoteRepository : remoteRepositories ) + { + try + { + boolean success = getModelFromProxy( remoteRepository, groupId, artifactId, version, filename ); + if ( success && Files.exists(model) ) + { + log.info( "Model '{}' successfully retrieved from remote repository '{}'", + model.toAbsolutePath(), remoteRepository.getId() ); + break; + } + } + catch ( ResourceDoesNotExistException e ) + { + log.info( + "An exception was caught while attempting to retrieve model '{}' from remote repository '{}'.Reason:{}", + model.toAbsolutePath(), remoteRepository.getId(), e.getMessage() ); + } + catch ( Exception e ) + { + log.warn( + "An exception was caught while attempting to retrieve model '{}' from remote repository '{}'.Reason:{}", + model.toAbsolutePath(), remoteRepository.getId(), e.getMessage() ); + + continue; + } + } + } + + return new FileModelSource( model.toFile() ); + } + + public ModelSource resolveModel(Parent parent) throws UnresolvableModelException { + try { + Artifact artifact = new DefaultArtifact(parent.getGroupId(), parent.getArtifactId(), "", "pom", parent.getVersion()); + VersionRangeRequest versionRangeRequest; + versionRangeRequest = new VersionRangeRequest(artifact, null, null); + VersionRangeResult versionRangeResult = this.versionRangeResolver.resolveVersionRange(this.session, versionRangeRequest); + if (versionRangeResult.getHighestVersion() == null) { + throw new UnresolvableModelException(String.format("No versions matched the requested parent version range '%s'", parent.getVersion()), parent.getGroupId(), parent.getArtifactId(), parent.getVersion()); + } else if (versionRangeResult.getVersionConstraint() != null && versionRangeResult.getVersionConstraint().getRange() != null && versionRangeResult.getVersionConstraint().getRange().getUpperBound() == null) { + throw new UnresolvableModelException(String.format("The requested parent version range '%s' does not specify an upper bound", parent.getVersion()), parent.getGroupId(), parent.getArtifactId(), parent.getVersion()); + } else { + parent.setVersion(versionRangeResult.getHighestVersion().toString()); + return this.resolveModel(parent.getGroupId(), parent.getArtifactId(), parent.getVersion()); + } + } catch ( VersionRangeResolutionException var5) { + throw new UnresolvableModelException(var5.getMessage(), parent.getGroupId(), parent.getArtifactId(), parent.getVersion(), var5); + } + } + + public ModelSource resolveModel(Dependency dependency) throws UnresolvableModelException { + try { + Artifact artifact = new DefaultArtifact(dependency.getGroupId(), dependency.getArtifactId(), "", "pom", dependency.getVersion()); + VersionRangeRequest versionRangeRequest = new VersionRangeRequest(artifact, null, null); + VersionRangeResult versionRangeResult = this.versionRangeResolver.resolveVersionRange(this.session, versionRangeRequest); + if (versionRangeResult.getHighestVersion() == null) { + throw new UnresolvableModelException(String.format("No versions matched the requested dependency version range '%s'", dependency.getVersion()), dependency.getGroupId(), dependency.getArtifactId(), dependency.getVersion()); + } else if (versionRangeResult.getVersionConstraint() != null && versionRangeResult.getVersionConstraint().getRange() != null && versionRangeResult.getVersionConstraint().getRange().getUpperBound() == null) { + throw new UnresolvableModelException(String.format("The requested dependency version range '%s' does not specify an upper bound", dependency.getVersion()), dependency.getGroupId(), dependency.getArtifactId(), dependency.getVersion()); + } else { + dependency.setVersion(versionRangeResult.getHighestVersion().toString()); + return this.resolveModel(dependency.getGroupId(), dependency.getArtifactId(), dependency.getVersion()); + } + } catch (VersionRangeResolutionException var5) { + throw new UnresolvableModelException(var5.getMessage(), dependency.getGroupId(), dependency.getArtifactId(), dependency.getVersion(), var5); + } + } + + protected Path findTimeStampedSnapshotPom( String groupId, String artifactId, String version, + String parentDirectory ) + { + + // reading metadata if there + Path mavenMetadata = Paths.get( parentDirectory, METADATA_FILENAME ); + if ( Files.exists(mavenMetadata) ) + { + try + { + ArchivaRepositoryMetadata archivaRepositoryMetadata = MavenMetadataReader.read( mavenMetadata); + SnapshotVersion snapshotVersion = archivaRepositoryMetadata.getSnapshotVersion(); + if ( snapshotVersion != null ) + { + String lastVersion = snapshotVersion.getTimestamp(); + int buildNumber = snapshotVersion.getBuildNumber(); + String snapshotPath = + StringUtils.replaceChars( groupId, '.', '/' ) + '/' + artifactId + '/' + version + '/' + + artifactId + '-' + StringUtils.remove( version, "-" + VersionUtil.SNAPSHOT ) + '-' + + lastVersion + '-' + buildNumber + ".pom"; + + log.debug( "use snapshot path {} for maven coordinate {}:{}:{}", snapshotPath, groupId, artifactId, + version ); + + Path model = basedir.resolve( snapshotPath ); + //model = pathTranslator.toFile( basedir, groupId, artifactId, lastVersion, filename ); + if ( Files.exists(model) ) + { + return model; + } + } + } + catch ( XMLException e ) + { + log.warn( "fail to read {}, {}", mavenMetadata.toAbsolutePath(), e.getCause() ); + } + } + + return null; + } + + @Override + public void addRepository( Repository repository ) + throws InvalidRepositoryException + { + // we just ignore repositories outside of the current one for now + // TODO: it'd be nice to look them up from Archiva's set, but we want to do that by URL / mapping, not just the + // ID since they will rarely match + } + + @Override + public void addRepository( Repository repository, boolean b ) throws InvalidRepositoryException + { + + } + + @Override + public ModelResolver newCopy() + { + return new RepositoryModelResolver( managedRepository, pathTranslator, wagonFactory, remoteRepositories, + networkProxyMap, targetRepository, mavenSystemManager); + } + + // FIXME: we need to do some refactoring, we cannot re-use the proxy components of archiva-proxy in maven2-repository + // because it's causing a cyclic dependency + private boolean getModelFromProxy( RemoteRepository remoteRepository, String groupId, String artifactId, + String version, String filename ) + throws AuthorizationException, TransferFailedException, ResourceDoesNotExistException, WagonFactoryException, + XMLException, IOException + { + boolean success = false; + Path tmpMd5 = null; + Path tmpSha1 = null; + Path tmpResource = null; + String artifactPath = pathTranslator.toPath( groupId, artifactId, version, filename ); + Path resource = targetRepository.getLocalPath().resolve( artifactPath ); + + Path workingDirectory = createWorkingDirectory( targetRepository.getLocation().toString() ); + try + { + Wagon wagon = null; + try + { + String protocol = getProtocol( remoteRepository.getLocation().toString() ); + final NetworkProxy networkProxy = this.networkProxyMap.get( remoteRepository.getId() ); + + wagon = wagonFactory.getWagon( + new WagonFactoryRequest( "wagon#" + protocol, remoteRepository.getExtraHeaders() ).networkProxy( + networkProxy ) + ); + + if ( wagon == null ) + { + throw new RuntimeException( "Unsupported remote repository protocol: " + protocol ); + } + + boolean connected = connectToRepository( wagon, remoteRepository ); + if ( connected ) + { + tmpResource = workingDirectory.resolve( filename ); + + if ( VersionUtil.isSnapshot( version ) ) + { + // get the metadata first! + Path tmpMetadataResource = workingDirectory.resolve( METADATA_FILENAME ); + + String metadataPath = + StringUtils.substringBeforeLast( artifactPath, "/" ) + "/" + METADATA_FILENAME; + + wagon.get( addParameters( metadataPath, remoteRepository ), tmpMetadataResource.toFile() ); + + log.debug( "Successfully downloaded metadata." ); + + ArchivaRepositoryMetadata metadata = MavenMetadataReader.read( tmpMetadataResource ); + + // re-adjust to timestamp if present, otherwise retain the original -SNAPSHOT filename + SnapshotVersion snapshotVersion = metadata.getSnapshotVersion(); + String timestampVersion = version; + if ( snapshotVersion != null ) + { + timestampVersion = timestampVersion.substring( 0, timestampVersion.length() + - 8 ); // remove SNAPSHOT from end + timestampVersion = timestampVersion + snapshotVersion.getTimestamp() + "-" + + snapshotVersion.getBuildNumber(); + + filename = artifactId + "-" + timestampVersion + ".pom"; + + artifactPath = pathTranslator.toPath( groupId, artifactId, version, filename ); + + log.debug( "New artifactPath :{}", artifactPath ); + } + } + + log.info( "Retrieving {} from {}", artifactPath, remoteRepository.getName() ); + + wagon.get( addParameters( artifactPath, remoteRepository ), tmpResource.toFile() ); + + log.debug( "Downloaded successfully." ); + + tmpSha1 = transferChecksum( wagon, remoteRepository, artifactPath, tmpResource, workingDirectory, + ".sha1" ); + tmpMd5 = transferChecksum( wagon, remoteRepository, artifactPath, tmpResource, workingDirectory, + ".md5" ); + } + } + finally + { + if ( wagon != null ) + { + try + { + wagon.disconnect(); + } + catch ( ConnectionException e ) + { + log.warn( "Unable to disconnect wagon.", e ); + } + } + } + + if ( resource != null ) + { + synchronized ( resource.toAbsolutePath().toString().intern() ) + { + Path directory = resource.getParent(); + moveFileIfExists( tmpMd5, directory ); + moveFileIfExists( tmpSha1, directory ); + moveFileIfExists( tmpResource, directory ); + success = true; + } + } + } + finally + { + org.apache.archiva.common.utils.FileUtils.deleteQuietly( workingDirectory ); + } + + // do we still need to execute the consumers? + + return success; + } + + /** + * Using wagon, connect to the remote repository. + * + * @param wagon the wagon instance to establish the connection on. + * @return true if the connection was successful. false if not connected. + */ + private boolean connectToRepository( Wagon wagon, RemoteRepository remoteRepository ) + { + boolean connected; + + final NetworkProxy proxyConnector = this.networkProxyMap.get( remoteRepository.getId() ); + ProxyInfo networkProxy = null; + if ( proxyConnector != null ) + { + networkProxy = new ProxyInfo(); + networkProxy.setType( proxyConnector.getProtocol() ); + networkProxy.setHost( proxyConnector.getHost() ); + networkProxy.setPort( proxyConnector.getPort() ); + networkProxy.setUserName( proxyConnector.getUsername() ); + networkProxy.setPassword( proxyConnector.getPassword() ); + + String msg = "Using network proxy " + networkProxy.getHost() + ":" + networkProxy.getPort() + + " to connect to remote repository " + remoteRepository.getLocation(); + if ( networkProxy.getNonProxyHosts() != null ) + { + msg += "; excluding hosts: " + networkProxy.getNonProxyHosts(); + } + + if ( StringUtils.isNotBlank( networkProxy.getUserName() ) ) + { + msg += "; as user: " + networkProxy.getUserName(); + } + + log.debug( msg ); + } + + AuthenticationInfo authInfo = null; + RepositoryCredentials creds = remoteRepository.getLoginCredentials(); + String username = ""; + String password = ""; + if (creds instanceof UsernamePasswordCredentials) { + UsernamePasswordCredentials c = (UsernamePasswordCredentials) creds; + username = c.getUserName(); + password = c.getPassword(); + } + + if ( StringUtils.isNotBlank( username ) && StringUtils.isNotBlank( password ) ) + { + log.debug( "Using username {} to connect to remote repository {}", username, remoteRepository.getLocation() ); + authInfo = new AuthenticationInfo(); + authInfo.setUserName( username ); + authInfo.setPassword( password ); + } + + int timeoutInMilliseconds = ((int)remoteRepository.getTimeout().getSeconds())*1000; + // FIXME olamy having 2 config values + // Set timeout + wagon.setReadTimeout( timeoutInMilliseconds ); + wagon.setTimeout( timeoutInMilliseconds ); + + try + { + org.apache.maven.wagon.repository.Repository wagonRepository = + new org.apache.maven.wagon.repository.Repository( remoteRepository.getId(), remoteRepository.getLocation().toString() ); + if ( networkProxy != null ) + { + wagon.connect( wagonRepository, authInfo, networkProxy ); + } + else + { + wagon.connect( wagonRepository, authInfo ); + } + connected = true; + } + catch ( ConnectionException | AuthenticationException e ) + { + log.error( "Could not connect to {}:{} ", remoteRepository.getName(), e.getMessage() ); + connected = false; + } + + return connected; + } + + /** + * + * @param wagon The wagon instance that should be connected. + * @param remoteRepository The repository from where the checksum file should be retrieved + * @param remotePath The remote path of the artifact (without extension) + * @param resource The local artifact (without extension) + * @param workingDir The working directory where the downloaded file should be placed to + * @param ext The extension of th checksum file + * @return The file where the data has been downloaded to. + * @throws AuthorizationException + * @throws TransferFailedException + * @throws ResourceDoesNotExistException + */ + private Path transferChecksum( final Wagon wagon, final RemoteRepository remoteRepository, + final String remotePath, final Path resource, + final Path workingDir, final String ext ) + throws AuthorizationException, TransferFailedException, ResourceDoesNotExistException + { + Path destFile = workingDir.resolve( resource.getFileName() + ext ); + String remoteChecksumPath = remotePath + ext; + + log.info( "Retrieving {} from {}", remoteChecksumPath, remoteRepository.getName() ); + + wagon.get( addParameters( remoteChecksumPath, remoteRepository ), destFile.toFile() ); + + log.debug( "Downloaded successfully." ); + + return destFile; + } + + private String getProtocol( String url ) + { + String protocol = StringUtils.substringBefore( url, ":" ); + + return protocol; + } + + private Path createWorkingDirectory( String targetRepository ) + throws IOException + { + return Files.createTempDirectory( "temp" ); + } + + private void moveFileIfExists( Path fileToMove, Path directory ) + { + if ( fileToMove != null && Files.exists(fileToMove) ) + { + Path newLocation = directory.resolve( fileToMove.getFileName() ); + try { + Files.deleteIfExists(newLocation); + } catch (IOException e) { + throw new RuntimeException( + "Unable to overwrite existing target file: " + newLocation.toAbsolutePath(), e ); + } + + try { + Files.createDirectories(newLocation.getParent()); + } catch (IOException e) { + e.printStackTrace(); + } + try { + Files.move(fileToMove, newLocation ); + } catch (IOException e) { + try { + Files.copy(fileToMove, newLocation); + } catch (IOException e1) { + if (Files.exists(newLocation)) { + log.error( "Tried to copy file {} to {} but file with this name already exists.", + fileToMove.getFileName(), newLocation.toAbsolutePath() ); + } else { + throw new RuntimeException( + "Cannot copy tmp file " + fileToMove.toAbsolutePath() + " to its final location", e ); + } + } + } finally { + org.apache.archiva.common.utils.FileUtils.deleteQuietly(fileToMove); + } + } + } + + protected String addParameters( String path, RemoteRepository remoteRepository ) + { + if ( remoteRepository.getExtraParameters().isEmpty() ) + { + return path; + } + + boolean question = false; + + StringBuilder res = new StringBuilder( path == null ? "" : path ); + + for ( Map.Entry<String, String> entry : remoteRepository.getExtraParameters().entrySet() ) + { + if ( !question ) + { + res.append( '?' ).append( entry.getKey() ).append( '=' ).append( entry.getValue() ); + } + } + + return res.toString(); + } +} diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/content/maven2/AbstractDefaultRepositoryContent.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/content/maven2/AbstractDefaultRepositoryContent.java new file mode 100644 index 000000000..f3cdb190f --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/content/maven2/AbstractDefaultRepositoryContent.java @@ -0,0 +1,187 @@ +package org.apache.archiva.repository.content.maven2; + +/* + * 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.archiva.common.utils.VersionUtil; +import org.apache.archiva.metadata.repository.storage.RepositoryPathTranslator; +import org.apache.archiva.metadata.repository.storage.maven2.ArtifactMappingProvider; +import org.apache.archiva.metadata.repository.storage.maven2.Maven2RepositoryPathTranslator; +import org.apache.archiva.model.ArchivaArtifact; +import org.apache.archiva.model.ArtifactReference; +import org.apache.archiva.model.ProjectReference; +import org.apache.archiva.model.VersionedReference; +import org.apache.archiva.repository.LayoutException; +import org.apache.archiva.repository.RepositoryContent; +import org.apache.archiva.repository.content.PathParser; +import org.apache.commons.lang.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.List; + +/** + * AbstractDefaultRepositoryContent - common methods for working with default (maven 2) layout. + */ +public abstract class AbstractDefaultRepositoryContent implements RepositoryContent +{ + + + protected Logger log = LoggerFactory.getLogger( getClass() ); + + public static final String MAVEN_METADATA = "maven-metadata.xml"; + + protected static final char PATH_SEPARATOR = '/'; + + protected static final char GROUP_SEPARATOR = '.'; + + protected static final char ARTIFACT_SEPARATOR = '-'; + + private RepositoryPathTranslator pathTranslator = new Maven2RepositoryPathTranslator(); + + private PathParser defaultPathParser = new DefaultPathParser(); + + + + /** + * + */ + protected List<? extends ArtifactMappingProvider> artifactMappingProviders; + + AbstractDefaultRepositoryContent(List<? extends ArtifactMappingProvider> artifactMappingProviders) { + this.artifactMappingProviders = artifactMappingProviders; + } + + public void setArtifactMappingProviders(List<? extends ArtifactMappingProvider> artifactMappingProviders) { + this.artifactMappingProviders = artifactMappingProviders; + } + + public ArtifactReference toArtifactReference( String path ) + throws LayoutException + { + return defaultPathParser.toArtifactReference( path ); + } + + public String toMetadataPath( ProjectReference reference ) + { + StringBuilder path = new StringBuilder(); + + path.append( formatAsDirectory( reference.getGroupId() ) ).append( PATH_SEPARATOR ); + path.append( reference.getArtifactId() ).append( PATH_SEPARATOR ); + path.append( MAVEN_METADATA ); + + return path.toString(); + } + + public String toMetadataPath( VersionedReference reference ) + { + StringBuilder path = new StringBuilder(); + + path.append( formatAsDirectory( reference.getGroupId() ) ).append( PATH_SEPARATOR ); + path.append( reference.getArtifactId() ).append( PATH_SEPARATOR ); + if ( reference.getVersion() != null ) + { + // add the version only if it is present + path.append( VersionUtil.getBaseVersion( reference.getVersion() ) ).append( PATH_SEPARATOR ); + } + path.append( MAVEN_METADATA ); + + return path.toString(); + } + + public String toPath( ArchivaArtifact reference ) + { + if ( reference == null ) + { + throw new IllegalArgumentException( "ArchivaArtifact cannot be null" ); + } + + String baseVersion = VersionUtil.getBaseVersion( reference.getVersion() ); + return toPath( reference.getGroupId(), reference.getArtifactId(), baseVersion, reference.getVersion(), + reference.getClassifier(), reference.getType() ); + } + + public String toPath( ArtifactReference reference ) + { + if ( reference == null ) + { + throw new IllegalArgumentException( "Artifact reference cannot be null" ); + } + if ( reference.getVersion() != null ) + { + String baseVersion = VersionUtil.getBaseVersion( reference.getVersion() ); + return toPath( reference.getGroupId(), reference.getArtifactId(), baseVersion, reference.getVersion(), + reference.getClassifier(), reference.getType() ); + } + return toPath( reference.getGroupId(), reference.getArtifactId(), null, null, + reference.getClassifier(), reference.getType() ); + } + + private String formatAsDirectory( String directory ) + { + return directory.replace( GROUP_SEPARATOR, PATH_SEPARATOR ); + } + + private String toPath( String groupId, String artifactId, String baseVersion, String version, String classifier, + String type ) + { + if ( baseVersion != null ) + { + return pathTranslator.toPath( groupId, artifactId, baseVersion, + constructId( artifactId, version, classifier, type ) ); + } + else + { + return pathTranslator.toPath( groupId, artifactId ); + } + } + + // TODO: move into the Maven Artifact facet when refactoring away the caller - the caller will need to have access + // to the facet or filename (for the original ID) + private String constructId( String artifactId, String version, String classifier, String type ) + { + String ext = null; + for ( ArtifactMappingProvider provider : artifactMappingProviders ) + { + ext = provider.mapTypeToExtension( type ); + if ( ext != null ) + { + break; + } + } + if ( ext == null ) + { + ext = type; + } + + StringBuilder id = new StringBuilder(); + if ( ( version != null ) && ( type != null ) ) + { + id.append( artifactId ).append( ARTIFACT_SEPARATOR ).append( version ); + + if ( StringUtils.isNotBlank( classifier ) ) + { + id.append( ARTIFACT_SEPARATOR ).append( classifier ); + } + + id.append( "." ).append( ext ); + } + return id.toString(); + } +} diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/content/maven2/ArtifactExtensionMapping.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/content/maven2/ArtifactExtensionMapping.java new file mode 100644 index 000000000..d863a33a2 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/content/maven2/ArtifactExtensionMapping.java @@ -0,0 +1,78 @@ +package org.apache.archiva.repository.content.maven2; + +/* + * 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.archiva.metadata.repository.storage.maven2.ArtifactMappingProvider; +import org.apache.archiva.metadata.repository.storage.maven2.DefaultArtifactMappingProvider; + +/** + * ArtifactExtensionMapping + * + * + */ +public class ArtifactExtensionMapping +{ + public static final String MAVEN_ONE_PLUGIN = "maven-one-plugin"; + + // TODO: now only used in Maven 1, we should be using M1 specific mappings + private static final ArtifactMappingProvider mapping = new DefaultArtifactMappingProvider(); + + public static String getExtension( String type ) + { + String ext = mapping.mapTypeToExtension( type ); + + if ( ext == null ) + { + ext = type; + } + + return ext; + } + + public static String mapExtensionAndClassifierToType( String classifier, String extension ) + { + return mapExtensionAndClassifierToType( classifier, extension, extension ); + } + + public static String mapExtensionAndClassifierToType( String classifier, String extension, + String defaultExtension ) + { + String value = mapping.mapClassifierAndExtensionToType( classifier, extension ); + if ( value == null ) + { + // TODO: Maven 1 plugin + String value1 = null; + if ( "tar.gz".equals( extension ) ) + { + value1 = "distribution-tgz"; + } + else if ( "tar.bz2".equals( extension ) ) + { + value1 = "distribution-bzip"; + } + else if ( "zip".equals( extension ) ) + { + value1 = "distribution-zip"; + } + value = value1; + } + return value != null ? value : defaultExtension; + } +} diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/content/maven2/DefaultPathParser.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/content/maven2/DefaultPathParser.java new file mode 100644 index 000000000..0a8d644f4 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/content/maven2/DefaultPathParser.java @@ -0,0 +1,91 @@ +package org.apache.archiva.repository.content.maven2; + +/* + * 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.archiva.metadata.model.ArtifactMetadata; +import org.apache.archiva.metadata.model.maven2.MavenArtifactFacet; +import org.apache.archiva.metadata.repository.storage.RepositoryPathTranslator; +import org.apache.archiva.metadata.repository.storage.maven2.ArtifactMappingProvider; +import org.apache.archiva.metadata.repository.storage.maven2.DefaultArtifactMappingProvider; +import org.apache.archiva.metadata.repository.storage.maven2.Maven2RepositoryPathTranslator; +import org.apache.archiva.model.ArtifactReference; +import org.apache.archiva.repository.LayoutException; +import org.apache.archiva.repository.content.PathParser; +import org.apache.commons.lang.StringUtils; +import org.springframework.stereotype.Service; + +import java.util.Collections; + +/** + * DefaultPathParser is a parser for maven 2 (default layout) paths to ArtifactReference. + * + * TODO: remove in favour of path translator, this is just delegating for the most part, but won't accommodate other + * extensions like NPanday + * + * + */ +@Service( "pathParser#default" ) +public class DefaultPathParser + implements PathParser +{ + private static final String INVALID_ARTIFACT_PATH = "Invalid path to Artifact: "; + + private RepositoryPathTranslator pathTranslator = new Maven2RepositoryPathTranslator( + Collections.<ArtifactMappingProvider>singletonList( new DefaultArtifactMappingProvider() ) ); + + /** + * {@inheritDoc} + * + * @see org.apache.archiva.repository.content.PathParser#toArtifactReference(String) + */ + @Override + public ArtifactReference toArtifactReference( String path ) + throws LayoutException + { + if ( StringUtils.isBlank( path ) ) + { + throw new LayoutException( "Unable to convert blank path." ); + } + + ArtifactMetadata metadata; + try + { + metadata = pathTranslator.getArtifactForPath( null, path ); + } + catch ( IllegalArgumentException e ) + { + throw new LayoutException( e.getMessage(), e ); + } + + ArtifactReference artifact = new ArtifactReference(); + artifact.setGroupId( metadata.getNamespace() ); + artifact.setArtifactId( metadata.getProject() ); + artifact.setVersion( metadata.getVersion() ); + MavenArtifactFacet facet = (MavenArtifactFacet) metadata.getFacet( MavenArtifactFacet.FACET_ID ); + if ( facet != null ) + { + artifact.setClassifier( facet.getClassifier() ); + artifact.setType( facet.getType() ); + } + + return artifact; + } + +} diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/content/maven2/FilenameParser.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/content/maven2/FilenameParser.java new file mode 100644 index 000000000..e40887765 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/content/maven2/FilenameParser.java @@ -0,0 +1,259 @@ +package org.apache.archiva.repository.content.maven2; + +/* + * 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.archiva.common.utils.VersionUtil; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** + * Generic Filename Parser for use with layout routines. + * + * + */ +public class FilenameParser +{ + private String name; + + private String extension; + + private int offset; + + private static final Pattern mavenPluginPattern = Pattern.compile( "(maven-.*-plugin)|(.*-maven-plugin)" ); + + private static final Pattern extensionPattern = + Pattern.compile( "(\\.tar\\.gz$)|(\\.tar\\.bz2$)|(\\.[\\-a-z0-9]*$)", Pattern.CASE_INSENSITIVE ); + + private static final Pattern SNAPSHOT_PATTERN = Pattern.compile( "^([0-9]{8}\\.[0-9]{6}-[0-9]+)(.*)$" ); + + private static final Pattern section = Pattern.compile( "([^-]*)" ); + + private Matcher matcher; + + public FilenameParser( String filename ) + { + this.name = filename; + + Matcher mat = extensionPattern.matcher( name ); + if ( mat.find() ) + { + extension = filename.substring( mat.start() + 1 ); + name = name.substring( 0, name.length() - extension.length() - 1 ); + } + + matcher = section.matcher( name ); + + reset(); + } + + public void reset() + { + offset = 0; + } + + public String next() + { + // Past the end of the string. + if ( offset > name.length() ) + { + return null; + } + + // Return the next section. + if ( matcher.find( offset ) ) + { + // Return found section. + offset = matcher.end() + 1; + return matcher.group(); + } + + // Nothing to return. + return null; + } + + protected String expect( String expected ) + { + String value = null; + + if ( name.startsWith( expected, offset ) ) + { + value = expected; + } + else if ( VersionUtil.isGenericSnapshot( expected ) ) + { + String version = name.substring( offset ); + + // check it starts with the same version up to the snapshot part + int leadingLength = expected.length() - 9; + if ( leadingLength > 0 && version.startsWith( expected.substring( 0, leadingLength ) ) && + version.length() > leadingLength ) + { + // If we expect a non-generic snapshot - look for the timestamp + Matcher m = SNAPSHOT_PATTERN.matcher( version.substring( leadingLength + 1 ) ); + if ( m.matches() ) + { + value = version.substring( 0, leadingLength + 1 ) + m.group( 1 ); + } + } + } + + if ( value != null ) + { + // Potential hit. check for '.' or '-' at end of expected. + int seperatorOffset = offset + value.length(); + + // Test for "out of bounds" first. + if ( seperatorOffset >= name.length() ) + { + offset = name.length(); + return value; + } + + // Test for seperator char. + char seperatorChar = name.charAt( seperatorOffset ); + if ( ( seperatorChar == '-' ) || ( seperatorChar == '.' ) ) + { + offset = seperatorOffset + 1; + return value; + } + } + + return null; + } + + /** + * Get the current seperator character. + * + * @return the seperator character (either '.' or '-'), or 0 if no seperator character available. + */ + protected char seperator() + { + // Past the end of the string? + if ( offset >= name.length() ) + { + return 0; + } + + // Before the start of the string? + if ( offset <= 0 ) + { + return 0; + } + + return name.charAt( offset - 1 ); + } + + protected String getName() + { + return name; + } + + public String getExtension() + { + return extension; + } + + public String remaining() + { + if ( offset >= name.length() ) + { + return null; + } + + String end = name.substring( offset ); + offset = name.length(); + return end; + } + + public String nextNonVersion() + { + boolean done = false; + + StringBuilder ver = new StringBuilder(); + + // Any text upto the end of a special case is considered non-version. + Matcher specialMat = mavenPluginPattern.matcher( name ); + if ( specialMat.find() ) + { + ver.append( name.substring( offset, specialMat.end() ) ); + offset = specialMat.end() + 1; + } + + while ( !done ) + { + int initialOffset = offset; + String section = next(); + if ( section == null ) + { + done = true; + } + else if ( !VersionUtil.isVersion( section ) ) + { + if ( ver.length() > 0 ) + { + ver.append( '-' ); + } + ver.append( section ); + } + else + { + offset = initialOffset; + done = true; + } + } + + return ver.toString(); + } + + protected String nextVersion() + { + boolean done = false; + + StringBuilder ver = new StringBuilder(); + + while ( !done ) + { + int initialOffset = offset; + String section = next(); + if ( section == null ) + { + done = true; + } + else if ( VersionUtil.isVersion( section ) ) + { + if ( ver.length() > 0 ) + { + ver.append( '-' ); + } + ver.append( section ); + } + else + { + offset = initialOffset; + done = true; + } + } + + return ver.toString(); + } + + +} diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/content/maven2/ManagedDefaultRepositoryContent.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/content/maven2/ManagedDefaultRepositoryContent.java new file mode 100644 index 000000000..d5f55fc6e --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/content/maven2/ManagedDefaultRepositoryContent.java @@ -0,0 +1,505 @@ +package org.apache.archiva.repository.content.maven2; + +/* + * 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.archiva.common.utils.PathUtil; +import org.apache.archiva.configuration.FileTypes; +import org.apache.archiva.metadata.repository.storage.maven2.ArtifactMappingProvider; +import org.apache.archiva.metadata.repository.storage.maven2.DefaultArtifactMappingProvider; +import org.apache.archiva.model.ArchivaArtifact; +import org.apache.archiva.model.ArtifactReference; +import org.apache.archiva.model.ProjectReference; +import org.apache.archiva.model.VersionedReference; +import org.apache.archiva.repository.ContentNotFoundException; +import org.apache.archiva.repository.LayoutException; +import org.apache.archiva.repository.ManagedRepositoryContent; +import org.apache.archiva.repository.RepositoryException; +import org.apache.commons.lang.StringUtils; + +import java.io.IOException; +import java.net.URI; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.Collections; +import java.util.HashSet; +import java.util.List; +import java.util.Objects; +import java.util.Set; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +/** + * ManagedDefaultRepositoryContent + */ +public class ManagedDefaultRepositoryContent + extends AbstractDefaultRepositoryContent + implements ManagedRepositoryContent +{ + + private FileTypes filetypes; + + public void setFileTypes(FileTypes fileTypes) { + this.filetypes = fileTypes; + } + + + + private org.apache.archiva.repository.ManagedRepository repository; + + public ManagedDefaultRepositoryContent(FileTypes fileTypes) { + super(Collections.singletonList( new DefaultArtifactMappingProvider() )); + setFileTypes( fileTypes ); + } + public ManagedDefaultRepositoryContent( List<? extends ArtifactMappingProvider> artifactMappingProviders, FileTypes fileTypes ) + { + super(artifactMappingProviders==null ? Collections.singletonList( new DefaultArtifactMappingProvider() ) : artifactMappingProviders); + setFileTypes( fileTypes ); + } + + @Override + public void deleteVersion( VersionedReference reference ) + { + String path = toMetadataPath( reference ); + Path projectPath = Paths.get( getRepoRoot(), path ); + + Path projectDir = projectPath.getParent(); + if ( Files.exists(projectDir) && Files.isDirectory(projectDir) ) + { + org.apache.archiva.common.utils.FileUtils.deleteQuietly( projectDir ); + } + } + + @Override + public void deleteProject( String namespace, String projectId ) + throws RepositoryException + { + ArtifactReference artifactReference = new ArtifactReference(); + artifactReference.setGroupId( namespace ); + artifactReference.setArtifactId( projectId ); + String path = toPath( artifactReference ); + Path directory = Paths.get( getRepoRoot(), path ); + if ( !Files.exists(directory) ) + { + throw new ContentNotFoundException( "cannot found project " + namespace + ":" + projectId ); + } + if ( Files.isDirectory(directory) ) + { + try + { + org.apache.archiva.common.utils.FileUtils.deleteDirectory( directory ); + } + catch ( IOException e ) + { + throw new RepositoryException( e.getMessage(), e ); + } + } + else + { + log.warn( "project {}:{} is not a directory", namespace, projectId ); + } + + } + + @Override + public void deleteArtifact( ArtifactReference artifactReference ) + { + String path = toPath( artifactReference ); + Path filePath = Paths.get( getRepoRoot(), path ); + + if ( Files.exists(filePath) ) + { + org.apache.archiva.common.utils.FileUtils.deleteQuietly( filePath ); + } + + Path filePathmd5 = Paths.get( getRepoRoot(), path + ".md5" ); + + if ( Files.exists(filePathmd5) ) + { + org.apache.archiva.common.utils.FileUtils.deleteQuietly( filePathmd5 ); + } + + Path filePathsha1 = Paths.get( getRepoRoot(), path + ".sha1" ); + + if ( Files.exists(filePathsha1) ) + { + org.apache.archiva.common.utils.FileUtils.deleteQuietly( filePathsha1 ); + } + } + + @Override + public void deleteGroupId( String groupId ) + throws ContentNotFoundException + { + + String path = StringUtils.replaceChars( groupId, '.', '/' ); + + Path directory = Paths.get( getRepoRoot(), path ); + + if ( Files.exists(directory) ) + { + try + { + org.apache.archiva.common.utils.FileUtils.deleteDirectory( directory ); + } + catch ( IOException e ) + { + log.warn( "skip error deleting directory {}:", directory, e ); + } + } + } + + @Override + public String getId() + { + return repository.getId(); + } + + @Override + public Set<ArtifactReference> getRelatedArtifacts( ArtifactReference reference ) + throws ContentNotFoundException + { + Path artifactFile = toFile( reference ); + Path repoBase = PathUtil.getPathFromUri(repository.getLocation()).toAbsolutePath(); + Path repoDir = artifactFile.getParent().toAbsolutePath(); + + if ( !Files.exists(repoDir)) + { + throw new ContentNotFoundException( + "Unable to get related artifacts using a non-existant directory: " + repoDir.toAbsolutePath() ); + } + + if ( !Files.isDirectory( repoDir ) ) + { + throw new ContentNotFoundException( + "Unable to get related artifacts using a non-directory: " + repoDir.toAbsolutePath() ); + } + + Set<ArtifactReference> foundArtifacts; + + // First gather up the versions found as artifacts in the managed repository. + + try (Stream<Path> stream = Files.list(repoDir)) { + foundArtifacts = stream.filter(Files::isRegularFile).map(path -> { + try { + ArtifactReference artifact = toArtifactReference(repoBase.relativize(path).toString()); + if( artifact.getGroupId().equals( reference.getGroupId() ) && artifact.getArtifactId().equals( + reference.getArtifactId() ) && artifact.getVersion().equals( reference.getVersion() )) { + return artifact; + } else { + return null; + } + } catch (LayoutException e) { + log.debug( "Not processing file that is not an artifact: {}", e.getMessage() ); + return null; + } + }).filter(Objects::nonNull).collect(Collectors.toSet()); + } catch (IOException e) { + log.error("Could not read directory {}: {}", repoDir, e.getMessage(), e); + return Collections.emptySet(); + } + return foundArtifacts; + } + + @Override + public String getRepoRoot() + { + return convertUriToPath( repository.getLocation() ); + } + + private String convertUriToPath( URI uri ) { + if (uri.getScheme()==null) { + return Paths.get(uri.getPath()).toString(); + } else if ("file".equals(uri.getScheme())) { + return Paths.get(uri).toString(); + } else { + return uri.toString(); + } + } + + @Override + public org.apache.archiva.repository.ManagedRepository getRepository() + { + return repository; + } + + /** + * Gather the Available Versions (on disk) for a specific Project Reference, based on filesystem + * information. + * + * @return the Set of available versions, based on the project reference. + * @throws LayoutException + * @throws LayoutException + */ + @Override + public Set<String> getVersions( ProjectReference reference ) + throws ContentNotFoundException, LayoutException + { + String path = toMetadataPath( reference ); + + int idx = path.lastIndexOf( '/' ); + if ( idx > 0 ) + { + path = path.substring( 0, idx ); + } + + Path repoDir = PathUtil.getPathFromUri( repository.getLocation() ).resolve( path ); + + if ( !Files.exists(repoDir) ) + { + throw new ContentNotFoundException( + "Unable to get Versions on a non-existant directory: " + repoDir.toAbsolutePath() ); + } + + if ( !Files.isDirectory(repoDir) ) + { + throw new ContentNotFoundException( + "Unable to get Versions on a non-directory: " + repoDir.toAbsolutePath() ); + } + + final String groupId = reference.getGroupId(); + final String artifactId = reference.getArtifactId(); + try(Stream<Path> stream = Files.list(repoDir)) { + return stream.filter(Files::isDirectory).map( + p -> newVersionedRef(groupId, artifactId, p.getFileName().toString()) + ).filter(this::hasArtifact).map(ref -> ref.getVersion()) + .collect(Collectors.toSet()); + } catch (IOException e) { + log.error("Could not read directory {}: {}", repoDir, e.getMessage(), e); + } catch (RuntimeException e) { + if (e.getCause()!=null && e.getCause() instanceof LayoutException) { + throw (LayoutException)e.getCause(); + } else { + throw e; + } + } + return Collections.emptySet(); + } + + static final VersionedReference newVersionedRef(final String groupId, final String artifactId, final String version) { + VersionedReference ref = new VersionedReference(); + ref.setGroupId(groupId); + ref.setArtifactId(artifactId); + ref.setVersion(version); + return ref; + } + + @Override + public Set<String> getVersions( VersionedReference reference ) + throws ContentNotFoundException + { + String path = toMetadataPath( reference ); + + int idx = path.lastIndexOf( '/' ); + if ( idx > 0 ) + { + path = path.substring( 0, idx ); + } + + Path repoBase = PathUtil.getPathFromUri(repository.getLocation()); + Path repoDir = repoBase.resolve( path ); + + if ( !Files.exists(repoDir) ) + { + throw new ContentNotFoundException( + "Unable to get versions on a non-existant directory: " + repoDir.toAbsolutePath() ); + } + + if ( !Files.isDirectory(repoDir) ) + { + throw new ContentNotFoundException( + "Unable to get versions on a non-directory: " + repoDir.toAbsolutePath() ); + } + + Set<String> foundVersions = new HashSet<>(); + + try(Stream<Path> stream = Files.list(repoDir)) { + return stream.filter(Files::isRegularFile) + .map(p -> repoBase.relativize(p).toString()) + .filter(p -> !filetypes.matchesDefaultExclusions(p)) + .filter(filetypes::matchesArtifactPattern) + .map(path1 -> { + try { + return toArtifactReference(path1); + } catch (LayoutException e) { + log.debug( "Not processing file that is not an artifact: {}", e.getMessage() ); + return null; + } + }).filter(Objects::nonNull) + .map(ar -> ar.getVersion()) + .collect(Collectors.toSet()); + } catch (IOException e) { + log.error("Could not read directory {}: {}", repoDir, e.getMessage(), e); + } + return Collections.emptySet(); + } + + @Override + public boolean hasContent( ArtifactReference reference ) + { + Path artifactFile = toFile( reference ); + return Files.exists(artifactFile) && Files.isRegularFile( artifactFile ); + } + + @Override + public boolean hasContent( ProjectReference reference ) + { + try + { + Set<String> versions = getVersions( reference ); + return !versions.isEmpty(); + } + catch ( ContentNotFoundException | LayoutException e ) + { + return false; + } + } + + @Override + public boolean hasContent( VersionedReference reference ) + { + try + { + return ( getFirstArtifact( reference ) != null ); + } + catch ( IOException | LayoutException e ) + { + return false; + } + } + + @Override + public void setRepository( org.apache.archiva.repository.ManagedRepository repository ) + { + this.repository = repository; + } + + /** + * Convert a path to an artifact reference. + * + * @param path the path to convert. (relative or full location path) + * @throws LayoutException if the path cannot be converted to an artifact reference. + */ + @Override + public ArtifactReference toArtifactReference( String path ) + throws LayoutException + { + String repoPath = convertUriToPath( repository.getLocation() ); + if ( ( path != null ) && path.startsWith( repoPath ) && repoPath.length() > 0 ) + { + return super.toArtifactReference( path.substring( repoPath.length() + 1 ) ); + } + + return super.toArtifactReference( path ); + } + + // The variant with runtime exception for stream usage + private ArtifactReference toArtifactRef(String path) { + try { + return toArtifactReference(path); + } catch (LayoutException e) { + throw new RuntimeException(e); + } + } + + + + @Override + public Path toFile( ArtifactReference reference ) + { + return PathUtil.getPathFromUri( repository.getLocation()).resolve( toPath( reference ) ); + } + + @Override + public Path toFile( ArchivaArtifact reference ) + { + return PathUtil.getPathFromUri( repository.getLocation()).resolve( toPath( reference ) ); + } + + /** + * Get the first Artifact found in the provided VersionedReference location. + * + * @param reference the reference to the versioned reference to search within + * @return the ArtifactReference to the first artifact located within the versioned reference. or null if + * no artifact was found within the versioned reference. + * @throws java.io.IOException if the versioned reference is invalid (example: doesn't exist, or isn't a directory) + * @throws LayoutException + */ + private ArtifactReference getFirstArtifact( VersionedReference reference ) + throws LayoutException, IOException + { + String path = toMetadataPath( reference ); + + int idx = path.lastIndexOf( '/' ); + if ( idx > 0 ) + { + path = path.substring( 0, idx ); + } + + Path repoBase = PathUtil.getPathFromUri(repository.getLocation()).toAbsolutePath(); + Path repoDir = repoBase.resolve( path ); + + if ( !Files.exists(repoDir) ) + { + throw new IOException( "Unable to gather the list of snapshot versions on a non-existant directory: " + + repoDir.toAbsolutePath() ); + } + + if ( !Files.isDirectory(repoDir) ) + { + throw new IOException( + "Unable to gather the list of snapshot versions on a non-directory: " + repoDir.toAbsolutePath() ); + } + try(Stream<Path> stream = Files.list(repoDir)) { + return stream.filter(Files::isRegularFile) + .map(p -> repoBase.relativize(p).toString()) + .filter(filetypes::matchesArtifactPattern) + .map(this::toArtifactRef).findFirst().orElse(null); + } catch (RuntimeException e) { + if (e.getCause()!=null && e.getCause() instanceof LayoutException) { + throw (LayoutException)e.getCause(); + } else { + throw e; + } + } + + } + + private boolean hasArtifact( VersionedReference reference ) + + { + try + { + return ( getFirstArtifact( reference ) != null ); + } + catch ( IOException e ) + { + return false; + } catch (LayoutException e) { + // We throw the runtime exception for better stream handling + throw new RuntimeException(e); + } + } + + public void setFiletypes( FileTypes filetypes ) + { + this.filetypes = filetypes; + } +} diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/content/maven2/MavenContentProvider.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/content/maven2/MavenContentProvider.java new file mode 100644 index 000000000..27e0592d7 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/content/maven2/MavenContentProvider.java @@ -0,0 +1,124 @@ +package org.apache.archiva.repository.content.maven2; + +/* + * 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.archiva.configuration.FileTypes; +import org.apache.archiva.metadata.repository.storage.maven2.ArtifactMappingProvider; +import org.apache.archiva.repository.ManagedRepository; +import org.apache.archiva.repository.ManagedRepositoryContent; +import org.apache.archiva.repository.RemoteRepository; +import org.apache.archiva.repository.RemoteRepositoryContent; +import org.apache.archiva.repository.Repository; +import org.apache.archiva.repository.RepositoryContent; +import org.apache.archiva.repository.RepositoryContentProvider; +import org.apache.archiva.repository.RepositoryException; +import org.apache.archiva.repository.RepositoryType; +import org.springframework.stereotype.Service; + +import javax.inject.Inject; +import javax.inject.Named; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +/** + * Maven implementation of the repository content provider. Only default layout and + * maven repository types are supported. + */ +@Service("repositoryContentProvider#maven") +public class MavenContentProvider implements RepositoryContentProvider +{ + + @Inject + @Named( "fileTypes" ) + private FileTypes filetypes; + + @Inject + protected List<? extends ArtifactMappingProvider> artifactMappingProviders; + + + private static final Set<RepositoryType> REPOSITORY_TYPES = new HashSet<>( ); + static { + REPOSITORY_TYPES.add(RepositoryType.MAVEN); + } + + @Override + public boolean supportsLayout( String layout ) + { + return "default".equals( layout ); + } + + @Override + public Set<RepositoryType> getSupportedRepositoryTypes( ) + { + return REPOSITORY_TYPES; + } + + @Override + public boolean supports( RepositoryType type ) + { + return type.equals( RepositoryType.MAVEN ); + } + + @Override + public RemoteRepositoryContent createRemoteContent( RemoteRepository repository ) throws RepositoryException + { + if (!supports( repository.getType() )) { + throw new RepositoryException( "Repository type "+repository.getType()+" is not supported by this implementation." ); + } + if (!supportsLayout( repository.getLayout() )) { + throw new RepositoryException( "Repository layout "+repository.getLayout()+" is not supported by this implementation." ); + } + RemoteDefaultRepositoryContent content = new RemoteDefaultRepositoryContent(artifactMappingProviders); + content.setRepository( repository ); + return content; + } + + @Override + public ManagedRepositoryContent createManagedContent( ManagedRepository repository ) throws RepositoryException + { + if (!supports( repository.getType() )) { + throw new RepositoryException( "Repository type "+repository.getType()+" is not supported by this implementation." ); + } + if (!supportsLayout( repository.getLayout() )) { + throw new RepositoryException( "Repository layout "+repository.getLayout()+" is not supported by this implementation." ); + } + ManagedDefaultRepositoryContent content = new ManagedDefaultRepositoryContent(artifactMappingProviders, filetypes); + content.setRepository( repository ); + return content; + } + + @SuppressWarnings( "unchecked" ) + @Override + public <T extends RepositoryContent, V extends Repository> T createContent( Class<T> clazz, V repository ) throws RepositoryException + { + if (!supports( repository.getType() )) { + throw new RepositoryException( "Repository type "+repository.getType()+" is not supported by this implementation." ); + } + if (repository instanceof ManagedRepository && ManagedRepositoryContent.class.isAssignableFrom( clazz ) ) { + return (T) this.createManagedContent( (ManagedRepository) repository ); + } else if (repository instanceof RemoteRepository && RemoteRepository.class.isAssignableFrom( clazz )) { + return (T) this.createRemoteContent( (RemoteRepository) repository ); + } else { + throw new RepositoryException( "Repository flavour is not supported: "+repository.getClass().getName() ); + } + } + +} diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/content/maven2/RemoteDefaultRepositoryContent.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/content/maven2/RemoteDefaultRepositoryContent.java new file mode 100644 index 000000000..17426d8b9 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/content/maven2/RemoteDefaultRepositoryContent.java @@ -0,0 +1,102 @@ +package org.apache.archiva.repository.content.maven2; + +/* + * 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.archiva.metadata.repository.storage.maven2.ArtifactMappingProvider; +import org.apache.archiva.model.ArtifactReference; +import org.apache.archiva.model.RepositoryURL; +import org.apache.archiva.repository.LayoutException; +import org.apache.archiva.repository.RemoteRepository; +import org.apache.archiva.repository.RemoteRepositoryContent; + +import java.util.List; + +/** + * RemoteDefaultRepositoryContent + */ +public class RemoteDefaultRepositoryContent + extends AbstractDefaultRepositoryContent + implements RemoteRepositoryContent +{ + private RemoteRepository repository; + + + public RemoteDefaultRepositoryContent( List<? extends ArtifactMappingProvider> artifactMappingProviders ) { + super(artifactMappingProviders); + } + + @Override + public String getId( ) + { + return repository.getId( ); + } + + @Override + public RemoteRepository getRepository( ) + { + return repository; + } + + @Override + public RepositoryURL getURL( ) + { + try + { + return new RepositoryURL( repository.getLocation( ).toString( ) ); + } + catch ( Exception e ) + { + log.error( "Could not convert location url {}", repository.getLocation( ) ); + return new RepositoryURL( "" ); + } + } + + @Override + public void setRepository( RemoteRepository repository ) + { + this.repository = repository; + } + + /** + * Convert a path to an artifact reference. + * + * @param path the path to convert. (relative or full url path) + * @throws LayoutException if the path cannot be converted to an artifact reference. + */ + @Override + public ArtifactReference toArtifactReference( String path ) + throws LayoutException + { + + if ( ( path != null ) && repository.getLocation()!=null && path.startsWith( repository.getLocation().toString() ) ) + { + return super.toArtifactReference( path.substring( repository.getLocation().toString().length( ) ) ); + } + + return super.toArtifactReference( path ); + } + + @Override + public RepositoryURL toURL( ArtifactReference reference ) + { + String url = repository.getLocation( ) + toPath( reference ); + return new RepositoryURL( url ); + } +} diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/content/maven2/RepositoryRequest.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/content/maven2/RepositoryRequest.java new file mode 100644 index 000000000..fa7ec895b --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/content/maven2/RepositoryRequest.java @@ -0,0 +1,275 @@ +package org.apache.archiva.repository.content.maven2; + +/* + * 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.archiva.model.ArtifactReference; +import org.apache.archiva.repository.LayoutException; +import org.apache.archiva.repository.ManagedRepositoryContent; +import org.apache.archiva.repository.content.PathParser; +import org.apache.archiva.repository.metadata.MetadataTools; +import org.apache.commons.lang.StringUtils; + +/** + * RepositoryRequest is used to determine the type of request that is incoming, and convert it to an appropriate + * ArtifactReference. + */ +public class RepositoryRequest +{ + private PathParser defaultPathParser = new DefaultPathParser(); + + public RepositoryRequest() + { + // no op + } + + /** + * Takes an incoming requested path (in "/" format) and gleans the layout + * and ArtifactReference appropriate for that content. + * + * @param requestedPath the relative path to the content. + * @return the ArtifactReference for the requestedPath. + * @throws LayoutException if the request path is not layout valid. + */ + public ArtifactReference toArtifactReference( String requestedPath ) + throws LayoutException + { + if ( StringUtils.isBlank( requestedPath ) ) + { + throw new LayoutException( "Blank request path is not a valid." ); + } + + String path = requestedPath; + while ( path.startsWith( "/" ) ) + { + path = path.substring( 1 ); + + // Only slash? that's bad, mmm-kay? + if ( "/".equals( path ) ) + { + throw new LayoutException( "Invalid request path: Slash only." ); + } + } + + if ( isDefault( path ) ) + { + return defaultPathParser.toArtifactReference( path ); + } + else if ( isLegacy( path ) ) + { + throw new LayoutException( "Legacy Maven1 repository not supported anymore." ); + } + else + { + throw new LayoutException( "Not a valid request path layout, too short." ); + } + } + + /** + * <p> + * Tests the path to see if it conforms to the expectations of a metadata request. + * </p> + * <p> + * NOTE: This does a cursory check on the path's last element. A result of true + * from this method is not a guarantee that the metadata is in a valid format, or + * that it even contains data. + * </p> + * + * @param requestedPath the path to test. + * @return true if the requestedPath is likely a metadata request. + */ + public boolean isMetadata( String requestedPath ) + { + return requestedPath.endsWith( "/" + MetadataTools.MAVEN_METADATA ); + } + + /** + * @param requestedPath + * @return true if the requestedPath is likely an archetype catalog request. + */ + public boolean isArchetypeCatalog( String requestedPath ) + { + return requestedPath.endsWith( "/" + MetadataTools.MAVEN_ARCHETYPE_CATALOG ); + } + + /** + * <p> + * Tests the path to see if it conforms to the expectations of a support file request. + * </p> + * <p> + * Tests for <code>.sha1</code>, <code>.md5</code>, <code>.asc</code>, and <code>.php</code>. + * </p> + * <p> + * NOTE: This does a cursory check on the path's extension only. A result of true + * from this method is not a guarantee that the support resource is in a valid format, or + * that it even contains data. + * </p> + * + * @param requestedPath the path to test. + * @return true if the requestedPath is likely that of a support file request. + */ + public boolean isSupportFile( String requestedPath ) + { + int idx = requestedPath.lastIndexOf( '.' ); + if ( idx <= 0 ) + { + return false; + } + + String ext = requestedPath.substring( idx ); + return ( ".sha1".equals( ext ) || ".md5".equals( ext ) || ".asc".equals( ext ) || ".pgp".equals( ext ) ); + } + + public boolean isMetadataSupportFile( String requestedPath ) + { + if ( isSupportFile( requestedPath ) ) + { + String basefilePath = StringUtils.substring( requestedPath, 0, requestedPath.lastIndexOf( '.' ) ); + if ( isMetadata( basefilePath ) ) + { + return true; + } + } + + return false; + } + + /** + * <p> + * Tests the path to see if it conforms to the expectations of a default layout request. + * </p> + * <p> + * NOTE: This does a cursory check on the count of path elements only. A result of + * true from this method is not a guarantee that the path sections are valid and + * can be resolved to an artifact reference. use {@link #toArtifactReference(String)} + * if you want a more complete analysis of the validity of the path. + * </p> + * + * @param requestedPath the path to test. + * @return true if the requestedPath is likely that of a default layout request. + */ + public boolean isDefault( String requestedPath ) + { + if ( StringUtils.isBlank( requestedPath ) ) + { + return false; + } + + String pathParts[] = StringUtils.splitPreserveAllTokens( requestedPath, '/' ); + if ( pathParts.length > 3 ) + { + return true; + } + else if ( pathParts.length == 3 ) + { + // check if artifact-level metadata (ex. eclipse/jdtcore/maven-metadata.xml) + if ( isMetadata( requestedPath ) ) + { + return true; + } + else + { + // check if checksum of artifact-level metadata (ex. eclipse/jdtcore/maven-metadata.xml.sha1) + int idx = requestedPath.lastIndexOf( '.' ); + if ( idx > 0 ) + { + String base = requestedPath.substring( 0, idx ); + if ( isMetadata( base ) && isSupportFile( requestedPath ) ) + { + return true; + } + } + + return false; + } + } + else + { + return false; + } + } + + /** + * <p> + * Tests the path to see if it conforms to the expectations of a legacy layout request. + * </p> + * <p> + * NOTE: This does a cursory check on the count of path elements only. A result of + * true from this method is not a guarantee that the path sections are valid and + * can be resolved to an artifact reference. use {@link #toArtifactReference(String)} + * if you want a more complete analysis of the validity of the path. + * </p> + * + * @param requestedPath the path to test. + * @return true if the requestedPath is likely that of a legacy layout request. + */ + public boolean isLegacy( String requestedPath ) + { + if ( StringUtils.isBlank( requestedPath ) ) + { + return false; + } + + String pathParts[] = StringUtils.splitPreserveAllTokens( requestedPath, '/' ); + return pathParts.length == 3; + } + + /** + * Adjust the requestedPath to conform to the native layout of the provided {@link org.apache.archiva.repository.ManagedRepositoryContent}. + * + * @param requestedPath the incoming requested path. + * @param repository the repository to adjust to. + * @return the adjusted (to native) path. + * @throws LayoutException if the path cannot be parsed. + */ + public String toNativePath( String requestedPath, ManagedRepositoryContent repository ) + throws LayoutException + { + if ( StringUtils.isBlank( requestedPath ) ) + { + throw new LayoutException( "Request Path is blank." ); + } + + String referencedResource = requestedPath; + // No checksum by default. + String supportfile = ""; + + // Figure out support file, and actual referencedResource. + if ( isSupportFile( requestedPath ) ) + { + int idx = requestedPath.lastIndexOf( '.' ); + referencedResource = requestedPath.substring( 0, idx ); + supportfile = requestedPath.substring( idx ); + } + + if ( isMetadata( referencedResource ) ) + { + /* Nothing to translate. + * Default layout is the only layout that can contain maven-metadata.xml files, and + * if the managedRepository is layout legacy, this request would never occur. + */ + return requestedPath; + } + + // Treat as an artifact reference. + ArtifactReference ref = toArtifactReference( referencedResource ); + String adjustedPath = repository.toPath( ref ); + return adjustedPath + supportfile; + } +} diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven2/MavenManagedRepository.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven2/MavenManagedRepository.java new file mode 100644 index 000000000..ea55b7c5e --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven2/MavenManagedRepository.java @@ -0,0 +1,140 @@ +package org.apache.archiva.repository.maven2; + +/* + * 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.archiva.common.utils.PathUtil; +import org.apache.archiva.repository.AbstractManagedRepository; +import org.apache.archiva.repository.ReleaseScheme; +import org.apache.archiva.repository.RepositoryCapabilities; +import org.apache.archiva.repository.RepositoryType; +import org.apache.archiva.repository.StandardCapabilities; +import org.apache.archiva.repository.UnsupportedFeatureException; +import org.apache.archiva.repository.features.ArtifactCleanupFeature; +import org.apache.archiva.repository.features.IndexCreationFeature; +import org.apache.archiva.repository.features.RepositoryFeature; +import org.apache.archiva.repository.features.StagingRepositoryFeature; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.IOException; +import java.net.URI; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.Locale; +import java.util.function.Function; + +/** + * Maven2 managed repository implementation. + */ +public class MavenManagedRepository extends AbstractManagedRepository +{ + + private static final Logger log = LoggerFactory.getLogger( MavenManagedRepository.class ); + + public static final String DEFAULT_LAYOUT = "default"; + public static final String LEGACY_LAYOUT = "legacy"; + private ArtifactCleanupFeature artifactCleanupFeature = new ArtifactCleanupFeature( ); + private IndexCreationFeature indexCreationFeature; + private StagingRepositoryFeature stagingRepositoryFeature = new StagingRepositoryFeature( ); + + + + private static final RepositoryCapabilities CAPABILITIES = new StandardCapabilities( + new ReleaseScheme[] { ReleaseScheme.RELEASE, ReleaseScheme.SNAPSHOT }, + new String[] { DEFAULT_LAYOUT, LEGACY_LAYOUT}, + new String[] {}, + new String[] {ArtifactCleanupFeature.class.getName(), IndexCreationFeature.class.getName(), + StagingRepositoryFeature.class.getName()}, + true, + true, + true, + true, + false + ); + + public MavenManagedRepository( String id, String name, Path basePath ) + { + super( RepositoryType.MAVEN, id, name, basePath); + this.indexCreationFeature = new IndexCreationFeature(this, this); + } + + public MavenManagedRepository( Locale primaryLocale, String id, String name, Path basePath ) + { + super( primaryLocale, RepositoryType.MAVEN, id, name, basePath ); + } + + @Override + public RepositoryCapabilities getCapabilities( ) + { + return CAPABILITIES; + } + + + @SuppressWarnings( "unchecked" ) + @Override + public <T extends RepositoryFeature<T>> RepositoryFeature<T> getFeature( Class<T> clazz ) throws UnsupportedFeatureException + { + if (ArtifactCleanupFeature.class.equals( clazz )) + { + return (RepositoryFeature<T>) artifactCleanupFeature; + } else if (IndexCreationFeature.class.equals(clazz)) { + return (RepositoryFeature<T>) indexCreationFeature; + } else if (StagingRepositoryFeature.class.equals(clazz)) { + return (RepositoryFeature<T>) stagingRepositoryFeature; + } else { + throw new UnsupportedFeatureException( ); + } + } + + @Override + public <T extends RepositoryFeature<T>> boolean supportsFeature( Class<T> clazz ) + { + if (ArtifactCleanupFeature.class.equals(clazz) || + IndexCreationFeature.class.equals(clazz) || + StagingRepositoryFeature.class.equals(clazz)) { + return true; + } + return false; + } + + @Override + public boolean hasIndex( ) + { + return indexCreationFeature.hasIndex(); + } + + @Override + public void setLocation( URI location ) + { + super.setLocation( location ); + Path newLoc = PathUtil.getPathFromUri( location ); + if (!Files.exists( newLoc )) { + try + { + Files.createDirectories( newLoc ); + } + catch ( IOException e ) + { + log.error("Could not create directory {}",location, e); + } + } + } + +} diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven2/MavenRemoteRepository.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven2/MavenRemoteRepository.java new file mode 100644 index 000000000..1933554ac --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven2/MavenRemoteRepository.java @@ -0,0 +1,114 @@ +package org.apache.archiva.repository.maven2; + +import org.apache.archiva.repository.AbstractRemoteRepository; +import org.apache.archiva.repository.ReleaseScheme; +import org.apache.archiva.repository.RemoteRepository; +import org.apache.archiva.repository.RepositoryCapabilities; +import org.apache.archiva.repository.RepositoryType; +import org.apache.archiva.repository.StandardCapabilities; +import org.apache.archiva.repository.UnsupportedFeatureException; +import org.apache.archiva.repository.features.IndexCreationFeature; +import org.apache.archiva.repository.features.RemoteIndexFeature; +import org.apache.archiva.repository.features.RepositoryFeature; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.nio.file.Path; +import java.util.Locale; + +/* + * 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. + */ + +/** + * Maven2 remote repository implementation + */ +public class MavenRemoteRepository extends AbstractRemoteRepository + implements RemoteRepository +{ + + Logger log = LoggerFactory.getLogger(MavenRemoteRepository.class); + + final private RemoteIndexFeature remoteIndexFeature = new RemoteIndexFeature(); + final private IndexCreationFeature indexCreationFeature; + + private static final RepositoryCapabilities CAPABILITIES = new StandardCapabilities( + new ReleaseScheme[] { ReleaseScheme.RELEASE, ReleaseScheme.SNAPSHOT }, + new String[] { MavenManagedRepository.DEFAULT_LAYOUT, MavenManagedRepository.LEGACY_LAYOUT}, + new String[] {}, + new String[] {RemoteIndexFeature.class.getName(), IndexCreationFeature.class.getName()}, + true, + true, + true, + true, + false + ); + + public MavenRemoteRepository( String id, String name, Path basePath ) + { + super( RepositoryType.MAVEN, id, name, basePath ); + this.indexCreationFeature = new IndexCreationFeature(this, this); + + } + + public MavenRemoteRepository( Locale primaryLocale, String id, String name, Path basePath ) + { + super( primaryLocale, RepositoryType.MAVEN, id, name, basePath ); + this.indexCreationFeature = new IndexCreationFeature(this, this); + } + + @Override + public boolean hasIndex( ) + { + return remoteIndexFeature.hasIndex(); + } + + @Override + public RepositoryCapabilities getCapabilities( ) + { + return CAPABILITIES; + } + + @SuppressWarnings( "unchecked" ) + @Override + public <T extends RepositoryFeature<T>> RepositoryFeature<T> getFeature( Class<T> clazz ) throws UnsupportedFeatureException + { + if (RemoteIndexFeature.class.equals( clazz )) { + return (RepositoryFeature<T>) remoteIndexFeature; + } else if (IndexCreationFeature.class.equals(clazz)) { + return (RepositoryFeature<T>) indexCreationFeature; + } else { + throw new UnsupportedFeatureException( ); + } + } + + @Override + public <T extends RepositoryFeature<T>> boolean supportsFeature( Class<T> clazz ) + { + if ( RemoteIndexFeature.class.equals(clazz) || IndexCreationFeature.class.equals(clazz)) { + return true; + } else { + return false; + } + } + + @Override + public String toString() { + return super.toString()+", remoteIndexFeature="+remoteIndexFeature.toString()+", indexCreationFeature="+indexCreationFeature.toString(); + } +} diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven2/MavenRepositoryProvider.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven2/MavenRepositoryProvider.java new file mode 100644 index 000000000..79a9fb9e6 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven2/MavenRepositoryProvider.java @@ -0,0 +1,439 @@ +package org.apache.archiva.repository.maven2; + +/* + * 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.archiva.configuration.AbstractRepositoryConfiguration; +import org.apache.archiva.configuration.ArchivaConfiguration; +import org.apache.archiva.configuration.ManagedRepositoryConfiguration; +import org.apache.archiva.configuration.RemoteRepositoryConfiguration; +import org.apache.archiva.repository.BasicManagedRepository; +import org.apache.archiva.repository.EditableManagedRepository; +import org.apache.archiva.repository.EditableRemoteRepository; +import org.apache.archiva.repository.EditableRepository; +import org.apache.archiva.repository.ManagedRepository; +import org.apache.archiva.repository.PasswordCredentials; +import org.apache.archiva.repository.ReleaseScheme; +import org.apache.archiva.repository.RemoteRepository; +import org.apache.archiva.repository.RepositoryCredentials; +import org.apache.archiva.repository.RepositoryEvent; +import org.apache.archiva.repository.RepositoryException; +import org.apache.archiva.repository.RepositoryProvider; +import org.apache.archiva.repository.RepositoryType; +import org.apache.archiva.repository.UnsupportedURIException; +import org.apache.archiva.repository.features.ArtifactCleanupFeature; +import org.apache.archiva.repository.features.IndexCreationFeature; +import org.apache.archiva.repository.features.RemoteIndexFeature; +import org.apache.archiva.repository.features.StagingRepositoryFeature; +import org.apache.commons.lang.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; + +import javax.inject.Inject; +import java.io.IOException; +import java.net.URI; +import java.net.URISyntaxException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.time.Duration; +import java.time.Period; +import java.time.temporal.ChronoUnit; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; +import java.util.stream.Collectors; + +/** + * Provider for the maven2 repository implementations + */ +@Service("mavenRepositoryProvider") +public class MavenRepositoryProvider implements RepositoryProvider { + + + @Inject + private ArchivaConfiguration archivaConfiguration; + + private static final Logger log = LoggerFactory.getLogger(MavenRepositoryProvider.class); + + static final Set<RepositoryType> TYPES = new HashSet<>(); + + static { + TYPES.add(RepositoryType.MAVEN); + } + + @Override + public Set<RepositoryType> provides() { + return TYPES; + } + + @Override + public EditableManagedRepository createManagedInstance(String id, String name) { + return new MavenManagedRepository(id, name, archivaConfiguration.getRepositoryBaseDir()); + } + + @Override + public EditableRemoteRepository createRemoteInstance(String id, String name) { + return new MavenRemoteRepository(id, name, archivaConfiguration.getRemoteRepositoryBaseDir()); + } + + private URI getURIFromString(String uriStr) throws RepositoryException { + URI uri; + try { + if (StringUtils.isEmpty(uriStr)) { + return new URI(""); + } + if (uriStr.startsWith("/")) { + // only absolute paths are prepended with file scheme + uri = new URI("file://" + uriStr); + } else { + uri = new URI(uriStr); + } + if (uri.getScheme() != null && !"file".equals(uri.getScheme())) { + log.error("Bad URI scheme found: {}, URI={}", uri.getScheme(), uri); + throw new RepositoryException("The uri " + uriStr + " is not valid. Only file:// URI is allowed for maven."); + } + } catch (URISyntaxException e) { + String newCfg = "file://" + uriStr; + try { + uri = new URI(newCfg); + } catch (URISyntaxException e1) { + log.error("Could not create URI from {} -> ", uriStr, newCfg); + throw new RepositoryException("The config entry " + uriStr + " cannot be converted to URI."); + } + } + log.debug("Setting location uri: {}", uri); + return uri; + } + + @Override + public ManagedRepository createManagedInstance(ManagedRepositoryConfiguration cfg) throws RepositoryException { + MavenManagedRepository repo = new MavenManagedRepository(cfg.getId(), cfg.getName(), archivaConfiguration.getRepositoryBaseDir()); + updateManagedInstance(repo, cfg); + return repo; + } + + @Override + public void updateManagedInstance(EditableManagedRepository repo, ManagedRepositoryConfiguration cfg) throws RepositoryException { + try { + repo.setLocation(getURIFromString(cfg.getLocation())); + } catch (UnsupportedURIException e) { + throw new RepositoryException("The location entry is not a valid uri: " + cfg.getLocation()); + } + setBaseConfig(repo, cfg); + Path repoDir = repo.getLocalPath(); + if (!Files.exists(repoDir)) { + log.debug("Creating repo directory {}", repoDir); + try { + Files.createDirectories(repoDir); + } catch (IOException e) { + log.error("Could not create directory {} for repository {}", repo.getLocalPath(), repo.getId(), e); + throw new RepositoryException("Could not create directory for repository " + repo.getLocalPath()); + } + } + repo.setSchedulingDefinition(cfg.getRefreshCronExpression()); + repo.setBlocksRedeployment(cfg.isBlockRedeployments()); + repo.setScanned(cfg.isScanned()); + if (cfg.isReleases()) { + repo.addActiveReleaseScheme(ReleaseScheme.RELEASE); + } + if (cfg.isSnapshots()) { + repo.addActiveReleaseScheme(ReleaseScheme.SNAPSHOT); + } + + StagingRepositoryFeature stagingRepositoryFeature = repo.getFeature(StagingRepositoryFeature.class).get(); + stagingRepositoryFeature.setStageRepoNeeded(cfg.isStageRepoNeeded()); + + IndexCreationFeature indexCreationFeature = repo.getFeature(IndexCreationFeature.class).get(); + indexCreationFeature.setSkipPackedIndexCreation(cfg.isSkipPackedIndexCreation()); + indexCreationFeature.setIndexPath(getURIFromString(cfg.getIndexDir())); + indexCreationFeature.setPackedIndexPath(getURIFromString(cfg.getPackedIndexDir())); + /* -> Should be created by MavenIndexProvider + + Path indexPath; + if (indexCreationFeature.getIndexPath().getScheme() == null) { + indexPath = Paths.get(indexCreationFeature.getIndexPath().getPath()); + } else { + indexPath = Paths.get(indexCreationFeature.getIndexPath()); + } + Path absoluteIndexPath; + if (indexPath.isAbsolute()) { + absoluteIndexPath = indexPath; + } else { + absoluteIndexPath = PathUtil.getPathFromUri(repo.getLocation()).resolve(indexCreationFeature.getIndexPath().getPath()); + } + try { + Files.createDirectories(absoluteIndexPath); + } catch (IOException e) { + log.error("Could not create index directory {}", absoluteIndexPath); + throw new RepositoryException("Could not create index directory " + absoluteIndexPath); + }*/ + + ArtifactCleanupFeature artifactCleanupFeature = repo.getFeature(ArtifactCleanupFeature.class).get(); + + artifactCleanupFeature.setDeleteReleasedSnapshots(cfg.isDeleteReleasedSnapshots()); + artifactCleanupFeature.setRetentionCount(cfg.getRetentionCount()); + artifactCleanupFeature.setRetentionPeriod(Period.ofDays(cfg.getRetentionPeriod())); + } + + + @Override + public ManagedRepository createStagingInstance(ManagedRepositoryConfiguration baseConfiguration) throws RepositoryException { + log.debug("Creating staging instance for {}", baseConfiguration.getId()); + return createManagedInstance(getStageRepoConfig(baseConfiguration)); + } + + + @Override + public RemoteRepository createRemoteInstance(RemoteRepositoryConfiguration cfg) throws RepositoryException { + MavenRemoteRepository repo = new MavenRemoteRepository(cfg.getId(), cfg.getName(), archivaConfiguration.getRemoteRepositoryBaseDir()); + updateRemoteInstance(repo, cfg); + return repo; + } + + private String convertUriToPath(URI uri) { + if (uri.getScheme() == null) { + return uri.getPath(); + } else if ("file".equals(uri.getScheme())) { + return Paths.get(uri).toString(); + } else { + return uri.toString(); + } + } + + @Override + public void updateRemoteInstance(EditableRemoteRepository repo, RemoteRepositoryConfiguration cfg) throws RepositoryException { + setBaseConfig(repo, cfg); + repo.setCheckPath(cfg.getCheckPath()); + repo.setSchedulingDefinition(cfg.getRefreshCronExpression()); + try { + repo.setLocation(new URI(cfg.getUrl())); + } catch (UnsupportedURIException | URISyntaxException e) { + log.error("Could not set remote url " + cfg.getUrl()); + throw new RepositoryException("The url config is not a valid uri: " + cfg.getUrl()); + } + repo.setTimeout(Duration.ofSeconds(cfg.getTimeout())); + RemoteIndexFeature remoteIndexFeature = repo.getFeature(RemoteIndexFeature.class).get(); + remoteIndexFeature.setDownloadRemoteIndex(cfg.isDownloadRemoteIndex()); + remoteIndexFeature.setDownloadRemoteIndexOnStartup(cfg.isDownloadRemoteIndexOnStartup()); + remoteIndexFeature.setDownloadTimeout(Duration.ofSeconds(cfg.getRemoteDownloadTimeout())); + remoteIndexFeature.setProxyId(cfg.getRemoteDownloadNetworkProxyId()); + if (cfg.isDownloadRemoteIndex()) { + try { + remoteIndexFeature.setIndexUri(new URI(cfg.getRemoteIndexUrl())); + } catch (URISyntaxException e) { + log.error("Could not set remote index url " + cfg.getRemoteIndexUrl()); + remoteIndexFeature.setDownloadRemoteIndex(false); + remoteIndexFeature.setDownloadRemoteIndexOnStartup(false); + } + } + for ( Object key : cfg.getExtraHeaders().keySet() ) { + repo.addExtraHeader( key.toString(), cfg.getExtraHeaders().get(key).toString() ); + } + for ( Object key : cfg.getExtraParameters().keySet() ) { + repo.addExtraParameter( key.toString(), cfg.getExtraParameters().get(key).toString() ); + } + PasswordCredentials credentials = new PasswordCredentials("", new char[0]); + if (cfg.getPassword() != null && cfg.getUsername() != null) { + credentials.setPassword(cfg.getPassword().toCharArray()); + credentials.setUsername(cfg.getUsername()); + repo.setCredentials(credentials); + } else { + credentials.setPassword(new char[0]); + } + IndexCreationFeature indexCreationFeature = repo.getFeature(IndexCreationFeature.class).get(); + if (cfg.getIndexDir() != null) { + indexCreationFeature.setIndexPath(getURIFromString(cfg.getIndexDir())); + } + if (cfg.getPackedIndexDir() != null) { + indexCreationFeature.setPackedIndexPath(getURIFromString(cfg.getPackedIndexDir())); + } + log.debug("Updated remote instance {}", repo); + } + + @Override + public RemoteRepositoryConfiguration getRemoteConfiguration(RemoteRepository remoteRepository) throws RepositoryException { + if (!(remoteRepository instanceof MavenRemoteRepository)) { + log.error("Wrong remote repository type " + remoteRepository.getClass().getName()); + throw new RepositoryException("The given repository type cannot be handled by the maven provider: " + remoteRepository.getClass().getName()); + } + RemoteRepositoryConfiguration cfg = new RemoteRepositoryConfiguration(); + cfg.setType(remoteRepository.getType().toString()); + cfg.setId(remoteRepository.getId()); + cfg.setName(remoteRepository.getName()); + cfg.setDescription(remoteRepository.getDescription()); + cfg.setUrl(remoteRepository.getLocation().toString()); + cfg.setTimeout((int) remoteRepository.getTimeout().toMillis() / 1000); + cfg.setCheckPath(remoteRepository.getCheckPath()); + RepositoryCredentials creds = remoteRepository.getLoginCredentials(); + if (creds != null) { + if (creds instanceof PasswordCredentials) { + PasswordCredentials pCreds = (PasswordCredentials) creds; + cfg.setPassword(new String(pCreds.getPassword())); + cfg.setUsername(pCreds.getUsername()); + } + } + cfg.setLayout(remoteRepository.getLayout()); + cfg.setExtraParameters(remoteRepository.getExtraParameters()); + cfg.setExtraHeaders(remoteRepository.getExtraHeaders()); + cfg.setRefreshCronExpression(remoteRepository.getSchedulingDefinition()); + + IndexCreationFeature indexCreationFeature = remoteRepository.getFeature(IndexCreationFeature.class).get(); + cfg.setIndexDir(convertUriToPath(indexCreationFeature.getIndexPath())); + cfg.setPackedIndexDir(convertUriToPath(indexCreationFeature.getPackedIndexPath())); + + RemoteIndexFeature remoteIndexFeature = remoteRepository.getFeature(RemoteIndexFeature.class).get(); + cfg.setRemoteIndexUrl(remoteIndexFeature.getIndexUri().toString()); + cfg.setRemoteDownloadTimeout((int) remoteIndexFeature.getDownloadTimeout().get(ChronoUnit.SECONDS)); + cfg.setDownloadRemoteIndexOnStartup(remoteIndexFeature.isDownloadRemoteIndexOnStartup()); + cfg.setDownloadRemoteIndex(remoteIndexFeature.isDownloadRemoteIndex()); + cfg.setRemoteDownloadNetworkProxyId(remoteIndexFeature.getProxyId()); + + + return cfg; + + } + + @Override + public ManagedRepositoryConfiguration getManagedConfiguration(ManagedRepository managedRepository) throws RepositoryException { + if (!(managedRepository instanceof MavenManagedRepository || managedRepository instanceof BasicManagedRepository)) { + log.error("Wrong remote repository type " + managedRepository.getClass().getName()); + throw new RepositoryException("The given repository type cannot be handled by the maven provider: " + managedRepository.getClass().getName()); + } + ManagedRepositoryConfiguration cfg = new ManagedRepositoryConfiguration(); + cfg.setType(managedRepository.getType().toString()); + cfg.setId(managedRepository.getId()); + cfg.setName(managedRepository.getName()); + cfg.setDescription(managedRepository.getDescription()); + cfg.setLocation(convertUriToPath(managedRepository.getLocation())); + cfg.setLayout(managedRepository.getLayout()); + cfg.setRefreshCronExpression(managedRepository.getSchedulingDefinition()); + cfg.setScanned(managedRepository.isScanned()); + cfg.setBlockRedeployments(managedRepository.blocksRedeployments()); + StagingRepositoryFeature stagingRepositoryFeature = managedRepository.getFeature(StagingRepositoryFeature.class).get(); + cfg.setStageRepoNeeded(stagingRepositoryFeature.isStageRepoNeeded()); + IndexCreationFeature indexCreationFeature = managedRepository.getFeature(IndexCreationFeature.class).get(); + cfg.setIndexDir(convertUriToPath(indexCreationFeature.getIndexPath())); + cfg.setPackedIndexDir(convertUriToPath(indexCreationFeature.getPackedIndexPath())); + cfg.setSkipPackedIndexCreation(indexCreationFeature.isSkipPackedIndexCreation()); + + ArtifactCleanupFeature artifactCleanupFeature = managedRepository.getFeature(ArtifactCleanupFeature.class).get(); + cfg.setRetentionCount(artifactCleanupFeature.getRetentionCount()); + cfg.setRetentionPeriod(artifactCleanupFeature.getRetentionPeriod().getDays()); + cfg.setDeleteReleasedSnapshots(artifactCleanupFeature.isDeleteReleasedSnapshots()); + + if (managedRepository.getActiveReleaseSchemes().contains(ReleaseScheme.RELEASE)) { + cfg.setReleases(true); + } else { + cfg.setReleases(false); + } + if (managedRepository.getActiveReleaseSchemes().contains(ReleaseScheme.SNAPSHOT)) { + cfg.setSnapshots(true); + } else { + cfg.setSnapshots(false); + } + return cfg; + + } + + private ManagedRepositoryConfiguration getStageRepoConfig(ManagedRepositoryConfiguration repository) { + ManagedRepositoryConfiguration stagingRepository = new ManagedRepositoryConfiguration(); + stagingRepository.setId(repository.getId() + StagingRepositoryFeature.STAGING_REPO_POSTFIX); + stagingRepository.setLayout(repository.getLayout()); + stagingRepository.setName(repository.getName() + StagingRepositoryFeature.STAGING_REPO_POSTFIX); + stagingRepository.setBlockRedeployments(repository.isBlockRedeployments()); + stagingRepository.setRetentionPeriod(repository.getRetentionPeriod()); + stagingRepository.setDeleteReleasedSnapshots(repository.isDeleteReleasedSnapshots()); + stagingRepository.setStageRepoNeeded(false); + + String path = repository.getLocation(); + int lastIndex = path.replace('\\', '/').lastIndexOf('/'); + stagingRepository.setLocation(path.substring(0, lastIndex) + "/" + stagingRepository.getId()); + + if (StringUtils.isNotBlank(repository.getIndexDir())) { + Path indexDir = null; + try { + indexDir = Paths.get(new URI(repository.getIndexDir().startsWith("file://") ? repository.getIndexDir() : "file://" + repository.getIndexDir())); + if (indexDir.isAbsolute()) { + Path newDir = indexDir.getParent().resolve(indexDir.getFileName() + StagingRepositoryFeature.STAGING_REPO_POSTFIX); + log.debug("Changing index directory {} -> {}", indexDir, newDir); + stagingRepository.setIndexDir(newDir.toString()); + } else { + log.debug("Keeping index directory {}", repository.getIndexDir()); + stagingRepository.setIndexDir(repository.getIndexDir()); + } + } catch (URISyntaxException e) { + log.error("Could not parse index path as uri {}", repository.getIndexDir()); + stagingRepository.setIndexDir(""); + } + // in case of absolute dir do not use the same + } + if (StringUtils.isNotBlank(repository.getPackedIndexDir())) { + Path packedIndexDir = null; + try { + packedIndexDir = Paths.get(new URI(repository.getPackedIndexDir().startsWith("file://") ? repository.getPackedIndexDir() : "file://" + repository.getPackedIndexDir())); + if (packedIndexDir.isAbsolute()) { + Path newDir = packedIndexDir.getParent().resolve(packedIndexDir.getFileName() + StagingRepositoryFeature.STAGING_REPO_POSTFIX); + log.debug("Changing index directory {} -> {}", packedIndexDir, newDir); + stagingRepository.setPackedIndexDir(newDir.toString()); + } else { + log.debug("Keeping index directory {}", repository.getPackedIndexDir()); + stagingRepository.setPackedIndexDir(repository.getPackedIndexDir()); + } + } catch (URISyntaxException e) { + log.error("Could not parse index path as uri {}", repository.getPackedIndexDir()); + stagingRepository.setPackedIndexDir(""); + } + // in case of absolute dir do not use the same + } + stagingRepository.setRefreshCronExpression(repository.getRefreshCronExpression()); + stagingRepository.setReleases(repository.isReleases()); + stagingRepository.setRetentionCount(repository.getRetentionCount()); + stagingRepository.setScanned(repository.isScanned()); + stagingRepository.setSnapshots(repository.isSnapshots()); + stagingRepository.setSkipPackedIndexCreation(repository.isSkipPackedIndexCreation()); + // do not duplicate description + //stagingRepository.getDescription("") + return stagingRepository; + } + + private void setBaseConfig(EditableRepository repo, AbstractRepositoryConfiguration cfg) throws RepositoryException { + + URI baseUri = archivaConfiguration.getRepositoryBaseDir().toUri(); + repo.setBaseUri(baseUri); + + repo.setName(repo.getPrimaryLocale(), cfg.getName()); + repo.setDescription(repo.getPrimaryLocale(), cfg.getDescription()); + repo.setLayout(cfg.getLayout()); + } + + public ArchivaConfiguration getArchivaConfiguration() { + return archivaConfiguration; + } + + public void setArchivaConfiguration(ArchivaConfiguration archivaConfiguration) { + this.archivaConfiguration = archivaConfiguration; + } + + @Override + public <T> void raise(RepositoryEvent<T> event) { + // + } +} diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven2/MavenSystemManager.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven2/MavenSystemManager.java new file mode 100644 index 000000000..55b3fb6f8 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven2/MavenSystemManager.java @@ -0,0 +1,119 @@ +package org.apache.archiva.repository.maven2; + +/* + * 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.archiva.dependency.tree.maven2.ArchivaRepositoryConnectorFactory; +import org.apache.maven.repository.internal.DefaultArtifactDescriptorReader; +import org.apache.maven.repository.internal.DefaultVersionRangeResolver; +import org.apache.maven.repository.internal.DefaultVersionResolver; +import org.apache.maven.repository.internal.MavenRepositorySystemUtils; +import org.eclipse.aether.DefaultRepositorySystemSession; +import org.eclipse.aether.RepositorySystem; +import org.eclipse.aether.RepositorySystemSession; +import org.eclipse.aether.collection.DependencySelector; +import org.eclipse.aether.impl.ArtifactDescriptorReader; +import org.eclipse.aether.impl.DefaultServiceLocator; +import org.eclipse.aether.impl.VersionRangeResolver; +import org.eclipse.aether.impl.VersionResolver; +import org.eclipse.aether.internal.impl.SimpleLocalRepositoryManagerFactory; +import org.eclipse.aether.repository.LocalRepository; +import org.eclipse.aether.repository.LocalRepositoryManager; +import org.eclipse.aether.repository.NoLocalRepositoryManagerException; +import org.eclipse.aether.spi.connector.RepositoryConnectorFactory; +import org.eclipse.aether.util.graph.selector.AndDependencySelector; +import org.eclipse.aether.util.graph.selector.ExclusionDependencySelector; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; + +import javax.annotation.PostConstruct; + +/** + * Some static utility methods that are used by different classes. + */ +@Service("mavenSystemManager") +public class MavenSystemManager { + + static Logger log = LoggerFactory.getLogger(MavenSystemManager.class); + + private DefaultServiceLocator locator; + private RepositorySystem system; + + @PostConstruct + private synchronized void init() { + locator = newLocator(); + system = newRepositorySystem(locator); + + } + + /** + * Creates a new aether repository system session for the given directory and assigns the + * repository to this session. + * + * @param localRepoDir The repository directory + * @return The newly created session object. + */ + public static RepositorySystemSession newRepositorySystemSession(String localRepoDir) { + DefaultRepositorySystemSession session = MavenRepositorySystemUtils.newSession(); + + LocalRepository repo = new LocalRepository(localRepoDir); + + DependencySelector depFilter = new AndDependencySelector(new ExclusionDependencySelector()); + session.setDependencySelector(depFilter); + SimpleLocalRepositoryManagerFactory repFactory = new SimpleLocalRepositoryManagerFactory(); + try { + LocalRepositoryManager manager = repFactory.newInstance(session, repo); + session.setLocalRepositoryManager(manager); + } catch (NoLocalRepositoryManagerException e) { + log.error("Could not assign the repository manager to the session: {}", e.getMessage(), e); + } + + return session; + } + + public RepositorySystem getRepositorySystem() { + return system; + } + + public DefaultServiceLocator getLocator() { + return locator; + } + + /** + * Finds the + * + * @return + */ + public static RepositorySystem newRepositorySystem(DefaultServiceLocator locator) { + return locator.getService(RepositorySystem.class); + } + + public static DefaultServiceLocator newLocator() { + DefaultServiceLocator locator = MavenRepositorySystemUtils.newServiceLocator(); + + locator.addService(RepositoryConnectorFactory.class, + ArchivaRepositoryConnectorFactory.class);// FileRepositoryConnectorFactory.class ); + locator.addService(VersionResolver.class, DefaultVersionResolver.class); + locator.addService(VersionRangeResolver.class, DefaultVersionRangeResolver.class); + locator.addService(ArtifactDescriptorReader.class, DefaultArtifactDescriptorReader.class); + + return locator; + } +} diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/resources/META-INF/spring-context.xml b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/resources/META-INF/spring-context.xml new file mode 100644 index 000000000..375a863fe --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/resources/META-INF/spring-context.xml @@ -0,0 +1,40 @@ +<?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:annotation-config/> + <context:component-scan base-package="org.apache.archiva.dependency.tree.maven2,org.apache.archiva.metadata.repository.storage.maven2, + org.apache.archiva.repository.content.maven2"/> + + + + <alias name="repositoryStorage#maven2" alias="repositoryStorage#default"/> + <alias name="repositoryStorage#maven2" alias="repositoryStorage#legacy"/> + + +</beans>
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/expected-poms/archiva-model-effective.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/expected-poms/archiva-model-effective.pom new file mode 100644 index 000000000..37d9d112c --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/expected-poms/archiva-model-effective.pom @@ -0,0 +1,804 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project> + <parent> + <artifactId>archiva-base</artifactId> + <groupId>org.apache.maven.archiva</groupId> + <version>1.0-SNAPSHOT</version> + </parent> + <modelVersion>4.0.0</modelVersion> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-model</artifactId> + <name>Archiva Base :: Model</name> + <version>1.0-SNAPSHOT</version> + <description>Archiva is an application for managing one or more remote repositories, including + administration, artifact handling, + browsing and searching.</description> + <url>http://maven.apache.org/archiva/archiva-base/archiva-model</url> + <issueManagement> + <system>jira</system> + <url>http://jira.codehaus.org/browse/MRM</url> + </issueManagement> + <ciManagement> + <system>continuum</system> + <url>http://maven.zones.apache.org:8080/continuum</url> + <notifiers> + <notifier> + <configuration> + <address>notifications@maven.apache.org</address> + </configuration> + </notifier> + </notifiers> + </ciManagement> + <inceptionYear>2002</inceptionYear> + <mailingLists> + <mailingList> + <name>Maven Archiva User List</name> + <subscribe>archiva-users-subscribe@maven.apache.org</subscribe> + <unsubscribe>archiva-users-unsubscribe@maven.apache.org</unsubscribe> + <post>archiva-users@maven.apache.org</post> + <archive>http://mail-archives.apache.org/mod_mbox/maven-archiva-users</archive> + </mailingList> + <mailingList> + <name>Maven Archiva Developer List</name> + <subscribe>archiva-dev-subscribe@maven.apache.org</subscribe> + <unsubscribe>archiva-dev-unsubscribe@maven.apache.org</unsubscribe> + <post>archiva-dev@maven.apache.org</post> + <archive>http://mail-archives.apache.org/mod_mbox/maven-archiva-dev</archive> + </mailingList> + <mailingList> + <name>Maven Archiva Commits List</name> + <subscribe>archiva-commits-subscribe@maven.apache.org</subscribe> + <unsubscribe>archiva-commits-unsubscribe@maven.apache.org</unsubscribe> + <post>archiva-commits@maven.apache.org</post> + <archive>http://mail-archives.apache.org/mod_mbox/maven-archiva-commits</archive> + </mailingList> + </mailingLists> + <developers> + <developer> + <id>jvanzyl</id> + <name>Jason van Zyl</name> + <email>jason@maven.org</email> + <organization>ASF</organization> + <roles> + <role>PMC Chair</role> + </roles> + <timezone>-5</timezone> + </developer> + <developer> + <id>brett</id> + <name>Brett Porter</name> + <email>brett@apache.org</email> + <organization>ASF</organization> + <roles> + <role>PMC Member</role> + </roles> + <timezone>+10</timezone> + </developer> + <developer> + <id>evenisse</id> + <name>Emmanuel Venisse</name> + <email>evenisse@apache.org</email> + <organization>ASF</organization> + <roles> + <role>PMC Member</role> + </roles> + <timezone>+1</timezone> + </developer> + <developer> + <id>kenney</id> + <name>Kenney Westerhof</name> + <email>kenney@apache.org</email> + <organization>Neonics</organization> + <roles> + <role>PMC Member</role> + </roles> + </developer> + <developer> + <id>snicoll</id> + <name>Stephane Nicoll</name> + <email>snicoll@apache.org</email> + <organization>ASF</organization> + <roles> + <role>PMC Member</role> + </roles> + <timezone>+1</timezone> + </developer> + <developer> + <id>vmassol</id> + <name>Vincent Massol</name> + <email>vmassol@apache.org</email> + <organization>ASF</organization> + <roles> + <role>PMC Member</role> + </roles> + <timezone>+1</timezone> + </developer> + <developer> + <id>fgiust</id> + <name>Fabrizio Giustina</name> + <email>fgiust@apache.org</email> + <organization>openmind</organization> + <roles> + <role>PMC Member</role> + </roles> + <timezone>+1</timezone> + </developer> + <developer> + <id>epunzalan</id> + <name>Edwin Punzalan</name> + <email>epunzalan@mergere.com</email> + <organization>Mergere</organization> + <roles> + <role>Committer</role> + </roles> + <timezone>+8</timezone> + </developer> + <developer> + <id>mperham</id> + <name>Mike Perham</name> + <email>mperham@gmail.com</email> + <organization>IBM</organization> + <roles> + <role>PMC Member</role> + </roles> + <timezone>-6</timezone> + </developer> + <developer> + <id>jdcasey</id> + <name>John Casey</name> + <email>jdcasey@apache.org</email> + <organization>ASF</organization> + <roles> + <role>PMC Member</role> + </roles> + <timezone>-5</timezone> + </developer> + <developer> + <id>trygvis</id> + <name>Trygve Laugstol</name> + <email>trygvis@apache.org</email> + <organization>ASF</organization> + <roles> + <role>PMC Member</role> + </roles> + <timezone>+1</timezone> + </developer> + <developer> + <id>vsiveton</id> + <name>Vincent Siveton</name> + <email>vsiveton@apache.org</email> + <organization>ASF</organization> + <roles> + <role>PMC Member</role> + </roles> + <timezone>-5</timezone> + </developer> + <developer> + <id>carlos</id> + <name>Carlos Sanchez</name> + <email>carlos@apache.org</email> + <organization>ASF</organization> + <roles> + <role>PMC Member</role> + </roles> + <timezone>+1</timezone> + </developer> + <developer> + <id>dennisl</id> + <name>Dennis Lundberg</name> + <email>dennisl@apache.org</email> + <organization>ASF</organization> + <roles> + <role>PMC Member</role> + </roles> + <timezone>+1</timezone> + </developer> + </developers> + <licenses> + <license> + <name>The Apache Software License, Version 2.0</name> + <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url> + <distribution>repo</distribution> + </license> + </licenses> + <scm> + <connection>scm:svn:http://svn.apache.org/repos/asf/maven/archiva/trunk/archiva-base/archiva-model</connection> + <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/archiva/trunk/archiva-base/archiva-model</developerConnection> + <url>http://svn.apache.org/viewcvs.cgi/maven/archiva/trunk/archiva-base/archiva-model</url> + </scm> + <organization> + <name>Apache Software Foundation</name> + <url>http://www.apache.org/</url> + </organization> + <build> + <sourceDirectory>/home/joakim/code/maven/branches/archiva-jpox-database-refactor/archiva-base/archiva-model/src/main/java</sourceDirectory> + <scriptSourceDirectory>src/main/scripts</scriptSourceDirectory> + <testSourceDirectory>/home/joakim/code/maven/branches/archiva-jpox-database-refactor/archiva-base/archiva-model/src/test/java</testSourceDirectory> + <outputDirectory>/home/joakim/code/maven/branches/archiva-jpox-database-refactor/archiva-base/archiva-model/target/classes</outputDirectory> + <testOutputDirectory>/home/joakim/code/maven/branches/archiva-jpox-database-refactor/archiva-base/archiva-model/target/test-classes</testOutputDirectory> + <resources> + <resource> + <directory>/home/joakim/code/maven/branches/archiva-jpox-database-refactor/archiva-base/archiva-model/src/main/resources</directory> + </resource> + </resources> + <testResources> + <testResource> + <directory>/home/joakim/code/maven/branches/archiva-jpox-database-refactor/archiva-base/archiva-model/src/test/resources</directory> + </testResource> + </testResources> + <directory>/home/joakim/code/maven/branches/archiva-jpox-database-refactor/archiva-base/archiva-model/target</directory> + <finalName>archiva-model-1.0-SNAPSHOT</finalName> + <pluginManagement> + <plugins> + <plugin> + <artifactId>maven-idea-plugin</artifactId> + <configuration> + <jdkLevel>1.4</jdkLevel> + </configuration> + </plugin> + <plugin> + <artifactId>maven-release-plugin</artifactId> + <configuration> + <tagBase>https://svn.apache.org/repos/asf/maven/archiva/tags</tagBase> + </configuration> + </plugin> + </plugins> + </pluginManagement> + <plugins> + <plugin> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-maven-plugin</artifactId> + <version>1.3.3</version> + <executions> + <execution> + <id>generate</id> + <goals> + <goal>descriptor</goal> + </goals> + </execution> + </executions> + </plugin> + <plugin> + <artifactId>maven-compiler-plugin</artifactId> + <configuration> + <source>1.4</source> + <target>1.4</target> + </configuration> + </plugin> + <plugin> + <artifactId>maven-surefire-plugin</artifactId> + <version>2.2</version> + </plugin> + <plugin> + <groupId>org.codehaus.modello</groupId> + <artifactId>modello-maven-plugin</artifactId> + <version>1.0-alpha-15-SNAPSHOT</version> + <executions> + <execution> + <id>archiva-base</id> + <goals> + <goal>java</goal> + <goal>xsd</goal> + <goal>jpox-jdo-mapping</goal> + <goal>jpox-metadata-class</goal> + </goals> + </execution> + </executions> + <configuration> + <version>1.0.0</version> + <packageWithVersion>false</packageWithVersion> + <model>src/main/mdo/archiva-base.xml</model> + </configuration> + </plugin> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>jpox-maven-plugin</artifactId> + <version>1.1.6</version> + <executions> + <execution> + <id>create-ddl</id> + <phase>generate-test-resources</phase> + <goals> + <goal>schema-create</goal> + </goals> + <configuration> + <outputFile>/home/joakim/code/maven/branches/archiva-jpox-database-refactor/archiva-base/archiva-model/target/classes/org/apache/maven/archiva/model/schema.ddl</outputFile> + <toolProperties> + <property> + <name>javax.jdo.option.ConnectionDriverName</name> + <value>org.apache.derby.jdbc.EmbeddedDriver</value> + </property> + <property> + <name>javax.jdo.option.ConnectionURL</name> + <value>jdbc:derby:target/jdo-schema-create;create=true</value> + </property> + <property> + <name>javax.jdo.option.ConnectionUserName</name> + <value>sa</value> + </property> + <property> + <name>javax.jdo.option.ConnectionPassword</name> + <value></value> + </property> + <property> + <name>log4j.configuration</name> + <value>/home/joakim/code/maven/branches/archiva-jpox-database-refactor/archiva-base/archiva-model/src/test/resources/log4j.xml</value> + </property> + <property> + <name>org.jpox.autoCreateTables</name> + <value>true</value> + </property> + </toolProperties> + </configuration> + </execution> + <execution> + <id>enhance</id> + <goals> + <goal>enhance</goal> + </goals> + </execution> + </executions> + <dependencies> + <dependency> + <groupId>org.apache.derby</groupId> + <artifactId>derby</artifactId> + <version>10.2.1.6</version> + </dependency> + </dependencies> + </plugin> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>cobertura-maven-plugin</artifactId> + <configuration> + <instrumentation> + <excludes> + <exclude>org/apache/maven/archiva/reporting/model/**</exclude> + </excludes> + </instrumentation> + </configuration> + </plugin> + <plugin> + <artifactId>maven-help-plugin</artifactId> + <version>2.0.1</version> + </plugin> + </plugins> + </build> + <repositories> + <repository> + <releases /> + <snapshots> + <enabled>false</enabled> + </snapshots> + <id>codehaus.org</id> + <url>http://repository.codehaus.org</url> + </repository> + <repository> + <releases> + <enabled>false</enabled> + </releases> + <snapshots /> + <id>snapshots.codehaus.org</id> + <url>http://snapshots.repository.codehaus.org</url> + </repository> + <repository> + <releases> + <enabled>false</enabled> + </releases> + <id>apache.snapshots</id> + <name>Apache Snapshot Repository</name> + <url>http://people.apache.org/repo/m2-snapshot-repository</url> + </repository> + <repository> + <snapshots> + <enabled>false</enabled> + </snapshots> + <id>central</id> + <name>Maven Repository Switchboard</name> + <url>http://repo1.maven.org/maven2</url> + </repository> + </repositories> + <pluginRepositories> + <pluginRepository> + <releases> + <enabled>false</enabled> + </releases> + <snapshots /> + <id>snapshots.codehaus.org</id> + <url>http://snapshots.repository.codehaus.org</url> + </pluginRepository> + <pluginRepository> + <releases> + <updatePolicy>never</updatePolicy> + </releases> + <snapshots> + <enabled>false</enabled> + </snapshots> + <id>central</id> + <name>Maven Plugin Repository</name> + <url>http://repo1.maven.org/maven2</url> + </pluginRepository> + </pluginRepositories> + <dependencies> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>3.8.1</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-common</artifactId> + <version>1.0-SNAPSHOT</version> + </dependency> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-test-A</artifactId> + <version>1.0-SNAPSHOT</version> + </dependency> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-test-B</artifactId> + <version>1.0-SNAPSHOT</version> + </dependency> + <dependency> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-utils</artifactId> + <version>1.4</version> + </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> + <version>1.0-alpha-18</version> + </dependency> + <dependency> + <groupId>commons-lang</groupId> + <artifactId>commons-lang</artifactId> + <version>2.2</version> + </dependency> + <dependency> + <groupId>commons-io</groupId> + <artifactId>commons-io</artifactId> + <version>1.2</version> + </dependency> + </dependencies> + <reporting> + <outputDirectory>target/site</outputDirectory> + <plugins> + <plugin> + <artifactId>maven-checkstyle-plugin</artifactId> + <configuration> + <configLocation>config/maven_checks.xml</configLocation> + </configuration> + </plugin> + <plugin> + <artifactId>maven-javadoc-plugin</artifactId> + <configuration> + <source>1.4</source> + <aggregate>true</aggregate> + </configuration> + </plugin> + <plugin> + <artifactId>maven-jxr-plugin</artifactId> + <configuration> + <aggregate>true</aggregate> + </configuration> + </plugin> + <plugin> + <artifactId>maven-pmd-plugin</artifactId> + </plugin> + <plugin> + <artifactId>maven-surefire-report-plugin</artifactId> + </plugin> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>changelog-maven-plugin</artifactId> + </plugin> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>cobertura-maven-plugin</artifactId> + </plugin> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>taglist-maven-plugin</artifactId> + </plugin> + </plugins> + </reporting> + <dependencyManagement> + <dependencies> + <dependency> + <groupId>org.apache.maven.shared</groupId> + <artifactId>maven-app-configuration-model</artifactId> + <version>1.0-SNAPSHOT</version> + </dependency> + <dependency> + <groupId>org.apache.maven.shared</groupId> + <artifactId>maven-app-configuration-web</artifactId> + <version>1.0-SNAPSHOT</version> + </dependency> + <dependency> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-container-default</artifactId> + <version>1.0-alpha-18</version> + </dependency> + <dependency> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-component-api</artifactId> + <version>1.0-alpha-18</version> + </dependency> + <dependency> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-utils</artifactId> + <version>1.4</version> + </dependency> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-log4j12</artifactId> + <version>1.2</version> + </dependency> + <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-repository-metadata</artifactId> + <version>2.0.5</version> + </dependency> + <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-model</artifactId> + <version>2.0.5</version> + </dependency> + <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-artifact</artifactId> + <version>2.0.5</version> + </dependency> + <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-artifact-manager</artifactId> + <version>2.0.5</version> + </dependency> + <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-project</artifactId> + <version>2.0.5</version> + </dependency> + <dependency> + <groupId>org.apache.maven.shared</groupId> + <artifactId>maven-model-converter</artifactId> + <version>2.0.5-SNAPSHOT</version> + </dependency> + <dependency> + <groupId>org.apache.maven.wagon</groupId> + <artifactId>wagon-provider-api</artifactId> + <version>1.0-beta-2</version> + </dependency> + <dependency> + <groupId>org.apache.maven.wagon</groupId> + <artifactId>wagon-ssh</artifactId> + <version>1.0-beta-2</version> + </dependency> + <dependency> + <groupId>org.apache.maven.wagon</groupId> + <artifactId>wagon-file</artifactId> + <version>1.0-beta-2</version> + </dependency> + <dependency> + <groupId>org.apache.maven.wagon</groupId> + <artifactId>wagon-http-lightweight</artifactId> + <version>1.0-beta-2</version> + </dependency> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-common</artifactId> + <version>1.0-SNAPSHOT</version> + </dependency> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-core</artifactId> + <version>1.0-SNAPSHOT</version> + </dependency> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-reports-standard</artifactId> + <version>1.0-SNAPSHOT</version> + </dependency> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-model</artifactId> + <version>1.0-SNAPSHOT</version> + </dependency> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-database</artifactId> + <version>1.0-SNAPSHOT</version> + </dependency> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-consumer-api</artifactId> + <version>1.0-SNAPSHOT</version> + </dependency> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-model</artifactId> + <version>1.0-SNAPSHOT</version> + </dependency> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-database</artifactId> + <version>1.0-SNAPSHOT</version> + </dependency> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-discoverer</artifactId> + <version>1.0-SNAPSHOT</version> + </dependency> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-repository-layer</artifactId> + <version>1.0-SNAPSHOT</version> + </dependency> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-indexer</artifactId> + <version>1.0-SNAPSHOT</version> + </dependency> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-proxy</artifactId> + <version>1.0-SNAPSHOT</version> + </dependency> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-applet</artifactId> + <version>1.0-SNAPSHOT</version> + </dependency> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-security</artifactId> + <version>1.0-SNAPSHOT</version> + </dependency> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-configuration</artifactId> + <version>1.0-SNAPSHOT</version> + </dependency> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-converter</artifactId> + <version>1.0-SNAPSHOT</version> + </dependency> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-utils</artifactId> + <version>1.0-SNAPSHOT</version> + </dependency> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-webapp</artifactId> + <version>1.0-SNAPSHOT</version> + <type>war</type> + </dependency> + <dependency> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-digest</artifactId> + <version>1.1-SNAPSHOT</version> + </dependency> + <dependency> + <groupId>org.codehaus.plexus.security</groupId> + <artifactId>plexus-security-rbac-profile</artifactId> + <version>1.0-alpha-11-SNAPSHOT</version> + </dependency> + <dependency> + <groupId>org.codehaus.plexus.security</groupId> + <artifactId>plexus-security-system</artifactId> + <version>1.0-alpha-11-SNAPSHOT</version> + </dependency> + <dependency> + <groupId>org.codehaus.plexus.security</groupId> + <artifactId>plexus-security-system</artifactId> + <version>1.0-alpha-11-SNAPSHOT</version> + </dependency> + <dependency> + <groupId>org.codehaus.plexus.security</groupId> + <artifactId>plexus-security-ui-web</artifactId> + <version>1.0-alpha-11-SNAPSHOT</version> + <type>war</type> + </dependency> + <dependency> + <groupId>org.codehaus.plexus.security</groupId> + <artifactId>plexus-security-ui-web-integration</artifactId> + <version>1.0-alpha-11-SNAPSHOT</version> + </dependency> + <dependency> + <groupId>org.codehaus.plexus.security</groupId> + <artifactId>plexus-security-ui-web-taglib</artifactId> + <version>1.0-alpha-11-SNAPSHOT</version> + </dependency> + <dependency> + <groupId>org.codehaus.plexus.security</groupId> + <artifactId>plexus-security-authentication-provider-user-manager</artifactId> + <version>1.0-alpha-11-SNAPSHOT</version> + </dependency> + <dependency> + <groupId>org.codehaus.plexus.security</groupId> + <artifactId>plexus-security-authentication-provider-keystore</artifactId> + <version>1.0-alpha-11-SNAPSHOT</version> + </dependency> + <dependency> + <groupId>org.codehaus.plexus.security</groupId> + <artifactId>plexus-security-user-management-api</artifactId> + <version>1.0-alpha-11-SNAPSHOT</version> + </dependency> + <dependency> + <groupId>org.codehaus.plexus.security</groupId> + <artifactId>plexus-security-user-management-provider-jdo</artifactId> + <version>1.0-alpha-11-SNAPSHOT</version> + </dependency> + <dependency> + <groupId>org.codehaus.plexus.security</groupId> + <artifactId>plexus-security-authorization-rbac-store-cached</artifactId> + <version>1.0-alpha-11-SNAPSHOT</version> + </dependency> + <dependency> + <groupId>org.codehaus.plexus.security</groupId> + <artifactId>plexus-security-authorization-rbac-store-jdo</artifactId> + <version>1.0-alpha-11-SNAPSHOT</version> + </dependency> + <dependency> + <groupId>org.codehaus.plexus.security</groupId> + <artifactId>plexus-security-authorization-api</artifactId> + <version>1.0-alpha-11-SNAPSHOT</version> + </dependency> + <dependency> + <groupId>org.codehaus.plexus.security</groupId> + <artifactId>plexus-security-authorization-rbac-authorizer</artifactId> + <version>1.0-alpha-11-SNAPSHOT</version> + </dependency> + <dependency> + <groupId>org.codehaus.plexus.security</groupId> + <artifactId>plexus-security-keys-jdo</artifactId> + <version>1.0-alpha-11-SNAPSHOT</version> + </dependency> + <dependency> + <groupId>commons-lang</groupId> + <artifactId>commons-lang</artifactId> + <version>2.2</version> + </dependency> + <dependency> + <groupId>commons-io</groupId> + <artifactId>commons-io</artifactId> + <version>1.2</version> + </dependency> + <dependency> + <groupId>org.apache.derby</groupId> + <artifactId>derby</artifactId> + <version>10.1.3.1</version> + </dependency> + </dependencies> + </dependencyManagement> + <distributionManagement> + <repository> + <id>apache.releases</id> + <name>Apache Release Distribution Repository</name> + <url>scp://people.apache.org/www/people.apache.org/repo/m2-ibiblio-rsync-repository</url> + </repository> + <snapshotRepository> + <id>apache.snapshots</id> + <name>Apache Development Snapshot Repository</name> + <url>scp://people.apache.org/www/people.apache.org/repo/m2-snapshot-repository</url> + </snapshotRepository> + <site> + <id>apache.website</id> + <url>scpexe://people.apache.org/www/maven.apache.org/archiva/archiva-base/archiva-model</url> + </site> + </distributionManagement> + <properties> + <plexus-security.version>1.0-alpha-11-SNAPSHOT</plexus-security.version> + <wagon.version>1.0-beta-2</wagon.version> + <maven.version>2.0.5</maven.version> + <archiva.version>1.0-SNAPSHOT</archiva.version> + </properties> +</project> diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/expected-poms/cocoon-1.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/expected-poms/cocoon-1.pom new file mode 100644 index 000000000..dba957e59 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/expected-poms/cocoon-1.pom @@ -0,0 +1,284 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<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> + <parent> + <groupId>org.apache</groupId> + <artifactId>apache</artifactId> + <version>1</version> + </parent> + <groupId>org.apache.cocoon</groupId> + <artifactId>cocoon</artifactId> + <version>1</version> + <packaging>pom</packaging> + <name>Apache Cocoon</name> + <url>http://cocoon.apache.org</url> + <organization> + <name>The Apache Software Foundation</name> + <url>http://www.apache.org/</url> + </organization> + <issueManagement> + <system>jira</system> + <url>https://issues.apache.org/jira/browse/COCOON</url> + </issueManagement> + <ciManagement> + <system>continuum</system> + <url>http://cocoon.zones.apache.org:12000/continuum/servlet/continuum</url> + </ciManagement> + <mailingLists> + <mailingList> + <name>Cocoon User List</name> + <post>users@cocoon.apache.org</post> + <subscribe>users-subscribe@cocoon.apache.org</subscribe> + <unsubscribe>users-unsubscribe@cocoon.apache.org</unsubscribe> + <archive>http://mail-archives.apache.org/mod_mbox/cocoon-users</archive> + <otherArchives> + <otherArchive>http://www.mail-archive.com/users@cocoon.apache.org/</otherArchive> + <otherArchive>http://marc.theaimsgroup.com/?l=xml-cocoon-user</otherArchive> + <otherArchive>http://news.gmane.org/gmane.text.xml.cocoon.user</otherArchive> + </otherArchives> + </mailingList> + <mailingList> + <name>Cocoon Developer List</name> + <post>dev@cocoon.apache.org</post> + <subscribe>dev-subscribe@cocoon.apache.org</subscribe> + <unsubscribe>dev-unsubscribe@cocoon.apache.org</unsubscribe> + <archive>http://mail-archives.apache.org/mod_mbox/cocoon-dev</archive> + <otherArchives> + <otherArchive>http://www.mail-archive.com/dev@cocoon.apache.org/</otherArchive> + <otherArchive>http://marc.theaimsgroup.com/?l=xml-cocoon-dev</otherArchive> + <otherArchive>http://news.gmane.org/gmane.text.xml.cocoon.dev</otherArchive> + </otherArchives> + </mailingList> + <mailingList> + <name>Cocoon Documentation List</name> + <post>docs@cocoon.apache.org</post> + <subscribe>docs-subscribe@cocoon.apache.org</subscribe> + <unsubscribe>docs-unsubscribe@cocoon.apache.org</unsubscribe> + <archive>http://mail-archives.apache.org/mod_mbox/cocoon-docs</archive> + <otherArchives> + <otherArchive>http://www.mail-archive.com/dev@cocoon.apache.org/</otherArchive> + <otherArchive>http://marc.theaimsgroup.com/?l=xml-cocoon-docs</otherArchive> + <otherArchive>http://news.gmane.org/gmane.text.xml.cocoon.docs</otherArchive> + </otherArchives> + </mailingList> + <mailingList> + <name>Cocoon Subversion Repository List</name> + <subscribe>cvs-subscribe@cocoon.apache.org</subscribe> + <unsubscribe>cvs-unsubscribe@cocoon.apache.org</unsubscribe> + <archive>http://mail-archives.apache.org/mod_mbox/cocoon-cvs</archive> + <otherArchives> + <otherArchive>http://www.mail-archive.com/cvs@cocoon.apache.org/</otherArchive> + <otherArchive>http://marc.theaimsgroup.com/?l=xml-cocoon-cvs</otherArchive> + <otherArchive>http://news.gmane.org/gmane.text.xml.cocoon.cvs</otherArchive> + </otherArchives> + </mailingList> + </mailingLists> + <developers> + <developer> + <id>crossley</id> + <name>David Crossley</name> + <email>crossley@apache.org</email> + <organization>ASF</organization> + <organizationUrl>http://www.apache.org/</organizationUrl> + <timezone>+10</timezone> + <roles> + <role>Committer</role> + </roles> + </developer> + <developer> + <id>bdelacretaz</id> + <name>Bertrand Delacretaz</name> + <email>bdelacretaz@apache.org</email> + <organization>ASF</organization> + <organizationUrl>http://www.apache.org</organizationUrl> + <timezone>+1</timezone> + <roles> + <role>Committer</role> + </roles> + </developer> + <developer> + <id>danielf</id> + <name>Daniel Fagerstrom</name> + <email>danielf@apache.org</email> + <organization>ASF</organization> + <organizationUrl>http://www.apache.org</organizationUrl> + <timezone>+1</timezone> + <roles> + <role>Committer</role> + </roles> + </developer> + <developer> + <id>antonio</id> + <name>Antonio Gallardo</name> + <email>antonio@apache.org</email> + <organization>ASF</organization> + <organizationUrl>http://www.apache.org</organizationUrl> + <timezone>-6</timezone> + <roles> + <role>Committer</role> + </roles> + </developer> + <developer> + <id>lgawron</id> + <name>Leszek Gawron</name> + <email>lgawron@apache.org</email> + <organization>ASF</organization> + <organizationUrl>http://www.apache.org</organizationUrl> + <timezone>+1</timezone> + <roles> + <role>Committer</role> + </roles> + </developer> + <developer> + <id>joerg</id> + <name>Jorg Heinicke</name> + <email>joerg@apache.org</email> + <organization>ASF</organization> + <organizationUrl>http://www.apache.org</organizationUrl> + <timezone>+1</timezone> + <roles> + <role>Committer</role> + </roles> + </developer> + <developer> + <id>jheymans</id> + <name>Jorg Heymans</name> + <email>jheymans@apache.org</email> + <organization>ASF</organization> + <organizationUrl>http://www.apache.org</organizationUrl> + <timezone>+1</timezone> + <roles> + <role>Committer</role> + </roles> + </developer> + <developer> + <id>anathaniel</id> + <name>Alfred Nathaniel</name> + <email>anathaniel@apache.org</email> + <organization>ASF</organization> + <organizationUrl>http://www.apache.org</organizationUrl> + <timezone>+1</timezone> + <roles> + <role>Committer</role> + </roles> + </developer> + <developer> + <id>giacomo</id> + <name>Giacomo Pati</name> + <email>giacomo@apache.org</email> + <organization>ASF</organization> + <organizationUrl>http://www.apache.org</organizationUrl> + <timezone>+1</timezone> + <roles> + <role>Committer</role> + </roles> + </developer> + <developer> + <id>reinhard</id> + <name>Reinhard Poetz</name> + <email>reinhard@apache.org</email> + <organization>ASF</organization> + <organizationUrl>http://www.apache.org</organizationUrl> + <timezone>+1</timezone> + <roles> + <role>Committer</role> + </roles> + </developer> + <developer> + <id>jbq</id> + <name>Jean-Baptiste Quenot</name> + <email>jbq@apache.org</email> + <organization>ASF</organization> + <organizationUrl>http://www.apache.org</organizationUrl> + <timezone>+1</timezone> + <roles> + <role>Committer</role> + </roles> + </developer> + <developer> + <id>gianugo</id> + <name>Gianugo Rabellino</name> + <email>gianugo@apache.org</email> + <organization>ASF</organization> + <organizationUrl>http://www.apache.org</organizationUrl> + <timezone>+1</timezone> + <roles> + <role>Committer</role> + </roles> + </developer> + <developer> + <id>cziegeler</id> + <name>Carsten Ziegeler</name> + <email>cziegeler@apache.org</email> + <organization>ASF</organization> + <organizationUrl>http://www.apache.org</organizationUrl> + <timezone>+1</timezone> + <roles> + <role>Committer</role> + </roles> + </developer> + <developer> + <id>vgritsenko</id> + <name>Vadim Gritsenko</name> + <email>vgritsenko@apache.org</email> + <organization>ASF</organization> + <organizationUrl>http://www.apache.org</organizationUrl> + <timezone>-5</timezone> + <roles> + <role>Committer</role> + </roles> + </developer> + </developers> + <licenses> + <license> + <name>Apache License, Version 2.0</name> + <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url> + </license> + </licenses> + <repositories> + <repository> + <id>central</id> + <name>Maven central repository</name> + <url>http://ibiblio.org/maven2</url> + </repository> + <repository> + <id>apache.snapshot</id> + <name>Apache Snapshot Repository</name> + <url>http://svn.apache.org/maven-snapshot-repository</url> + </repository> + <repository> + <id>apache-cvs</id> + <name>Apache Maven Repository</name> + <url>http://svn.apache.org/repository</url> + <layout>legacy</layout> + </repository> + </repositories> + <reporting> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-project-info-reports-plugin</artifactId> + </plugin> + </plugins> + </reporting> + <scm> + <connection>scm:svn:https://svn.apache.org/repos/asf/cocoon/tags/cocoon-1</connection> + <developerConnection>scm:svn:https://svn.apache.org/repos/asf/cocoon/tags/cocoon-1</developerConnection> + <url>https://svn.apache.org/repos/asf/cocoon/tags/cocoon-1</url> + </scm> + <build> + <plugins> + <plugin> + <artifactId>maven-release-plugin</artifactId> + </plugin> + </plugins> + <extensions> + <extension> + <groupId>org.apache.maven.wagon</groupId> + <artifactId>wagon-ssh-external</artifactId> + <version>1.0-alpha-6</version> + </extension> + </extensions> + </build> +</project>
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/expected-poms/maven-parent-4.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/expected-poms/maven-parent-4.pom new file mode 100644 index 000000000..c0ba6ed00 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/expected-poms/maven-parent-4.pom @@ -0,0 +1,227 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<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> + <parent> + <groupId>org.apache</groupId> + <artifactId>apache</artifactId> + <version>3</version> + </parent> + <groupId>org.apache.maven</groupId> + <artifactId>maven-parent</artifactId> + <version>4</version> + <packaging>pom</packaging> + <name>Apache Maven</name> + <description>Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a project's build, reporting and documentation from a central piece of information.</description> + <url>http://maven.apache.org/</url> + <issueManagement> + <system>jira</system> + <url>http://jira.codehaus.org/browse/MPA</url> + </issueManagement> + <ciManagement> + <system>continuum</system> + <url>http://maven.zones.apache.org:8080/continuum</url> + </ciManagement> + <mailingLists> + <mailingList> + <name>Maven Announcements List</name> + <post>announce@maven.apache.org</post> + <subscribe>announce-subscribe@maven.apache.org</subscribe> + <unsubscribe>announce-unsubscribe@maven.apache.org</unsubscribe> + <archive>http://mail-archives.apache.org/mod_mbox/maven-announce/</archive> + </mailingList> + <mailingList> + <name>Maven Issues List</name> + <post>issues@maven.apache.org</post> + <subscribe>issues-subscribe@maven.apache.org</subscribe> + <unsubscribe>issues-unsubscribe@maven.apache.org</unsubscribe> + <archive>http://mail-archives.apache.org/mod_mbox/maven-issues/</archive> + </mailingList> + <mailingList> + <name>Maven Notifications List</name> + <post>notifications@maven.apache.org</post> + <subscribe>notifications-subscribe@maven.apache.org</subscribe> + <unsubscribe>notifications-unsubscribe@maven.apache.org</unsubscribe> + <archive>http://mail-archives.apache.org/mod_mbox/maven-notifications/</archive> + </mailingList> + </mailingLists> + <developers> + <developer> + <id>jvanzyl</id> + <name>Jason van Zyl</name> + <email>jason@maven.org</email> + <organization>ASF</organization> + <timezone>-5</timezone> + <roles> + <role>PMC Chair</role> + </roles> + </developer> + <developer> + <id>brett</id> + <name>Brett Porter</name> + <email>brett@apache.org</email> + <organization>ASF</organization> + <timezone>+10</timezone> + <roles> + <role>PMC Member</role> + </roles> + </developer> + <developer> + <id>evenisse</id> + <name>Emmanuel Venisse</name> + <email>evenisse@apache.org</email> + <organization>ASF</organization> + <timezone>+1</timezone> + <roles> + <role>PMC Member</role> + </roles> + </developer> + <developer> + <id>kenney</id> + <name>Kenney Westerhof</name> + <email>kenney@apache.org</email> + <organization>Neonics</organization> + <roles> + <role>PMC Member</role> + </roles> + </developer> + <developer> + <id>snicoll</id> + <name>Stephane Nicoll</name> + <email>snicoll@apache.org</email> + <organization>ASF</organization> + <timezone>+1</timezone> + <roles> + <role>PMC Member</role> + </roles> + </developer> + <developer> + <id>vmassol</id> + <name>Vincent Massol</name> + <email>vmassol@apache.org</email> + <organization>ASF</organization> + <timezone>+1</timezone> + <roles> + <role>PMC Member</role> + </roles> + </developer> + <developer> + <id>fgiust</id> + <name>Fabrizio Giustina</name> + <email>fgiust@apache.org</email> + <organization>openmind</organization> + <timezone>+1</timezone> + <roles> + <role>PMC Member</role> + </roles> + </developer> + <developer> + <id>epunzalan</id> + <name>Edwin Punzalan</name> + <email>epunzalan@mergere.com</email> + <organization>Mergere</organization> + <timezone>+8</timezone> + <roles> + <role>Committer</role> + </roles> + </developer> + <developer> + <id>mperham</id> + <name>Mike Perham</name> + <email>mperham@gmail.com</email> + <organization>IBM</organization> + <timezone>-6</timezone> + <roles> + <role>PMC Member</role> + </roles> + </developer> + <developer> + <id>jdcasey</id> + <name>John Casey</name> + <email>jdcasey@apache.org</email> + <organization>ASF</organization> + <timezone>-5</timezone> + <roles> + <role>PMC Member</role> + </roles> + </developer> + <developer> + <id>trygvis</id> + <name>Trygve Laugstol</name> + <email>trygvis@apache.org</email> + <organization>ASF</organization> + <timezone>+1</timezone> + <roles> + <role>PMC Member</role> + </roles> + </developer> + <developer> + <id>vsiveton</id> + <name>Vincent Siveton</name> + <email>vsiveton@apache.org</email> + <organization>ASF</organization> + <timezone>-5</timezone> + <roles> + <role>PMC Member</role> + </roles> + </developer> + <developer> + <id>carlos</id> + <name>Carlos Sanchez</name> + <email>carlos@apache.org</email> + <organization>ASF</organization> + <timezone>+1</timezone> + <roles> + <role>PMC Member</role> + </roles> + </developer> + <developer> + <id>dennisl</id> + <name>Dennis Lundberg</name> + <email>dennisl@apache.org</email> + <organization>ASF</organization> + <timezone>+1</timezone> + <roles> + <role>PMC Member</role> + </roles> + </developer> + </developers> + <reporting> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-surefire-report-plugin</artifactId> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-checkstyle-plugin</artifactId> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-pmd-plugin</artifactId> + </plugin> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>cobertura-maven-plugin</artifactId> + </plugin> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>taglist-maven-plugin</artifactId> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-jxr-plugin</artifactId> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-javadoc-plugin</artifactId> + </plugin> + </plugins> + </reporting> + <scm> + <connection>scm:svn:http://svn.apache.org/repos/asf/maven/pom/maven/tags/maven-parent-4</connection> + <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/pom/maven/tags/maven-parent-4</developerConnection> + <url>http://svn.apache.org/viewvc/maven/pom/maven/tags/maven-parent-4</url> + </scm> +</project> + diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/expected-poms/model-write-400-simple.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/expected-poms/model-write-400-simple.pom new file mode 100644 index 000000000..213765a92 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/expected-poms/model-write-400-simple.pom @@ -0,0 +1,9 @@ +<?xml version="1.0" ?> + +<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.test</groupId> + <artifactId>simple-model-write</artifactId> + <version>1.0</version> +</project> diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/expected-poms/test-project-model-effective.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/expected-poms/test-project-model-effective.pom new file mode 100644 index 000000000..3057af98a --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/expected-poms/test-project-model-effective.pom @@ -0,0 +1,243 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- ====================================================================== --> +<!-- --> +<!-- Generated by Maven Help Plugin on 9/17/08 5:36 PM --> +<!-- See: http://maven.apache.org/plugins/maven-help-plugin/ --> +<!-- --> +<!-- ====================================================================== --> + +<!-- ====================================================================== --> +<!-- --> +<!-- Effective POM for project --> +<!-- 'test-project:test-project-endpoint-ejb:ejb:2.4.4' --> +<!-- --> +<!-- ====================================================================== --> + +<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> + <artifactId>test-project-endpoint-pom</artifactId> + <groupId>test-project</groupId> + <version>2.4.4</version> + </parent> + <modelVersion>4.0.0</modelVersion> + <groupId>test-project</groupId> + <artifactId>test-project-endpoint-ejb</artifactId> + <packaging>ejb</packaging> + <name>Test Project Endpoint EJB</name> + <version>2.4.4</version> + <inceptionYear>2002</inceptionYear> + <organization> + <name>Company</name> + <url>http://www.company.com/</url> + </organization> + <dependencies> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>3.8.1</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>test-project</groupId> + <artifactId>test-project-common</artifactId> + <version>2.4.4</version> + </dependency> + <dependency> + <groupId>test-project</groupId> + <artifactId>test-project-api</artifactId> + <version>2.4.4</version> + </dependency> + <dependency> + <groupId>test-project</groupId> + <artifactId>test-project-common</artifactId> + <version>2.4.4</version> + <type>test-jar</type> + <scope>test</scope> + </dependency> + <dependency> + <groupId>commons-id</groupId> + <artifactId>commons-id</artifactId> + <version>0.1-dev</version> + </dependency> + <dependency> + <groupId>commons-discovery</groupId> + <artifactId>commons-discovery</artifactId> + <version>0.2</version> + </dependency> + <dependency> + <groupId>commons-logging</groupId> + <artifactId>commons-logging</artifactId> + <version>1.0.4</version> + </dependency> + <dependency> + <groupId>log4j</groupId> + <artifactId>log4j</artifactId> + <version>1.2.8</version> + </dependency> + <dependency> + <groupId>javax.jms</groupId> + <artifactId>jms</artifactId> + <version>1.0.2</version> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>javax.activation</groupId> + <artifactId>activation</artifactId> + <version>1.0.2</version> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>javax.mail</groupId> + <artifactId>mail</artifactId> + <version>1.4</version> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>xml-apis</groupId> + <artifactId>xml-apis</artifactId> + <version>2.0.2</version> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>javax.management</groupId> + <artifactId>jmxri</artifactId> + <version>1.2.1</version> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>javax.servlet</groupId> + <artifactId>servlet-api</artifactId> + <version>2.4</version> + <scope>provided</scope> + </dependency> + </dependencies> + + + <dependencyManagement> + <dependencies> + <dependency> + <groupId>javax.activation</groupId> + <artifactId>activation</artifactId> + <version>1.0.2</version> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>javax.jms</groupId> + <artifactId>jms</artifactId> + <version>1.0.2</version> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>javax.ejb</groupId> + <artifactId>ejb</artifactId> + <version>2.0</version> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>javax.servlet</groupId> + <artifactId>servlet-api</artifactId> + <version>2.4</version> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>javax.mail</groupId> + <artifactId>mail</artifactId> + <version>1.4</version> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>xml-apis</groupId> + <artifactId>xml-apis</artifactId> + <version>2.0.2</version> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>commons-logging</groupId> + <artifactId>commons-logging</artifactId> + <version>1.0.4</version> + </dependency> + <dependency> + <groupId>commons-lang</groupId> + <artifactId>commons-lang</artifactId> + <version>2.1</version> + </dependency> + <dependency> + <groupId>commons-collections</groupId> + <artifactId>commons-collections</artifactId> + <version>3.2</version> + </dependency> + <dependency> + <groupId>org.springframework</groupId> + <artifactId>spring</artifactId> + <version>2.0.7</version> + </dependency> + <dependency> + <groupId>org.springframework</groupId> + <artifactId>spring-mock</artifactId> + <version>2.0.7</version> + <scope>test</scope> + <exclusions> + <exclusion> + <artifactId>spring-jdbc</artifactId> + <groupId>org.springframework</groupId> + </exclusion> + <exclusion> + <artifactId>spring-web</artifactId> + <groupId>org.springframework</groupId> + </exclusion> + </exclusions> + </dependency> + <dependency> + <groupId>log4j</groupId> + <artifactId>log4j</artifactId> + <version>1.2.8</version> + </dependency> + <dependency> + <groupId>commons-discovery</groupId> + <artifactId>commons-discovery</artifactId> + <version>0.2</version> + </dependency> + <dependency> + <groupId>commons-id</groupId> + <artifactId>commons-id</artifactId> + <version>0.1-dev</version> + </dependency> + <dependency> + <groupId>org.codehaus.castor</groupId> + <artifactId>castor</artifactId> + <version>1.0.5-xml</version> + </dependency> + <dependency> + <groupId>xerces</groupId> + <artifactId>xerces</artifactId> + <version>2.4.0</version> + </dependency> + <dependency> + <groupId>commons-httpclient</groupId> + <artifactId>commons-httpclient</artifactId> + <version>3.1</version> + </dependency> + <dependency> + <groupId>stax</groupId> + <artifactId>stax-api</artifactId> + <version>1.0.1</version> + </dependency> + <dependency> + <groupId>org.codehaus.woodstox</groupId> + <artifactId>wstx-asl</artifactId> + <version>3.2.1</version> + </dependency> + <dependency> + <groupId>com.thoughtworks.xstream</groupId> + <artifactId>xstream</artifactId> + <version>1.2.2</version> + </dependency> + <dependency> + <groupId>javax.management</groupId> + <artifactId>jmxri</artifactId> + <version>1.2.1</version> + <scope>provided</scope> + </dependency> + </dependencies> + </dependencyManagement> +</project>
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/configuration/MockRepoAdmin.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/configuration/MockRepoAdmin.java new file mode 100644 index 000000000..74af31509 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/configuration/MockRepoAdmin.java @@ -0,0 +1,328 @@ +package org.apache.archiva.configuration; +/* + * 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.archiva.admin.model.AuditInformation; +import org.apache.archiva.admin.model.RepositoryAdminException; +import org.apache.archiva.admin.model.beans.ManagedRepository; +import org.apache.archiva.admin.model.beans.NetworkProxy; +import org.apache.archiva.admin.model.beans.ProxyConnector; +import org.apache.archiva.admin.model.beans.ProxyConnectorRule; +import org.apache.archiva.admin.model.beans.RemoteRepository; +import org.apache.archiva.admin.model.managed.ManagedRepositoryAdmin; +import org.apache.archiva.admin.model.networkproxy.NetworkProxyAdmin; +import org.apache.archiva.admin.model.proxyconnector.ProxyConnectorAdmin; +import org.apache.archiva.admin.model.proxyconnector.ProxyConnectorOrderComparator; +import org.apache.archiva.admin.model.remote.RemoteRepositoryAdmin; +import org.apache.commons.lang.StringUtils; +import org.apache.maven.index.context.IndexingContext; +import org.modelmapper.ModelMapper; +import org.springframework.stereotype.Service; + +import javax.inject.Inject; +import javax.inject.Named; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Locale; +import java.util.Map; + +/** + * @author Olivier Lamy + */ +@Service +public class MockRepoAdmin + implements RemoteRepositoryAdmin, ManagedRepositoryAdmin, ProxyConnectorAdmin, NetworkProxyAdmin +{ + @Inject + @Named ( "archivaConfiguration#test" ) + private ArchivaConfiguration archivaConfiguration; + + @Override + public List<RemoteRepository> getRemoteRepositories() + throws RepositoryAdminException + { + List<RemoteRepository> remoteRepositories = + new ArrayList<>( archivaConfiguration.getConfiguration().getRemoteRepositories().size() ); + for ( RemoteRepositoryConfiguration repositoryConfiguration : archivaConfiguration.getConfiguration().getRemoteRepositories() ) + { + RemoteRepository remoteRepository = + new RemoteRepository( Locale.getDefault(), repositoryConfiguration.getId(), repositoryConfiguration.getName(), + repositoryConfiguration.getUrl(), repositoryConfiguration.getLayout(), + repositoryConfiguration.getUsername(), repositoryConfiguration.getPassword(), + repositoryConfiguration.getTimeout() ); + remoteRepository.setDownloadRemoteIndex( repositoryConfiguration.isDownloadRemoteIndex() ); + remoteRepository.setRemoteIndexUrl( repositoryConfiguration.getRemoteIndexUrl() ); + remoteRepository.setCronExpression( repositoryConfiguration.getRefreshCronExpression() ); + remoteRepository.setIndexDirectory( repositoryConfiguration.getIndexDir() ); + remoteRepository.setRemoteDownloadNetworkProxyId( + repositoryConfiguration.getRemoteDownloadNetworkProxyId() ); + remoteRepository.setRemoteDownloadTimeout( repositoryConfiguration.getRemoteDownloadTimeout() ); + remoteRepository.setDownloadRemoteIndexOnStartup( + repositoryConfiguration.isDownloadRemoteIndexOnStartup() ); + remoteRepositories.add( remoteRepository ); + } + return remoteRepositories; + } + + @Override + public RemoteRepository getRemoteRepository( String repositoryId ) + throws RepositoryAdminException + { + for ( RemoteRepository remoteRepository : getRemoteRepositories() ) + { + if ( StringUtils.equals( repositoryId, remoteRepository.getId() ) ) + { + return remoteRepository; + } + } + return null; + } + + @Override + public Boolean deleteRemoteRepository( String repositoryId, AuditInformation auditInformation ) + throws RepositoryAdminException + { + return null; //To change body of implemented methods use File | Settings | File Templates. + } + + @Override + public Boolean addRemoteRepository( RemoteRepository remoteRepository, AuditInformation auditInformation ) + throws RepositoryAdminException + { + return null; //To change body of implemented methods use File | Settings | File Templates. + } + + @Override + public Boolean updateRemoteRepository( RemoteRepository remoteRepository, AuditInformation auditInformation ) + throws RepositoryAdminException + { + return null; //To change body of implemented methods use File | Settings | File Templates. + } + + @Override + public Map<String, RemoteRepository> getRemoteRepositoriesAsMap() + throws RepositoryAdminException + { + return null; //To change body of implemented methods use File | Settings | File Templates. + } + + @Override + public IndexingContext createIndexContext( RemoteRepository repository ) + throws RepositoryAdminException + { + return null; //To change body of implemented methods use File | Settings | File Templates. + } + + @Override + public List<ManagedRepository> getManagedRepositories() + throws RepositoryAdminException + { + return null; //To change body of implemented methods use File | Settings | File Templates. + } + + @Override + public Map<String, ManagedRepository> getManagedRepositoriesAsMap() + throws RepositoryAdminException + { + return null; //To change body of implemented methods use File | Settings | File Templates. + } + + @Override + public ManagedRepository getManagedRepository( String repositoryId ) + throws RepositoryAdminException + { + for ( ManagedRepositoryConfiguration repoConfig : archivaConfiguration.getConfiguration().getManagedRepositories() ) + { + if ( StringUtils.equals( repositoryId, repoConfig.getId() ) ) + { + return new ManagedRepository( Locale.getDefault(), repoConfig.getId(), repoConfig.getName(), repoConfig.getLocation(), + repoConfig.getLayout(), repoConfig.isSnapshots(), repoConfig.isReleases(), + repoConfig.isBlockRedeployments(), repoConfig.getRefreshCronExpression(), + repoConfig.getIndexDir(), repoConfig.isScanned(), + repoConfig.getRetentionPeriod(), repoConfig.getRetentionCount(), + repoConfig.isDeleteReleasedSnapshots(), false ); + } + } + return null; + } + + @Override + public Boolean deleteManagedRepository( String repositoryId, AuditInformation auditInformation, + boolean deleteContent ) + throws RepositoryAdminException + { + return null; //To change body of implemented methods use File | Settings | File Templates. + } + + @Override + public Boolean addManagedRepository( ManagedRepository managedRepository, boolean needStageRepo, + AuditInformation auditInformation ) + throws RepositoryAdminException + { + return null; //To change body of implemented methods use File | Settings | File Templates. + } + + @Override + public Boolean updateManagedRepository( ManagedRepository managedRepository, boolean needStageRepo, + AuditInformation auditInformation, boolean resetStats ) + throws RepositoryAdminException + { + return null; //To change body of implemented methods use File | Settings | File Templates. + } + + + @Override + public List<ProxyConnector> getProxyConnectors() + throws RepositoryAdminException + { + List<ProxyConnectorConfiguration> proxyConnectorConfigurations = + archivaConfiguration.getConfiguration().getProxyConnectors(); + List<ProxyConnector> proxyConnectors = new ArrayList<>( proxyConnectorConfigurations.size() ); + for ( ProxyConnectorConfiguration configuration : proxyConnectorConfigurations ) + { + proxyConnectors.add( getProxyConnector( configuration ) ); + } + Collections.sort( proxyConnectors, ProxyConnectorOrderComparator.getInstance() ); + return proxyConnectors; + } + + @Override + public ProxyConnector getProxyConnector( String sourceRepoId, String targetRepoId ) + throws RepositoryAdminException + { + return null; //To change body of implemented methods use File | Settings | File Templates. + } + + @Override + public Boolean addProxyConnector( ProxyConnector proxyConnector, AuditInformation auditInformation ) + throws RepositoryAdminException + { + return null; //To change body of implemented methods use File | Settings | File Templates. + } + + @Override + public Boolean deleteProxyConnector( ProxyConnector proxyConnector, AuditInformation auditInformation ) + throws RepositoryAdminException + { + return null; //To change body of implemented methods use File | Settings | File Templates. + } + + @Override + public Boolean updateProxyConnector( ProxyConnector proxyConnector, AuditInformation auditInformation ) + throws RepositoryAdminException + { + return null; + } + + @Override + public Map<String, List<ProxyConnector>> getProxyConnectorAsMap() + throws RepositoryAdminException + { + Map<String, List<ProxyConnector>> proxyConnectorMap = new HashMap<>(); + + Iterator<ProxyConnector> it = getProxyConnectors().iterator(); + while ( it.hasNext() ) + { + ProxyConnector proxyConfig = it.next(); + String key = proxyConfig.getSourceRepoId(); + + List<ProxyConnector> connectors = proxyConnectorMap.get( key ); + if ( connectors == null ) + { + connectors = new ArrayList<>( 1 ); + proxyConnectorMap.put( key, connectors ); + } + + connectors.add( proxyConfig ); + + Collections.sort( connectors, ProxyConnectorOrderComparator.getInstance() ); + } + + return proxyConnectorMap; + } + + @Override + public List<NetworkProxy> getNetworkProxies() + throws RepositoryAdminException + { + return null; //To change body of implemented methods use File | Settings | File Templates. + } + + @Override + public NetworkProxy getNetworkProxy( String networkProxyId ) + throws RepositoryAdminException + { + return null; //To change body of implemented methods use File | Settings | File Templates. + } + + @Override + public void addNetworkProxy( NetworkProxy networkProxy, AuditInformation auditInformation ) + throws RepositoryAdminException + { + //To change body of implemented methods use File | Settings | File Templates. + } + + @Override + public void updateNetworkProxy( NetworkProxy networkProxy, AuditInformation auditInformation ) + throws RepositoryAdminException + { + //To change body of implemented methods use File | Settings | File Templates. + } + + @Override + public void deleteNetworkProxy( String networkProxyId, AuditInformation auditInformation ) + throws RepositoryAdminException + { + //To change body of implemented methods use File | Settings | File Templates. + } + + protected ProxyConnector getProxyConnector( ProxyConnectorConfiguration proxyConnectorConfiguration ) + { + return proxyConnectorConfiguration == null + ? null + : new ModelMapper().map( proxyConnectorConfiguration, ProxyConnector.class ); + } + + public List<ProxyConnectorRule> getProxyConnectorRules() + throws RepositoryAdminException + { + return null; + } + + public void addProxyConnectorRule( ProxyConnectorRule proxyConnectorRule ) + throws RepositoryAdminException + { + + } + + public void deleteProxyConnectorRule( ProxyConnectorRule proxyConnectorRule ) + throws RepositoryAdminException + { + + } + + public void updateProxyConnectorRule( ProxyConnectorRule proxyConnectorRule ) + throws RepositoryAdminException + { + + } +} diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/configuration/TestConfiguration.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/configuration/TestConfiguration.java new file mode 100644 index 000000000..ac24a3462 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/configuration/TestConfiguration.java @@ -0,0 +1,127 @@ +package org.apache.archiva.configuration; + +import org.apache.archiva.redback.components.registry.RegistryException; +import org.apache.archiva.redback.components.registry.RegistryListener; +import org.apache.commons.lang.StringUtils; +import org.springframework.stereotype.Service; + +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.List; +import java.util.Locale; + +/* + * 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. + */ + +@Service("archivaConfiguration#test") +public class TestConfiguration + implements ArchivaConfiguration +{ + private Configuration configuration; + + @Override + public Configuration getConfiguration() + { + return configuration; + } + + @Override + public void save( Configuration configuration ) + throws RegistryException, IndeterminateConfigurationException + { + this.configuration = configuration; + } + + @Override + public boolean isDefaulted() + { + return false; + } + + @Override + public void addListener( ConfigurationListener listener ) + { + // no op + } + + @Override + public void removeListener( ConfigurationListener listener ) + { + // no op + } + + @Override + public void addChangeListener( RegistryListener listener ) + { + // no op + } + + @Override + public void removeChangeListener( RegistryListener listener ) + { + // no op + } + + @Override + public void reload() + { + // no op + } + + @Override + public Locale getDefaultLocale( ) + { + return Locale.getDefault(); + } + + @Override + public List<Locale.LanguageRange> getLanguagePriorities( ) + { + return Locale.LanguageRange.parse("en,fr,de"); + } + + @Override + public Path getAppServerBaseDir() { + if (System.getProperties().containsKey("appserver.base")) { + return Paths.get(System.getProperty("appserver.base")); + } else { + return Paths.get(""); + } + } + + @Override + public Path getRepositoryBaseDir() { + return getDataDirectory().resolve(""); + } + + @Override + public Path getRemoteRepositoryBaseDir() { + return getDataDirectory().resolve("remotes"); + } + + @Override + public Path getDataDirectory() { + if (configuration!=null && configuration.getArchivaRuntimeConfiguration()!=null && + StringUtils.isNotEmpty(configuration.getArchivaRuntimeConfiguration().getDataDirectory())) { + return Paths.get(configuration.getArchivaRuntimeConfiguration().getDataDirectory()); + } else { + return getAppServerBaseDir().resolve("data"); + } + } +} diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/dependency/tree/maven2/DependencyTreeBuilderTestMaven3.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/dependency/tree/maven2/DependencyTreeBuilderTestMaven3.java new file mode 100644 index 000000000..7dbb4dab9 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/dependency/tree/maven2/DependencyTreeBuilderTestMaven3.java @@ -0,0 +1,140 @@ +package org.apache.archiva.dependency.tree.maven2; + +/* + * 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 junit.framework.TestCase; +import org.apache.archiva.common.plexusbridge.PlexusSisuBridge; +import org.apache.archiva.configuration.ArchivaConfiguration; +import org.apache.archiva.configuration.Configuration; +import org.apache.archiva.configuration.ManagedRepositoryConfiguration; +import org.apache.archiva.maven2.model.Artifact; +import org.apache.archiva.maven2.model.TreeEntry; +import org.apache.archiva.test.utils.ArchivaSpringJUnit4ClassRunner; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.test.context.ContextConfiguration; + +import javax.inject.Inject; +import javax.inject.Named; +import java.nio.file.Paths; +import java.util.Collections; +import java.util.List; + +import static org.assertj.core.api.Assertions.assertThat; + +@RunWith( ArchivaSpringJUnit4ClassRunner.class ) +@ContextConfiguration( { "classpath*:/META-INF/spring-context.xml", "classpath:/spring-context.xml" } ) +public class DependencyTreeBuilderTestMaven3 + extends TestCase +{ + @Inject + @Named( "dependencyTreeBuilder#maven3" ) + private Maven3DependencyTreeBuilder builder; + + @Inject + private PlexusSisuBridge plexusSisuBridge; + + private static final String TEST_REPO_ID = "test"; + + private static final String TEST_VERSION = "1.2.1"; + + private static final String TEST_ARTIFACT_ID = "archiva-common"; + + private static final String TEST_GROUP_ID = "org.apache.archiva"; + + + @Inject + @Named( "archivaConfiguration#test" ) + ArchivaConfiguration config; + + @Before + @Override + public void setUp() + throws Exception + { + super.setUp(); + + Configuration configuration = new Configuration(); + ManagedRepositoryConfiguration repoConfig = new ManagedRepositoryConfiguration(); + repoConfig.setId( TEST_REPO_ID ); + repoConfig.setLocation(Paths.get("target/test-repository").toAbsolutePath().toString() ); + configuration.addManagedRepository( repoConfig ); + config.save( configuration ); + + //artifactFactory = ((DefaultDependencyTreeBuilder)this.builder).getFactory(); + } + + + private Artifact createArtifact( String groupId, String artifactId, String version ) + { + return new Artifact( groupId, artifactId, version ); + } + + private String getId( Artifact artifact ) + { + return artifact.getGroupId() + ":" + artifact.getArtifactId() + ":" + artifact.getVersion(); + } + + @Test + public void testBuilderDependencies() + throws Exception + { + + List<TreeEntry> treeEntries = + builder.buildDependencyTree( Collections.singletonList( TEST_REPO_ID ), TEST_GROUP_ID, TEST_ARTIFACT_ID, + TEST_VERSION ); + + Artifact artifact = new Artifact( TEST_GROUP_ID, TEST_ARTIFACT_ID, TEST_VERSION, "", "" ); + artifact.setFileExtension("jar"); + assertThat( treeEntries ).isNotNull().isNotEmpty().contains(new TreeEntry(artifact) ); + + artifact = new Artifact( "commons-lang", "commons-lang", "2.2", "compile", "" ); + artifact.setFileExtension("jar"); + assertThat( treeEntries.get( 0 ).getChilds() ).isNotNull().isNotEmpty().contains( + new TreeEntry(artifact) ); + } + + + public static class TestTreeEntry + extends TreeEntry + { + Artifact a; + + public TestTreeEntry( Artifact a ) + { + this.a = a; + } + + @Override + public int hashCode() + { + return this.a.hashCode(); + } + + @Override + public boolean equals( Object o ) + { + Artifact artifact = ( (TreeEntry) o ).getArtifact(); + return artifact.equals( this.a ); + } + } + +} diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/metadata/repository/MockRepositoryArchivaTaskScheduler.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/metadata/repository/MockRepositoryArchivaTaskScheduler.java new file mode 100644 index 000000000..08bcd9640 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/metadata/repository/MockRepositoryArchivaTaskScheduler.java @@ -0,0 +1,58 @@ +package org.apache.archiva.metadata.repository; +/* + * 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.archiva.redback.components.taskqueue.TaskQueueException; +import org.apache.archiva.scheduler.repository.model.RepositoryArchivaTaskScheduler; +import org.apache.archiva.scheduler.repository.model.RepositoryTask; +import org.springframework.stereotype.Service; + +/** + * @author Olivier Lamy + */ +@Service ("archivaTaskScheduler#repositoryMock") +public class MockRepositoryArchivaTaskScheduler + implements RepositoryArchivaTaskScheduler +{ + @Override + public boolean isProcessingRepositoryTask( String repositoryId ) + { + return false; + } + + @Override + public boolean isProcessingRepositoryTask( RepositoryTask task ) + { + return false; + } + + @Override + public void queueTask( RepositoryTask task ) + throws TaskQueueException + { + // no op + } + + @Override + public boolean unQueueTask( RepositoryTask task ) + throws TaskQueueException + { + return false; + } +} diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/metadata/repository/TestMetadataResolver.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/metadata/repository/TestMetadataResolver.java new file mode 100644 index 000000000..702077325 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/metadata/repository/TestMetadataResolver.java @@ -0,0 +1,87 @@ +package org.apache.archiva.metadata.repository; + +/* + * 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.archiva.metadata.model.ArtifactMetadata; +import org.apache.archiva.metadata.model.ProjectVersionMetadata; +import org.apache.archiva.metadata.model.ProjectVersionReference; +import org.springframework.stereotype.Service; + +import java.util.Collection; + +// FIXME: remove - this is useless, better to mock it or avoid needing it +@Service( "metadataResolver#test" ) +public class TestMetadataResolver + implements MetadataResolver +{ + @Override + public ProjectVersionMetadata resolveProjectVersion( RepositorySession session, String repoId, String namespace, + String projectId, String projectVersion ) + throws MetadataResolutionException + { + return null; + } + + @Override + public Collection<ProjectVersionReference> resolveProjectReferences( RepositorySession session, String repoId, + String namespace, String projectId, + String projectVersion ) + throws MetadataResolutionException + { + return null; + } + + @Override + public Collection<String> resolveRootNamespaces( RepositorySession session, String repoId ) + throws MetadataResolutionException + { + return null; + } + + @Override + public Collection<String> resolveNamespaces( RepositorySession session, String repoId, String namespace ) + throws MetadataResolutionException + { + return null; + } + + @Override + public Collection<String> resolveProjects( RepositorySession session, String repoId, String namespace ) + throws MetadataResolutionException + { + return null; + } + + @Override + public Collection<String> resolveProjectVersions( RepositorySession session, String repoId, String namespace, + String projectId ) + throws MetadataResolutionException + { + return null; + } + + @Override + public Collection<ArtifactMetadata> resolveArtifacts( RepositorySession session, String repoId, String namespace, + String projectId, String projectVersion ) + throws MetadataResolutionException + { + return null; + } +} diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/AbstractDefaultRepositoryContentTestCase.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/AbstractDefaultRepositoryContentTestCase.java new file mode 100644 index 000000000..c3b85ccf1 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/AbstractDefaultRepositoryContentTestCase.java @@ -0,0 +1,491 @@ +package org.apache.archiva.metadata.repository.storage.maven2; + +/* + * 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.archiva.model.ArtifactReference; +import org.apache.archiva.repository.AbstractRepositoryLayerTestCase; +import org.apache.archiva.repository.LayoutException; +import org.apache.commons.lang.StringUtils; +import org.junit.Test; + +import static org.junit.Assert.*; + +/** + * AbstractDefaultRepositoryContentTestCase + */ +public abstract class AbstractDefaultRepositoryContentTestCase + extends AbstractRepositoryLayerTestCase +{ + @Test + public void testBadPathMissingType() + { + assertBadPath( "invalid/invalid/1/invalid-1", "missing type" ); + } + + @Test + public void testBadPathReleaseInSnapshotDir() + { + assertBadPath( "invalid/invalid/1.0-SNAPSHOT/invalid-1.0.jar", + "non snapshot artifact inside of a snapshot dir" ); + } + + @Test + public void testBadPathTimestampedSnapshotNotInSnapshotDir() + { + assertBadPath( "invalid/invalid/1.0-20050611.123456-1/invalid-1.0-20050611.123456-1.jar", + "Timestamped Snapshot artifact not inside of an Snapshot dir" ); + } + + @Test + public void testBadPathTooShort() + { + assertBadPath( "invalid/invalid-1.0.jar", "path is too short" ); + } + + @Test + public void testBadPathVersionMismatchA() + { + assertBadPath( "invalid/invalid/1.0/invalid-2.0.jar", "version mismatch between path and artifact" ); + } + + @Test + public void testBadPathVersionMismatchB() + { + assertBadPath( "invalid/invalid/1.0/invalid-1.0b.jar", "version mismatch between path and artifact" ); + } + + @Test + public void testBadPathWrongArtifactId() + { + assertBadPath( "org/apache/maven/test/1.0-SNAPSHOT/wrong-artifactId-1.0-20050611.112233-1.jar", + "wrong artifact id" ); + } + + /** + * [MRM-432] Oddball version spec. + * Example of an oddball / unusual version spec. + * + * @throws LayoutException + * + */ + @Test + public void testGoodButOddVersionSpecGanymedSsh2() + throws LayoutException + { + String groupId = "ch.ethz.ganymed"; + String artifactId = "ganymed-ssh2"; + String version = "build210"; + String classifier = null; + String type = "jar"; + String path = "ch/ethz/ganymed/ganymed-ssh2/build210/ganymed-ssh2-build210.jar"; + + assertLayout( path, groupId, artifactId, version, classifier, type ); + } + + /** + * [MRM-432] Oddball version spec. + * Example of an oddball / unusual version spec. + * + * @throws LayoutException + * + */ + @Test + public void testGoodButOddVersionSpecJavaxComm() + throws LayoutException + { + String groupId = "javax"; + String artifactId = "comm"; + String version = "3.0-u1"; + String classifier = null; + String type = "jar"; + String path = "javax/comm/3.0-u1/comm-3.0-u1.jar"; + + assertLayout( path, groupId, artifactId, version, classifier, type ); + } + + /** + * Test the ejb-client type spec. + * Type specs are not a 1 to 1 map to the extension. + * This tests that effect. + * @throws LayoutException + */ + /* TODO: Re-enabled in the future. + public void testGoodFooEjbClient() + throws LayoutException + { + String groupId = "com.foo"; + String artifactId = "foo-client"; + String version = "1.0"; + String classifier = null; + String type = "ejb-client"; // oddball type-spec (should result in jar extension) + String path = "com/foo/foo-client/1.0/foo-client-1.0.jar"; + + assertLayout( path, groupId, artifactId, version, classifier, type ); + } + */ + + /** + * [MRM-432] Oddball version spec. + * Example of an oddball / unusual version spec. + * + * @throws LayoutException + * + */ + @Test + public void testGoodButOddVersionSpecJavaxPersistence() + throws LayoutException + { + String groupId = "javax.persistence"; + String artifactId = "ejb"; + String version = "3.0-public_review"; + String classifier = null; + String type = "jar"; + String path = "javax/persistence/ejb/3.0-public_review/ejb-3.0-public_review.jar"; + + /* + * The version id of "public_review" can cause problems. is it part of + * the version spec? or the classifier? + * Since the path spec below shows it in the path, then it is really + * part of the version spec. + */ + + assertLayout( path, groupId, artifactId, version, classifier, type ); + } + + @Test + public void testGoodComFooTool() + throws LayoutException + { + String groupId = "com.foo"; + String artifactId = "foo-tool"; + String version = "1.0"; + String classifier = null; + String type = "jar"; + String path = "com/foo/foo-tool/1.0/foo-tool-1.0.jar"; + + assertLayout( path, groupId, artifactId, version, classifier, type ); + } + + @Test + public void testGoodCommonsLang() + throws LayoutException + { + String groupId = "commons-lang"; + String artifactId = "commons-lang"; + String version = "2.1"; + String classifier = null; + String type = "jar"; + String path = "commons-lang/commons-lang/2.1/commons-lang-2.1.jar"; + + assertLayout( path, groupId, artifactId, version, classifier, type ); + } + + /** + * [MRM-486] Can not deploy artifact test.maven-arch:test-arch due to "No ArtifactID Detected" + */ + @Test + public void testGoodDashedArtifactId() + throws LayoutException + { + String groupId = "test.maven-arch"; + String artifactId = "test-arch"; + String version = "2.0.3-SNAPSHOT"; + String classifier = null; + String type = "pom"; + String path = "test/maven-arch/test-arch/2.0.3-SNAPSHOT/test-arch-2.0.3-SNAPSHOT.pom"; + + assertLayout( path, groupId, artifactId, version, classifier, type ); + } + + /** + * It may seem odd, but this is a valid artifact. + */ + @Test + public void testGoodDotNotationArtifactId() + throws LayoutException + { + String groupId = "com.company.department"; + String artifactId = "com.company.department"; + String version = "0.2"; + String classifier = null; + String type = "pom"; + String path = "com/company/department/com.company.department/0.2/com.company.department-0.2.pom"; + + assertLayout( path, groupId, artifactId, version, classifier, type ); + } + + /** + * It may seem odd, but this is a valid artifact. + */ + @Test + public void testGoodDotNotationSameGroupIdAndArtifactId() + throws LayoutException + { + String groupId = "com.company.department"; + String artifactId = "com.company.department.project"; + String version = "0.3"; + String classifier = null; + String type = "pom"; + String path = + "com/company/department/com.company.department.project/0.3/com.company.department.project-0.3.pom"; + + assertLayout( path, groupId, artifactId, version, classifier, type ); + } + + /** + * Test the classifier, and java-source type spec. + * + * @throws LayoutException + * + */ + @Test + public void testGoodFooLibSources() + throws LayoutException + { + String groupId = "com.foo.lib"; + String artifactId = "foo-lib"; + String version = "2.1-alpha-1"; + String classifier = "sources"; + String type = "java-source"; // oddball type-spec (should result in jar extension) + String path = "com/foo/lib/foo-lib/2.1-alpha-1/foo-lib-2.1-alpha-1-sources.jar"; + + assertLayout( path, groupId, artifactId, version, classifier, type ); + } + + /** + * A timestamped versioned artifact, should reside in a SNAPSHOT baseversion directory. + * + * @throws LayoutException + * + */ + @Test + public void testGoodSnapshotMavenTest() + throws LayoutException + { + String groupId = "org.apache.archiva.test"; + String artifactId = "redonkulous"; + String version = "3.1-beta-1-20050831.101112-42"; + String classifier = null; + String type = "jar"; + String path = + "org/apache/archiva/test/redonkulous/3.1-beta-1-SNAPSHOT/redonkulous-3.1-beta-1-20050831.101112-42.jar"; + + assertLayout( path, groupId, artifactId, version, classifier, type ); + } + + /** + * [MRM-519] version identifiers within filename cause misidentification of version. + * Example uses "test" in artifact Id, which is also part of the versionKeyword list. + */ + @Test + public void testGoodVersionKeywordInArtifactId() + throws LayoutException + { + String groupId = "maven"; + String artifactId = "maven-test-plugin"; + String version = "1.8.2"; + String classifier = null; + String type = "pom"; + String path = "maven/maven-test-plugin/1.8.2/maven-test-plugin-1.8.2.pom"; + + assertLayout( path, groupId, artifactId, version, classifier, type ); + } + + /** + * [MRM-562] Artifact type "maven-plugin" is not detected correctly in .toArtifactReference() methods. + * Example uses "test" in artifact Id, which is also part of the versionKeyword list. + */ + @Test + public void testGoodDetectMavenTestPlugin() + throws LayoutException + { + String groupId = "maven"; + String artifactId = "maven-test-plugin"; + String version = "1.8.2"; + String classifier = null; + String type = "maven-plugin"; + String path = "maven/maven-test-plugin/1.8.2/maven-test-plugin-1.8.2.jar"; + + assertLayout( path, groupId, artifactId, version, classifier, type ); + } + + /** + * [MRM-562] Artifact type "maven-plugin" is not detected correctly in .toArtifactReference() methods. + */ + @Test + public void testGoodDetectCoberturaMavenPlugin() + throws LayoutException + { + String groupId = "org.codehaus.mojo"; + String artifactId = "cobertura-maven-plugin"; + String version = "2.1"; + String classifier = null; + String type = "maven-plugin"; + String path = "org/codehaus/mojo/cobertura-maven-plugin/2.1/cobertura-maven-plugin-2.1.jar"; + + assertLayout( path, groupId, artifactId, version, classifier, type ); + } + + @Test + public void testToArtifactOnEmptyPath() + { + try + { + toArtifactReference( "" ); + fail( "Should have failed due to empty path." ); + } + catch ( LayoutException e ) + { + /* expected path */ + } + } + + @Test + public void testToArtifactOnNullPath() + { + try + { + toArtifactReference( null ); + fail( "Should have failed due to null path." ); + } + catch ( LayoutException e ) + { + /* expected path */ + } + } + + @Test + public void testToArtifactReferenceOnEmptyPath() + { + try + { + toArtifactReference( "" ); + fail( "Should have failed due to empty path." ); + } + catch ( LayoutException e ) + { + /* expected path */ + } + } + + @Test + public void testToArtifactReferenceOnNullPath() + { + try + { + toArtifactReference( null ); + fail( "Should have failed due to null path." ); + } + catch ( LayoutException e ) + { + /* expected path */ + } + } + + @Test + public void testToPathOnNullArtifactReference() + + { + try + { + ArtifactReference reference = null; + toPath( reference ); + fail( "Should have failed due to null artifact reference." ); + } + catch ( IllegalArgumentException e ) + { + /* expected path */ + } + } + + private void assertArtifactReference( ArtifactReference actualReference, String groupId, String artifactId, + String version, String classifier, String type ) + { + String expectedId = + "ArtifactReference - " + groupId + ":" + artifactId + ":" + version + ":" + classifier + ":" + type; + + assertNotNull( expectedId + " - Should not be null.", actualReference ); + + assertEquals( expectedId + " - Group ID", groupId, actualReference.getGroupId() ); + assertEquals( expectedId + " - Artifact ID", artifactId, actualReference.getArtifactId() ); + if ( StringUtils.isNotBlank( classifier ) ) + { + assertEquals( expectedId + " - Classifier", classifier, actualReference.getClassifier() ); + } + assertEquals( expectedId + " - Version ID", version, actualReference.getVersion() ); + assertEquals( expectedId + " - Type", type, actualReference.getType() ); + } + + private void assertBadPath( String path, String reason ) + { + try + { + toArtifactReference( path ); + fail( + "Should have thrown a LayoutException on the invalid path [" + path + "] because of [" + reason + "]" ); + } + catch ( LayoutException e ) + { + /* expected path */ + } + } + + /** + * Perform a roundtrip through the layout routines to determine success. + */ + private void assertLayout( String path, String groupId, String artifactId, String version, String classifier, + String type ) + throws LayoutException + { + ArtifactReference expectedArtifact = createArtifact( groupId, artifactId, version, classifier, type ); + + // --- Artifact Tests. + + // Artifact to Path + assertEquals( "Artifact <" + expectedArtifact + "> to path:", path, toPath( expectedArtifact ) ); + + // --- Artifact Reference Tests + + // Path to Artifact Reference. + ArtifactReference testReference = toArtifactReference( path ); + assertArtifactReference( testReference, groupId, artifactId, version, classifier, type ); + + // And back again, using test Reference from previous step. + assertEquals( "Artifact <" + expectedArtifact + "> to path:", path, toPath( testReference ) ); + } + + protected ArtifactReference createArtifact( String groupId, String artifactId, String version, String classifier, + String type ) + { + ArtifactReference artifact = new ArtifactReference(); + artifact.setGroupId( groupId ); + artifact.setArtifactId( artifactId ); + artifact.setVersion( version ); + artifact.setClassifier( classifier ); + artifact.setType( type ); + assertNotNull( artifact ); + return artifact; + } + + protected abstract ArtifactReference toArtifactReference( String path ) + throws LayoutException; + + protected abstract String toPath( ArtifactReference reference ); +} diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/ManagedDefaultRepositoryContentTest.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/ManagedDefaultRepositoryContentTest.java new file mode 100644 index 000000000..59c15a21d --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/ManagedDefaultRepositoryContentTest.java @@ -0,0 +1,244 @@ +package org.apache.archiva.metadata.repository.storage.maven2; + +/* + * 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.archiva.common.utils.VersionComparator; +import org.apache.archiva.configuration.ArchivaConfiguration; +import org.apache.archiva.configuration.FileType; +import org.apache.archiva.configuration.FileTypes; +import org.apache.archiva.model.ArtifactReference; +import org.apache.archiva.model.ProjectReference; +import org.apache.archiva.model.VersionedReference; +import org.apache.archiva.repository.EditableManagedRepository; +import org.apache.archiva.repository.LayoutException; +import org.apache.archiva.repository.content.maven2.ManagedDefaultRepositoryContent; +import org.apache.archiva.repository.maven2.MavenManagedRepository; +import org.junit.Before; +import org.junit.Test; + +import javax.inject.Inject; +import javax.inject.Named; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.Set; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.fail; + +/** + * ManagedDefaultRepositoryContentTest + */ +public class ManagedDefaultRepositoryContentTest + extends AbstractDefaultRepositoryContentTestCase +{ + private ManagedDefaultRepositoryContent repoContent; + + @Inject + FileTypes fileTypes; + + @Inject + @Named ( "archivaConfiguration#default" ) + ArchivaConfiguration archivaConfiguration; + + @Inject + List<? extends ArtifactMappingProvider> artifactMappingProviders; + + @Before + public void setUp() + throws Exception + { + Path repoDir = Paths.get( "src/test/repositories/default-repository" ); + + MavenManagedRepository repository = createRepository( "testRepo", "Unit Test Repo", repoDir ); + + FileType fileType = archivaConfiguration.getConfiguration().getRepositoryScanning().getFileTypes().get( 0 ); + fileType.addPattern( "**/*.xml" ); + assertEquals( FileTypes.ARTIFACTS, fileType.getId() ); + + fileTypes.afterConfigurationChange( null, "fileType", null ); + + repoContent = new ManagedDefaultRepositoryContent(artifactMappingProviders, fileTypes); + //repoContent = (ManagedRepositoryContent) lookup( ManagedRepositoryContent.class, "default" ); + repoContent.setRepository( repository ); + } + + @Test + public void testGetVersionsBadArtifact() + throws Exception + { + assertGetVersions( "bad_artifact", Collections.<String>emptyList() ); + } + + @Test + public void testGetVersionsMissingMultipleVersions() + throws Exception + { + assertGetVersions( "missing_metadata_b", Arrays.asList( "1.0", "1.0.1", "2.0", "2.0.1", "2.0-20070821-dev" ) ); + } + + @Test + public void testGetVersionsSimple() + throws Exception + { + assertVersions( "proxied_multi", "2.1", new String[]{ "2.1" } ); + } + + @Test + public void testGetVersionsSimpleYetIncomplete() + throws Exception + { + assertGetVersions( "incomplete_metadata_a", Collections.singletonList( "1.0" ) ); + } + + @Test + public void testGetVersionsSimpleYetMissing() + throws Exception + { + assertGetVersions( "missing_metadata_a", Collections.singletonList( "1.0" ) ); + } + + @Test + public void testGetVersionsSnapshotA() + throws Exception + { + assertVersions( "snap_shots_a", "1.0-alpha-11-SNAPSHOT", + new String[]{ "1.0-alpha-11-SNAPSHOT", "1.0-alpha-11-20070221.194724-2", + "1.0-alpha-11-20070302.212723-3", "1.0-alpha-11-20070303.152828-4", + "1.0-alpha-11-20070305.215149-5", "1.0-alpha-11-20070307.170909-6", + "1.0-alpha-11-20070314.211405-9", "1.0-alpha-11-20070316.175232-11" } ); + } + + @Test + public void testToMetadataPathFromProjectReference() + { + ProjectReference reference = new ProjectReference(); + reference.setGroupId( "com.foo" ); + reference.setArtifactId( "foo-tool" ); + + assertEquals( "com/foo/foo-tool/maven-metadata.xml", repoContent.toMetadataPath( reference ) ); + } + + @Test + public void testToMetadataPathFromVersionReference() + { + VersionedReference reference = new VersionedReference(); + reference.setGroupId( "com.foo" ); + reference.setArtifactId( "foo-tool" ); + reference.setVersion( "1.0" ); + + assertEquals( "com/foo/foo-tool/1.0/maven-metadata.xml", repoContent.toMetadataPath( reference ) ); + } + + @Test + @Override + public void testToPathOnNullArtifactReference() + { + try + { + ArtifactReference reference = null; + repoContent.toPath( reference ); + fail( "Should have failed due to null artifact reference." ); + } + catch ( IllegalArgumentException e ) + { + /* expected path */ + } + } + + @Test + public void testExcludeMetadataFile() + throws Exception + { + assertVersions( "include_xml", "1.0", new String[]{ "1.0" } ); + } + + private void assertGetVersions( String artifactId, List<String> expectedVersions ) + throws Exception + { + ProjectReference reference = new ProjectReference(); + reference.setGroupId( "org.apache.archiva.metadata.tests" ); + reference.setArtifactId( artifactId ); + + // Use the test metadata-repository, which is already setup for + // These kind of version tests. + Path repoDir = Paths.get( "src/test/repositories/metadata-repository" ); + (( EditableManagedRepository)repoContent.getRepository()).setLocation( repoDir.toAbsolutePath().toUri() ); + + // Request the versions. + Set<String> testedVersionSet = repoContent.getVersions( reference ); + + // Sort the list (for asserts) + List<String> testedVersions = new ArrayList<>(); + testedVersions.addAll( testedVersionSet ); + Collections.sort( testedVersions, new VersionComparator() ); + + // Test the expected array of versions, to the actual tested versions + assertEquals( "available versions", expectedVersions, testedVersions ); + } + + private void assertVersions( String artifactId, String version, String[] expectedVersions ) + throws Exception + { + VersionedReference reference = new VersionedReference(); + reference.setGroupId( "org.apache.archiva.metadata.tests" ); + reference.setArtifactId( artifactId ); + reference.setVersion( version ); + + // Use the test metadata-repository, which is already setup for + // These kind of version tests. + Path repoDir = Paths.get( "src/test/repositories/metadata-repository" ); + ((EditableManagedRepository)repoContent.getRepository()).setLocation( repoDir.toAbsolutePath().toUri() ); + + // Request the versions. + Set<String> testedVersionSet = repoContent.getVersions( reference ); + + // Sort the list (for asserts later) + List<String> testedVersions = new ArrayList<>(); + testedVersions.addAll( testedVersionSet ); + Collections.sort( testedVersions, new VersionComparator() ); + + // Test the expected array of versions, to the actual tested versions + assertEquals( "Assert Versions: length/size", expectedVersions.length, testedVersions.size() ); + + for ( int i = 0; i < expectedVersions.length; i++ ) + { + String actualVersion = testedVersions.get( i ); + assertEquals( "Versions[" + i + "]", expectedVersions[i], actualVersion ); + } + } + + + @Override + protected ArtifactReference toArtifactReference( String path ) + throws LayoutException + { + return repoContent.toArtifactReference( path ); + } + + @Override + protected String toPath( ArtifactReference reference ) + { + return repoContent.toPath( reference ); + } +} diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolverMRM1411RepoGroupTest.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolverMRM1411RepoGroupTest.java new file mode 100644 index 000000000..c10f13dc4 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolverMRM1411RepoGroupTest.java @@ -0,0 +1,550 @@ +package org.apache.archiva.metadata.repository.storage.maven2; + +/* + * 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 junit.framework.TestCase; +import org.apache.archiva.configuration.ArchivaConfiguration; +import org.apache.archiva.configuration.Configuration; +import org.apache.archiva.configuration.ManagedRepositoryConfiguration; +import org.apache.archiva.configuration.ProxyConnectorConfiguration; +import org.apache.archiva.configuration.RemoteRepositoryConfiguration; +import org.apache.archiva.configuration.RepositoryGroupConfiguration; +import org.apache.archiva.metadata.model.ArtifactMetadata; +import org.apache.archiva.metadata.model.Dependency; +import org.apache.archiva.metadata.model.License; +import org.apache.archiva.metadata.model.MailingList; +import org.apache.archiva.metadata.model.ProjectVersionMetadata; +import org.apache.archiva.metadata.repository.filter.AllFilter; +import org.apache.archiva.metadata.repository.filter.Filter; +import org.apache.archiva.metadata.repository.storage.ReadMetadataRequest; +import org.apache.archiva.proxy.maven.WagonFactory; +import org.apache.archiva.proxy.maven.WagonFactoryRequest; +import org.apache.archiva.repository.RepositoryRegistry; +import org.apache.archiva.test.utils.ArchivaSpringJUnit4ClassRunner; +import org.apache.commons.io.FileUtils; +import org.apache.maven.wagon.Wagon; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.test.context.ContextConfiguration; + +import javax.inject.Inject; +import javax.inject.Named; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + + +@RunWith ( ArchivaSpringJUnit4ClassRunner.class ) +@ContextConfiguration ( { "classpath*:/META-INF/spring-context.xml", "classpath:/spring-context.xml" } ) +public class Maven2RepositoryMetadataResolverMRM1411RepoGroupTest + extends TestCase +{ + private static final Filter<String> ALL = new AllFilter<String>(); + + @Inject + @Named ( "repositoryStorage#maven2") + private Maven2RepositoryStorage storage; + + private static final String TEST_REPO_ID = "test"; + + private static final String TEST_SNAP_REPO_ID = "tests"; + + private static final String TEST_REPO_GROUP_ID = "testrg"; + + private static final String TEST_REMOTE_REPO_ID = "central"; + + private static final String ASF_SCM_CONN_BASE = "scm:svn:http://svn.apache.org/repos/asf/"; + + private static final String ASF_SCM_DEV_CONN_BASE = "scm:svn:https://svn.apache.org/repos/asf/"; + + private static final String ASF_SCM_VIEWVC_BASE = "http://svn.apache.org/viewvc/"; + + private static final String TEST_SCM_CONN_BASE = "scm:svn:http://svn.example.com/repos/"; + + private static final String TEST_SCM_DEV_CONN_BASE = "scm:svn:https://svn.example.com/repos/"; + + private static final String TEST_SCM_URL_BASE = "http://svn.example.com/repos/"; + + private static final String EMPTY_MD5 = "d41d8cd98f00b204e9800998ecf8427e"; + + private static final String EMPTY_SHA1 = "da39a3ee5e6b4b0d3255bfef95601890afd80709"; + + @Inject + @Named ( "archivaConfiguration#default" ) + private ArchivaConfiguration configuration; + + @Inject + RepositoryRegistry repositoryRegistry; + + private WagonFactory wagonFactory; + + ManagedRepositoryConfiguration testRepo; + + ManagedRepositoryConfiguration testRepoS; + + Configuration c; + + @Before + @Override + public void setUp() + throws Exception + { + super.setUp(); + + c = new Configuration(); + + testRepo = new ManagedRepositoryConfiguration(); + testRepo.setId( TEST_REPO_ID ); + testRepo.setLocation( Paths.get( "target/test-repository" ).toAbsolutePath().toString() ); + testRepo.setReleases( true ); + testRepo.setSnapshots( false ); + c.addManagedRepository( testRepo ); + + testRepoS = new ManagedRepositoryConfiguration(); + testRepoS.setId( TEST_SNAP_REPO_ID ); + testRepoS.setLocation( Paths.get( "target/test-repositorys" ).toAbsolutePath().toString() ); + testRepoS.setReleases( false ); + testRepoS.setSnapshots( true ); + c.addManagedRepository( testRepoS ); + + RemoteRepositoryConfiguration testRemoteRepo = new RemoteRepositoryConfiguration(); + testRemoteRepo.setId( TEST_REMOTE_REPO_ID ); + testRemoteRepo.setLayout( "default" ); + testRemoteRepo.setName( "Central Repository" ); + testRemoteRepo.setUrl( "http://central.repo.com/maven2" ); + testRemoteRepo.setTimeout( 10 ); + c.addRemoteRepository( testRemoteRepo ); + + ProxyConnectorConfiguration proxyConnector = new ProxyConnectorConfiguration(); + proxyConnector.setSourceRepoId( TEST_REPO_ID ); + proxyConnector.setTargetRepoId( TEST_REMOTE_REPO_ID ); + proxyConnector.setDisabled( false ); + c.addProxyConnector( proxyConnector ); + + ProxyConnectorConfiguration proxyConnectors = new ProxyConnectorConfiguration(); + proxyConnectors.setSourceRepoId( TEST_SNAP_REPO_ID ); + proxyConnectors.setTargetRepoId( TEST_REMOTE_REPO_ID ); + proxyConnectors.setDisabled( false ); + c.addProxyConnector( proxyConnectors ); + + List<String> repos = new ArrayList<>(); + repos.add( TEST_REPO_ID ); + repos.add( TEST_SNAP_REPO_ID ); + + RepositoryGroupConfiguration repoGroup = new RepositoryGroupConfiguration(); + repoGroup.setId( TEST_REPO_GROUP_ID ); + repoGroup.setRepositories( repos ); + c.addRepositoryGroup( repoGroup ); + + configuration.save( c ); + repositoryRegistry.reload(); + + assertFalse( c.getManagedRepositories().get( 0 ).isSnapshots() ); + assertTrue( c.getManagedRepositories().get( 0 ).isReleases() ); + + assertTrue( c.getManagedRepositories().get( 1 ).isSnapshots() ); + assertFalse( c.getManagedRepositories().get( 1 ).isReleases() ); + + wagonFactory = mock( WagonFactory.class ); + + storage.setWagonFactory( wagonFactory ); + + Wagon wagon = new MockWagon(); + when( wagonFactory.getWagon( new WagonFactoryRequest().protocol( "wagon#http" ) ) ).thenReturn( wagon ); + } + + // Tests for MRM-1411 - START + @Test + public void testGetProjectVersionMetadataWithParentSuccessful() + throws Exception + { + copyTestArtifactWithParent( "src/test/resources/com/example/test/test-artifact-module-a", + "target/test-repository/com/example/test/test-artifact-module-a" ); + copyTestArtifactWithParent( "src/test/resources/com/example/test/test-artifact-root", + "target/test-repository/com/example/test/test-artifact-root" ); + copyTestArtifactWithParent( "src/test/resources/com/example/test/test-artifact-parent", + "target/test-repository/com/example/test/test-artifact-parent" ); + + ReadMetadataRequest readMetadataRequest = + new ReadMetadataRequest().repositoryId( TEST_REPO_ID ).namespace( "com.example.test" ).projectId( + "test-artifact-module-a" ).projectVersion( "1.0" ); + ProjectVersionMetadata metadata = storage.readProjectVersionMetadata( readMetadataRequest ); + + MavenProjectFacet facet = (MavenProjectFacet) metadata.getFacet( MavenProjectFacet.FACET_ID ); + assertEquals( "jar", facet.getPackaging() ); + assertEquals( "http://maven.apache.org", metadata.getUrl() ); + assertEquals( "com.example.test", facet.getParent().getGroupId() ); + assertEquals( "test-artifact-root", facet.getParent().getArtifactId() ); + assertEquals( "1.0", facet.getParent().getVersion() ); + assertEquals( "test-artifact-module-a", facet.getArtifactId() ); + assertEquals( "com.example.test", facet.getGroupId() ); + assertNull( metadata.getCiManagement() ); + assertNotNull( metadata.getDescription() ); + + checkApacheLicense( metadata ); + + assertEquals( "1.0", metadata.getId() ); + assertEquals( "Test Artifact :: Module A", metadata.getName() ); + String path = "test-artifact/trunk/test-artifact-module-a"; + assertEquals( TEST_SCM_CONN_BASE + path, metadata.getScm().getConnection() ); + assertEquals( TEST_SCM_DEV_CONN_BASE + path, metadata.getScm().getDeveloperConnection() ); + assertEquals( TEST_SCM_URL_BASE + path, metadata.getScm().getUrl() ); + + List<Dependency> dependencies = metadata.getDependencies(); + assertEquals( 2, dependencies.size() ); + assertDependency( dependencies.get( 0 ), "commons-io", "commons-io", "1.4" ); + assertDependency( dependencies.get( 1 ), "junit", "junit", "3.8.1", "test" ); + + List<String> paths = new ArrayList<>(); + paths.add( "target/test-repository/com/example/test/test-artifact-module-a" ); + paths.add( "target/test-repository/com/example/test/test-artifact-parent" ); + paths.add( "target/test-repository/com/example/test/test-artifact-root" ); + + deleteTestArtifactWithParent( paths ); + } + + @Test + public void testGetProjectVersionMetadataWithParentNoRemoteReposConfigured() + throws Exception + { + // remove configuration + Configuration config = configuration.getConfiguration(); + RemoteRepositoryConfiguration remoteRepo = config.findRemoteRepositoryById( TEST_REMOTE_REPO_ID ); + config.removeRemoteRepository( remoteRepo ); + + configuration.save( config ); + + copyTestArtifactWithParent( "src/test/resources/com/example/test/test-artifact-module-a", + "target/test-repository/com/example/test/test-artifact-module-a" ); + copyTestArtifactWithParent( "src/test/resources/com/example/test/test-artifact-root", + "target/test-repository/com/example/test/test-artifact-root" ); + copyTestArtifactWithParent( "src/test/resources/com/example/test/test-artifact-parent", + "target/test-repository/com/example/test/test-artifact-parent" ); + + ReadMetadataRequest readMetadataRequest = + new ReadMetadataRequest().repositoryId( TEST_REPO_ID ).namespace( "com.example.test" ).projectId( + "test-artifact-module-a" ).projectVersion( "1.0" ); + ProjectVersionMetadata metadata = storage.readProjectVersionMetadata( readMetadataRequest ); + assertEquals( "1.0", metadata.getId() ); + + MavenProjectFacet facet = (MavenProjectFacet) metadata.getFacet( MavenProjectFacet.FACET_ID ); + assertNotNull( facet ); + assertEquals( "com.example.test", facet.getGroupId() ); + assertEquals( "test-artifact-module-a", facet.getArtifactId() ); + assertEquals( "jar", facet.getPackaging() ); + + List<String> paths = new ArrayList<>(); + paths.add( "target/test-repository/com/example/test/test-artifact-module-a" ); + paths.add( "target/test-repository/com/example/test/test-artifact-parent" ); + paths.add( "target/test-repository/com/example/test/test-artifact-root" ); + + deleteTestArtifactWithParent( paths ); + } + + @Test + public void testGetProjectVersionMetadataWithParentNotInAnyRemoteRepo() + throws Exception + { + copyTestArtifactWithParent( "src/test/resources/com/example/test/test-artifact-module-a", + "target/test-repository/com/example/test/test-artifact-module-a" ); + + ReadMetadataRequest readMetadataRequest = + new ReadMetadataRequest().repositoryId( TEST_REPO_ID ).namespace( "com.example.test" ).projectId( + "missing-parent" ).projectVersion( "1.1" ); + + ProjectVersionMetadata metadata = storage.readProjectVersionMetadata( readMetadataRequest ); + + assertEquals( "1.1", metadata.getId() ); + + MavenProjectFacet facet = (MavenProjectFacet) metadata.getFacet( MavenProjectFacet.FACET_ID ); + assertNotNull( facet ); + assertEquals( "com.example.test", facet.getGroupId() ); + assertEquals( "missing-parent", facet.getArtifactId() ); + assertEquals( "jar", facet.getPackaging() ); + + List<String> paths = new ArrayList<>(); + paths.add( "target/test-repository/com/example/test/test-artifact-module-a" ); + paths.add( "target/test-repository/com/example/test/test-artifact-parent" ); + paths.add( "target/test-repository/com/example/test/test-artifact-root" ); + + deleteTestArtifactWithParent( paths ); + } + + @Test + public void testGetProjectVersionMetadataWithParentSnapshotVersion() + throws Exception + { + copyTestArtifactWithParent( "target/test-classes/com/example/test/test-snapshot-artifact-module-a", + "target/test-repositorys/com/example/test/test-snapshot-artifact-module-a" ); + copyTestArtifactWithParent( "target/test-classes/com/example/test/test-snapshot-artifact-root", + "target/test-repositorys/com/example/test/test-snapshot-artifact-root" ); + copyTestArtifactWithParent( "src/test/resources/com/example/test/test-artifact-parent", + "target/test-repositorys/com/example/test/test-artifact-parent" ); + + ReadMetadataRequest readMetadataRequest = + new ReadMetadataRequest( TEST_SNAP_REPO_ID, "com.example.test", "test-snapshot-artifact-module-a", + "1.1-SNAPSHOT" ); + + ProjectVersionMetadata metadata = storage.readProjectVersionMetadata( readMetadataRequest ); + + MavenProjectFacet facet = (MavenProjectFacet) metadata.getFacet( MavenProjectFacet.FACET_ID ); + assertEquals( "jar", facet.getPackaging() ); + assertEquals( "com.example.test", facet.getParent().getGroupId() ); + assertEquals( "test-snapshot-artifact-root", facet.getParent().getArtifactId() ); + assertEquals( "1.1-SNAPSHOT", facet.getParent().getVersion() ); + assertEquals( "test-snapshot-artifact-module-a", facet.getArtifactId() ); + assertEquals( "com.example.test", facet.getGroupId() ); + assertNull( metadata.getCiManagement() ); + assertNotNull( metadata.getDescription() ); + + checkApacheLicense( metadata ); + + assertEquals( "1.1-SNAPSHOT", metadata.getId() ); + assertEquals( "Test Snapshot Artifact :: Module A", metadata.getName() ); + String path = "test-snapshot-artifact/trunk/test-snapshot-artifact-module-a"; + assertEquals( TEST_SCM_CONN_BASE + path, metadata.getScm().getConnection() ); + assertEquals( TEST_SCM_DEV_CONN_BASE + path, metadata.getScm().getDeveloperConnection() ); + assertEquals( TEST_SCM_URL_BASE + path, metadata.getScm().getUrl() ); + + List<Dependency> dependencies = metadata.getDependencies(); + assertEquals( 2, dependencies.size() ); + assertDependency( dependencies.get( 0 ), "commons-io", "commons-io", "1.4" ); + assertDependency( dependencies.get( 1 ), "junit", "junit", "3.8.1", "test" ); + + List<String> paths = new ArrayList<>(); + paths.add( "target/test-repositorys/com/example/test/test-snapshot-artifact-module-a" ); + paths.add( "target/test-repositorys/com/example/test/test-snapshot-artifact-root" ); + deleteTestArtifactWithParent( paths ); + } + + @Test + public void testGetProjectVersionMetadataWithParentSnapshotVersionAndSnapNotAllowed() + throws Exception + { + copyTestArtifactWithParent( "target/test-classes/com/example/test/test-snapshot-artifact-module-a", + "target/test-repositorys/com/example/test/test-snapshot-artifact-module-a" ); + copyTestArtifactWithParent( "src/test/resources/com/example/test/test-artifact-parent", + "target/test-repositorys/com/example/test/test-artifact-parent" ); + copyTestArtifactWithParent( "src/test/resources/com/example/test/test-snapshot-artifact-root", + "target/test-repositorys/com/example/test/test-snapshot-artifact-root" ); + + ReadMetadataRequest readMetadataRequest = + new ReadMetadataRequest().repositoryId( TEST_SNAP_REPO_ID ).namespace( "com.example.test" ).projectId( + "test-snapshot-artifact-module-a" ).projectVersion( "1.1-SNAPSHOT" ); + ProjectVersionMetadata metadata = storage.readProjectVersionMetadata( readMetadataRequest ); + + MavenProjectFacet facet = (MavenProjectFacet) metadata.getFacet( MavenProjectFacet.FACET_ID ); + assertEquals( "jar", facet.getPackaging() ); + assertEquals( "com.example.test", facet.getParent().getGroupId() ); + assertEquals( "test-snapshot-artifact-root", facet.getParent().getArtifactId() ); + assertEquals( "1.1-SNAPSHOT", facet.getParent().getVersion() ); + assertEquals( "test-snapshot-artifact-module-a", facet.getArtifactId() ); + assertEquals( "com.example.test", facet.getGroupId() ); + assertNull( metadata.getCiManagement() ); + assertNotNull( metadata.getDescription() ); + + checkApacheLicense( metadata ); + + assertEquals( "1.1-SNAPSHOT", metadata.getId() ); + assertEquals( "Test Snapshot Artifact :: Module A", metadata.getName() ); + String path = "test-snapshot-artifact/trunk/test-snapshot-artifact-module-a"; + assertEquals( TEST_SCM_CONN_BASE + path, metadata.getScm().getConnection() ); + assertEquals( TEST_SCM_DEV_CONN_BASE + path, metadata.getScm().getDeveloperConnection() ); + assertEquals( TEST_SCM_URL_BASE + path, metadata.getScm().getUrl() ); + + List<Dependency> dependencies = metadata.getDependencies(); + assertEquals( 2, dependencies.size() ); + assertDependency( dependencies.get( 0 ), "commons-io", "commons-io", "1.4" ); + assertDependency( dependencies.get( 1 ), "junit", "junit", "3.8.1", "test" ); + + List<String> paths = new ArrayList<>(); + paths.add( "target/test-repositorys/com/example/test/test-snapshot-artifact-module-a" ); + paths.add( "target/test-repositorys/com/example/test/test-snapshot-artifact-root" ); + + deleteTestArtifactWithParent( paths ); + } + + @Test + public void testGetProjectVersionMetadataWithParentSnapshotVersionAndSnapNotAllowed2() + throws Exception + { + copyTestArtifactWithParent( "src/test/resources/com/example/test/test-artifact-module-b", + "target/test-repository/com/example/test/test-artifact-module-b" ); + copyTestArtifactWithParent( "src/test/resources/com/example/test/test-artifact-parent", + "target/test-repository/com/example/test/test-artifact-parent" ); + copyTestArtifactWithParent( "src/test/resources/com/example/test/test-snapshot-artifact-root", + "target/test-repository/com/example/test/test-snapshot-artifact-root" ); + + ReadMetadataRequest readMetadataRequest = + new ReadMetadataRequest().repositoryId( TEST_REPO_ID ).namespace( "com.example.test" ).projectId( + "test-artifact-module-b" ).projectVersion( "1.0" ); + + ProjectVersionMetadata metadata = storage.readProjectVersionMetadata( readMetadataRequest ); + + MavenProjectFacet facet = (MavenProjectFacet) metadata.getFacet( MavenProjectFacet.FACET_ID ); + assertEquals( "jar", facet.getPackaging() ); + assertEquals( "com.example.test", facet.getParent().getGroupId() ); + assertEquals( "test-snapshot-artifact-root", facet.getParent().getArtifactId() ); + assertEquals( "1.1-SNAPSHOT", facet.getParent().getVersion() ); + assertEquals( "test-artifact-module-b", facet.getArtifactId() ); + assertEquals( "com.example.test", facet.getGroupId() ); + assertNull( metadata.getCiManagement() ); + assertNotNull( metadata.getDescription() ); + + checkApacheLicense( metadata ); + + assertEquals( "1.0", metadata.getId() ); + assertEquals( "Test Artifact :: Module B", metadata.getName() ); + String path = "test-snapshot-artifact/trunk/test-artifact-module-b"; + assertEquals( TEST_SCM_CONN_BASE + path, metadata.getScm().getConnection() ); + assertEquals( TEST_SCM_DEV_CONN_BASE + path, metadata.getScm().getDeveloperConnection() ); + assertEquals( TEST_SCM_URL_BASE + path, metadata.getScm().getUrl() ); + + List<Dependency> dependencies = metadata.getDependencies(); + assertEquals( 2, dependencies.size() ); + assertDependency( dependencies.get( 0 ), "commons-io", "commons-io", "1.4" ); + assertDependency( dependencies.get( 1 ), "junit", "junit", "3.8.1", "test" ); + + List<String> paths = new ArrayList<>(); + paths.add( "target/test-repository/com/example/test/test-artifact-module-b" ); + paths.add( "target/test-repository/com/example/test/test-snapshot-artifact-root" ); + + deleteTestArtifactWithParent( paths ); + } + // Tests for MRM-1411 - END + + private void assertDependency( Dependency dependency, String groupId, String artifactId, String version ) + { + assertDependency( dependency, groupId, artifactId, version, "compile" ); + } + + private void assertDependency( Dependency dependency, String groupId, String artifactId, String version, + String scope ) + { + assertEquals( artifactId, dependency.getArtifactId() ); + assertEquals( "jar", dependency.getType() ); + assertEquals( version, dependency.getVersion() ); + assertEquals( groupId, dependency.getGroupId() ); + assertEquals( scope, dependency.getScope() ); + assertNull( dependency.getClassifier() ); + assertNull( dependency.getSystemPath() ); + } + + private void assertArtifact( ArtifactMetadata artifact, String id, int size, String sha1, String md5 ) + { + assertEquals( id, artifact.getId() ); + assertEquals( md5, artifact.getMd5() ); + assertEquals( sha1, artifact.getSha1() ); + assertEquals( size, artifact.getSize() ); + assertEquals( "org.codehaus.plexus", artifact.getNamespace() ); + assertEquals( "plexus-spring", artifact.getProject() ); + assertEquals( "1.2", artifact.getVersion() ); + assertEquals( TEST_REPO_ID, artifact.getRepositoryId() ); + } + + private void assertMailingList( MailingList mailingList, String name, String archive, String post, String subscribe, + String unsubscribe, List<String> otherArchives, boolean allowPost ) + { + assertEquals( archive, mailingList.getMainArchiveUrl() ); + if ( allowPost ) + { + assertEquals( post, mailingList.getPostAddress() ); + } + else + { + assertNull( mailingList.getPostAddress() ); + } + assertEquals( subscribe, mailingList.getSubscribeAddress() ); + assertEquals( unsubscribe, mailingList.getUnsubscribeAddress() ); + assertEquals( name, mailingList.getName() ); + assertEquals( otherArchives, mailingList.getOtherArchives() ); + } + + private void assertMailingList( String prefix, MailingList mailingList, String name, boolean allowPost, + String nabbleUrl ) + { + List<String> otherArchives = new ArrayList<>(); + otherArchives.add( "http://www.mail-archive.com/" + prefix + "@archiva.apache.org" ); + if ( nabbleUrl != null ) + { + otherArchives.add( nabbleUrl ); + } + otherArchives.add( "http://markmail.org/list/org.apache.archiva." + prefix ); + assertMailingList( mailingList, name, "http://mail-archives.apache.org/mod_mbox/archiva-" + prefix + "/", + prefix + "@archiva.apache.org", prefix + "-subscribe@archiva.apache.org", + prefix + "-unsubscribe@archiva.apache.org", otherArchives, allowPost ); + } + + private void checkApacheLicense( ProjectVersionMetadata metadata ) + { + assertEquals( Arrays.asList( new License( "The Apache Software License, Version 2.0", + "http://www.apache.org/licenses/LICENSE-2.0.txt" ) ), + metadata.getLicenses() ); + } + + private void checkOrganizationApache( ProjectVersionMetadata metadata ) + { + assertEquals( "The Apache Software Foundation", metadata.getOrganization().getName() ); + assertEquals( "http://www.apache.org/", metadata.getOrganization().getUrl() ); + } + + private void deleteTestArtifactWithParent( List<String> pathsToBeDeleted ) + throws IOException + { + for ( String path : pathsToBeDeleted ) + { + Path dir = Paths.get( org.apache.archiva.common.utils.FileUtils.getBasedir(), path ); + org.apache.archiva.common.utils.FileUtils.deleteDirectory( dir ); + + assertFalse( Files.exists(dir) ); + } + Path dest = Paths.get( org.apache.archiva.common.utils.FileUtils.getBasedir(), "target/test-repository/com/example/test/test-artifact-module-a" ); + Path parentPom = Paths.get( org.apache.archiva.common.utils.FileUtils.getBasedir(), "target/test-repository/com/example/test/test-artifact-parent" ); + Path rootPom = Paths.get( org.apache.archiva.common.utils.FileUtils.getBasedir(), "target/test-repository/com/example/test/test-artifact-root" ); + + org.apache.archiva.common.utils.FileUtils.deleteDirectory( dest ); + org.apache.archiva.common.utils.FileUtils.deleteDirectory( parentPom ); + org.apache.archiva.common.utils.FileUtils.deleteDirectory( rootPom ); + + assertFalse( Files.exists(dest) ); + assertFalse( Files.exists(parentPom) ); + assertFalse( Files.exists(rootPom) ); + } + + private Path copyTestArtifactWithParent( String srcPath, String destPath ) + throws IOException + { + Path src = Paths.get( org.apache.archiva.common.utils.FileUtils.getBasedir(), srcPath ); + Path dest = Paths.get( org.apache.archiva.common.utils.FileUtils.getBasedir(), destPath ); + + FileUtils.copyDirectory( src.toFile(), dest.toFile() ); + assertTrue( Files.exists(dest) ); + return dest; + } + +} diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolverMRM1411Test.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolverMRM1411Test.java new file mode 100644 index 000000000..e094a20ad --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolverMRM1411Test.java @@ -0,0 +1,447 @@ +package org.apache.archiva.metadata.repository.storage.maven2; + +/* + * 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 junit.framework.TestCase; +import org.apache.archiva.configuration.ArchivaConfiguration; +import org.apache.archiva.configuration.Configuration; +import org.apache.archiva.configuration.ManagedRepositoryConfiguration; +import org.apache.archiva.configuration.ProxyConnectorConfiguration; +import org.apache.archiva.configuration.RemoteRepositoryConfiguration; +import org.apache.archiva.metadata.model.ArtifactMetadata; +import org.apache.archiva.metadata.model.Dependency; +import org.apache.archiva.metadata.model.License; +import org.apache.archiva.metadata.model.MailingList; +import org.apache.archiva.metadata.model.ProjectVersionMetadata; +import org.apache.archiva.metadata.repository.filter.AllFilter; +import org.apache.archiva.metadata.repository.filter.Filter; +import org.apache.archiva.metadata.repository.storage.ReadMetadataRequest; +import org.apache.archiva.metadata.repository.storage.RepositoryStorageRuntimeException; +import org.apache.archiva.proxy.maven.WagonFactory; +import org.apache.archiva.proxy.maven.WagonFactoryRequest; +import org.apache.archiva.repository.RepositoryRegistry; +import org.apache.archiva.test.utils.ArchivaSpringJUnit4ClassRunner; +import org.apache.commons.io.FileUtils; +import org.apache.maven.wagon.Wagon; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.test.context.ContextConfiguration; + +import javax.inject.Inject; +import javax.inject.Named; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; + +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +@RunWith ( ArchivaSpringJUnit4ClassRunner.class ) +@ContextConfiguration ( { "classpath*:/META-INF/spring-context.xml", "classpath:/spring-context.xml" } ) +public class Maven2RepositoryMetadataResolverMRM1411Test + extends TestCase +{ + private static final Filter<String> ALL = new AllFilter<String>(); + + @Inject + @Named ( "repositoryStorage#maven2") + private Maven2RepositoryStorage storage; + + private static final String TEST_REPO_ID = "test"; + + private static final String TEST_REMOTE_REPO_ID = "central"; + + private static final String ASF_SCM_CONN_BASE = "scm:svn:http://svn.apache.org/repos/asf/"; + + private static final String ASF_SCM_DEV_CONN_BASE = "scm:svn:https://svn.apache.org/repos/asf/"; + + private static final String ASF_SCM_VIEWVC_BASE = "http://svn.apache.org/viewvc/"; + + private static final String TEST_SCM_CONN_BASE = "scm:svn:http://svn.example.com/repos/"; + + private static final String TEST_SCM_DEV_CONN_BASE = "scm:svn:https://svn.example.com/repos/"; + + private static final String TEST_SCM_URL_BASE = "http://svn.example.com/repos/"; + + private static final String EMPTY_MD5 = "d41d8cd98f00b204e9800998ecf8427e"; + + private static final String EMPTY_SHA1 = "da39a3ee5e6b4b0d3255bfef95601890afd80709"; + + @Inject + @Named ( "archivaConfiguration#default" ) + private ArchivaConfiguration configuration; + + @Inject + RepositoryRegistry repositoryRegistry; + + private WagonFactory wagonFactory; + + ManagedRepositoryConfiguration testRepo; + + Configuration c; + + @Before + @Override + public void setUp() + throws Exception + { + super.setUp(); + + c = new Configuration(); + testRepo = new ManagedRepositoryConfiguration(); + testRepo.setId( TEST_REPO_ID ); + testRepo.setLocation( Paths.get( "target/test-repository" ).toAbsolutePath().toString() ); + testRepo.setReleases( true ); + testRepo.setSnapshots( true ); + c.addManagedRepository( testRepo ); + + RemoteRepositoryConfiguration testRemoteRepo = new RemoteRepositoryConfiguration(); + testRemoteRepo.setId( TEST_REMOTE_REPO_ID ); + testRemoteRepo.setLayout( "default" ); + testRemoteRepo.setName( "Central Repository" ); + testRemoteRepo.setUrl( "http://central.repo.com/maven2" ); + testRemoteRepo.setTimeout( 10 ); + c.addRemoteRepository( testRemoteRepo ); + + ProxyConnectorConfiguration proxyConnector = new ProxyConnectorConfiguration(); + proxyConnector.setSourceRepoId( TEST_REPO_ID ); + proxyConnector.setTargetRepoId( TEST_REMOTE_REPO_ID ); + proxyConnector.setDisabled( false ); + c.addProxyConnector( proxyConnector ); + + configuration.save( c ); + + repositoryRegistry.reload(); + + assertTrue( c.getManagedRepositories().get( 0 ).isSnapshots() ); + assertTrue( c.getManagedRepositories().get( 0 ).isReleases() ); + + wagonFactory = mock( WagonFactory.class ); + + storage.setWagonFactory( wagonFactory ); + + Wagon wagon = new MockWagon(); + when( wagonFactory.getWagon( + new WagonFactoryRequest( "wagon#http", new HashMap<String, String>() ) ) ).thenReturn( wagon ); + } + + // Tests for MRM-1411 - START + @Test + public void testGetProjectVersionMetadataWithParentSuccessful() + throws Exception + { + copyTestArtifactWithParent( "target/test-classes/com/example/test/test-artifact-module-a", + "target/test-repository/com/example/test/test-artifact-module-a" ); + copyTestArtifactWithParent( "src/test/resources/com/example/test/test-artifact-parent", + "target/test-repository/com/example/test/test-artifact-parent" ); + + copyTestArtifactWithParent( "target/test-classes/com/example/test/test-artifact-root", + "target/test-repository/com/example/test/test-artifact-root" ); + + ProjectVersionMetadata metadata = storage.readProjectVersionMetadata( + new ReadMetadataRequest( TEST_REPO_ID, "com.example.test", "test-artifact-module-a", "1.0" ) ); + + MavenProjectFacet facet = (MavenProjectFacet) metadata.getFacet( MavenProjectFacet.FACET_ID ); + assertEquals( "jar", facet.getPackaging() ); + assertEquals( "http://maven.apache.org", metadata.getUrl() ); + assertEquals( "com.example.test", facet.getParent().getGroupId() ); + assertEquals( "test-artifact-root", facet.getParent().getArtifactId() ); + assertEquals( "1.0", facet.getParent().getVersion() ); + assertEquals( "test-artifact-module-a", facet.getArtifactId() ); + assertEquals( "com.example.test", facet.getGroupId() ); + assertNull( metadata.getCiManagement() ); + assertNotNull( metadata.getDescription() ); + + checkApacheLicense( metadata ); + + assertEquals( "1.0", metadata.getId() ); + assertEquals( "Test Artifact :: Module A", metadata.getName() ); + String path = "test-artifact/trunk/test-artifact-module-a"; + assertEquals( TEST_SCM_CONN_BASE + path, metadata.getScm().getConnection() ); + assertEquals( TEST_SCM_DEV_CONN_BASE + path, metadata.getScm().getDeveloperConnection() ); + assertEquals( TEST_SCM_URL_BASE + path, metadata.getScm().getUrl() ); + + List<Dependency> dependencies = metadata.getDependencies(); + assertEquals( 2, dependencies.size() ); + assertDependency( dependencies.get( 0 ), "commons-io", "commons-io", "1.4" ); + assertDependency( dependencies.get( 1 ), "junit", "junit", "3.8.1", "test" ); + + List<String> paths = new ArrayList<>(); + paths.add( "target/test-repository/com/example/test/test-artifact-module-a" ); + paths.add( "target/test-repository/com/example/test/test-artifact-parent" ); + paths.add( "target/test-repository/com/example/test/test-artifact-root" ); + + deleteTestArtifactWithParent( paths ); + } + + @Test + public void testGetProjectVersionMetadataWithParentNoRemoteReposConfigured() + throws Exception + { + // remove configuration + Configuration config = configuration.getConfiguration(); + RemoteRepositoryConfiguration remoteRepo = config.findRemoteRepositoryById( TEST_REMOTE_REPO_ID ); + config.removeRemoteRepository( remoteRepo ); + + configuration.save( config ); + + copyTestArtifactWithParent( "target/test-classes/com/example/test/test-artifact-module-a", + "target/test-repository/com/example/test/test-artifact-module-a" ); + + ProjectVersionMetadata metadata = storage.readProjectVersionMetadata( + new ReadMetadataRequest( TEST_REPO_ID, "com.example.test", "test-artifact-module-a", "1.0" ) ); + assertEquals( "1.0", metadata.getId() ); + + MavenProjectFacet facet = (MavenProjectFacet) metadata.getFacet( MavenProjectFacet.FACET_ID ); + assertNotNull( facet ); + assertEquals( "com.example.test", facet.getGroupId() ); + assertEquals( "test-artifact-module-a", facet.getArtifactId() ); + assertEquals( "jar", facet.getPackaging() ); + + List<String> paths = new ArrayList<>(); + paths.add( "target/test-repository/com/example/test/test-artifact-module-a" ); + paths.add( "target/test-repository/com/example/test/test-artifact-parent" ); + paths.add( "target/test-repository/com/example/test/test-artifact-root" ); + + deleteTestArtifactWithParent( paths ); + } + + @Test + public void testGetProjectVersionMetadataWithParentNotInAnyRemoteRepo() + throws Exception + { + copyTestArtifactWithParent( "target/test-classes/com/example/test/test-artifact-module-a", + "target/test-repository/com/example/test/test-artifact-module-a" ); + + ProjectVersionMetadata metadata = storage.readProjectVersionMetadata( + new ReadMetadataRequest( TEST_REPO_ID, "com.example.test", "missing-parent", "1.1" ) ); + + assertEquals( "1.1", metadata.getId() ); + + MavenProjectFacet facet = (MavenProjectFacet) metadata.getFacet( MavenProjectFacet.FACET_ID ); + assertNotNull( facet ); + assertEquals( "com.example.test", facet.getGroupId() ); + assertEquals( "missing-parent", facet.getArtifactId() ); + assertEquals( "jar", facet.getPackaging() ); + + List<String> paths = new ArrayList<>(); + paths.add( "target/test-repository/com/example/test/test-artifact-module-a" ); + paths.add( "target/test-repository/com/example/test/test-artifact-parent" ); + paths.add( "target/test-repository/com/example/test/test-artifact-root" ); + + deleteTestArtifactWithParent( paths ); + } + + @Test + public void testGetProjectVersionMetadataWithParentSnapshotVersion() + throws Exception + { + + copyTestArtifactWithParent( "target/test-classes/com/example/test/test-snapshot-artifact-module-a", + "target/test-repository/com/example/test/test-snapshot-artifact-module-a" ); + + copyTestArtifactWithParent( "src/test/resources/com/example/test/test-artifact-parent", + "target/test-repository/com/example/test/test-artifact-parent" ); + + copyTestArtifactWithParent( "target/test-classes/com/example/test/test-snapshot-artifact-root", + "target/test-repository/com/example/test/test-snapshot-artifact-root" ); + + ProjectVersionMetadata metadata = storage.readProjectVersionMetadata( + new ReadMetadataRequest( TEST_REPO_ID, "com.example.test", "test-snapshot-artifact-module-a", + "1.1-SNAPSHOT" ) ); + + MavenProjectFacet facet = (MavenProjectFacet) metadata.getFacet( MavenProjectFacet.FACET_ID ); + assertEquals( "jar", facet.getPackaging() ); + assertEquals( "com.example.test", facet.getParent().getGroupId() ); + assertEquals( "test-snapshot-artifact-root", facet.getParent().getArtifactId() ); + assertEquals( "1.1-SNAPSHOT", facet.getParent().getVersion() ); + assertEquals( "test-snapshot-artifact-module-a", facet.getArtifactId() ); + assertEquals( "com.example.test", facet.getGroupId() ); + assertNull( metadata.getCiManagement() ); + assertNotNull( metadata.getDescription() ); + + checkApacheLicense( metadata ); + + assertEquals( "1.1-SNAPSHOT", metadata.getId() ); + assertEquals( "Test Snapshot Artifact :: Module A", metadata.getName() ); + String path = "test-snapshot-artifact/trunk/test-snapshot-artifact-module-a"; + assertEquals( TEST_SCM_CONN_BASE + path, metadata.getScm().getConnection() ); + assertEquals( TEST_SCM_DEV_CONN_BASE + path, metadata.getScm().getDeveloperConnection() ); + assertEquals( TEST_SCM_URL_BASE + path, metadata.getScm().getUrl() ); + + List<Dependency> dependencies = metadata.getDependencies(); + assertEquals( 2, dependencies.size() ); + assertDependency( dependencies.get( 0 ), "commons-io", "commons-io", "1.4" ); + assertDependency( dependencies.get( 1 ), "junit", "junit", "3.8.1", "test" ); + + List<String> paths = new ArrayList<>(); + paths.add( "target/test-repository/com/example/test/test-snapshot-artifact-module-a" ); + paths.add( "target/test-repository/com/example/test/test-snapshot-artifact-root" ); + + deleteTestArtifactWithParent( paths ); + } + + @Test + public void testGetProjectVersionMetadataWithParentSnapshotVersionAndSnapNotAllowed() + throws Exception + { + testRepo.setSnapshots( false ); + configuration.save( c ); + repositoryRegistry.reload(); + assertFalse( c.getManagedRepositories().get( 0 ).isSnapshots() ); + copyTestArtifactWithParent( "target/test-classes/com/example/test/test-snapshot-artifact-module-a", + "target/test-repository/com/example/test/test-snapshot-artifact-module-a" ); + + try + { + ProjectVersionMetadata metadata = storage.readProjectVersionMetadata( + new ReadMetadataRequest( TEST_REPO_ID, "com.example.test", "test-snapshot-artifact-module-a", + "1.1-SNAPSHOT" ) ); + fail( "Should not be found" ); + } + catch ( RepositoryStorageRuntimeException e ) + { + } + + List<String> paths = new ArrayList<>(); + paths.add( "target/test-repository/com/example/test/test-snapshot-artifact-module-a" ); + paths.add( "target/test-repository/com/example/test/test-snapshot-artifact-root" ); + + deleteTestArtifactWithParent( paths ); + } + // Tests for MRM-1411 - END + + private void assertDependency( Dependency dependency, String groupId, String artifactId, String version ) + { + assertDependency( dependency, groupId, artifactId, version, "compile" ); + } + + private void assertDependency( Dependency dependency, String groupId, String artifactId, String version, + String scope ) + { + assertEquals( artifactId, dependency.getArtifactId() ); + assertEquals( "jar", dependency.getType() ); + assertEquals( version, dependency.getVersion() ); + assertEquals( groupId, dependency.getGroupId() ); + assertEquals( scope, dependency.getScope() ); + assertNull( dependency.getClassifier() ); + assertNull( dependency.getSystemPath() ); + } + + private void assertArtifact( ArtifactMetadata artifact, String id, int size, String sha1, String md5 ) + { + assertEquals( id, artifact.getId() ); + assertEquals( md5, artifact.getMd5() ); + assertEquals( sha1, artifact.getSha1() ); + assertEquals( size, artifact.getSize() ); + assertEquals( "org.codehaus.plexus", artifact.getNamespace() ); + assertEquals( "plexus-spring", artifact.getProject() ); + assertEquals( "1.2", artifact.getVersion() ); + assertEquals( TEST_REPO_ID, artifact.getRepositoryId() ); + } + + private void assertMailingList( MailingList mailingList, String name, String archive, String post, String subscribe, + String unsubscribe, List<String> otherArchives, boolean allowPost ) + { + assertEquals( archive, mailingList.getMainArchiveUrl() ); + if ( allowPost ) + { + assertEquals( post, mailingList.getPostAddress() ); + } + else + { + assertNull( mailingList.getPostAddress() ); + } + assertEquals( subscribe, mailingList.getSubscribeAddress() ); + assertEquals( unsubscribe, mailingList.getUnsubscribeAddress() ); + assertEquals( name, mailingList.getName() ); + assertEquals( otherArchives, mailingList.getOtherArchives() ); + } + + private void assertMailingList( String prefix, MailingList mailingList, String name, boolean allowPost, + String nabbleUrl ) + { + List<String> otherArchives = new ArrayList<>(); + otherArchives.add( "http://www.mail-archive.com/" + prefix + "@archiva.apache.org" ); + if ( nabbleUrl != null ) + { + otherArchives.add( nabbleUrl ); + } + otherArchives.add( "http://markmail.org/list/org.apache.archiva." + prefix ); + assertMailingList( mailingList, name, "http://mail-archives.apache.org/mod_mbox/archiva-" + prefix + "/", + prefix + "@archiva.apache.org", prefix + "-subscribe@archiva.apache.org", + prefix + "-unsubscribe@archiva.apache.org", otherArchives, allowPost ); + } + + private void checkApacheLicense( ProjectVersionMetadata metadata ) + { + assertEquals( Arrays.asList( new License( "The Apache Software License, Version 2.0", + "http://www.apache.org/licenses/LICENSE-2.0.txt" ) ), + metadata.getLicenses() ); + } + + private void checkOrganizationApache( ProjectVersionMetadata metadata ) + { + assertEquals( "The Apache Software Foundation", metadata.getOrganization().getName() ); + assertEquals( "http://www.apache.org/", metadata.getOrganization().getUrl() ); + } + + private void deleteTestArtifactWithParent( List<String> pathsToBeDeleted ) + throws IOException + { + for ( String path : pathsToBeDeleted ) + { + Path dir = Paths.get( org.apache.archiva.common.utils.FileUtils.getBasedir(), path ); + org.apache.archiva.common.utils.FileUtils.deleteDirectory( dir ); + + assertFalse(Files.exists( dir) ); + } + Path dest = Paths.get( org.apache.archiva.common.utils.FileUtils.getBasedir(), "target/test-repository/com/example/test/test-artifact-module-a" ); + Path parentPom = + Paths.get( org.apache.archiva.common.utils.FileUtils.getBasedir(), "target/test-repository/com/example/test/test-artifact-parent" ); + Path rootPom = Paths.get( org.apache.archiva.common.utils.FileUtils.getBasedir(), "target/test-repository/com/example/test/test-artifact-root" ); + + org.apache.archiva.common.utils.FileUtils.deleteDirectory( dest ); + org.apache.archiva.common.utils.FileUtils.deleteDirectory( parentPom ); + org.apache.archiva.common.utils.FileUtils.deleteDirectory( rootPom ); + + assertFalse( Files.exists(dest) ); + assertFalse( Files.exists(parentPom) ); + assertFalse( Files.exists(rootPom) ); + } + + private Path copyTestArtifactWithParent( String srcPath, String destPath ) + throws IOException + { + Path src = Paths.get( org.apache.archiva.common.utils.FileUtils.getBasedir(), srcPath ); + Path dest = Paths.get( org.apache.archiva.common.utils.FileUtils.getBasedir(), destPath ); + + FileUtils.copyDirectory( src.toFile(), dest.toFile() ); + assertTrue( Files.exists(dest) ); + return dest; + } + +} diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolverManagedReleaseTest.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolverManagedReleaseTest.java new file mode 100644 index 000000000..a5dc3491c --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolverManagedReleaseTest.java @@ -0,0 +1,142 @@ +package org.apache.archiva.metadata.repository.storage.maven2; + +/* + * 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.archiva.metadata.model.ProjectVersionMetadata; +import org.apache.archiva.metadata.repository.filter.AllFilter; +import org.apache.archiva.metadata.repository.filter.Filter; +import org.apache.archiva.metadata.repository.storage.ReadMetadataRequest; +import org.apache.archiva.metadata.repository.storage.RepositoryStorageRuntimeException; +import org.apache.archiva.proxy.maven.WagonFactory; +import org.apache.archiva.repository.RepositoryRegistry; +import org.junit.Before; +import org.junit.Test; + +import javax.inject.Inject; +import javax.inject.Named; + + +public class Maven2RepositoryMetadataResolverManagedReleaseTest + extends Maven2RepositoryMetadataResolverTest +{ + private static final Filter<String> ALL = new AllFilter<String>(); + + @Inject + @Named ( "repositoryStorage#maven2") + private Maven2RepositoryStorage storage; + + @Inject + RepositoryRegistry repositoryRegistry; + + private static final String TEST_REPO_ID = "test"; + + private static final String TEST_REMOTE_REPO_ID = "central"; + + private static final String ASF_SCM_CONN_BASE = "scm:svn:http://svn.apache.org/repos/asf/"; + + private static final String ASF_SCM_DEV_CONN_BASE = "scm:svn:https://svn.apache.org/repos/asf/"; + + private static final String ASF_SCM_VIEWVC_BASE = "http://svn.apache.org/viewvc/"; + + private static final String TEST_SCM_CONN_BASE = "scm:svn:http://svn.example.com/repos/"; + + private static final String TEST_SCM_DEV_CONN_BASE = "scm:svn:https://svn.example.com/repos/"; + + private static final String TEST_SCM_URL_BASE = "http://svn.example.com/repos/"; + + private static final String EMPTY_MD5 = "d41d8cd98f00b204e9800998ecf8427e"; + + private static final String EMPTY_SHA1 = "da39a3ee5e6b4b0d3255bfef95601890afd80709"; + + private WagonFactory wagonFactory; + + @Before + @Override + public void setUp() + throws Exception + { + super.setUp(); + + testRepo.setReleases( true ); + testRepo.setSnapshots( false ); + + configuration.save( c ); + + repositoryRegistry.reload(); + + assertFalse( c.getManagedRepositories().get( 0 ).isSnapshots() ); + assertTrue( c.getManagedRepositories().get( 0 ).isReleases() ); + + } + + @Test + @Override + public void testModelWithJdkProfileActivation() + throws Exception + { + // skygo IMHO must fail because TEST_REPO_ID ( is snap ,no release) and we seek for a snapshot + + ReadMetadataRequest readMetadataRequest = + new ReadMetadataRequest().repositoryId( TEST_REPO_ID ).namespace( "org.apache.maven" ).projectId( + "maven-archiver" ).projectVersion( "2.4.1" ); + + ProjectVersionMetadata metadata = storage.readProjectVersionMetadata( readMetadataRequest ); + } + + @Test (expected = RepositoryStorageRuntimeException.class) + @Override + public void testGetProjectVersionMetadataForTimestampedSnapshotMissingMetadata() + throws Exception + { + ReadMetadataRequest readMetadataRequest = + new ReadMetadataRequest().repositoryId( TEST_REPO_ID ).namespace( "com.example.test" ).projectId( + "missing-metadata" ).projectVersion( "1.0-SNAPSHOT" ); + storage.readProjectVersionMetadata( readMetadataRequest ); + } + + @Test (expected = RepositoryStorageRuntimeException.class) + @Override + public void testGetProjectVersionMetadataForTimestampedSnapshotMalformedMetadata() + throws Exception + { + ReadMetadataRequest readMetadataRequest = + new ReadMetadataRequest().repositoryId( TEST_REPO_ID ).namespace( "com.example.test" ).projectVersion( + "malformed-metadata" ).projectVersion( "1.0-SNAPSHOT" ); + storage.readProjectVersionMetadata( readMetadataRequest ); + } + + @Test (expected = RepositoryStorageRuntimeException.class) + @Override + public void testGetProjectVersionMetadataForTimestampedSnapshot() + throws Exception + { + super.testGetProjectVersionMetadataForTimestampedSnapshot(); + } + + + @Test (expected = RepositoryStorageRuntimeException.class) + @Override + public void testGetProjectVersionMetadataForTimestampedSnapshotIncompleteMetadata() + throws Exception + { + super.testGetProjectVersionMetadataForTimestampedSnapshotIncompleteMetadata(); + } + +} diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolverManagedSnapshotTest.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolverManagedSnapshotTest.java new file mode 100644 index 000000000..03a67cdea --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolverManagedSnapshotTest.java @@ -0,0 +1,141 @@ +package org.apache.archiva.metadata.repository.storage.maven2; + +/* + * 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.archiva.metadata.model.ProjectVersionMetadata; +import org.apache.archiva.metadata.repository.filter.AllFilter; +import org.apache.archiva.metadata.repository.filter.Filter; +import org.apache.archiva.metadata.repository.storage.ReadMetadataRequest; +import org.apache.archiva.metadata.repository.storage.RepositoryStorageRuntimeException; +import org.apache.archiva.repository.RepositoryRegistry; +import org.junit.Before; +import org.junit.Test; + +import javax.inject.Inject; +import javax.inject.Named; + +public class Maven2RepositoryMetadataResolverManagedSnapshotTest + extends Maven2RepositoryMetadataResolverTest +{ + private static final Filter<String> ALL = new AllFilter<String>(); + + @Inject + @Named ( "repositoryStorage#maven2") + private Maven2RepositoryStorage storage; + + @Inject + RepositoryRegistry repositoryRegistry; + + private static final String TEST_REPO_ID = "test"; + + private static final String TEST_REMOTE_REPO_ID = "central"; + + private static final String ASF_SCM_CONN_BASE = "scm:svn:http://svn.apache.org/repos/asf/"; + + private static final String ASF_SCM_DEV_CONN_BASE = "scm:svn:https://svn.apache.org/repos/asf/"; + + private static final String ASF_SCM_VIEWVC_BASE = "http://svn.apache.org/viewvc/"; + + private static final String TEST_SCM_CONN_BASE = "scm:svn:http://svn.example.com/repos/"; + + private static final String TEST_SCM_DEV_CONN_BASE = "scm:svn:https://svn.example.com/repos/"; + + private static final String TEST_SCM_URL_BASE = "http://svn.example.com/repos/"; + + private static final String EMPTY_MD5 = "d41d8cd98f00b204e9800998ecf8427e"; + + + private static final String EMPTY_SHA1 = "da39a3ee5e6b4b0d3255bfef95601890afd80709"; + + + @Before + @Override + public void setUp() + throws Exception + { + super.setUp(); + + testRepo.setReleases( false ); + testRepo.setSnapshots( true ); + + configuration.save( c ); + + repositoryRegistry.reload(); + + assertTrue( c.getManagedRepositories().get( 0 ).isSnapshots() ); + assertFalse( c.getManagedRepositories().get( 0 ).isReleases() ); + } + + @Test (expected = RepositoryStorageRuntimeException.class) + @Override + public void testModelWithJdkProfileActivation() + throws Exception + { + // skygo IMHO must fail because TEST_REPO_ID ( is snap ,no release) and we seek for a snapshot + + ReadMetadataRequest readMetadataRequest = + new ReadMetadataRequest().repositoryId( TEST_REPO_ID ).namespace( "org.apache.maven" ).projectId( + "maven-archiver" ).projectVersion( "2.4.1" ); + + ProjectVersionMetadata metadata = storage.readProjectVersionMetadata( readMetadataRequest ); + } + + @Test (expected = RepositoryStorageRuntimeException.class) + @Override + public void testGetProjectVersionMetadataForMislocatedPom() + throws Exception + { + ReadMetadataRequest readMetadataRequest = + new ReadMetadataRequest().repositoryId( TEST_REPO_ID ).namespace( "com.example.test" ).projectId( + "mislocated-pom" ).projectVersion( "1.0" ); + storage.readProjectVersionMetadata( readMetadataRequest ); + + } + + @Test + @Override + public void testGetProjectVersionMetadata() + throws Exception + { + // super test is on release + } + + @Test (expected = RepositoryStorageRuntimeException.class) + @Override + public void testGetProjectVersionMetadataForInvalidPom() + throws Exception + { + ReadMetadataRequest readMetadataRequest = + new ReadMetadataRequest().repositoryId( TEST_REPO_ID ).namespace( "com.example.test" ).projectId( + "invalid-pom" ).projectVersion( "1.0" ); + storage.readProjectVersionMetadata( readMetadataRequest ); + } + + @Test (expected = RepositoryStorageRuntimeException.class) + @Override + public void testGetProjectVersionMetadataForMissingPom() + throws Exception + { + ReadMetadataRequest readMetadataRequest = + new ReadMetadataRequest().repositoryId( TEST_REPO_ID ).namespace( "com.example.test" ).projectId( + "missing-pom" ).projectVersion( "1.0" ); + storage.readProjectVersionMetadata( readMetadataRequest ); + } +} diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolverTest.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolverTest.java new file mode 100644 index 000000000..9f1b4c523 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolverTest.java @@ -0,0 +1,815 @@ +package org.apache.archiva.metadata.repository.storage.maven2; + +/* + * 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 junit.framework.TestCase; +import org.apache.archiva.configuration.ArchivaConfiguration; +import org.apache.archiva.configuration.Configuration; +import org.apache.archiva.configuration.ManagedRepositoryConfiguration; +import org.apache.archiva.configuration.ProxyConnectorConfiguration; +import org.apache.archiva.configuration.RemoteRepositoryConfiguration; +import org.apache.archiva.configuration.RepositoryScanningConfiguration; +import org.apache.archiva.metadata.model.ArtifactMetadata; +import org.apache.archiva.metadata.model.Dependency; +import org.apache.archiva.metadata.model.License; +import org.apache.archiva.metadata.model.MailingList; +import org.apache.archiva.metadata.model.ProjectVersionMetadata; +import org.apache.archiva.metadata.model.maven2.MavenArtifactFacet; +import org.apache.archiva.metadata.repository.filter.AllFilter; +import org.apache.archiva.metadata.repository.filter.ExcludesFilter; +import org.apache.archiva.metadata.repository.filter.Filter; +import org.apache.archiva.metadata.repository.storage.ReadMetadataRequest; +import org.apache.archiva.metadata.repository.storage.RepositoryStorageMetadataInvalidException; +import org.apache.archiva.metadata.repository.storage.RepositoryStorageMetadataNotFoundException; +import org.apache.archiva.proxy.maven.WagonFactory; +import org.apache.archiva.proxy.maven.WagonFactoryRequest; +import org.apache.archiva.repository.RepositoryRegistry; +import org.apache.archiva.test.utils.ArchivaSpringJUnit4ClassRunner; +import org.apache.commons.io.FileUtils; +import org.apache.maven.wagon.Wagon; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.test.context.ContextConfiguration; + +import javax.inject.Inject; +import javax.inject.Named; +import java.io.IOException; +import java.net.URL; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.nio.file.StandardCopyOption; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; + +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +@RunWith ( ArchivaSpringJUnit4ClassRunner.class ) +@ContextConfiguration ( { "classpath*:/META-INF/spring-context.xml", "classpath:/spring-context.xml" } ) +public class Maven2RepositoryMetadataResolverTest + extends TestCase +{ + private static final Filter<String> ALL = new AllFilter<String>(); + + @Inject + @Named ( "repositoryStorage#maven2" ) + private Maven2RepositoryStorage storage; + + @Inject + RepositoryRegistry repositoryRegistry; + + private static final String TEST_REPO_ID = "test"; + + private static final String TEST_REMOTE_REPO_ID = "central"; + + private static final String ASF_SCM_CONN_BASE = "scm:svn:http://svn.apache.org/repos/asf/"; + + private static final String ASF_SCM_DEV_CONN_BASE = "scm:svn:https://svn.apache.org/repos/asf/"; + + private static final String ASF_SCM_VIEWVC_BASE = "http://svn.apache.org/viewvc/"; + + private static final String TEST_SCM_CONN_BASE = "scm:svn:http://svn.example.com/repos/"; + + private static final String TEST_SCM_DEV_CONN_BASE = "scm:svn:https://svn.example.com/repos/"; + + private static final String TEST_SCM_URL_BASE = "http://svn.example.com/repos/"; + + private static final String EMPTY_MD5 = "d41d8cd98f00b204e9800998ecf8427e"; + + private static final String EMPTY_SHA1 = "da39a3ee5e6b4b0d3255bfef95601890afd80709"; + + @Inject + @Named ( "archivaConfiguration#default" ) + protected ArchivaConfiguration configuration; + + private WagonFactory wagonFactory; + + ManagedRepositoryConfiguration testRepo; + + Configuration c; + + @Before + @Override + public void setUp() + throws Exception + { + super.setUp(); + + c = new Configuration(); + + c.setVersion("2.0"); + testRepo = new ManagedRepositoryConfiguration(); + testRepo.setId( TEST_REPO_ID ); + testRepo.setLocation( Paths.get( "target/test-repository" ).toAbsolutePath().toString() ); + testRepo.setReleases( true ); + testRepo.setSnapshots( true ); + c.addManagedRepository( testRepo ); + + RemoteRepositoryConfiguration testRemoteRepo = new RemoteRepositoryConfiguration(); + testRemoteRepo.setId( TEST_REMOTE_REPO_ID ); + testRemoteRepo.setLayout( "default" ); + testRemoteRepo.setName( "Central Repository" ); + testRemoteRepo.setUrl( "http://central.repo.com/maven2" ); + testRemoteRepo.setTimeout( 10 ); + c.addRemoteRepository( testRemoteRepo ); + + ProxyConnectorConfiguration proxyConnector = new ProxyConnectorConfiguration(); + proxyConnector.setSourceRepoId( TEST_REPO_ID ); + proxyConnector.setTargetRepoId( TEST_REMOTE_REPO_ID ); + proxyConnector.setDisabled( false ); + c.addProxyConnector( proxyConnector ); + + RepositoryScanningConfiguration scCfg = new RepositoryScanningConfiguration(); + c.setRepositoryScanning(scCfg); + + configuration.save( c ); + assertFalse(configuration.isDefaulted()); + repositoryRegistry.reload(); + + assertTrue( c.getManagedRepositories().get( 0 ).isSnapshots() ); + assertTrue( c.getManagedRepositories().get( 0 ).isReleases() ); + + wagonFactory = mock( WagonFactory.class ); + + storage.setWagonFactory( wagonFactory ); + + Wagon wagon = new MockWagon(); + when( wagonFactory.getWagon( new WagonFactoryRequest().protocol( "wagon#http" ) ) ).thenReturn( wagon ); + } + + @Test + public void testModelWithJdkProfileActivation() + throws Exception + { + ReadMetadataRequest readMetadataRequest = + new ReadMetadataRequest().repositoryId( TEST_REPO_ID ).namespace( "org.apache.maven" ).projectId( + "maven-archiver" ).projectVersion( "2.4.1" ); + ProjectVersionMetadata metadata = storage.readProjectVersionMetadata( readMetadataRequest ); + MavenProjectFacet facet = (MavenProjectFacet) metadata.getFacet( MavenProjectFacet.FACET_ID ); + } + + @Test + public void testGetProjectVersionMetadata() + throws Exception + { + ProjectVersionMetadata metadata = storage.readProjectVersionMetadata( + new ReadMetadataRequest( TEST_REPO_ID, "org.apache.archiva", "archiva-common", "1.2.1" ) ); + MavenProjectFacet facet = (MavenProjectFacet) metadata.getFacet( MavenProjectFacet.FACET_ID ); + assertEquals( "jar", facet.getPackaging() ); + assertEquals( "http://archiva.apache.org/ref/1.2.1/archiva-base/archiva-common", metadata.getUrl() ); + assertEquals( "org.apache.archiva", facet.getParent().getGroupId() ); + assertEquals( "archiva-base", facet.getParent().getArtifactId() ); + assertEquals( "1.2.1", facet.getParent().getVersion() ); + assertEquals( "archiva-common", facet.getArtifactId() ); + assertEquals( "org.apache.archiva", facet.getGroupId() ); + assertEquals( "continuum", metadata.getCiManagement().getSystem() ); + assertEquals( "http://vmbuild.apache.org/continuum", metadata.getCiManagement().getUrl() ); + assertNotNull( metadata.getDescription() ); + // TODO: this would be better +// assertEquals( +// "Archiva is an application for managing one or more remote repositories, including administration, artifact handling, browsing and searching.", +// metadata.getDescription() ); + assertEquals( "1.2.1", metadata.getId() ); + assertEquals( "jira", metadata.getIssueManagement().getSystem() ); + assertEquals( "http://jira.codehaus.org/browse/MRM", metadata.getIssueManagement().getUrl() ); + checkApacheLicense( metadata ); + assertEquals( "Archiva Base :: Common", metadata.getName() ); + String path = "archiva/tags/archiva-1.2.1/archiva-modules/archiva-base/archiva-common"; + assertEquals( ASF_SCM_CONN_BASE + path, metadata.getScm().getConnection() ); + assertEquals( ASF_SCM_DEV_CONN_BASE + path, metadata.getScm().getDeveloperConnection() ); + assertEquals( ASF_SCM_VIEWVC_BASE + path, metadata.getScm().getUrl() ); + checkOrganizationApache( metadata ); + + assertEquals( 4, metadata.getMailingLists().size() ); + assertMailingList( "users", metadata.getMailingLists().get( 0 ), "Archiva User List", true, + "http://www.nabble.com/archiva-users-f16426.html" ); + assertMailingList( "dev", metadata.getMailingLists().get( 1 ), "Archiva Developer List", true, + "http://www.nabble.com/archiva-dev-f16427.html" ); + assertMailingList( "commits", metadata.getMailingLists().get( 2 ), "Archiva Commits List", false, null ); + assertMailingList( "issues", metadata.getMailingLists().get( 3 ), "Archiva Issues List", false, + "http://www.nabble.com/Archiva---Issues-f29617.html" ); + + List<Dependency> dependencies = metadata.getDependencies(); + assertEquals( 10, dependencies.size() ); + assertDependency( dependencies.get( 0 ), "commons-lang", "commons-lang", "2.2" ); + assertDependency( dependencies.get( 1 ), "commons-io", "commons-io", "1.4" ); + assertDependency( dependencies.get( 2 ), "org.slf4j", "slf4j-api", "1.5.0" ); + assertDependency( dependencies.get( 3 ), "org.codehaus.plexus", "plexus-component-api", "1.0-alpha-22" ); + assertDependency( dependencies.get( 4 ), "org.codehaus.plexus", "plexus-spring", "1.2", "test" ); + assertDependency( dependencies.get( 5 ), "xalan", "xalan", "2.7.0" ); + assertDependency( dependencies.get( 6 ), "dom4j", "dom4j", "1.6.1", "test" ); + assertDependency( dependencies.get( 7 ), "junit", "junit", "3.8.1", "test" ); + assertDependency( dependencies.get( 8 ), "easymock", "easymock", "1.2_Java1.3", "test" ); + assertDependency( dependencies.get( 9 ), "easymock", "easymockclassextension", "1.2", "test" ); + + assertEquals( 8, metadata.getProperties().size() ); + assertEquals( "http://www.apache.org/images/asf_logo_wide.gif", metadata.getProperties().get("organization.logo") ); + } + + @Test + public void testGetArtifactMetadata() + throws Exception + { + Collection<ArtifactMetadata> springArtifacts = storage.readArtifactsMetadata( + new ReadMetadataRequest( TEST_REPO_ID, "org.codehaus.plexus", "plexus-spring", "1.2", ALL ) ); + List<ArtifactMetadata> artifacts = new ArrayList<>( springArtifacts ); + Collections.sort( artifacts, new Comparator<ArtifactMetadata>() + { + @Override + public int compare( ArtifactMetadata o1, ArtifactMetadata o2 ) + { + return o1.getId().compareTo( o2.getId() ); + } + } ); + + assertEquals( 3, artifacts.size() ); + + ArtifactMetadata artifactMetadata = artifacts.get( 0 ); + assertEquals( "plexus-spring-1.2-sources.jar", artifactMetadata.getId() ); + MavenArtifactFacet facet = (MavenArtifactFacet) artifactMetadata.getFacet( MavenArtifactFacet.FACET_ID ); + assertEquals( 0, facet.getBuildNumber() ); + assertNull( facet.getTimestamp() ); + assertEquals( "sources", facet.getClassifier() ); + assertEquals( "java-source", facet.getType() ); + + artifactMetadata = artifacts.get( 1 ); + assertEquals( "plexus-spring-1.2.jar", artifactMetadata.getId() ); + facet = (MavenArtifactFacet) artifactMetadata.getFacet( MavenArtifactFacet.FACET_ID ); + assertEquals( 0, facet.getBuildNumber() ); + assertNull( facet.getTimestamp() ); + assertNull( facet.getClassifier() ); + assertEquals( "jar", facet.getType() ); + + artifactMetadata = artifacts.get( 2 ); + assertEquals( "plexus-spring-1.2.pom", artifactMetadata.getId() ); + facet = (MavenArtifactFacet) artifactMetadata.getFacet( MavenArtifactFacet.FACET_ID ); + assertEquals( 0, facet.getBuildNumber() ); + assertNull( facet.getTimestamp() ); + assertNull( facet.getClassifier() ); + assertEquals( "pom", facet.getType() ); + } + + @Test + public void testGetArtifactMetadataSnapshots() + throws Exception + { + Collection<ArtifactMetadata> testArtifacts = storage.readArtifactsMetadata( + new ReadMetadataRequest( TEST_REPO_ID, "com.example.test", "test-artifact", "1.0-SNAPSHOT", ALL ) ); + List<ArtifactMetadata> artifacts = new ArrayList<>( testArtifacts ); + Collections.sort( artifacts, new Comparator<ArtifactMetadata>() + { + @Override + public int compare( ArtifactMetadata o1, ArtifactMetadata o2 ) + { + return o1.getId().compareTo( o2.getId() ); + } + } ); + + assertEquals( 6, artifacts.size() ); + + ArtifactMetadata artifactMetadata = artifacts.get( 0 ); + assertEquals( "test-artifact-1.0-20100308.230825-1.jar", artifactMetadata.getId() ); + MavenArtifactFacet facet = (MavenArtifactFacet) artifactMetadata.getFacet( MavenArtifactFacet.FACET_ID ); + assertEquals( 1, facet.getBuildNumber() ); + assertEquals( "20100308.230825", facet.getTimestamp() ); + assertNull( facet.getClassifier() ); + assertEquals( "jar", facet.getType() ); + + artifactMetadata = artifacts.get( 1 ); + assertEquals( "test-artifact-1.0-20100308.230825-1.pom", artifactMetadata.getId() ); + facet = (MavenArtifactFacet) artifactMetadata.getFacet( MavenArtifactFacet.FACET_ID ); + assertEquals( 1, facet.getBuildNumber() ); + assertEquals( "20100308.230825", facet.getTimestamp() ); + assertNull( facet.getClassifier() ); + assertEquals( "pom", facet.getType() ); + + artifactMetadata = artifacts.get( 2 ); + assertEquals( "test-artifact-1.0-20100310.014828-2-javadoc.jar", artifactMetadata.getId() ); + facet = (MavenArtifactFacet) artifactMetadata.getFacet( MavenArtifactFacet.FACET_ID ); + assertEquals( 2, facet.getBuildNumber() ); + assertEquals( "20100310.014828", facet.getTimestamp() ); + assertEquals( "javadoc", facet.getClassifier() ); + assertEquals( "javadoc", facet.getType() ); + + artifactMetadata = artifacts.get( 3 ); + assertEquals( "test-artifact-1.0-20100310.014828-2-sources.jar", artifactMetadata.getId() ); + facet = (MavenArtifactFacet) artifactMetadata.getFacet( MavenArtifactFacet.FACET_ID ); + assertEquals( 2, facet.getBuildNumber() ); + assertEquals( "20100310.014828", facet.getTimestamp() ); + assertEquals( "sources", facet.getClassifier() ); + assertEquals( "java-source", facet.getType() ); + + artifactMetadata = artifacts.get( 4 ); + assertEquals( "test-artifact-1.0-20100310.014828-2.jar", artifactMetadata.getId() ); + facet = (MavenArtifactFacet) artifactMetadata.getFacet( MavenArtifactFacet.FACET_ID ); + assertEquals( 2, facet.getBuildNumber() ); + assertEquals( "20100310.014828", facet.getTimestamp() ); + assertNull( facet.getClassifier() ); + assertEquals( "jar", facet.getType() ); + + artifactMetadata = artifacts.get( 5 ); + assertEquals( "test-artifact-1.0-20100310.014828-2.pom", artifactMetadata.getId() ); + facet = (MavenArtifactFacet) artifactMetadata.getFacet( MavenArtifactFacet.FACET_ID ); + assertEquals( 2, facet.getBuildNumber() ); + assertEquals( "20100310.014828", facet.getTimestamp() ); + assertNull( facet.getClassifier() ); + assertEquals( "pom", facet.getType() ); + } + + @Test + public void testGetArtifactMetadataSnapshotsMRM1859() + throws Exception + { + Path repoDir = Paths.get("target/test-repository/com/example/test/test-artifact/1.0-SNAPSHOT"); + URL url = Thread.currentThread().getContextClassLoader().getResource("resolver-status.properties"); + Path resFile = Paths.get(url.toURI()); + Path destFile = repoDir.resolve(resFile.getFileName()); + Files.copy(resFile, destFile, StandardCopyOption.REPLACE_EXISTING); + URL url2 = Thread.currentThread().getContextClassLoader().getResource("test01.properties"); + Path resFile2 = Paths.get(url2.toURI()); + Path destFile2 = repoDir.resolve(resFile2.getFileName()); + Files.copy(resFile2, destFile2, StandardCopyOption.REPLACE_EXISTING); + + try { + + + Collection<ArtifactMetadata> testArtifacts = storage.readArtifactsMetadata( + new ReadMetadataRequest(TEST_REPO_ID, "com.example.test", "test-artifact", "1.0-SNAPSHOT", ALL)); + List<ArtifactMetadata> artifacts = new ArrayList<>(testArtifacts); + Collections.sort(artifacts, new Comparator<ArtifactMetadata>() { + @Override + public int compare(ArtifactMetadata o1, ArtifactMetadata o2) { + return o1.getId().compareTo(o2.getId()); + } + }); + + assertEquals(6, artifacts.size()); + + ArtifactMetadata artifactMetadata = artifacts.get(0); + assertEquals("test-artifact-1.0-20100308.230825-1.jar", artifactMetadata.getId()); + MavenArtifactFacet facet = (MavenArtifactFacet) artifactMetadata.getFacet(MavenArtifactFacet.FACET_ID); + assertEquals(1, facet.getBuildNumber()); + assertEquals("20100308.230825", facet.getTimestamp()); + assertNull(facet.getClassifier()); + assertEquals("jar", facet.getType()); + + artifactMetadata = artifacts.get(1); + assertEquals("test-artifact-1.0-20100308.230825-1.pom", artifactMetadata.getId()); + facet = (MavenArtifactFacet) artifactMetadata.getFacet(MavenArtifactFacet.FACET_ID); + assertEquals(1, facet.getBuildNumber()); + assertEquals("20100308.230825", facet.getTimestamp()); + assertNull(facet.getClassifier()); + assertEquals("pom", facet.getType()); + + artifactMetadata = artifacts.get(2); + assertEquals("test-artifact-1.0-20100310.014828-2-javadoc.jar", artifactMetadata.getId()); + facet = (MavenArtifactFacet) artifactMetadata.getFacet(MavenArtifactFacet.FACET_ID); + assertEquals(2, facet.getBuildNumber()); + assertEquals("20100310.014828", facet.getTimestamp()); + assertEquals("javadoc", facet.getClassifier()); + assertEquals("javadoc", facet.getType()); + + artifactMetadata = artifacts.get(3); + assertEquals("test-artifact-1.0-20100310.014828-2-sources.jar", artifactMetadata.getId()); + facet = (MavenArtifactFacet) artifactMetadata.getFacet(MavenArtifactFacet.FACET_ID); + assertEquals(2, facet.getBuildNumber()); + assertEquals("20100310.014828", facet.getTimestamp()); + assertEquals("sources", facet.getClassifier()); + assertEquals("java-source", facet.getType()); + + artifactMetadata = artifacts.get(4); + assertEquals("test-artifact-1.0-20100310.014828-2.jar", artifactMetadata.getId()); + facet = (MavenArtifactFacet) artifactMetadata.getFacet(MavenArtifactFacet.FACET_ID); + assertEquals(2, facet.getBuildNumber()); + assertEquals("20100310.014828", facet.getTimestamp()); + assertNull(facet.getClassifier()); + assertEquals("jar", facet.getType()); + + artifactMetadata = artifacts.get(5); + assertEquals("test-artifact-1.0-20100310.014828-2.pom", artifactMetadata.getId()); + facet = (MavenArtifactFacet) artifactMetadata.getFacet(MavenArtifactFacet.FACET_ID); + assertEquals(2, facet.getBuildNumber()); + assertEquals("20100310.014828", facet.getTimestamp()); + assertNull(facet.getClassifier()); + assertEquals("pom", facet.getType()); + + } finally { + Files.delete(destFile); + Files.delete(destFile2); + } + + } + + private void assertDependency( Dependency dependency, String groupId, String artifactId, String version ) + { + assertDependency( dependency, groupId, artifactId, version, "compile" ); + } + + private void assertDependency( Dependency dependency, String groupId, String artifactId, String version, + String scope ) + { + assertEquals( artifactId, dependency.getArtifactId() ); + assertEquals( "jar", dependency.getType() ); + assertEquals( version, dependency.getVersion() ); + assertEquals( groupId, dependency.getGroupId() ); + assertEquals( scope, dependency.getScope() ); + assertNull( dependency.getClassifier() ); + assertNull( dependency.getSystemPath() ); + } + + @Test + public void testGetProjectVersionMetadataForTimestampedSnapshot() + throws Exception + { + ProjectVersionMetadata metadata = storage.readProjectVersionMetadata( + new ReadMetadataRequest( TEST_REPO_ID, "org.apache", "apache", "5-SNAPSHOT" ) ); + MavenProjectFacet facet = MavenProjectFacet.class.cast( metadata.getFacet( MavenProjectFacet.FACET_ID ) ); + assertEquals( "pom", facet.getPackaging() ); + assertEquals( "http://www.apache.org/", metadata.getUrl() ); + assertNull( facet.getParent() ); + assertEquals( "org.apache", facet.getGroupId() ); + assertEquals( "apache", facet.getArtifactId() ); + assertNull( metadata.getCiManagement() ); + assertNotNull( metadata.getDescription() ); + // TODO: this would be better +// assertEquals( +// "The Apache Software Foundation provides support for the Apache community of open-source software projects. " + +// "The Apache projects are characterized by a collaborative, consensus based development process, an open " + +// "and pragmatic software license, and a desire to create high quality software that leads the way in its " + +// "field. We consider ourselves not simply a group of projects sharing a server, but rather a community of " + +// "developers and users.", metadata.getDescription() ); + assertEquals( "5-SNAPSHOT", metadata.getId() ); + assertNull( metadata.getIssueManagement() ); + checkApacheLicense( metadata ); + assertEquals( "The Apache Software Foundation", metadata.getName() ); + String path = "maven/pom/trunk/asf"; + assertEquals( ASF_SCM_CONN_BASE + path, metadata.getScm().getConnection() ); + assertEquals( ASF_SCM_DEV_CONN_BASE + path, metadata.getScm().getDeveloperConnection() ); + assertEquals( ASF_SCM_VIEWVC_BASE + path, metadata.getScm().getUrl() ); + checkOrganizationApache( metadata ); + assertEquals( 1, metadata.getMailingLists().size() ); + assertMailingList( metadata.getMailingLists().get( 0 ), "Apache Announce List", + "http://mail-archives.apache.org/mod_mbox/www-announce/", "announce@apache.org", + "announce-subscribe@apache.org", "announce-unsubscribe@apache.org", + Collections.<String>emptyList(), true ); + assertEquals( Collections.<Dependency>emptyList(), metadata.getDependencies() ); + } + + @Test + public void testGetProjectVersionMetadataForTimestampedSnapshotMissingMetadata() + throws Exception + { + try + { + storage.readProjectVersionMetadata( + new ReadMetadataRequest( TEST_REPO_ID, "com.example.test", "missing-metadata", "1.0-SNAPSHOT" ) ); + fail( "Should not be found" ); + } + catch ( RepositoryStorageMetadataNotFoundException e ) + { + assertEquals( "missing-pom", e.getId() ); + } + } + + @Test + public void testGetProjectVersionMetadataForTimestampedSnapshotMalformedMetadata() + throws Exception + { + try + { + storage.readProjectVersionMetadata( + new ReadMetadataRequest( TEST_REPO_ID, "com.example.test", "malformed-metadata", "1.0-SNAPSHOT" ) ); + fail( "Should not be found" ); + } + catch ( RepositoryStorageMetadataNotFoundException e ) + { + assertEquals( "missing-pom", e.getId() ); + } + } + + @Test + public void testGetProjectVersionMetadataForTimestampedSnapshotIncompleteMetadata() + throws Exception + { + try + { + storage.readProjectVersionMetadata( + new ReadMetadataRequest( TEST_REPO_ID, "com.example.test", "incomplete-metadata", "1.0-SNAPSHOT" ) ); + fail( "Should not be found" ); + } + catch ( RepositoryStorageMetadataNotFoundException e ) + { + assertEquals( "missing-pom", e.getId() ); + } + } + + @Test + public void testGetProjectVersionMetadataForInvalidPom() + throws Exception + { + try + { + storage.readProjectVersionMetadata( + new ReadMetadataRequest( TEST_REPO_ID, "com.example.test", "invalid-pom", "1.0" ) ); + fail( "Should have received an exception due to invalid POM" ); + } + catch ( RepositoryStorageMetadataInvalidException e ) + { + assertEquals( "invalid-pom", e.getId() ); + } + } + + @Test + public void testGetProjectVersionMetadataForMislocatedPom() + throws Exception + { + try + { + storage.readProjectVersionMetadata( + new ReadMetadataRequest( TEST_REPO_ID, "com.example.test", "mislocated-pom", "1.0" ) ); + fail( "Should have received an exception due to mislocated POM" ); + } + catch ( RepositoryStorageMetadataInvalidException e ) + { + assertEquals( "mislocated-pom", e.getId() ); + } + } + + @Test + public void testGetProjectVersionMetadataForMissingPom() + throws Exception + { + try + { + storage.readProjectVersionMetadata( + new ReadMetadataRequest( TEST_REPO_ID, "com.example.test", "missing-pom", "1.0" ) ); + fail( "Should not be found" ); + } + catch ( RepositoryStorageMetadataNotFoundException e ) + { + assertEquals( "missing-pom", e.getId() ); + } + } + + @Test + public void testGetRootNamespaces() + throws Exception + { + assertEquals( Arrays.asList( "com", "org"), storage.listRootNamespaces( TEST_REPO_ID, ALL ) ); + } + + @Test + public void testGetNamespaces() + throws Exception + { + assertEquals( Arrays.asList( "example" ), storage.listNamespaces( TEST_REPO_ID, "com", ALL ) ); + assertEquals( Arrays.asList( "test" ), storage.listNamespaces( TEST_REPO_ID, "com.example", ALL ) ); + assertEquals( Collections.<String>emptyList(), + storage.listNamespaces( TEST_REPO_ID, "com.example.test", ALL ) ); + + assertEquals( Arrays.asList( "apache", "codehaus" ), storage.listNamespaces( TEST_REPO_ID, "org", ALL ) ); + assertEquals( Arrays.asList( "archiva", "maven" ), storage.listNamespaces( TEST_REPO_ID, "org.apache", ALL ) ); + assertEquals( Collections.<String>emptyList(), + storage.listNamespaces( TEST_REPO_ID, "org.apache.archiva", ALL ) ); + assertEquals( Arrays.asList( "plugins", "shared" ), + storage.listNamespaces( TEST_REPO_ID, "org.apache.maven", ALL ) ); + assertEquals( Collections.<String>emptyList(), + storage.listNamespaces( TEST_REPO_ID, "org.apache.maven.plugins", ALL ) ); + assertEquals( Collections.<String>emptyList(), + storage.listNamespaces( TEST_REPO_ID, "org.apache.maven.shared", ALL ) ); + + assertEquals( Arrays.asList( "plexus" ), storage.listNamespaces( TEST_REPO_ID, "org.codehaus", ALL ) ); + assertEquals( Collections.<String>emptyList(), + storage.listNamespaces( TEST_REPO_ID, "org.codehaus.plexus", ALL ) ); + } + + @Test + public void testGetProjects() + throws Exception + { + assertEquals( Collections.<String>emptyList(), storage.listProjects( TEST_REPO_ID, "com", ALL ) ); + assertEquals( Collections.<String>emptyList(), storage.listProjects( TEST_REPO_ID, "com.example", ALL ) ); + assertEquals( Arrays.asList( "incomplete-metadata", "invalid-pom", "malformed-metadata", "mislocated-pom", + "missing-metadata", "missing-parent", "test-artifact" ), + storage.listProjects( TEST_REPO_ID, "com.example.test", ALL ) ); + + assertEquals( Collections.<String>emptyList(), storage.listProjects( TEST_REPO_ID, "org", ALL ) ); + assertEquals( Arrays.asList( "apache" ), storage.listProjects( TEST_REPO_ID, "org.apache", ALL ) ); + assertEquals( Arrays.asList( "archiva", "archiva-base", "archiva-common", "archiva-modules", "archiva-parent" ), + storage.listProjects( TEST_REPO_ID, "org.apache.archiva", ALL ) ); + assertEquals( Arrays.asList( "maven-archiver", "maven-parent" ), + storage.listProjects( TEST_REPO_ID, "org.apache.maven", ALL ) ); + assertEquals( Collections.<String>emptyList(), + storage.listProjects( TEST_REPO_ID, "org.apache.maven.plugins", ALL ) ); + assertEquals( Arrays.asList( "maven-downloader", "maven-shared-components" ), + storage.listProjects( TEST_REPO_ID, "org.apache.maven.shared", ALL ) ); + } + + @Test + public void testGetProjectVersions() + throws Exception + { + assertEquals( Arrays.asList( "1.0-SNAPSHOT" ), + storage.listProjectVersions( TEST_REPO_ID, "com.example.test", "incomplete-metadata", ALL ) ); + assertEquals( Arrays.asList( "1.0-SNAPSHOT" ), + storage.listProjectVersions( TEST_REPO_ID, "com.example.test", "malformed-metadata", ALL ) ); + assertEquals( Arrays.asList( "1.0-SNAPSHOT" ), + storage.listProjectVersions( TEST_REPO_ID, "com.example.test", "missing-metadata", ALL ) ); + assertEquals( Arrays.asList( "1.0" ), + storage.listProjectVersions( TEST_REPO_ID, "com.example.test", "invalid-pom", ALL ) ); + + assertEquals( Arrays.asList( "4", "5-SNAPSHOT", "7" ), + storage.listProjectVersions( TEST_REPO_ID, "org.apache", "apache", ALL ) ); + + assertEquals( Arrays.asList( "1.2.1", "1.2.2" ), + storage.listProjectVersions( TEST_REPO_ID, "org.apache.archiva", "archiva", ALL ) ); + assertEquals( Arrays.asList( "1.2.1" ), + storage.listProjectVersions( TEST_REPO_ID, "org.apache.archiva", "archiva-base", ALL ) ); + assertEquals( Arrays.asList( "1.2.1" ), + storage.listProjectVersions( TEST_REPO_ID, "org.apache.archiva", "archiva-common", ALL ) ); + assertEquals( Arrays.asList( "1.2.1" ), + storage.listProjectVersions( TEST_REPO_ID, "org.apache.archiva", "archiva-modules", ALL ) ); + assertEquals( Arrays.asList( "3" ), + storage.listProjectVersions( TEST_REPO_ID, "org.apache.archiva", "archiva-parent", ALL ) ); + + assertEquals( Collections.<String>emptyList(), + storage.listProjectVersions( TEST_REPO_ID, "org.apache.maven.shared", "maven-downloader", ALL ) ); + } + + @Test + public void testGetArtifacts() + throws Exception + { + List<ArtifactMetadata> artifacts = new ArrayList<>( storage.readArtifactsMetadata( + new ReadMetadataRequest( TEST_REPO_ID, "org.codehaus.plexus", "plexus-spring", "1.2", ALL ) ) ); + assertEquals( 3, artifacts.size() ); + Collections.sort( artifacts, new Comparator<ArtifactMetadata>() + { + @Override + public int compare( ArtifactMetadata o1, ArtifactMetadata o2 ) + { + return o1.getId().compareTo( o2.getId() ); + } + } ); + + assertArtifact( artifacts.get( 0 ), "plexus-spring-1.2-sources.jar", 0, EMPTY_SHA1, EMPTY_MD5 ); + assertArtifact( artifacts.get( 1 ), "plexus-spring-1.2.jar", 0, EMPTY_SHA1, EMPTY_MD5 ); + assertArtifact( artifacts.get( 2 ), "plexus-spring-1.2.pom", 7407, "96b14cf880e384b2d15e8193c57b65c5420ca4c5", + "f83aa25f016212a551a4b2249985effc" ); + } + + @Test + public void testGetArtifactsFiltered() + throws Exception + { + ExcludesFilter<String> filter = + new ExcludesFilter<String>( Collections.singletonList( "plexus-spring-1.2.pom" ) ); + List<ArtifactMetadata> artifacts = new ArrayList<>( storage.readArtifactsMetadata( + new ReadMetadataRequest( TEST_REPO_ID, "org.codehaus.plexus", "plexus-spring", "1.2", filter ) ) ); + assertEquals( 2, artifacts.size() ); + Collections.sort( artifacts, new Comparator<ArtifactMetadata>() + { + @Override + public int compare( ArtifactMetadata o1, ArtifactMetadata o2 ) + { + return o1.getId().compareTo( o2.getId() ); + } + } ); + + assertArtifact( artifacts.get( 0 ), "plexus-spring-1.2-sources.jar", 0, EMPTY_SHA1, EMPTY_MD5 ); + assertArtifact( artifacts.get( 1 ), "plexus-spring-1.2.jar", 0, EMPTY_SHA1, EMPTY_MD5 ); + } + + @Test + public void testGetArtifactsTimestampedSnapshots() + throws Exception + { + List<ArtifactMetadata> artifacts = new ArrayList<ArtifactMetadata>( storage.readArtifactsMetadata( + new ReadMetadataRequest( TEST_REPO_ID, "com.example.test", "missing-metadata", "1.0-SNAPSHOT", ALL ) ) ); + assertEquals( 1, artifacts.size() ); + + ArtifactMetadata artifact = artifacts.get( 0 ); + assertEquals( "missing-metadata-1.0-20091101.112233-1.pom", artifact.getId() ); + assertEquals( "com.example.test", artifact.getNamespace() ); + assertEquals( "missing-metadata", artifact.getProject() ); + assertEquals( "1.0-20091101.112233-1", artifact.getVersion() ); + assertEquals( TEST_REPO_ID, artifact.getRepositoryId() ); + } + + private void assertArtifact( ArtifactMetadata artifact, String id, int size, String sha1, String md5 ) + { + assertEquals( id, artifact.getId() ); + assertEquals( md5, artifact.getMd5() ); + assertEquals( sha1, artifact.getSha1() ); + assertEquals( size, artifact.getSize() ); + assertEquals( "org.codehaus.plexus", artifact.getNamespace() ); + assertEquals( "plexus-spring", artifact.getProject() ); + assertEquals( "1.2", artifact.getVersion() ); + assertEquals( TEST_REPO_ID, artifact.getRepositoryId() ); + } + + private void assertMailingList( MailingList mailingList, String name, String archive, String post, String subscribe, + String unsubscribe, List<String> otherArchives, boolean allowPost ) + { + assertEquals( archive, mailingList.getMainArchiveUrl() ); + if ( allowPost ) + { + assertEquals( post, mailingList.getPostAddress() ); + } + else + { + assertNull( mailingList.getPostAddress() ); + } + assertEquals( subscribe, mailingList.getSubscribeAddress() ); + assertEquals( unsubscribe, mailingList.getUnsubscribeAddress() ); + assertEquals( name, mailingList.getName() ); + assertEquals( otherArchives, mailingList.getOtherArchives() ); + } + + private void assertMailingList( String prefix, MailingList mailingList, String name, boolean allowPost, + String nabbleUrl ) + { + List<String> otherArchives = new ArrayList<>(); + otherArchives.add( "http://www.mail-archive.com/" + prefix + "@archiva.apache.org" ); + if ( nabbleUrl != null ) + { + otherArchives.add( nabbleUrl ); + } + otherArchives.add( "http://markmail.org/list/org.apache.archiva." + prefix ); + assertMailingList( mailingList, name, "http://mail-archives.apache.org/mod_mbox/archiva-" + prefix + "/", + prefix + "@archiva.apache.org", prefix + "-subscribe@archiva.apache.org", + prefix + "-unsubscribe@archiva.apache.org", otherArchives, allowPost ); + } + + private void checkApacheLicense( ProjectVersionMetadata metadata ) + { + assertEquals( Arrays.asList( new License( "The Apache Software License, Version 2.0", + "http://www.apache.org/licenses/LICENSE-2.0.txt" ) ), + metadata.getLicenses() ); + } + + private void checkOrganizationApache( ProjectVersionMetadata metadata ) + { + assertEquals( "The Apache Software Foundation", metadata.getOrganization().getName() ); + assertEquals( "http://www.apache.org/", metadata.getOrganization().getUrl() ); + } + + private void deleteTestArtifactWithParent( List<String> pathsToBeDeleted ) + throws IOException + { + for ( String path : pathsToBeDeleted ) + { + Path dir = Paths.get( org.apache.archiva.common.utils.FileUtils.getBasedir(), path ); + org.apache.archiva.common.utils.FileUtils.deleteDirectory( dir ); + + assertFalse( Files.exists(dir) ); + } + Path dest = Paths.get( org.apache.archiva.common.utils.FileUtils.getBasedir(), "target/test-repository/com/example/test/test-artifact-module-a" ); + Path parentPom = + Paths.get( org.apache.archiva.common.utils.FileUtils.getBasedir(), "target/test-repository/com/example/test/test-artifact-parent" ); + Path rootPom = Paths.get( org.apache.archiva.common.utils.FileUtils.getBasedir(), "target/test-repository/com/example/test/test-artifact-root" ); + + org.apache.archiva.common.utils.FileUtils.deleteDirectory( dest ); + org.apache.archiva.common.utils.FileUtils.deleteDirectory( parentPom ); + org.apache.archiva.common.utils.FileUtils.deleteDirectory( rootPom ); + + assertFalse( Files.exists(dest) ); + assertFalse( Files.exists(parentPom) ); + assertFalse( Files.exists(rootPom) ); + } + + private Path copyTestArtifactWithParent( String srcPath, String destPath ) + throws IOException + { + Path src = Paths.get( org.apache.archiva.common.utils.FileUtils.getBasedir(), srcPath ); + Path dest = Paths.get( org.apache.archiva.common.utils.FileUtils.getBasedir(), destPath ); + + FileUtils.copyDirectory( src.toFile(), dest.toFile() ); + assertTrue( Files.exists(dest) ); + return dest; + } + +} diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/MavenRepositoryMetadataReaderTest.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/MavenRepositoryMetadataReaderTest.java new file mode 100644 index 000000000..e2fec5010 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/MavenRepositoryMetadataReaderTest.java @@ -0,0 +1,128 @@ +package org.apache.archiva.metadata.repository.storage.maven2; + +/* + * 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 junit.framework.TestCase; +import org.apache.archiva.maven2.metadata.MavenMetadataReader; +import org.apache.archiva.model.ArchivaRepositoryMetadata; +import org.apache.archiva.model.Plugin; +import org.apache.archiva.test.utils.ArchivaBlockJUnit4ClassRunner; +import org.apache.archiva.xml.XMLException; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; + +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.Arrays; + +/** + * RepositoryMetadataReaderTest + * + * + */ +@RunWith( ArchivaBlockJUnit4ClassRunner.class ) +public class MavenRepositoryMetadataReaderTest + extends TestCase +{ + private Path defaultRepoDir; + + @Test + public void testGroupMetadata() + throws XMLException + { + Path metadataFile = defaultRepoDir.resolve( "org/apache/maven/plugins/maven-metadata.xml" ); + + ArchivaRepositoryMetadata metadata = MavenMetadataReader.read( metadataFile ); + + assertNotNull( metadata ); + assertEquals( "org.apache.maven.plugins", metadata.getGroupId() ); + assertNull( metadata.getArtifactId() ); + assertNull( metadata.getReleasedVersion() ); + assertNull( metadata.getLatestVersion() ); + assertTrue( metadata.getAvailableVersions().isEmpty() ); + assertNull( metadata.getSnapshotVersion() ); + assertNull( metadata.getLastUpdated() ); + + Plugin cleanPlugin = new Plugin(); + cleanPlugin.setPrefix( "clean" ); + cleanPlugin.setArtifactId( "maven-clean-plugin" ); + cleanPlugin.setName( "Maven Clean Plugin" ); + + Plugin compilerPlugin = new Plugin(); + compilerPlugin.setPrefix( "compiler" ); + compilerPlugin.setArtifactId( "maven-compiler-plugin" ); + compilerPlugin.setName( "Maven Compiler Plugin" ); + + Plugin surefirePlugin = new Plugin(); + surefirePlugin.setPrefix( "surefire" ); + surefirePlugin.setArtifactId( "maven-surefire-plugin" ); + surefirePlugin.setName( "Maven Surefire Plugin" ); + + assertEquals( Arrays.asList( cleanPlugin, compilerPlugin, surefirePlugin ), metadata.getPlugins() ); + } + + @Test + public void testProjectMetadata() + throws XMLException + { + Path metadataFile = defaultRepoDir.resolve( "org/apache/maven/shared/maven-downloader/maven-metadata.xml" ); + + ArchivaRepositoryMetadata metadata = MavenMetadataReader.read( metadataFile); + + assertNotNull( metadata ); + assertEquals( "org.apache.maven.shared", metadata.getGroupId() ); + assertEquals( "maven-downloader", metadata.getArtifactId() ); + assertEquals( "1.1", metadata.getReleasedVersion() ); + assertNull( metadata.getLatestVersion() ); + assertEquals( Arrays.asList( "1.0", "1.1" ), metadata.getAvailableVersions() ); + assertNull( metadata.getSnapshotVersion() ); + assertEquals( "20061212214311", metadata.getLastUpdated() ); + } + + @Test + public void testProjectVersionMetadata() + throws XMLException + { + Path metadataFile = defaultRepoDir.resolve( "org/apache/apache/5-SNAPSHOT/maven-metadata.xml" ); + + ArchivaRepositoryMetadata metadata = MavenMetadataReader.read( metadataFile ); + + assertNotNull( metadata ); + assertEquals( "org.apache", metadata.getGroupId() ); + assertEquals( "apache", metadata.getArtifactId() ); + assertNull( metadata.getReleasedVersion() ); + assertNull( metadata.getLatestVersion() ); + assertTrue( metadata.getAvailableVersions().isEmpty() ); + assertNotNull( metadata.getSnapshotVersion() ); + assertEquals( "20080801.151215", metadata.getSnapshotVersion().getTimestamp() ); + assertEquals( 1, metadata.getSnapshotVersion().getBuildNumber() ); + assertEquals( "20080801151215", metadata.getLastUpdated() ); + } + + @Before + @Override + public void setUp() + throws Exception + { + super.setUp(); + defaultRepoDir = Paths.get("target/test-repository"); + } +}
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/MockWagon.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/MockWagon.java new file mode 100644 index 000000000..f28f77798 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/MockWagon.java @@ -0,0 +1,248 @@ +package org.apache.archiva.metadata.repository.storage.maven2; + +/* + * 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.io.FileUtils; +import org.apache.maven.wagon.ConnectionException; +import org.apache.maven.wagon.ResourceDoesNotExistException; +import org.apache.maven.wagon.TransferFailedException; +import org.apache.maven.wagon.Wagon; +import org.apache.maven.wagon.authentication.AuthenticationException; +import org.apache.maven.wagon.authentication.AuthenticationInfo; +import org.apache.maven.wagon.authorization.AuthorizationException; +import org.apache.maven.wagon.events.SessionListener; +import org.apache.maven.wagon.events.TransferListener; +import org.apache.maven.wagon.proxy.ProxyInfo; +import org.apache.maven.wagon.proxy.ProxyInfoProvider; +import org.apache.maven.wagon.repository.Repository; + +import java.io.File; +import java.io.IOException; +import java.util.List; + +public class MockWagon + implements Wagon +{ + @Override + public void get( String s, File file ) + throws TransferFailedException, ResourceDoesNotExistException, AuthorizationException + { + String sourceFile = getBasedir() + "/src/test/resources/" + s; + + try + { + FileUtils.copyFile( new File( sourceFile ), file ); + assert( file.exists() ); + } + catch( IOException e ) + { + throw new ResourceDoesNotExistException( e.getMessage() ); + } + } + + @Override + public boolean getIfNewer( String s, File file, long l ) + throws TransferFailedException, ResourceDoesNotExistException, AuthorizationException + { + return false; + } + + @Override + public void put( File file, String s ) + throws TransferFailedException, ResourceDoesNotExistException, AuthorizationException + { + + } + + @Override + public void putDirectory( File file, String s ) + throws TransferFailedException, ResourceDoesNotExistException, AuthorizationException + { + + } + + @Override + public boolean resourceExists( String s ) + throws TransferFailedException, AuthorizationException + { + return false; + } + + @Override + public List<String> getFileList( String s ) + throws TransferFailedException, ResourceDoesNotExistException, AuthorizationException + { + return null; + } + + @Override + public boolean supportsDirectoryCopy() + { + return false; + } + + @Override + public Repository getRepository() + { + return null; + } + + @Override + public void connect( Repository repository ) + throws ConnectionException, AuthenticationException + { + + } + + @Override + public void connect( Repository repository, ProxyInfo proxyInfo ) + throws ConnectionException, AuthenticationException + { + + } + + @Override + public void connect( Repository repository, ProxyInfoProvider proxyInfoProvider ) + throws ConnectionException, AuthenticationException + { + + } + + @Override + public void connect( Repository repository, AuthenticationInfo authenticationInfo ) + throws ConnectionException, AuthenticationException + { + + } + + @Override + public void connect( Repository repository, AuthenticationInfo authenticationInfo, ProxyInfo proxyInfo ) + throws ConnectionException, AuthenticationException + { + + } + + @Override + public void connect( Repository repository, AuthenticationInfo authenticationInfo, + ProxyInfoProvider proxyInfoProvider ) + throws ConnectionException, AuthenticationException + { + + } + + @Deprecated + @Override + public void openConnection() + throws ConnectionException, AuthenticationException + { + + } + + @Override + public void disconnect() + throws ConnectionException + { + + } + + @Override + public void setTimeout( int i ) + { + + } + + @Override + public int getTimeout() + { + return 0; + } + + @Override + public void setReadTimeout( int timeoutValue ) + { + + } + + @Override + public int getReadTimeout() + { + return 0; + } + + @Override + public void addSessionListener( SessionListener sessionListener ) + { + + } + + @Override + public void removeSessionListener( SessionListener sessionListener ) + { + + } + + @Override + public boolean hasSessionListener( SessionListener sessionListener ) + { + return false; + } + + @Override + public void addTransferListener( TransferListener transferListener ) + { + + } + + @Override + public void removeTransferListener( TransferListener transferListener ) + { + + } + + @Override + public boolean hasTransferListener( TransferListener transferListener ) + { + return false; + } + + @Override + public boolean isInteractive() + { + return false; + } + + @Override + public void setInteractive( boolean b ) + { + + } + + public String getBasedir() + { + String basedir = System.getProperty( "basedir" ); + + if ( basedir == null ) + { + basedir = new File( "" ).getAbsolutePath(); + } + + return basedir; + } +} diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/RemoteDefaultRepositoryContentTest.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/RemoteDefaultRepositoryContentTest.java new file mode 100644 index 000000000..42a5b26a9 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/RemoteDefaultRepositoryContentTest.java @@ -0,0 +1,68 @@ +package org.apache.archiva.metadata.repository.storage.maven2; + +/* + * 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.archiva.model.ArtifactReference; +import org.apache.archiva.repository.LayoutException; +import org.apache.archiva.repository.RemoteRepository; +import org.apache.archiva.repository.RemoteRepositoryContent; +import org.apache.archiva.repository.content.maven2.RemoteDefaultRepositoryContent; +import org.junit.Before; + +import javax.inject.Inject; +import java.util.List; + +/** + * RemoteDefaultRepositoryContentTest + */ +public class RemoteDefaultRepositoryContentTest + extends AbstractDefaultRepositoryContentTestCase +{ + + @Inject + private List<? extends ArtifactMappingProvider> artifactMappingProviders; + + private RemoteRepositoryContent repoContent; + + @Before + public void setUp() + throws Exception + { + RemoteRepository repository = + createRemoteRepository( "testRemoteRepo", "Unit Test Remote Repo", "http://repo1.maven.org/maven2/" ); + + repoContent = new RemoteDefaultRepositoryContent(artifactMappingProviders); + //repoContent = (RemoteRepositoryContent) lookup( RemoteRepositoryContent.class, "default" ); + repoContent.setRepository( repository ); + } + + @Override + protected ArtifactReference toArtifactReference( String path ) + throws LayoutException + { + return repoContent.toArtifactReference( path ); + } + + @Override + protected String toPath( ArtifactReference reference ) + { + return repoContent.toPath( reference ); + } +} diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/conf/MockConfiguration.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/conf/MockConfiguration.java new file mode 100644 index 000000000..474d3dfe2 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/conf/MockConfiguration.java @@ -0,0 +1,170 @@ +package org.apache.archiva.metadata.repository.storage.maven2.conf; + +/* + * 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.archiva.configuration.ArchivaConfiguration; +import org.apache.archiva.configuration.Configuration; +import org.apache.archiva.configuration.ConfigurationListener; +import org.apache.archiva.redback.components.registry.Registry; +import org.apache.archiva.redback.components.registry.RegistryException; +import org.apache.archiva.redback.components.registry.RegistryListener; +import org.apache.commons.lang.StringUtils; +import org.easymock.IMocksControl; +import org.springframework.stereotype.Service; + +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.HashSet; +import java.util.List; +import java.util.Locale; +import java.util.Set; + +import static org.easymock.EasyMock.createNiceControl; + +/** + * MockConfiguration + * + * + */ +@Service("archivaConfiguration#mock") +public class MockConfiguration + implements ArchivaConfiguration +{ + + private Configuration configuration = new Configuration(); + + private Set<RegistryListener> registryListeners = new HashSet<RegistryListener>(); + private Set<ConfigurationListener> configListeners = new HashSet<ConfigurationListener>(); + + private IMocksControl registryControl; + + private Registry registryMock; + + public MockConfiguration() + { + registryControl = createNiceControl(); + registryMock = registryControl.createMock( Registry.class ); + } + + @Override + public void addChangeListener( RegistryListener listener ) + { + registryListeners.add( listener ); + } + + @Override + public void removeChangeListener( RegistryListener listener ) + { + registryListeners.remove( listener ); + } + + @Override + public Configuration getConfiguration() + { + return configuration; + } + + @Override + public void save( Configuration configuration ) + throws RegistryException + { + /* do nothing */ + } + + public void triggerChange( String name, String value ) + { + for(RegistryListener listener: registryListeners) + { + try + { + listener.afterConfigurationChange( registryMock, name, value ); + } + catch ( Exception e ) + { + e.printStackTrace(); + } + } + } + + @Override + public void addListener( ConfigurationListener listener ) + { + configListeners.add(listener); + } + + @Override + public void removeListener( ConfigurationListener listener ) + { + configListeners.remove( listener ); + } + + @Override + public boolean isDefaulted() + { + return false; + } + + @Override + public void reload() + { + // no op + } + + @Override + public Locale getDefaultLocale( ) + { + return Locale.getDefault(); + } + + @Override + public List<Locale.LanguageRange> getLanguagePriorities( ) + { + return Locale.LanguageRange.parse( "en,fr,de" ); + } + + @Override + public Path getAppServerBaseDir() { + if (System.getProperties().containsKey("appserver.base")) { + return Paths.get(System.getProperty("appserver.base")); + } else { + return Paths.get(""); + } + } + + + @Override + public Path getRepositoryBaseDir() { + return getDataDirectory().resolve("repositories"); + } + + @Override + public Path getRemoteRepositoryBaseDir() { + return getDataDirectory().resolve("remotes"); + } + + @Override + public Path getDataDirectory() { + if (configuration!=null && StringUtils.isNotEmpty(configuration.getArchivaRuntimeConfiguration().getDataDirectory())) { + return Paths.get(configuration.getArchivaRuntimeConfiguration().getDataDirectory()); + } else { + return getAppServerBaseDir().resolve("data"); + } + } +} diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/AbstractRepositoryLayerTestCase.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/AbstractRepositoryLayerTestCase.java new file mode 100644 index 000000000..0c2fdbd78 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/AbstractRepositoryLayerTestCase.java @@ -0,0 +1,94 @@ +package org.apache.archiva.repository; + +/* + * 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.archiva.repository.maven2.MavenManagedRepository; +import org.apache.archiva.repository.maven2.MavenRemoteRepository; +import org.apache.archiva.test.utils.ArchivaSpringJUnit4ClassRunner; +import org.junit.Rule; +import org.junit.rules.TestName; +import org.junit.runner.RunWith; +import org.springframework.context.ApplicationContext; +import org.springframework.test.context.ContextConfiguration; + +import javax.inject.Inject; +import java.net.URI; +import java.net.URISyntaxException; +import java.nio.file.Path; +import java.nio.file.Paths; + +/** + * AbstractRepositoryLayerTestCase + * + * + */ +@RunWith( ArchivaSpringJUnit4ClassRunner.class ) +@ContextConfiguration( { "classpath*:/META-INF/spring-context.xml", "classpath:/spring-context-no-mock-conf.xml" } ) +public abstract class AbstractRepositoryLayerTestCase +{ + @Rule + public TestName name = new TestName(); + + @Inject + protected ApplicationContext applicationContext; + + protected MavenManagedRepository createRepository( String id, String name, Path location ) + { + MavenManagedRepository repo = new MavenManagedRepository( id, name, location.getParent().toAbsolutePath()); + repo.setLocation( location.toAbsolutePath().toUri() ); + return repo; + } + + protected MavenRemoteRepository createRemoteRepository( String id, String name, String url ) throws URISyntaxException + { + MavenRemoteRepository repo = new MavenRemoteRepository(id, name, Paths.get("target/remotes")); + repo.setLocation( new URI( url ) ); + return repo; + } + + protected ManagedRepositoryContent createManagedRepositoryContent( String id, String name, Path location, + String layout ) + throws Exception + { + MavenManagedRepository repo = new MavenManagedRepository( id, name, location.getParent() ); + repo.setLocation( location.toAbsolutePath().toUri() ); + repo.setLayout( layout ); + + RepositoryContentProvider provider = applicationContext.getBean( "repositoryContentProvider#maven", RepositoryContentProvider.class ); + ManagedRepositoryContent repoContent = + provider.createManagedContent( repo ); + + return repoContent; + } + + protected RemoteRepositoryContent createRemoteRepositoryContent( String id, String name, String url, String layout ) + throws Exception + { + MavenRemoteRepository repo = new MavenRemoteRepository(id, name, Paths.get("target/remotes")); + repo.setLocation( new URI( url ) ); + repo.setLayout( layout ); + + RepositoryContentProvider provider = applicationContext.getBean( "repositoryContentProvider#maven", RepositoryContentProvider.class ); + RemoteRepositoryContent repoContent = + provider.createRemoteContent( repo ); + + return repoContent; + } +} diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/RepositoryURLTest.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/RepositoryURLTest.java new file mode 100644 index 000000000..08f79ff33 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/RepositoryURLTest.java @@ -0,0 +1,100 @@ +package org.apache.archiva.repository; + +/* + * 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 junit.framework.TestCase; +import org.apache.archiva.model.RepositoryURL; +import org.apache.archiva.test.utils.ArchivaBlockJUnit4ClassRunner; +import org.junit.Test; +import org.junit.runner.RunWith; + +import java.net.MalformedURLException; + +/** + * RepositoryURLTest + * + * + */ +@RunWith( ArchivaBlockJUnit4ClassRunner.class ) +public class RepositoryURLTest + extends TestCase +{ + private void assertURL( String actualURL, String protocol, String username, String password, String hostname, + String port, String path ) + { + RepositoryURL url = new RepositoryURL( actualURL ); + + assertEquals( protocol, url.getProtocol() ); + assertEquals( username, url.getUsername() ); + assertEquals( password, url.getPassword() ); + assertEquals( hostname, url.getHost() ); + assertEquals( port, url.getPort() ); + assertEquals( path, url.getPath() ); + } + + @Test + public void testProtocolHttp() + throws MalformedURLException + { + assertURL( "http://localhost/path/to/resource.txt", "http", null, null, "localhost", null, + "/path/to/resource.txt" ); + } + + @Test + public void testProtocolWagonWebdav() + throws MalformedURLException + { + assertURL( "dav:http://localhost/path/to/resource.txt", "dav:http", null, null, "localhost", null, + "/path/to/resource.txt" ); + } + + @Test + public void testProtocolHttpWithPort() + throws MalformedURLException + { + assertURL( "http://localhost:9090/path/to/resource.txt", "http", null, null, "localhost", "9090", + "/path/to/resource.txt" ); + } + + @Test + public void testProtocolHttpWithUsername() + throws MalformedURLException + { + assertURL( "http://user@localhost/path/to/resource.txt", "http", "user", null, "localhost", null, + "/path/to/resource.txt" ); + } + + @Test + public void testProtocolHttpWithUsernamePassword() + throws MalformedURLException + { + assertURL( "http://user:pass@localhost/path/to/resource.txt", "http", "user", "pass", "localhost", null, + "/path/to/resource.txt" ); + } + + @Test + public void testProtocolHttpWithUsernamePasswordPort() + throws MalformedURLException + { + assertURL( "http://user:pass@localhost:9090/path/to/resource.txt", "http", "user", "pass", "localhost", "9090", + "/path/to/resource.txt" ); + } +} diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/content/maven2/ArtifactExtensionMappingTest.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/content/maven2/ArtifactExtensionMappingTest.java new file mode 100644 index 000000000..ae72a66fb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/content/maven2/ArtifactExtensionMappingTest.java @@ -0,0 +1,83 @@ +package org.apache.archiva.repository.content.maven2; + +/* + * 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.archiva.metadata.model.ArtifactMetadata; +import org.apache.archiva.metadata.model.maven2.MavenArtifactFacet; +import org.apache.archiva.metadata.repository.storage.RepositoryPathTranslator; +import org.apache.archiva.metadata.repository.storage.maven2.ArtifactMappingProvider; +import org.apache.archiva.metadata.repository.storage.maven2.Maven2RepositoryPathTranslator; +import org.apache.archiva.test.utils.ArchivaSpringJUnit4ClassRunner; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.test.context.ContextConfiguration; + +import java.util.Collections; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; + +/** + * ArtifactExtensionMappingTest + * + * + */ +@RunWith ( ArchivaSpringJUnit4ClassRunner.class ) +@ContextConfiguration ( { "classpath*:/META-INF/spring-context.xml", "classpath:/spring-context.xml" } ) +public class ArtifactExtensionMappingTest +{ + private RepositoryPathTranslator pathTranslator = new Maven2RepositoryPathTranslator( + Collections.<ArtifactMappingProvider>emptyList() ); + + @Test + public void testIsMavenPlugin() + { + assertMavenPlugin( "maven-test-plugin" ); + assertMavenPlugin( "maven-clean-plugin" ); + assertMavenPlugin( "cobertura-maven-plugin" ); + assertMavenPlugin( "maven-project-info-reports-plugin" ); + assertMavenPlugin( "silly-name-for-a-maven-plugin" ); + + assertNotMavenPlugin( "maven-plugin-api" ); + assertNotMavenPlugin( "foo-lib" ); + assertNotMavenPlugin( "another-maven-plugin-api" ); + assertNotMavenPlugin( "secret-maven-plugin-2" ); + } + + private void assertMavenPlugin( String artifactId ) + { + assertEquals( "Should be detected as maven plugin: <" + artifactId + ">", "maven-plugin", getTypeFromArtifactId( + artifactId ) ); + } + + private String getTypeFromArtifactId( String artifactId ) + { + ArtifactMetadata artifact = pathTranslator.getArtifactFromId( null, "groupId", artifactId, "1.0", + artifactId + "-1.0.jar" ); + MavenArtifactFacet facet = (MavenArtifactFacet) artifact.getFacet( MavenArtifactFacet.FACET_ID ); + return facet.getType(); + } + + private void assertNotMavenPlugin( String artifactId ) + { + assertFalse( "Should NOT be detected as maven plugin: <" + artifactId + ">", "maven-plugin".equals( + getTypeFromArtifactId( artifactId ) ) ); + } +} diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/content/maven2/DefaultPathParserTest.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/content/maven2/DefaultPathParserTest.java new file mode 100644 index 000000000..f46dfa2d0 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/content/maven2/DefaultPathParserTest.java @@ -0,0 +1,572 @@ +package org.apache.archiva.repository.content.maven2; + +/* + * 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.archiva.model.ArtifactReference; +import org.apache.archiva.repository.LayoutException; +import org.apache.archiva.repository.content.PathParser; +import org.apache.archiva.test.utils.ArchivaSpringJUnit4ClassRunner; +import org.apache.commons.lang.StringUtils; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.test.context.ContextConfiguration; + +import static org.junit.Assert.*; + +/** + * DefaultPathParserTest + * + * TODO: move to path translator tests + * + * + */ +@RunWith ( ArchivaSpringJUnit4ClassRunner.class ) +@ContextConfiguration ( { "classpath*:/META-INF/spring-context.xml", "classpath:/spring-context.xml" } ) +public class DefaultPathParserTest +{ + private PathParser parser = new DefaultPathParser(); + + @Test + public void testBadPathMissingType() + { + // TODO: should we allow this instead? + assertBadPath( "invalid/invalid/1/invalid-1", "missing type" ); + } + + @Test + public void testBadPathReleaseInSnapshotDir() + { + assertBadPath( "invalid/invalid/1.0-SNAPSHOT/invalid-1.0.jar", + "non snapshot artifact inside of a snapshot dir" ); + } + + @Test + public void testBadPathTimestampedSnapshotNotInSnapshotDir() + { + assertBadPath( "invalid/invalid/1.0-20050611.123456-1/invalid-1.0-20050611.123456-1.jar", + "Timestamped Snapshot artifact not inside of an Snapshot dir" ); + } + + @Test + public void testBadPathTooShort() + { + assertBadPath( "invalid/invalid-1.0.jar", "path is too short" ); + } + + @Test + public void testBadPathVersionMismatchA() + { + assertBadPath( "invalid/invalid/1.0/invalid-2.0.jar", "version mismatch between path and artifact" ); + } + + @Test + public void testBadPathVersionMismatchB() + { + assertBadPath( "invalid/invalid/1.0/invalid-1.0b.jar", "version mismatch between path and artifact" ); + } + + @Test + public void testBadPathWrongArtifactId() + { + assertBadPath( "org/apache/maven/test/1.0-SNAPSHOT/wrong-artifactId-1.0-20050611.112233-1.jar", + "wrong artifact id" ); + } + + /** + * [MRM-481] Artifact requests with a .xml.zip extension fail with a 404 Error + */ + @Test + public void testGoodButDualExtensions() + throws LayoutException + { + String groupId = "org.project"; + String artifactId = "example-presentation"; + String version = "3.2"; + String classifier = null; + String type = "xml.zip"; + String path = "org/project/example-presentation/3.2/example-presentation-3.2.xml.zip"; + + assertLayout( path, groupId, artifactId, version, classifier, type ); + } + + @Test + public void testGoodButDualExtensionsWithClassifier() + throws LayoutException + { + String groupId = "org.project"; + String artifactId = "example-presentation"; + String version = "3.2"; + String classifier = "extras"; + String type = "xml.zip"; + String path = "org/project/example-presentation/3.2/example-presentation-3.2-extras.xml.zip"; + + assertLayout( path, groupId, artifactId, version, classifier, type ); + } + + @Test + public void testGoodButDualExtensionsTarGz() + throws LayoutException + { + String groupId = "org.project"; + String artifactId = "example-distribution"; + String version = "1.3"; + String classifier = null; + String type = "tar.gz"; // no longer using distribution-tgz / distribution-zip in maven 2 + String path = "org/project/example-distribution/1.3/example-distribution-1.3.tar.gz"; + + assertLayout( path, groupId, artifactId, version, classifier, type ); + } + + @Test + public void testGoodButDualExtensionsTarGzAndClassifier() + throws LayoutException + { + String groupId = "org.project"; + String artifactId = "example-distribution"; + String version = "1.3"; + String classifier = "bin"; + String type = "tar.gz"; // no longer using distribution-tgz / distribution-zip in maven 2 + String path = "org/project/example-distribution/1.3/example-distribution-1.3-bin.tar.gz"; + + assertLayout( path, groupId, artifactId, version, classifier, type ); + } + + /** + * [MRM-432] Oddball version spec. + * Example of an oddball / unusual version spec. + * + * @throws LayoutException + */ + @Test + public void testGoodButOddVersionSpecGanymedSsh2() + throws LayoutException + { + String groupId = "ch.ethz.ganymed"; + String artifactId = "ganymed-ssh2"; + String version = "build210"; + String classifier = null; + String type = "jar"; + String path = "ch/ethz/ganymed/ganymed-ssh2/build210/ganymed-ssh2-build210.jar"; + + assertLayout( path, groupId, artifactId, version, classifier, type ); + } + + /** + * [MRM-432] Oddball version spec. + * Example of an oddball / unusual version spec. + * + * @throws LayoutException + */ + @Test + public void testGoodButOddVersionSpecJavaxComm() + throws LayoutException + { + String groupId = "javax"; + String artifactId = "comm"; + String version = "3.0-u1"; + String classifier = null; + String type = "jar"; + String path = "javax/comm/3.0-u1/comm-3.0-u1.jar"; + + assertLayout( path, groupId, artifactId, version, classifier, type ); + } + + /** + * Test the ejb-client type spec. + * Type specs are not a 1 to 1 map to the extension. + * This tests that effect. + * @throws LayoutException + */ + /* TODO: Re-enabled in the future. + public void testGoodFooEjbClient() + throws LayoutException + { + String groupId = "com.foo"; + String artifactId = "foo-client"; + String version = "1.0"; + String classifier = null; + String type = "ejb-client"; // oddball type-spec (should result in jar extension) + String path = "com/foo/foo-client/1.0/foo-client-1.0.jar"; + + assertLayout( path, groupId, artifactId, version, classifier, type ); + } + */ + + /** + * [MRM-432] Oddball version spec. + * Example of an oddball / unusual version spec. + * + * @throws LayoutException + */ + @Test + public void testGoodButOddVersionSpecJavaxPersistence() + throws LayoutException + { + String groupId = "javax.persistence"; + String artifactId = "ejb"; + String version = "3.0-public_review"; + String classifier = null; + String type = "jar"; + String path = "javax/persistence/ejb/3.0-public_review/ejb-3.0-public_review.jar"; + + /* + * The version id of "public_review" can cause problems. is it part of + * the version spec? or the classifier? + * Since the path spec below shows it in the path, then it is really + * part of the version spec. + */ + + assertLayout( path, groupId, artifactId, version, classifier, type ); + } + + @Test + public void testGoodComFooTool() + throws LayoutException + { + String groupId = "com.foo"; + String artifactId = "foo-tool"; + String version = "1.0"; + String classifier = null; + String type = "jar"; + String path = "com/foo/foo-tool/1.0/foo-tool-1.0.jar"; + + assertLayout( path, groupId, artifactId, version, classifier, type ); + } + + @Test + public void testGoodCommonsLang() + throws LayoutException + { + String groupId = "commons-lang"; + String artifactId = "commons-lang"; + String version = "2.1"; + String classifier = null; + String type = "jar"; + String path = "commons-lang/commons-lang/2.1/commons-lang-2.1.jar"; + + assertLayout( path, groupId, artifactId, version, classifier, type ); + } + + @Test + public void testWindowsPathSeparator() + throws LayoutException + { + String groupId = "commons-lang"; + String artifactId = "commons-lang"; + String version = "2.1"; + String classifier = null; + String type = "jar"; + String path = "commons-lang\\commons-lang/2.1\\commons-lang-2.1.jar"; + + assertLayout( path, groupId, artifactId, version, classifier, type ); + } + + /** + * [MRM-486] Can not deploy artifact test.maven-arch:test-arch due to "No ArtifactID Detected" + */ + @Test + public void testGoodDashedArtifactId() + throws LayoutException + { + String groupId = "test.maven-arch"; + String artifactId = "test-arch"; + String version = "2.0.3-SNAPSHOT"; + String classifier = null; + String type = "pom"; + String path = "test/maven-arch/test-arch/2.0.3-SNAPSHOT/test-arch-2.0.3-SNAPSHOT.pom"; + + assertLayout( path, groupId, artifactId, version, classifier, type ); + } + + /** + * It may seem odd, but this is a valid artifact. + */ + @Test + public void testGoodDotNotationArtifactId() + throws LayoutException + { + String groupId = "com.company.department"; + String artifactId = "com.company.department"; + String version = "0.2"; + String classifier = null; + String type = "pom"; + String path = "com/company/department/com.company.department/0.2/com.company.department-0.2.pom"; + + assertLayout( path, groupId, artifactId, version, classifier, type ); + } + + /** + * It may seem odd, but this is a valid artifact. + */ + @Test + public void testGoodDotNotationSameGroupIdAndArtifactId() + throws LayoutException + { + String groupId = "com.company.department"; + String artifactId = "com.company.department.project"; + String version = "0.3"; + String classifier = null; + String type = "pom"; + String path = + "com/company/department/com.company.department.project/0.3/com.company.department.project-0.3.pom"; + + assertLayout( path, groupId, artifactId, version, classifier, type ); + } + + /** + * Test the classifier, and java-source type spec. + * + * @throws LayoutException + */ + @Test + public void testGoodFooLibSources() + throws LayoutException + { + String groupId = "com.foo.lib"; + String artifactId = "foo-lib"; + String version = "2.1-alpha-1"; + String classifier = "sources"; + String type = "java-source"; // oddball type-spec (should result in jar extension) + String path = "com/foo/lib/foo-lib/2.1-alpha-1/foo-lib-2.1-alpha-1-sources.jar"; + + assertLayout( path, groupId, artifactId, version, classifier, type ); + } + + /** + * A timestamped versioned artifact, should reside in a SNAPSHOT baseversion directory. + * + * @throws LayoutException + */ + @Test + public void testGoodSnapshotMavenTest() + throws LayoutException + { + String groupId = "org.apache.archiva.test"; + String artifactId = "redonkulous"; + String version = "3.1-beta-1-20050831.101112-42"; + String classifier = null; + String type = "jar"; + String path = + "org/apache/archiva/test/redonkulous/3.1-beta-1-SNAPSHOT/redonkulous-3.1-beta-1-20050831.101112-42.jar"; + + assertLayout( path, groupId, artifactId, version, classifier, type ); + } + + /** + * A timestamped versioned artifact, should reside in a SNAPSHOT baseversion directory. + * + * @throws LayoutException + */ + @Test + public void testGoodLongSnapshotMavenTest() + throws LayoutException + { + String groupId = "a.group.id"; + String artifactId = "artifact-id"; + String version = "1.0-abc-1.1-20080221.062205-9"; + String classifier = null; + String type = "pom"; + String path = "a/group/id/artifact-id/1.0-abc-1.1-SNAPSHOT/artifact-id-1.0-abc-1.1-20080221.062205-9.pom"; + + assertLayout( path, groupId, artifactId, version, classifier, type ); + } + + /** + * A timestamped versioned artifact but without release version part. Like on axiom trunk. + */ + @Test + public void testBadSnapshotWithoutReleasePart() + { + assertBadPath( "org/apache/ws/commons/axiom/axiom/SNAPSHOT/axiom-20070912.093446-2.pom", + "snapshot version without release part" ); + } + + /** + * A timestamped versioned artifact, should reside in a SNAPSHOT baseversion directory. + * + * @throws LayoutException + */ + @Test + public void testClassifiedSnapshotMavenTest() + throws LayoutException + { + String groupId = "a.group.id"; + String artifactId = "artifact-id"; + String version = "1.0-20070219.171202-34"; + String classifier = "test-sources"; + String type = "jar"; + String path = "a/group/id/artifact-id/1.0-SNAPSHOT/artifact-id-1.0-20070219.171202-34-test-sources.jar"; + + assertLayout( path, groupId, artifactId, version, classifier, type ); + } + + /** + * [MRM-519] version identifiers within filename cause misidentification of version. + * Example uses "test" in artifact Id, which is also part of the versionKeyword list. + */ + @Test + public void testGoodVersionKeywordInArtifactId() + throws LayoutException + { + String groupId = "maven"; + String artifactId = "maven-test-plugin"; + String version = "1.8.2"; + String classifier = null; + String type = "pom"; + String path = "maven/maven-test-plugin/1.8.2/maven-test-plugin-1.8.2.pom"; + + assertLayout( path, groupId, artifactId, version, classifier, type ); + } + + /** + * [MRM-562] Artifact type "maven-plugin" is not detected correctly in .toArtifactReference() methods. + * Example uses "test" in artifact Id, which is also part of the versionKeyword list. + */ + @Test + public void testGoodDetectMavenTestPlugin() + throws LayoutException + { + String groupId = "maven"; + String artifactId = "maven-test-plugin"; + String version = "1.8.2"; + String classifier = null; + String type = "maven-plugin"; + String path = "maven/maven-test-plugin/1.8.2/maven-test-plugin-1.8.2.jar"; + + assertLayout( path, groupId, artifactId, version, classifier, type ); + } + + /** + * [MRM-562] Artifact type "maven-plugin" is not detected correctly in .toArtifactReference() methods. + */ + @Test + public void testGoodDetectCoberturaMavenPlugin() + throws LayoutException + { + String groupId = "org.codehaus.mojo"; + String artifactId = "cobertura-maven-plugin"; + String version = "2.1"; + String classifier = null; + String type = "maven-plugin"; + String path = "org/codehaus/mojo/cobertura-maven-plugin/2.1/cobertura-maven-plugin-2.1.jar"; + + assertLayout( path, groupId, artifactId, version, classifier, type ); + } + + @Test + public void testToArtifactOnEmptyPath() + { + try + { + parser.toArtifactReference( "" ); + fail( "Should have failed due to empty path." ); + } + catch ( LayoutException e ) + { + /* expected path */ + } + } + + @Test + public void testToArtifactOnNullPath() + { + try + { + parser.toArtifactReference( null ); + fail( "Should have failed due to null path." ); + } + catch ( LayoutException e ) + { + /* expected path */ + } + } + + @Test + public void testToArtifactReferenceOnEmptyPath() + { + try + { + parser.toArtifactReference( "" ); + fail( "Should have failed due to empty path." ); + } + catch ( LayoutException e ) + { + /* expected path */ + } + } + + @Test + public void testToArtifactReferenceOnNullPath() + { + try + { + parser.toArtifactReference( null ); + fail( "Should have failed due to null path." ); + } + catch ( LayoutException e ) + { + /* expected path */ + } + } + + /** + * Perform a path to artifact reference lookup, and verify the results. + */ + private void assertLayout( String path, String groupId, String artifactId, String version, String classifier, + String type ) + throws LayoutException + { + // Path to Artifact Reference. + ArtifactReference testReference = parser.toArtifactReference( path ); + assertArtifactReference( testReference, groupId, artifactId, version, classifier, type ); + } + + private void assertArtifactReference( ArtifactReference actualReference, String groupId, String artifactId, + String version, String classifier, String type ) + { + String expectedId = + "ArtifactReference - " + groupId + ":" + artifactId + ":" + version + ":" + classifier + ":" + type; + + assertNotNull( expectedId + " - Should not be null.", actualReference ); + + assertEquals( expectedId + " - Group ID", groupId, actualReference.getGroupId() ); + assertEquals( expectedId + " - Artifact ID", artifactId, actualReference.getArtifactId() ); + if ( StringUtils.isNotBlank( classifier ) ) + { + assertEquals( expectedId + " - Classifier", classifier, actualReference.getClassifier() ); + } + assertEquals( expectedId + " - Version ID", version, actualReference.getVersion() ); + assertEquals( expectedId + " - Type", type, actualReference.getType() ); + } + + private void assertBadPath( String path, String reason ) + { + try + { + parser.toArtifactReference( path ); + fail( + "Should have thrown a LayoutException on the invalid path [" + path + "] because of [" + reason + "]" ); + } + catch ( LayoutException e ) + { + /* expected path */ + } + } +} diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/content/maven2/FilenameParserTest.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/content/maven2/FilenameParserTest.java new file mode 100644 index 000000000..cec3df826 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/content/maven2/FilenameParserTest.java @@ -0,0 +1,217 @@ +package org.apache.archiva.repository.content.maven2; + +/* + * 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 junit.framework.TestCase; +import org.apache.archiva.test.utils.ArchivaBlockJUnit4ClassRunner; +import org.junit.Test; +import org.junit.runner.RunWith; + +/** + * FilenameParserTest + * + * + */ +@RunWith( ArchivaBlockJUnit4ClassRunner.class ) +public class FilenameParserTest + extends TestCase +{ + @Test + public void testNameExtensionJar() + { + FilenameParser parser = new FilenameParser( "maven-test-plugin-1.8.3.jar" ); + + assertEquals( "maven-test-plugin-1.8.3", parser.getName() ); + assertEquals( "jar", parser.getExtension() ); + } + + @Test + public void testNameExtensionTarGz() + { + FilenameParser parser = new FilenameParser( "archiva-1.0-beta-2-bin.tar.gz" ); + + assertEquals( "archiva-1.0-beta-2-bin", parser.getName() ); + assertEquals( "tar.gz", parser.getExtension() ); + } + + @Test + public void testNameExtensionTarBz2() + { + FilenameParser parser = new FilenameParser( "archiva-1.0-SNAPSHOT-src.tar.bz2" ); + + assertEquals( "archiva-1.0-SNAPSHOT-src", parser.getName() ); + assertEquals( "tar.bz2", parser.getExtension() ); + } + + @Test + public void testNameExtensionCapitolizedTarGz() + { + FilenameParser parser = new FilenameParser( "ARCHIVA-1.0-BETA-2-BIN.TAR.GZ" ); + + assertEquals( "ARCHIVA-1.0-BETA-2-BIN", parser.getName() ); + assertEquals( "TAR.GZ", parser.getExtension() ); + } + + @Test + public void testNext() + { + FilenameParser parser = new FilenameParser( "maven-test-plugin-1.8.3.jar" ); + + assertEquals( "maven-test-plugin-1.8.3", parser.getName() ); + assertEquals( "jar", parser.getExtension() ); + + assertEquals( "maven", parser.next() ); + assertEquals( "test", parser.next() ); + assertEquals( "plugin", parser.next() ); + assertEquals( "1.8.3", parser.next() ); + assertNull( parser.next() ); + } + + @Test + public void testExpect() + { + FilenameParser parser = new FilenameParser( "maven-test-plugin-1.8.3.jar" ); + + assertEquals( "maven-test-plugin-1.8.3", parser.getName() ); + assertEquals( "jar", parser.getExtension() ); + + assertEquals( "maven-test-plugin", parser.expect( "maven-test-plugin" ) ); + assertEquals( "1.8.3", parser.expect( "1.8.3" ) ); + assertNull( parser.expect( "jar" ) ); + } + + @Test + public void testExpectWithRemaining() + { + FilenameParser parser = new FilenameParser( "ganymede-ssh2-build250-sources.jar" ); + + assertEquals( "ganymede-ssh2-build250-sources", parser.getName() ); + assertEquals( "jar", parser.getExtension() ); + + assertEquals( "ganymede-ssh2", parser.expect( "ganymede-ssh2" ) ); + assertEquals( "build250", parser.expect( "build250" ) ); + assertEquals( '-', parser.seperator() ); + assertEquals( "sources", parser.remaining() ); + + assertNull( parser.expect( "jar" ) ); + } + + @Test + public void testExpectWithRemainingDualExtensions() + { + FilenameParser parser = new FilenameParser( "example-presentation-3.2.xml.zip" ); + + assertEquals( "example-presentation-3.2.xml", parser.getName() ); + assertEquals( "zip", parser.getExtension() ); + + assertEquals( "example-presentation", parser.expect( "example-presentation" ) ); + assertEquals( "3.2", parser.expect( "3.2" ) ); + assertEquals( '.', parser.seperator() ); + assertEquals( "xml", parser.remaining() ); + + } + + @Test + public void testNextNonVersion() + { + FilenameParser parser = new FilenameParser( "maven-test-plugin-1.8.3.jar" ); + + assertEquals( "maven-test-plugin", parser.nextNonVersion() ); + assertEquals( "1.8.3", parser.remaining() ); + } + + @Test + public void testNextArbitraryNonVersion() + { + FilenameParser parser = new FilenameParser( "maven-jdk-1.4-plugin-1.0-20070828.123456-42.jar" ); + + assertEquals( "maven-jdk-1.4-plugin", parser.nextNonVersion() ); + assertEquals( "1.0-20070828.123456-42", parser.remaining() ); + } + + @Test + public void testNextJython() + { + FilenameParser parser = new FilenameParser( "jython-20020827-no-oro.jar" ); + + assertEquals( "jython", parser.nextNonVersion() ); + assertEquals( "20020827", parser.nextVersion() ); + assertEquals( "no-oro", parser.remaining() ); + } + + @Test + public void testLongExtension() + { + FilenameParser parser = new FilenameParser( "libfobs4jmf-0.4.1.4-20080217.211715-4.jnilib" ); + + assertEquals( "libfobs4jmf-0.4.1.4-20080217.211715-4", parser.getName() ); + assertEquals( "jnilib", parser.getExtension() ); + } + + @Test + public void testInterveningVersion() + { + FilenameParser parser = new FilenameParser( "artifact-id-1.0-abc-1.1-20080221.062205-9.pom" ); + + assertEquals( "artifact-id", parser.nextNonVersion() ); + assertEquals( "1.0-abc-1.1-20080221.062205-9", parser.expect( "1.0-abc-1.1-SNAPSHOT" ) ); + assertNull( null, parser.remaining() ); + assertEquals( "artifact-id-1.0-abc-1.1-20080221.062205-9", parser.getName() ); + assertEquals( "pom", parser.getExtension() ); + } + + @Test + public void testExpectWrongSnapshot() + { + FilenameParser parser = new FilenameParser( "artifact-id-1.0-20080221.062205-9.pom" ); + + assertEquals( "artifact-id", parser.nextNonVersion() ); + assertNull( parser.expect( "2.0-SNAPSHOT" ) ); + } + + @Test + public void testExpectWrongSnapshot2() + { + // tests parsing axiom snapshots without exceptions + FilenameParser parser = new FilenameParser( "axiom-20080221.062205-9.pom" ); + + assertEquals( "axiom", parser.nextNonVersion() ); + assertNull( parser.expect( "SNAPSHOT" ) ); + } + + @Test + public void testClassifier() + { + FilenameParser parser = new FilenameParser( "artifact-id-1.0-20070219.171202-34-test-sources.jar" ); + + assertEquals( "artifact-id", parser.nextNonVersion() ); + assertEquals( "1.0-20070219.171202-34", parser.nextVersion() ); + assertEquals( "test-sources", parser.remaining() ); + assertEquals( "artifact-id-1.0-20070219.171202-34-test-sources", parser.getName() ); + assertEquals( "jar", parser.getExtension() ); + } + + @Test + public void testNoExtension() + { + FilenameParser parser = new FilenameParser( "foo_bar" ); + assertNull( parser.getExtension() ); + } +} diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/content/maven2/RepositoryRequestTest.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/content/maven2/RepositoryRequestTest.java new file mode 100644 index 000000000..db3210863 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/content/maven2/RepositoryRequestTest.java @@ -0,0 +1,530 @@ +package org.apache.archiva.repository.content.maven2; + +/* + * 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.archiva.common.utils.FileUtils; +import org.apache.archiva.configuration.ArchivaConfiguration; +import org.apache.archiva.model.ArtifactReference; +import org.apache.archiva.repository.LayoutException; +import org.apache.archiva.repository.ManagedRepositoryContent; +import org.apache.archiva.repository.RepositoryContentProvider; +import org.apache.archiva.repository.maven2.MavenManagedRepository; +import org.apache.archiva.test.utils.ArchivaSpringJUnit4ClassRunner; +import org.apache.commons.lang.StringUtils; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.context.ApplicationContext; +import org.springframework.test.context.ContextConfiguration; + +import javax.inject.Inject; +import javax.inject.Named; +import java.nio.file.Path; +import java.nio.file.Paths; + +import static org.junit.Assert.*; + +/** + * RepositoryRequestTest + */ +@RunWith( ArchivaSpringJUnit4ClassRunner.class ) +@ContextConfiguration( { "classpath*:/META-INF/spring-context.xml", + "classpath:/spring-context-repo-request-test.xml" } ) +public class RepositoryRequestTest +{ + + @Inject + protected ApplicationContext applicationContext; + + @Inject + @Named( "archivaConfiguration#repo-request-test" ) + private ArchivaConfiguration archivaConfiguration; + + private RepositoryRequest repoRequest; + + @Before + public void setUp() + throws Exception + { + repoRequest = new RepositoryRequest(); + } + + @Test + public void testInvalidRequestEmptyPath() + { + assertInvalidRequest( "" ); + } + + @Test + public void testInvalidRequestSlashOnly() + { + assertInvalidRequest( "//" ); + } + + @Test + public void testInvalidRequestNoArtifactId() + { + assertInvalidRequest( "groupId/jars/-1.0.jar" ); + } + + + @Test + public void testInvalidRequestTooShort() + { + assertInvalidRequest( "org.apache.maven.test/artifactId-2.0.jar" ); + } + + @Test + public void testInvalidDefaultRequestBadLocation() + { + assertInvalidRequest( "invalid/invalid/1.0-20050611.123456-1/invalid-1.0-20050611.123456-1.jar" ); + } + + @Test( expected = LayoutException.class ) + public void testValidLegacyGanymed() + throws Exception + { + assertValid( "ch.ethz.ganymed/jars/ganymed-ssh2-build210.jar", "ch.ethz.ganymed", "ganymed-ssh2", "build210", + null, "jar" ); + } + + @Test + public void testValidDefaultGanymed() + throws Exception + { + assertValid( "ch/ethz/ganymed/ganymed-ssh2/build210/ganymed-ssh2-build210.jar", "ch.ethz.ganymed", + "ganymed-ssh2", "build210", null, "jar" ); + } + + @Test( expected = LayoutException.class ) + public void testValidLegacyJavaxComm() + throws Exception + { + assertValid( "javax/jars/comm-3.0-u1.jar", "javax", "comm", "3.0-u1", null, "jar" ); + } + + @Test + public void testValidDefaultJavaxComm() + throws Exception + { + assertValid( "javax/comm/3.0-u1/comm-3.0-u1.jar", "javax", "comm", "3.0-u1", null, "jar" ); + } + + @Test( expected = LayoutException.class ) + public void testValidLegacyJavaxPersistence() + throws Exception + { + assertValid( "javax.persistence/jars/ejb-3.0-public_review.jar", "javax.persistence", "ejb", + "3.0-public_review", null, "jar" ); + } + + @Test + public void testValidDefaultJavaxPersistence() + throws Exception + { + assertValid( "javax/persistence/ejb/3.0-public_review/ejb-3.0-public_review.jar", "javax.persistence", "ejb", + "3.0-public_review", null, "jar" ); + } + + @Test( expected = LayoutException.class ) + public void testValidLegacyMavenTestPlugin() + throws Exception + { + assertValid( "maven/jars/maven-test-plugin-1.8.2.jar", "maven", "maven-test-plugin", "1.8.2", null, "jar" ); + } + + @Test + public void testValidDefaultMavenTestPlugin() + throws Exception + { + assertValid( "maven/maven-test-plugin/1.8.2/maven-test-plugin-1.8.2.pom", "maven", "maven-test-plugin", "1.8.2", + null, "pom" ); + } + + @Test( expected = LayoutException.class ) + public void testValidLegacyCommonsLangJavadoc() + throws Exception + { + assertValid( "commons-lang/javadoc.jars/commons-lang-2.1-javadoc.jar", "commons-lang", "commons-lang", "2.1", + "javadoc", "javadoc" ); + } + + @Test + public void testValidDefaultCommonsLangJavadoc() + throws Exception + { + assertValid( "commons-lang/commons-lang/2.1/commons-lang-2.1-javadoc.jar", "commons-lang", "commons-lang", + "2.1", "javadoc", "javadoc" ); + } + + @Test( expected = LayoutException.class ) + public void testValidLegacyDerbyPom() + throws Exception + { + assertValid( "org.apache.derby/poms/derby-10.2.2.0.pom", "org.apache.derby", "derby", "10.2.2.0", null, "pom" ); + // Starting slash should not prevent detection. + assertValid( "/org.apache.derby/poms/derby-10.2.2.0.pom", "org.apache.derby", "derby", "10.2.2.0", null, + "pom" ); + } + + @Test + public void testValidDefaultDerbyPom() + throws Exception + { + assertValid( "org/apache/derby/derby/10.2.2.0/derby-10.2.2.0.pom", "org.apache.derby", "derby", "10.2.2.0", + null, "pom" ); + } + + @Test( expected = LayoutException.class ) + public void testValidLegacyGeronimoEjbSpec() + throws Exception + { + assertValid( "org.apache.geronimo.specs/jars/geronimo-ejb_2.1_spec-1.0.1.jar", "org.apache.geronimo.specs", + "geronimo-ejb_2.1_spec", "1.0.1", null, "jar" ); + } + + @Test + public void testValidDefaultGeronimoEjbSpec() + throws Exception + { + assertValid( "org/apache/geronimo/specs/geronimo-ejb_2.1_spec/1.0.1/geronimo-ejb_2.1_spec-1.0.1.jar", + "org.apache.geronimo.specs", "geronimo-ejb_2.1_spec", "1.0.1", null, "jar" ); + } + + @Test( expected = LayoutException.class ) + public void testValidLegacyLdapSnapshot() + throws Exception + { + assertValid( "directory-clients/poms/ldap-clients-0.9.1-SNAPSHOT.pom", "directory-clients", "ldap-clients", + "0.9.1-SNAPSHOT", null, "pom" ); + } + + @Test + public void testValidDefaultLdapSnapshot() + throws Exception + { + assertValid( "directory-clients/ldap-clients/0.9.1-SNAPSHOT/ldap-clients-0.9.1-SNAPSHOT.pom", + "directory-clients", "ldap-clients", "0.9.1-SNAPSHOT", null, "pom" ); + } + + @Test( expected = LayoutException.class ) + public void testValidLegacyTestArchSnapshot() + throws Exception + { + assertValid( "test.maven-arch/poms/test-arch-2.0.3-SNAPSHOT.pom", "test.maven-arch", "test-arch", + "2.0.3-SNAPSHOT", null, "pom" ); + } + + @Test + public void testValidDefaultTestArchSnapshot() + throws Exception + { + assertValid( "test/maven-arch/test-arch/2.0.3-SNAPSHOT/test-arch-2.0.3-SNAPSHOT.pom", "test.maven-arch", + "test-arch", "2.0.3-SNAPSHOT", null, "pom" ); + } + + @Test( expected = LayoutException.class ) + public void testValidLegacyOddDottedArtifactId() + throws Exception + { + assertValid( "com.company.department/poms/com.company.department.project-0.2.pom", "com.company.department", + "com.company.department.project", "0.2", null, "pom" ); + } + + @Test + public void testValidDefaultOddDottedArtifactId() + throws Exception + { + assertValid( "com/company/department/com.company.department.project/0.2/com.company.department.project-0.2.pom", + "com.company.department", "com.company.department.project", "0.2", null, "pom" ); + } + + @Test( expected = LayoutException.class ) + public void testValidLegacyTimestampedSnapshot() + throws Exception + { + assertValid( "org.apache.archiva.test/jars/redonkulous-3.1-beta-1-20050831.101112-42.jar", + "org.apache.archiva.test", "redonkulous", "3.1-beta-1-20050831.101112-42", null, "jar" ); + } + + @Test + public void testValidDefaultTimestampedSnapshot() + throws Exception + { + assertValid( + "org/apache/archiva/test/redonkulous/3.1-beta-1-SNAPSHOT/redonkulous-3.1-beta-1-20050831.101112-42.jar", + "org.apache.archiva.test", "redonkulous", "3.1-beta-1-20050831.101112-42", null, "jar" ); + } + + @Test + public void testIsSupportFile() + { + assertTrue( repoRequest.isSupportFile( "org/apache/derby/derby/10.2.2.0/derby-10.2.2.0-bin.tar.gz.sha1" ) ); + assertTrue( repoRequest.isSupportFile( "org/apache/derby/derby/10.2.2.0/derby-10.2.2.0-bin.tar.gz.md5" ) ); + assertTrue( repoRequest.isSupportFile( "org/apache/derby/derby/10.2.2.0/derby-10.2.2.0-bin.tar.gz.asc" ) ); + assertTrue( repoRequest.isSupportFile( "org/apache/derby/derby/10.2.2.0/derby-10.2.2.0-bin.tar.gz.pgp" ) ); + assertTrue( repoRequest.isSupportFile( "org/apache/derby/derby/10.2.2.0/maven-metadata.xml.sha1" ) ); + assertTrue( repoRequest.isSupportFile( "org/apache/derby/derby/10.2.2.0/maven-metadata.xml.md5" ) ); + + assertFalse( repoRequest.isSupportFile( "test.maven-arch/poms/test-arch-2.0.3-SNAPSHOT.pom" ) ); + assertFalse( + repoRequest.isSupportFile( "test/maven-arch/test-arch/2.0.3-SNAPSHOT/test-arch-2.0.3-SNAPSHOT.jar" ) ); + assertFalse( repoRequest.isSupportFile( "org/apache/archiva/archiva-api/1.0/archiva-api-1.0.xml.zip" ) ); + assertFalse( repoRequest.isSupportFile( "org/apache/derby/derby/10.2.2.0/derby-10.2.2.0-bin.tar.gz" ) ); + assertFalse( repoRequest.isSupportFile( "org/apache/derby/derby/10.2.2.0/maven-metadata.xml" ) ); + assertFalse( repoRequest.isSupportFile( "org/apache/derby/derby/maven-metadata.xml" ) ); + } + + @Test + public void testIsMetadata() + { + assertTrue( repoRequest.isMetadata( "org/apache/derby/derby/10.2.2.0/maven-metadata.xml" ) ); + assertTrue( repoRequest.isMetadata( "org/apache/derby/derby/maven-metadata.xml" ) ); + + assertFalse( repoRequest.isMetadata( "test.maven-arch/poms/test-arch-2.0.3-SNAPSHOT.pom" ) ); + assertFalse( + repoRequest.isMetadata( "test/maven-arch/test-arch/2.0.3-SNAPSHOT/test-arch-2.0.3-SNAPSHOT.jar" ) ); + assertFalse( repoRequest.isMetadata( "org/apache/archiva/archiva-api/1.0/archiva-api-1.0.xml.zip" ) ); + assertFalse( repoRequest.isMetadata( "org/apache/derby/derby/10.2.2.0/derby-10.2.2.0-bin.tar.gz" ) ); + assertFalse( repoRequest.isMetadata( "org/apache/derby/derby/10.2.2.0/derby-10.2.2.0-bin.tar.gz.pgp" ) ); + assertFalse( repoRequest.isMetadata( "org/apache/derby/derby/10.2.2.0/maven-metadata.xml.sha1" ) ); + } + + @Test + public void testIsMetadataSupportFile() + { + assertFalse( repoRequest.isMetadataSupportFile( "org/apache/derby/derby/10.2.2.0/maven-metadata.xml" ) ); + assertFalse( repoRequest.isMetadataSupportFile( "org/apache/derby/derby/maven-metadata.xml" ) ); + assertTrue( repoRequest.isMetadataSupportFile( "org/apache/derby/derby/maven-metadata.xml.sha1" ) ); + assertTrue( repoRequest.isMetadataSupportFile( "org/apache/derby/derby/maven-metadata.xml.md5" ) ); + + assertFalse( repoRequest.isMetadataSupportFile( "test.maven-arch/poms/test-arch-2.0.3-SNAPSHOT.pom" ) ); + assertFalse( repoRequest.isMetadataSupportFile( + "test/maven-arch/test-arch/2.0.3-SNAPSHOT/test-arch-2.0.3-SNAPSHOT.jar" ) ); + assertFalse( + repoRequest.isMetadataSupportFile( "org/apache/archiva/archiva-api/1.0/archiva-api-1.0.xml.zip" ) ); + assertFalse( repoRequest.isMetadataSupportFile( "org/apache/derby/derby/10.2.2.0/derby-10.2.2.0-bin.tar.gz" ) ); + assertFalse( + repoRequest.isMetadataSupportFile( "org/apache/derby/derby/10.2.2.0/derby-10.2.2.0-bin.tar.gz.pgp" ) ); + assertTrue( repoRequest.isMetadataSupportFile( "org/apache/derby/derby/10.2.2.0/maven-metadata.xml.sha1" ) ); + assertTrue( repoRequest.isMetadataSupportFile( "org/apache/derby/derby/10.2.2.0/maven-metadata.xml.md5" ) ); + } + + @Test + public void testIsDefault() + { + assertFalse( repoRequest.isDefault( "test.maven-arch/poms/test-arch-2.0.3-SNAPSHOT.pom" ) ); + assertFalse( repoRequest.isDefault( "directory-clients/poms/ldap-clients-0.9.1-SNAPSHOT.pom" ) ); + assertFalse( repoRequest.isDefault( "commons-lang/jars/commons-lang-2.1-javadoc.jar" ) ); + + assertTrue( repoRequest.isDefault( "test/maven-arch/test-arch/2.0.3-SNAPSHOT/test-arch-2.0.3-SNAPSHOT.jar" ) ); + assertTrue( repoRequest.isDefault( "org/apache/archiva/archiva-api/1.0/archiva-api-1.0.xml.zip" ) ); + assertTrue( repoRequest.isDefault( "org/apache/derby/derby/10.2.2.0/derby-10.2.2.0-bin.tar.gz" ) ); + assertTrue( repoRequest.isDefault( "org/apache/derby/derby/10.2.2.0/derby-10.2.2.0-bin.tar.gz.pgp" ) ); + assertTrue( repoRequest.isDefault( "org/apache/derby/derby/10.2.2.0/maven-metadata.xml.sha1" ) ); + assertTrue( repoRequest.isDefault( "eclipse/jdtcore/maven-metadata.xml" ) ); + assertTrue( repoRequest.isDefault( "eclipse/jdtcore/maven-metadata.xml.sha1" ) ); + assertTrue( repoRequest.isDefault( "eclipse/jdtcore/maven-metadata.xml.md5" ) ); + + assertFalse( repoRequest.isDefault( null ) ); + assertFalse( repoRequest.isDefault( "" ) ); + assertFalse( repoRequest.isDefault( "foo" ) ); + assertFalse( repoRequest.isDefault( "some.short/path" ) ); + } + + @Test + public void testIsLegacy() + { + assertTrue( repoRequest.isLegacy( "test.maven-arch/poms/test-arch-2.0.3-SNAPSHOT.pom" ) ); + assertTrue( repoRequest.isLegacy( "directory-clients/poms/ldap-clients-0.9.1-SNAPSHOT.pom" ) ); + assertTrue( repoRequest.isLegacy( "commons-lang/jars/commons-lang-2.1-javadoc.jar" ) ); + + assertFalse( repoRequest.isLegacy( "test/maven-arch/test-arch/2.0.3-SNAPSHOT/test-arch-2.0.3-SNAPSHOT.jar" ) ); + assertFalse( repoRequest.isLegacy( "org/apache/archiva/archiva-api/1.0/archiva-api-1.0.xml.zip" ) ); + assertFalse( repoRequest.isLegacy( "org/apache/derby/derby/10.2.2.0/derby-10.2.2.0-bin.tar.gz" ) ); + assertFalse( repoRequest.isLegacy( "org/apache/derby/derby/10.2.2.0/derby-10.2.2.0-bin.tar.gz.pgp" ) ); + assertFalse( repoRequest.isLegacy( "org/apache/derby/derby/10.2.2.0/maven-metadata.xml.sha1" ) ); + + assertFalse( repoRequest.isLegacy( null ) ); + assertFalse( repoRequest.isLegacy( "" ) ); + assertFalse( repoRequest.isLegacy( "some.short/path" ) ); + } + + private ManagedRepositoryContent createManagedRepo( String layout ) + throws Exception + { + Path repoRoot = Paths.get( FileUtils.getBasedir() + "/target/test-repo" ); + return createManagedRepositoryContent( "test-internal", "Internal Test Repo", repoRoot, layout ); + } + + /** + * [MRM-481] Artifact requests with a .xml.zip extension fail with a 404 Error + */ + @Test + public void testToNativePathArtifactDefaultToDefaultDualExtension() + throws Exception + { + ManagedRepositoryContent repository = createManagedRepo( "default" ); + + // Test (artifact) default to default - dual extension + assertEquals( "org/project/example-presentation/3.2/example-presentation-3.2.xml.zip", + repoRequest.toNativePath( "org/project/example-presentation/3.2/example-presentation-3.2.xml.zip", + repository ) ); + } + + + @Test + public void testToNativePathMetadataDefaultToDefault() + throws Exception + { + ManagedRepositoryContent repository = createManagedRepo( "default" ); + + // Test (metadata) default to default + assertEquals( "org/apache/derby/derby/10.2.2.0/maven-metadata.xml.sha1", + repoRequest.toNativePath( "org/apache/derby/derby/10.2.2.0/maven-metadata.xml.sha1", + repository ) ); + } + + + @Test + public void testNativePathBadRequestTooShort() + throws Exception + { + ManagedRepositoryContent repository = createManagedRepo( "default" ); + + // Test bad request path (too short) + try + { + repoRequest.toNativePath( "org.apache.derby/license.txt", repository ); + fail( "Should have thrown an exception about a too short path." ); + } + catch ( LayoutException e ) + { + // expected path. + } + } + + @Test + public void testNativePathBadRequestBlank() + throws Exception + { + ManagedRepositoryContent repository = createManagedRepo( "default" ); + + // Test bad request path (too short) + try + { + repoRequest.toNativePath( "", repository ); + fail( "Should have thrown an exception about an blank request." ); + } + catch ( LayoutException e ) + { + // expected path. + } + } + + @Test + public void testNativePathBadRequestNull() + throws Exception + { + ManagedRepositoryContent repository = createManagedRepo( "default" ); + + // Test bad request path (too short) + try + { + repoRequest.toNativePath( null, repository ); + fail( "Should have thrown an exception about an null request." ); + } + catch ( LayoutException e ) + { + // expected path. + } + } + + @Test + public void testNativePathBadRequestUnknownType() + throws Exception + { + ManagedRepositoryContent repository = createManagedRepo( "default" ); + + // Test bad request path (too short) + try + { + repoRequest.toNativePath( "org/apache/derby/derby/10.2.2.0/license.txt", repository ); + fail( "Should have thrown an exception about an invalid type." ); + } + catch ( LayoutException e ) + { + // expected path. + } + } + + + private void assertValid( String path, String groupId, String artifactId, String version, String classifier, + String type ) + throws Exception + { + String expectedId = + "ArtifactReference - " + groupId + ":" + artifactId + ":" + version + ":" + ( classifier != null ? + classifier + ":" : "" ) + type; + + ArtifactReference reference = repoRequest.toArtifactReference( path ); + + assertNotNull( expectedId + " - Should not be null.", reference ); + + assertEquals( expectedId + " - Group ID", groupId, reference.getGroupId() ); + assertEquals( expectedId + " - Artifact ID", artifactId, reference.getArtifactId() ); + if ( StringUtils.isNotBlank( classifier ) ) + { + assertEquals( expectedId + " - Classifier", classifier, reference.getClassifier() ); + } + assertEquals( expectedId + " - Version ID", version, reference.getVersion() ); + assertEquals( expectedId + " - Type", type, reference.getType() ); + } + + private void assertInvalidRequest( String path ) + { + try + { + repoRequest.toArtifactReference( path ); + fail( "Expected a LayoutException on an invalid path [" + path + "]" ); + } + catch ( LayoutException e ) + { + /* expected path */ + } + } + + protected ManagedRepositoryContent createManagedRepositoryContent( String id, String name, Path location, + String layout ) + throws Exception + { + MavenManagedRepository repo = new MavenManagedRepository( id, name, archivaConfiguration.getRepositoryBaseDir()); + repo.setLocation( location.toAbsolutePath().toUri() ); + repo.setLayout( layout ); + + RepositoryContentProvider provider = applicationContext.getBean( "repositoryContentProvider#maven", RepositoryContentProvider.class ); + + ManagedRepositoryContent repoContent = + provider.createManagedContent( repo ); + + return repoContent; + } + +} diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/index/mock/ArchivaIndexManagerMock.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/index/mock/ArchivaIndexManagerMock.java new file mode 100644 index 000000000..de3ea76a1 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/index/mock/ArchivaIndexManagerMock.java @@ -0,0 +1,805 @@ +package org.apache.archiva.repository.index.mock; + +/* + * 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.archiva.admin.model.RepositoryAdminException; +import org.apache.archiva.common.utils.FileUtils; +import org.apache.archiva.common.utils.PathUtil; +import org.apache.archiva.configuration.ArchivaConfiguration; +import org.apache.archiva.indexer.ArchivaIndexManager; +import org.apache.archiva.indexer.ArchivaIndexingContext; +import org.apache.archiva.indexer.IndexCreationFailedException; +import org.apache.archiva.indexer.IndexUpdateFailedException; +import org.apache.archiva.indexer.UnsupportedBaseContextException; +import org.apache.archiva.proxy.ProxyRegistry; +import org.apache.archiva.proxy.maven.WagonFactory; +import org.apache.archiva.proxy.maven.WagonFactoryException; +import org.apache.archiva.proxy.maven.WagonFactoryRequest; +import org.apache.archiva.proxy.model.NetworkProxy; +import org.apache.archiva.repository.EditableRepository; +import org.apache.archiva.repository.ManagedRepository; +import org.apache.archiva.repository.PasswordCredentials; +import org.apache.archiva.repository.RemoteRepository; +import org.apache.archiva.repository.Repository; +import org.apache.archiva.repository.RepositoryType; +import org.apache.archiva.repository.UnsupportedRepositoryTypeException; +import org.apache.archiva.repository.features.IndexCreationFeature; +import org.apache.archiva.repository.features.RemoteIndexFeature; +import org.apache.commons.lang.StringUtils; +import org.apache.maven.index.ArtifactContext; +import org.apache.maven.index.ArtifactContextProducer; +import org.apache.maven.index.DefaultScannerListener; +import org.apache.maven.index.Indexer; +import org.apache.maven.index.IndexerEngine; +import org.apache.maven.index.Scanner; +import org.apache.maven.index.ScanningRequest; +import org.apache.maven.index.ScanningResult; +import org.apache.maven.index.context.IndexCreator; +import org.apache.maven.index.context.IndexingContext; +import org.apache.maven.index.packer.IndexPacker; +import org.apache.maven.index.packer.IndexPackingRequest; +import org.apache.maven.index.updater.IndexUpdateRequest; +import org.apache.maven.index.updater.ResourceFetcher; +import org.apache.maven.index_shaded.lucene.index.IndexFormatTooOldException; +import org.apache.maven.wagon.ConnectionException; +import org.apache.maven.wagon.ResourceDoesNotExistException; +import org.apache.maven.wagon.StreamWagon; +import org.apache.maven.wagon.TransferFailedException; +import org.apache.maven.wagon.Wagon; +import org.apache.maven.wagon.authentication.AuthenticationException; +import org.apache.maven.wagon.authentication.AuthenticationInfo; +import org.apache.maven.wagon.authorization.AuthorizationException; +import org.apache.maven.wagon.events.TransferEvent; +import org.apache.maven.wagon.events.TransferListener; +import org.apache.maven.wagon.proxy.ProxyInfo; +import org.apache.maven.wagon.shared.http.AbstractHttpClientWagon; +import org.apache.maven.wagon.shared.http.HttpConfiguration; +import org.apache.maven.wagon.shared.http.HttpMethodConfiguration; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; + +import javax.inject.Inject; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URI; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.Collection; +import java.util.List; +import java.util.Map; +import java.util.concurrent.ConcurrentSkipListSet; +import java.util.stream.Collectors; + +/** + * @author Martin Stockhammer <martin_s@apache.org> + */ +@Service("archivaIndexManager#maven") +public class ArchivaIndexManagerMock implements ArchivaIndexManager { + private static final Logger log = LoggerFactory.getLogger( ArchivaIndexManagerMock.class ); + + @Inject + private Indexer indexer; + + @Inject + private IndexerEngine indexerEngine; + + @Inject + private List<? extends IndexCreator> indexCreators; + + @Inject + private IndexPacker indexPacker; + + @Inject + private Scanner scanner; + + @Inject + private ArchivaConfiguration archivaConfiguration; + + @Inject + private WagonFactory wagonFactory; + + @Inject + private ArtifactContextProducer artifactContextProducer; + + @Inject + private ProxyRegistry proxyRegistry; + + private ConcurrentSkipListSet<Path> activeContexts = new ConcurrentSkipListSet<>( ); + + private static final int WAIT_TIME = 100; + private static final int MAX_WAIT = 10; + + + public static IndexingContext getMvnContext(ArchivaIndexingContext context ) throws UnsupportedBaseContextException + { + if ( !context.supports( IndexingContext.class ) ) + { + log.error( "The provided archiva index context does not support the maven IndexingContext" ); + throw new UnsupportedBaseContextException( "The context does not support the Maven IndexingContext" ); + } + return context.getBaseContext( IndexingContext.class ); + } + + private Path getIndexPath( ArchivaIndexingContext ctx ) + { + return PathUtil.getPathFromUri( ctx.getPath( ) ); + } + + @FunctionalInterface + interface IndexUpdateConsumer + { + + void accept( IndexingContext indexingContext ) throws IndexUpdateFailedException; + } + + /* + * This method is used to do some actions around the update execution code. And to make sure, that no other + * method is running on the same index. + */ + private void executeUpdateFunction( ArchivaIndexingContext context, IndexUpdateConsumer function ) throws IndexUpdateFailedException + { + IndexingContext indexingContext = null; + try + { + indexingContext = getMvnContext( context ); + } + catch ( UnsupportedBaseContextException e ) + { + throw new IndexUpdateFailedException( "Maven index is not supported by this context", e ); + } + final Path ctxPath = getIndexPath( context ); + int loop = MAX_WAIT; + boolean active = false; + while ( loop-- > 0 && !active ) + { + active = activeContexts.add( ctxPath ); + try + { + Thread.currentThread( ).sleep( WAIT_TIME ); + } + catch ( InterruptedException e ) + { + // Ignore this + } + } + if ( active ) + { + try + { + function.accept( indexingContext ); + } + finally + { + activeContexts.remove( ctxPath ); + } + } + else + { + throw new IndexUpdateFailedException( "Timeout while waiting for index release on context " + context.getId( ) ); + } + } + + @Override + public void pack( final ArchivaIndexingContext context ) throws IndexUpdateFailedException + { + executeUpdateFunction( context, indexingContext -> { + try + { + IndexPackingRequest request = new IndexPackingRequest( indexingContext, + indexingContext.acquireIndexSearcher( ).getIndexReader( ), + indexingContext.getIndexDirectoryFile( ) ); + indexPacker.packIndex( request ); + indexingContext.updateTimestamp( true ); + } + catch ( IOException e ) + { + log.error( "IOException while packing index of context " + context.getId( ) + ( StringUtils.isNotEmpty( e.getMessage( ) ) ? ": " + e.getMessage( ) : "" ) ); + throw new IndexUpdateFailedException( "IOException during update of " + context.getId( ), e ); + } + } + ); + + } + + @Override + public void scan(final ArchivaIndexingContext context) throws IndexUpdateFailedException + { + executeUpdateFunction( context, indexingContext -> { + DefaultScannerListener listener = new DefaultScannerListener( indexingContext, indexerEngine, true, null ); + ScanningRequest request = new ScanningRequest( indexingContext, listener ); + ScanningResult result = scanner.scan( request ); + if ( result.hasExceptions( ) ) + { + log.error( "Exceptions occured during index scan of " + context.getId( ) ); + result.getExceptions( ).stream( ).map( e -> e.getMessage( ) ).distinct( ).limit( 5 ).forEach( + s -> log.error( "Message: " + s ) + ); + } + + } ); + } + + @Override + public void update(final ArchivaIndexingContext context, final boolean fullUpdate) throws IndexUpdateFailedException + { + log.info( "start download remote index for remote repository {}", context.getRepository( ).getId( ) ); + URI remoteUpdateUri; + if ( !( context.getRepository( ) instanceof RemoteRepository) || !(context.getRepository().supportsFeature(RemoteIndexFeature.class)) ) + { + throw new IndexUpdateFailedException( "The context is not associated to a remote repository with remote index " + context.getId( ) ); + } else { + RemoteIndexFeature rif = context.getRepository().getFeature(RemoteIndexFeature.class).get(); + remoteUpdateUri = context.getRepository().getLocation().resolve(rif.getIndexUri()); + } + final RemoteRepository remoteRepository = (RemoteRepository) context.getRepository( ); + + executeUpdateFunction( context, + indexingContext -> { + try + { + // create a temp directory to download files + Path tempIndexDirectory = Paths.get( indexingContext.getIndexDirectoryFile( ).getParent( ), ".tmpIndex" ); + Path indexCacheDirectory = Paths.get( indexingContext.getIndexDirectoryFile( ).getParent( ), ".indexCache" ); + Files.createDirectories( indexCacheDirectory ); + if ( Files.exists( tempIndexDirectory ) ) + { + org.apache.archiva.common.utils.FileUtils.deleteDirectory( tempIndexDirectory ); + } + Files.createDirectories( tempIndexDirectory ); + tempIndexDirectory.toFile( ).deleteOnExit( ); + String baseIndexUrl = indexingContext.getIndexUpdateUrl( ); + + String wagonProtocol = remoteUpdateUri.toURL( ).getProtocol( ); + + NetworkProxy networkProxy = null; + if ( remoteRepository.supportsFeature( RemoteIndexFeature.class ) ) + { + RemoteIndexFeature rif = remoteRepository.getFeature( RemoteIndexFeature.class ).get( ); + if ( StringUtils.isNotBlank( rif.getProxyId( ) ) ) + { + networkProxy = proxyRegistry.getNetworkProxy( rif.getProxyId( ) ); + if ( networkProxy == null ) + { + log.warn( + "your remote repository is configured to download remote index trought a proxy we cannot find id:{}", + rif.getProxyId( ) ); + } + } + + final StreamWagon wagon = (StreamWagon) wagonFactory.getWagon( + new WagonFactoryRequest( wagonProtocol, remoteRepository.getExtraHeaders( ) ).networkProxy( + networkProxy ) + ); + int readTimeout = (int) rif.getDownloadTimeout( ).toMillis( ) * 1000; + wagon.setReadTimeout( readTimeout ); + wagon.setTimeout( (int) remoteRepository.getTimeout( ).toMillis( ) * 1000 ); + + if ( wagon instanceof AbstractHttpClientWagon) + { + HttpConfiguration httpConfiguration = new HttpConfiguration( ); + HttpMethodConfiguration httpMethodConfiguration = new HttpMethodConfiguration( ); + httpMethodConfiguration.setUsePreemptive( true ); + httpMethodConfiguration.setReadTimeout( readTimeout ); + httpConfiguration.setGet( httpMethodConfiguration ); + AbstractHttpClientWagon.class.cast( wagon ).setHttpConfiguration( httpConfiguration ); + } + + wagon.addTransferListener( new DownloadListener( ) ); + ProxyInfo proxyInfo = null; + if ( networkProxy != null ) + { + proxyInfo = new ProxyInfo( ); + proxyInfo.setType( networkProxy.getProtocol( ) ); + proxyInfo.setHost( networkProxy.getHost( ) ); + proxyInfo.setPort( networkProxy.getPort( ) ); + proxyInfo.setUserName( networkProxy.getUsername( ) ); + proxyInfo.setPassword( networkProxy.getPassword( ) ); + } + AuthenticationInfo authenticationInfo = null; + if ( remoteRepository.getLoginCredentials( ) != null && ( remoteRepository.getLoginCredentials( ) instanceof PasswordCredentials) ) + { + PasswordCredentials creds = (PasswordCredentials) remoteRepository.getLoginCredentials( ); + authenticationInfo = new AuthenticationInfo( ); + authenticationInfo.setUserName( creds.getUsername( ) ); + authenticationInfo.setPassword( new String( creds.getPassword( ) ) ); + } + wagon.connect( new org.apache.maven.wagon.repository.Repository( remoteRepository.getId( ), baseIndexUrl ), authenticationInfo, + proxyInfo ); + + Path indexDirectory = indexingContext.getIndexDirectoryFile( ).toPath( ); + if ( !Files.exists( indexDirectory ) ) + { + Files.createDirectories( indexDirectory ); + } + + ResourceFetcher resourceFetcher = + new WagonResourceFetcher( log, tempIndexDirectory, wagon, remoteRepository ); + IndexUpdateRequest request = new IndexUpdateRequest( indexingContext, resourceFetcher ); + request.setForceFullUpdate( fullUpdate ); + request.setLocalIndexCacheDir( indexCacheDirectory.toFile( ) ); + + // indexUpdater.fetchAndUpdateIndex( request ); + + indexingContext.updateTimestamp( true ); + } + + } + catch ( AuthenticationException e ) + { + log.error( "Could not login to the remote proxy for updating index of {}", remoteRepository.getId( ), e ); + throw new IndexUpdateFailedException( "Login in to proxy failed while updating remote repository " + remoteRepository.getId( ), e ); + } + catch ( ConnectionException e ) + { + log.error( "Connection error during index update for remote repository {}", remoteRepository.getId( ), e ); + throw new IndexUpdateFailedException( "Connection error during index update for remote repository " + remoteRepository.getId( ), e ); + } + catch ( MalformedURLException e ) + { + log.error( "URL for remote index update of remote repository {} is not correct {}", remoteRepository.getId( ), remoteUpdateUri, e ); + throw new IndexUpdateFailedException( "URL for remote index update of repository is not correct " + remoteUpdateUri, e ); + } + catch ( IOException e ) + { + log.error( "IOException during index update of remote repository {}: {}", remoteRepository.getId( ), e.getMessage( ), e ); + throw new IndexUpdateFailedException( "IOException during index update of remote repository " + remoteRepository.getId( ) + + ( StringUtils.isNotEmpty( e.getMessage( ) ) ? ": " + e.getMessage( ) : "" ), e ); + } + catch ( WagonFactoryException e ) + { + log.error( "Wagon for remote index download of {} could not be created: {}", remoteRepository.getId( ), e.getMessage( ), e ); + throw new IndexUpdateFailedException( "Error while updating the remote index of " + remoteRepository.getId( ), e ); + } + } ); + + } + + @Override + public void addArtifactsToIndex( final ArchivaIndexingContext context, final Collection<URI> artifactReference ) throws IndexUpdateFailedException + { + final URI ctxUri = context.getPath(); + executeUpdateFunction(context, indexingContext -> { + Collection<ArtifactContext> artifacts = artifactReference.stream().map(r -> artifactContextProducer.getArtifactContext(indexingContext, Paths.get(ctxUri.resolve(r)).toFile())).collect(Collectors.toList()); + try { + indexer.addArtifactsToIndex(artifacts, indexingContext); + } catch (IOException e) { + log.error("IOException while adding artifact {}", e.getMessage(), e); + throw new IndexUpdateFailedException("Error occured while adding artifact to index of "+context.getId() + + (StringUtils.isNotEmpty(e.getMessage()) ? ": "+e.getMessage() : "")); + } + }); + } + + @Override + public void removeArtifactsFromIndex( ArchivaIndexingContext context, Collection<URI> artifactReference ) throws IndexUpdateFailedException + { + final URI ctxUri = context.getPath(); + executeUpdateFunction(context, indexingContext -> { + Collection<ArtifactContext> artifacts = artifactReference.stream().map(r -> artifactContextProducer.getArtifactContext(indexingContext, Paths.get(ctxUri.resolve(r)).toFile())).collect(Collectors.toList()); + try { + indexer.deleteArtifactsFromIndex(artifacts, indexingContext); + } catch (IOException e) { + log.error("IOException while removing artifact {}", e.getMessage(), e); + throw new IndexUpdateFailedException("Error occured while removing artifact from index of "+context.getId() + + (StringUtils.isNotEmpty(e.getMessage()) ? ": "+e.getMessage() : "")); + } + }); + + } + + @Override + public boolean supportsRepository( RepositoryType type ) + { + return type == RepositoryType.MAVEN; + } + + @Override + public ArchivaIndexingContext createContext( Repository repository ) throws IndexCreationFailedException + { + log.debug("Creating context for repo {}, type: {}", repository.getId(), repository.getType()); + if ( repository.getType( ) != RepositoryType.MAVEN ) + { + throw new UnsupportedRepositoryTypeException( repository.getType( ) ); + } + IndexingContext mvnCtx = null; + try + { + if ( repository instanceof RemoteRepository ) + { + mvnCtx = createRemoteContext( (RemoteRepository) repository ); + } + else if ( repository instanceof ManagedRepository ) + { + mvnCtx = createManagedContext( (ManagedRepository) repository ); + } + } + catch ( IOException e ) + { + log.error( "IOException during context creation " + e.getMessage( ), e ); + throw new IndexCreationFailedException( "Could not create index context for repository " + repository.getId( ) + + ( StringUtils.isNotEmpty( e.getMessage( ) ) ? ": " + e.getMessage( ) : "" ), e ); + } + MavenIndexContextMock context = new MavenIndexContextMock( repository, mvnCtx ); + + return context; + } + + @Override + public ArchivaIndexingContext reset(ArchivaIndexingContext context) throws IndexUpdateFailedException { + ArchivaIndexingContext ctx; + executeUpdateFunction(context, indexingContext -> { + try { + indexingContext.close(true); + } catch (IOException e) { + log.warn("Index close failed"); + } + try { + FileUtils.deleteDirectory(Paths.get(context.getPath())); + } catch (IOException e) { + throw new IndexUpdateFailedException("Could not delete index files"); + } + }); + try { + Repository repo = context.getRepository(); + ctx = createContext(context.getRepository()); + if (repo instanceof EditableRepository) { + ((EditableRepository)repo).setIndexingContext(ctx); + } + } catch (IndexCreationFailedException e) { + throw new IndexUpdateFailedException("Could not create index"); + } + return ctx; + } + + @Override + public ArchivaIndexingContext move(ArchivaIndexingContext context, Repository repo) throws IndexCreationFailedException { + if (context==null) { + return null; + } + if (context.supports(IndexingContext.class)) { + try { + Path newPath = getIndexPath(repo); + IndexingContext ctx = context.getBaseContext(IndexingContext.class); + Path oldPath = ctx.getIndexDirectoryFile().toPath(); + if (oldPath.equals(newPath)) { + // Nothing to do, if path does not change + return context; + } + if (!Files.exists(oldPath)) { + return createContext(repo); + } else if (context.isEmpty()) { + context.close(); + return createContext(repo); + } else { + context.close(false); + Files.move(oldPath, newPath); + return createContext(repo); + } + } catch (IOException e) { + log.error("IOException while moving index directory {}", e.getMessage(), e); + throw new IndexCreationFailedException("Could not recreated the index.", e); + } catch (UnsupportedBaseContextException e) { + throw new IndexCreationFailedException("The given context, is not a maven context."); + } + } else { + throw new IndexCreationFailedException("Bad context type. This is not a maven context."); + } + } + + @Override + public void updateLocalIndexPath(Repository repo) { + if (repo.supportsFeature(IndexCreationFeature.class)) { + IndexCreationFeature icf = repo.getFeature(IndexCreationFeature.class).get(); + try { + icf.setLocalIndexPath(getIndexPath(repo)); + } catch (IOException e) { + log.error("Could not set local index path for {}. New URI: {}", repo.getId(), icf.getIndexPath()); + } + } + } + + + private Path getIndexPath(Repository repo) throws IOException { + IndexCreationFeature icf = repo.getFeature(IndexCreationFeature.class).get(); + Path repoDir = repo.getLocalPath(); + URI indexDir = icf.getIndexPath(); + Path indexDirectory = null; + if ( ! StringUtils.isEmpty(indexDir.toString( ) ) ) + { + + indexDirectory = PathUtil.getPathFromUri( indexDir ); + // not absolute so create it in repository directory + if ( !indexDirectory.isAbsolute( ) ) + { + indexDirectory = repoDir.resolve( indexDirectory ); + } + } + else + { + indexDirectory = repoDir.resolve( ".index" ); + } + + if ( !Files.exists( indexDirectory ) ) + { + Files.createDirectories( indexDirectory ); + } + return indexDirectory; + } + + private IndexingContext createRemoteContext(RemoteRepository remoteRepository ) throws IOException + { + Path appServerBase = archivaConfiguration.getAppServerBaseDir( ); + + String contextKey = "remote-" + remoteRepository.getId( ); + + + // create remote repository path + Path repoDir = remoteRepository.getLocalPath(); + if ( !Files.exists( repoDir ) ) + { + Files.createDirectories( repoDir ); + } + + Path indexDirectory = null; + + // is there configured indexDirectory ? + if ( remoteRepository.supportsFeature( RemoteIndexFeature.class ) ) + { + RemoteIndexFeature rif = remoteRepository.getFeature( RemoteIndexFeature.class ).get( ); + indexDirectory = getIndexPath(remoteRepository); + String remoteIndexUrl = calculateIndexRemoteUrl( remoteRepository.getLocation( ), rif ); + try + { + + return getIndexingContext( remoteRepository, contextKey, repoDir, indexDirectory, remoteIndexUrl ); + } + catch ( IndexFormatTooOldException e ) + { + // existing index with an old lucene format so we need to delete it!!! + // delete it first then recreate it. + log.warn( "the index of repository {} is too old we have to delete and recreate it", // + remoteRepository.getId( ) ); + org.apache.archiva.common.utils.FileUtils.deleteDirectory( indexDirectory ); + return getIndexingContext( remoteRepository, contextKey, repoDir, indexDirectory, remoteIndexUrl ); + + } + } + else + { + throw new IOException( "No remote index defined" ); + } + } + + private IndexingContext getIndexingContext( Repository repository, String contextKey, Path repoDir, Path indexDirectory, String indexUrl ) throws IOException + { + return indexer.createIndexingContext( contextKey, repository.getId( ), repoDir.toFile( ), indexDirectory.toFile( ), + repository.getLocation( ) == null ? null : repository.getLocation( ).toString( ), + indexUrl, + true, false, + indexCreators ); + } + + private IndexingContext createManagedContext( ManagedRepository repository ) throws IOException + { + + IndexingContext context; + // take care first about repository location as can be relative + Path repositoryDirectory = repository.getLocalPath(); + + if ( !Files.exists( repositoryDirectory ) ) + { + try + { + Files.createDirectories( repositoryDirectory ); + } + catch ( IOException e ) + { + log.error( "Could not create directory {}", repositoryDirectory ); + } + } + + Path indexDirectory = null; + + if ( repository.supportsFeature( IndexCreationFeature.class ) ) + { + indexDirectory = getIndexPath(repository); + + String indexUrl = repositoryDirectory.toUri( ).toURL( ).toExternalForm( ); + try + { + context = getIndexingContext( repository, repository.getId( ), repositoryDirectory, indexDirectory, indexUrl ); + context.setSearchable( repository.isScanned( ) ); + } + catch ( IndexFormatTooOldException e ) + { + // existing index with an old lucene format so we need to delete it!!! + // delete it first then recreate it. + log.warn( "the index of repository {} is too old we have to delete and recreate it", // + repository.getId( ) ); + org.apache.archiva.common.utils.FileUtils.deleteDirectory( indexDirectory ); + context = getIndexingContext( repository, repository.getId( ), repositoryDirectory, indexDirectory, indexUrl ); + context.setSearchable( repository.isScanned( ) ); + } + return context; + } + else + { + throw new IOException( "No repository index defined" ); + } + } + + private String calculateIndexRemoteUrl( URI baseUri, RemoteIndexFeature rif ) + { + if ( rif.getIndexUri( ) == null ) + { + return baseUri.resolve( ".index" ).toString( ); + } + else + { + return baseUri.resolve( rif.getIndexUri( ) ).toString( ); + } + } + + private static final class DownloadListener + implements TransferListener + { + private Logger log = LoggerFactory.getLogger( getClass( ) ); + + private String resourceName; + + private long startTime; + + private int totalLength = 0; + + @Override + public void transferInitiated( TransferEvent transferEvent ) + { + startTime = System.currentTimeMillis( ); + resourceName = transferEvent.getResource( ).getName( ); + log.debug( "initiate transfer of {}", resourceName ); + } + + @Override + public void transferStarted( TransferEvent transferEvent ) + { + this.totalLength = 0; + resourceName = transferEvent.getResource( ).getName( ); + log.info( "start transfer of {}", transferEvent.getResource( ).getName( ) ); + } + + @Override + public void transferProgress( TransferEvent transferEvent, byte[] buffer, int length ) + { + log.debug( "transfer of {} : {}/{}", transferEvent.getResource( ).getName( ), buffer.length, length ); + this.totalLength += length; + } + + @Override + public void transferCompleted( TransferEvent transferEvent ) + { + resourceName = transferEvent.getResource( ).getName( ); + long endTime = System.currentTimeMillis( ); + log.info( "end of transfer file {} {} kb: {}s", transferEvent.getResource( ).getName( ), + this.totalLength / 1024, ( endTime - startTime ) / 1000 ); + } + + @Override + public void transferError( TransferEvent transferEvent ) + { + log.info( "error of transfer file {}: {}", transferEvent.getResource( ).getName( ), + transferEvent.getException( ).getMessage( ), transferEvent.getException( ) ); + } + + @Override + public void debug( String message ) + { + log.debug( "transfer debug {}", message ); + } + } + + private static class WagonResourceFetcher + implements ResourceFetcher + { + + Logger log; + + Path tempIndexDirectory; + + Wagon wagon; + + RemoteRepository remoteRepository; + + private WagonResourceFetcher( Logger log, Path tempIndexDirectory, Wagon wagon, + RemoteRepository remoteRepository ) + { + this.log = log; + this.tempIndexDirectory = tempIndexDirectory; + this.wagon = wagon; + this.remoteRepository = remoteRepository; + } + + @Override + public void connect( String id, String url ) + throws IOException + { + //no op + } + + @Override + public void disconnect( ) + throws IOException + { + // no op + } + + @Override + public InputStream retrieve(String name ) + throws IOException, FileNotFoundException + { + try + { + log.info( "index update retrieve file, name:{}", name ); + Path file = tempIndexDirectory.resolve( name ); + Files.deleteIfExists( file ); + file.toFile( ).deleteOnExit( ); + wagon.get( addParameters( name, remoteRepository ), file.toFile( ) ); + return Files.newInputStream( file ); + } + catch ( AuthorizationException | TransferFailedException e ) + { + throw new IOException( e.getMessage( ), e ); + } + catch ( ResourceDoesNotExistException e ) + { + FileNotFoundException fnfe = new FileNotFoundException( e.getMessage( ) ); + fnfe.initCause( e ); + throw fnfe; + } + } + + // FIXME remove crappy copy/paste + protected String addParameters( String path, RemoteRepository remoteRepository ) + { + if ( remoteRepository.getExtraParameters( ).isEmpty( ) ) + { + return path; + } + + boolean question = false; + + StringBuilder res = new StringBuilder( path == null ? "" : path ); + + for ( Map.Entry<String, String> entry : remoteRepository.getExtraParameters( ).entrySet( ) ) + { + if ( !question ) + { + res.append( '?' ).append( entry.getKey( ) ).append( '=' ).append( entry.getValue( ) ); + } + } + + return res.toString( ); + } + + } +} diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/index/mock/MavenIndexContextMock.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/index/mock/MavenIndexContextMock.java new file mode 100644 index 000000000..e0db09597 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/index/mock/MavenIndexContextMock.java @@ -0,0 +1,137 @@ +package org.apache.archiva.repository.index.mock; + +/* + * 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.archiva.indexer.ArchivaIndexingContext; +import org.apache.archiva.repository.Repository; +import org.apache.maven.index.context.IndexingContext; + +import java.io.IOException; +import java.net.URI; +import java.nio.file.Files; +import java.nio.file.NoSuchFileException; +import java.sql.Date; +import java.time.ZonedDateTime; +import java.util.Set; + +/** + * Maven implementation of index context + */ +public class MavenIndexContextMock implements ArchivaIndexingContext { + + private IndexingContext delegate; + private Repository repository; + + MavenIndexContextMock(Repository repository, IndexingContext delegate) { + this.delegate = delegate; + this.repository = repository; + + } + + @Override + public String getId() { + return delegate.getId(); + } + + @Override + public Repository getRepository() { + return repository; + } + + @Override + public URI getPath() { + return delegate.getIndexDirectoryFile().toURI(); + } + + @Override + public boolean isEmpty() throws IOException { + return Files.list(delegate.getIndexDirectoryFile().toPath()).count()==0; + } + + @Override + public void commit() throws IOException { + delegate.commit(); + } + + @Override + public void rollback() throws IOException { + delegate.rollback(); + } + + @Override + public void optimize() throws IOException { + delegate.optimize(); + } + + @Override + public void close(boolean deleteFiles) throws IOException { + try { + delegate.close(deleteFiles); + } catch (NoSuchFileException e) { + // Ignore missing directory + } + } + + @Override + public void close() throws IOException { + try { + delegate.close(false); + } catch (NoSuchFileException e) { + // Ignore missing directory + } + } + + @Override + public void purge() throws IOException { + delegate.purge(); + } + + @Override + public boolean supports(Class<?> clazz) { + return IndexingContext.class.equals(clazz); + } + + @SuppressWarnings( "unchecked" ) + @Override + public <T> T getBaseContext(Class<T> clazz) throws UnsupportedOperationException { + if (IndexingContext.class.equals(clazz)) { + return (T) delegate; + } else { + throw new UnsupportedOperationException("The class "+clazz+" is not supported by the maven indexer"); + } + } + + @Override + public Set<String> getGroups() throws IOException { + return delegate.getAllGroups(); + } + + @Override + public void updateTimestamp(boolean save) throws IOException { + delegate.updateTimestamp(save); + } + + @Override + public void updateTimestamp(boolean save, ZonedDateTime time) throws IOException { + delegate.updateTimestamp(save, Date.from(time.toInstant())); + } + + +} diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven2/MavenRepositoryProviderTest.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven2/MavenRepositoryProviderTest.java new file mode 100644 index 000000000..9030f6581 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven2/MavenRepositoryProviderTest.java @@ -0,0 +1,295 @@ +package org.apache.archiva.repository.maven2; + +/* + * 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.archiva.common.utils.FileUtils; +import org.apache.archiva.configuration.ArchivaRuntimeConfiguration; +import org.apache.archiva.configuration.ManagedRepositoryConfiguration; +import org.apache.archiva.configuration.RemoteRepositoryConfiguration; +import org.apache.archiva.metadata.repository.storage.maven2.conf.MockConfiguration; +import org.apache.archiva.repository.ManagedRepository; +import org.apache.archiva.repository.PasswordCredentials; +import org.apache.archiva.repository.ReleaseScheme; +import org.apache.archiva.repository.RemoteRepository; +import org.apache.archiva.repository.RepositoryType; +import org.apache.archiva.repository.UnsupportedFeatureException; +import org.apache.archiva.repository.features.ArtifactCleanupFeature; +import org.apache.archiva.repository.features.IndexCreationFeature; +import org.apache.archiva.repository.features.RemoteIndexFeature; +import org.apache.archiva.repository.features.StagingRepositoryFeature; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +import java.net.URI; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.time.Duration; +import java.time.Period; +import java.time.temporal.ChronoUnit; +import java.util.HashMap; +import java.util.Map; + +import static org.junit.Assert.*; + +/** + * @author Martin Stockhammer <martin_s@apache.org> + */ +public class MavenRepositoryProviderTest +{ + + MavenRepositoryProvider provider; + + Path repoLocation; + + + @Before + public void setUp() + throws Exception + { + provider = new MavenRepositoryProvider( ); + MockConfiguration mockConfiguration =new MockConfiguration(); + mockConfiguration.getConfiguration().setArchivaRuntimeConfiguration( new ArchivaRuntimeConfiguration() ); + mockConfiguration.getConfiguration().getArchivaRuntimeConfiguration().setRepositoryBaseDirectory( "repositories" ); + provider.setArchivaConfiguration( mockConfiguration ); + } + + @After + public void cleanUp() { + if (repoLocation!=null && Files.exists( repoLocation )) { + FileUtils.deleteQuietly( repoLocation ); + } + } + + @Test + public void provides( ) throws Exception + { + assertEquals(1, provider.provides().size()); + assertEquals( RepositoryType.MAVEN, provider.provides().iterator().next()); + } + + @Test + public void createManagedInstance( ) throws Exception + { + ManagedRepositoryConfiguration repo = new ManagedRepositoryConfiguration( ); + repo.setId("testm001"); + repo.setName("Managed Test Repo 001"); + repo.setDescription( "This is a managed test" ); + repo.setRetentionPeriod( 37 ); + repoLocation = Files.createTempDirectory( "test-repo-001"); + repo.setLocation( repoLocation.toAbsolutePath().toString() ); + repo.setSnapshots( true ); + repo.setReleases( true ); + repo.setRefreshCronExpression( "4 0 0 ? * TUE" ); + repo.setScanned( true ); + repo.setBlockRedeployments( true ); + repo.setDeleteReleasedSnapshots( true ); + repo.setRetentionCount( 33 ); + repo.setSkipPackedIndexCreation( true ); + repo.setStageRepoNeeded( true ); + repo.setIndexDir( "testmanaged/.index" ); + repo.setLayout( "maven2" ); + repo.setType( RepositoryType.MAVEN.toString() ); + + + ManagedRepository mr = provider.createManagedInstance( repo ); + assertNotNull(mr.getLocation()); + String repoUri = repoLocation.toUri().toString(); + assertTrue(Files.exists(repoLocation)); + repoUri = repoUri.substring( 0, repoUri.length()-1 ); + assertEquals(repoUri, mr.getLocation().toString()); + assertEquals("This is a managed test", mr.getDescription()); + assertEquals("Managed Test Repo 001", mr.getName()); + assertEquals(2, mr.getActiveReleaseSchemes().size()); + assertTrue( mr.getActiveReleaseSchemes().contains( ReleaseScheme.RELEASE )); + assertTrue( mr.getActiveReleaseSchemes().contains( ReleaseScheme.SNAPSHOT)); + assertEquals("testm001", mr.getId()); + assertTrue(mr.blocksRedeployments()); + assertEquals("4 0 0 ? * TUE", mr.getSchedulingDefinition()); + assertTrue(mr.isScanned()); + ArtifactCleanupFeature artifactCleanupFeature = mr.getFeature( ArtifactCleanupFeature.class ).get(); + assertEquals( Period.ofDays( 37), artifactCleanupFeature.getRetentionPeriod()); + assertTrue(artifactCleanupFeature.isDeleteReleasedSnapshots()); + assertEquals(33, artifactCleanupFeature.getRetentionCount()); + + IndexCreationFeature indexCreationFeature = mr.getFeature( IndexCreationFeature.class ).get(); + assertNotNull(indexCreationFeature.getIndexPath()); + assertEquals("testmanaged/.index", indexCreationFeature.getIndexPath().toString()); + assertFalse(indexCreationFeature.getIndexPath().isAbsolute()); + assertTrue(indexCreationFeature.isSkipPackedIndexCreation()); + + StagingRepositoryFeature stagingRepositoryFeature = mr.getFeature( StagingRepositoryFeature.class ).get(); + assertTrue(stagingRepositoryFeature.isStageRepoNeeded()); + assertNull(stagingRepositoryFeature.getStagingRepository()); + + + } + + @Test + public void createRemoteInstance( ) throws Exception + { + RemoteRepositoryConfiguration repo = new RemoteRepositoryConfiguration( ); + repo.setUsername("testuser001"); + repo.setPassword( "pwd0000abc" ); + repo.setCheckPath( "test/check.html" ); + repo.setTimeout( 50 ); + repo.setUrl( "https://repo.maven.apache.org/maven2/test" ); + repo.setDownloadRemoteIndex( true ); + repo.setDownloadRemoteIndexOnStartup( true ); + Map<String,String> header = new HashMap<>( ); + header.put("header1","value1"); + header.put("header2","value2"); + repo.setExtraHeaders( header ); + Map<String,String> params = new HashMap<>( ); + params.put("param1","pval1"); + params.put("param2","pval2"); + repo.setExtraParameters( params ); + repo.setRefreshCronExpression( "0 1 07 ? * MON" ); + repo.setRemoteDownloadTimeout( 333 ); + repo.setRemoteIndexUrl( "testremote/.index" ); + repo.setDescription( "This is a test" ); + repo.setId( "test001" ); + repo.setName( "Remote Test Repo 001" ); + repo.setIndexDir( "testindex/.index" ); + repo.setLayout( "maven2" ); + repo.setType( RepositoryType.MAVEN.toString() ); + repo.setIndexDir( "local/.index" ); + + RemoteRepository mr = provider.createRemoteInstance( repo ); + assertEquals("test001", mr.getId()); + assertEquals("This is a test", mr.getDescription()); + assertNotNull(mr.getLocation()); + assertEquals("https://repo.maven.apache.org/maven2/test", mr.getLocation().toString()); + assertEquals("Remote Test Repo 001", mr.getName()); + assertEquals("test001", mr.getId()); + assertEquals("0 1 07 ? * MON", mr.getSchedulingDefinition()); + assertEquals(50, mr.getTimeout().get( ChronoUnit.SECONDS )); + assertTrue(mr.isScanned()); + assertNotNull(mr.getLoginCredentials()); + assertTrue(mr.getLoginCredentials() instanceof PasswordCredentials); + PasswordCredentials creds = (PasswordCredentials) mr.getLoginCredentials(); + assertEquals("testuser001", creds.getUsername()); + assertEquals("pwd0000abc", new String(creds.getPassword())); + assertEquals("value1", mr.getExtraHeaders().get("header1")); + assertEquals("pval2", mr.getExtraParameters().get("param2")); + assertEquals( "maven2", mr.getLayout()); + try + { + ArtifactCleanupFeature artifactCleanupFeature = mr.getFeature( ArtifactCleanupFeature.class ).get( ); + throw new Exception("artifactCleanupFeature should not be available"); + } catch ( UnsupportedFeatureException e ) { + // correct + } + + IndexCreationFeature indexCreationFeature = mr.getFeature( IndexCreationFeature.class ).get( ); + assertEquals("local/.index", indexCreationFeature.getIndexPath().toString()); + try + { + StagingRepositoryFeature stagingRepositoryFeature = mr.getFeature( StagingRepositoryFeature.class ).get( ); + throw new Exception("stagingRepositoryFeature should not be available"); + } catch (UnsupportedFeatureException e) { + // correct + } + RemoteIndexFeature remoteIndexFeature = mr.getFeature( RemoteIndexFeature.class ).get(); + assertNull(remoteIndexFeature.getProxyId()); + } + + @Test + public void getManagedConfiguration() throws Exception { + MavenManagedRepository repo = new MavenManagedRepository( "test01", "My Test repo", Paths.get("target/repositories") ); + + repo.setLocation( new URI("file:///this.is/a/test") ); + repo.setScanned( true ); + repo.setDescription( repo.getPrimaryLocale(), "This is a description" ); + repo.setLayout( "maven2" ); + repo.setBlocksRedeployment( true ); + repo.setName( repo.getPrimaryLocale(), "test0002" ); + repo.setSchedulingDefinition( "0 0 05 ? * WED" ); + repo.addActiveReleaseScheme( ReleaseScheme.RELEASE ); + repo.addActiveReleaseScheme( ReleaseScheme.SNAPSHOT ); + StagingRepositoryFeature stagingFeat = repo.getFeature( StagingRepositoryFeature.class ).get( ); + stagingFeat.setStageRepoNeeded( true ); + IndexCreationFeature indexCreationFeature = repo.getFeature( IndexCreationFeature.class ).get(); + indexCreationFeature.setIndexPath( new URI("test/.indexes") ); + indexCreationFeature.setSkipPackedIndexCreation( true ); + ArtifactCleanupFeature artifactCleanupFeature = repo.getFeature( ArtifactCleanupFeature.class ).get(); + artifactCleanupFeature.setRetentionPeriod( Period.ofDays( 5 ) ); + artifactCleanupFeature.setRetentionCount( 7 ); + artifactCleanupFeature.setDeleteReleasedSnapshots( true ); + + ManagedRepositoryConfiguration cfg = provider.getManagedConfiguration( repo ); + assertEquals("/this.is/a/test", cfg.getLocation()); + assertTrue(cfg.isScanned()); + assertEquals( "This is a description", cfg.getDescription() ); + assertEquals("maven2", cfg.getLayout()); + assertTrue(cfg.isBlockRedeployments()); + assertEquals("test0002", cfg.getName()); + assertEquals("0 0 05 ? * WED", cfg.getRefreshCronExpression()); + assertTrue(cfg.isStageRepoNeeded()); + assertEquals("test/.indexes", cfg.getIndexDir()); + assertTrue(cfg.isSkipPackedIndexCreation()); + assertEquals(5, cfg.getRetentionPeriod()); + assertEquals(7, cfg.getRetentionCount()); + assertTrue(cfg.isDeleteReleasedSnapshots()); + assertTrue(cfg.isReleases()); + assertTrue(cfg.isSnapshots()); + assertTrue(cfg.isScanned()); + + + + } + + @Test + public void getRemoteConfiguration() throws Exception { + MavenRemoteRepository repo = new MavenRemoteRepository( "test01", "My Test repo", Paths.get("target/remotes") ); + + repo.setLocation( new URI("https://this.is/a/test") ); + repo.setScanned( true ); + repo.setDescription( repo.getPrimaryLocale(), "This is a description" ); + repo.setLayout( "maven2" ); + repo.setName( repo.getPrimaryLocale(), "test0003" ); + repo.setSchedulingDefinition( "0 0 05 ? * WED" ); + RemoteIndexFeature remoteIndexFeature = repo.getFeature( RemoteIndexFeature.class ).get(); + remoteIndexFeature.setProxyId( "proxyabc" ); + remoteIndexFeature.setDownloadTimeout( Duration.ofSeconds( 54 ) ); + remoteIndexFeature.setDownloadRemoteIndex( false ); + remoteIndexFeature.setIndexUri( new URI("/this/remote/.index") ); + remoteIndexFeature.setDownloadRemoteIndexOnStartup( true ); + IndexCreationFeature indexCreationFeature = repo.getFeature( IndexCreationFeature.class ).get(); + indexCreationFeature.setIndexPath( new URI("/this/local/.index") ); + + RemoteRepositoryConfiguration cfg = provider.getRemoteConfiguration( repo ); + assertEquals("https://this.is/a/test", cfg.getUrl()); + assertEquals( "This is a description", cfg.getDescription() ); + assertEquals("maven2", cfg.getLayout()); + assertEquals("test0003", cfg.getName()); + assertEquals("0 0 05 ? * WED", cfg.getRefreshCronExpression()); + assertEquals("/this/remote/.index", cfg.getRemoteIndexUrl()); + assertEquals("proxyabc", cfg.getRemoteDownloadNetworkProxyId()); + assertEquals(54, cfg.getRemoteDownloadTimeout()); + assertFalse(cfg.isDownloadRemoteIndex()); + assertTrue(cfg.isDownloadRemoteIndexOnStartup()); + assertEquals("/this/local/.index", cfg.getIndexDir()); + + + } + +}
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/metadata/Maven2RepositoryStorageTest.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/metadata/Maven2RepositoryStorageTest.java new file mode 100644 index 000000000..dd4ecd91c --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/metadata/Maven2RepositoryStorageTest.java @@ -0,0 +1,65 @@ +package org.apache.archiva.repository.metadata; + +/* + * 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.archiva.metadata.repository.storage.RepositoryStorage; +import org.apache.archiva.repository.maven2.MavenManagedRepository; +import org.apache.archiva.test.utils.ArchivaSpringJUnit4ClassRunner; +import org.junit.Assert; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.test.context.ContextConfiguration; + +import javax.inject.Inject; +import javax.inject.Named; +import java.nio.file.Paths; + +/** + * @author Olivier Lamy + */ +@RunWith( ArchivaSpringJUnit4ClassRunner.class ) +@ContextConfiguration( { "classpath*:/spring-context-storage.xml", "classpath*:META-INF/spring-context.xml" } ) +public class Maven2RepositoryStorageTest +{ + @Inject + @Named( "repositoryStorage#maven2" ) + RepositoryStorage repositoryStorage; + + @Test + public void testGetLogicalPath() + { + String href = "/repository/internal/org/apache/maven/someartifact.jar"; + Assert.assertEquals( "/org/apache/maven/someartifact.jar", + repositoryStorage.getFilePath( href, new MavenManagedRepository( "repo01", "repo01", Paths.get("target/repositories")) ) ); + + href = "repository/internal/org/apache/maven/someartifact.jar"; + Assert.assertEquals( "/org/apache/maven/someartifact.jar", + repositoryStorage.getFilePath( href, new MavenManagedRepository( "repo01", "repo01", Paths.get("target/repositories") ) ) ); + + href = "repository/internal/org/apache/maven/"; + Assert.assertEquals( "/org/apache/maven/", repositoryStorage.getFilePath( href, new MavenManagedRepository("repo01", "repo01", Paths.get("target/repositories")) ) ); + + href = "mypath"; + Assert.assertEquals( "/", repositoryStorage.getFilePath( href, new MavenManagedRepository("repo01", "repo01", Paths.get("target/repositories")) ) ); + } + + +} + diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/metadata/MetadataToolsTest.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/metadata/MetadataToolsTest.java new file mode 100644 index 000000000..5271cc63e --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/metadata/MetadataToolsTest.java @@ -0,0 +1,658 @@ +package org.apache.archiva.repository.metadata; + +/* + * 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.archiva.common.utils.VersionComparator; +import org.apache.archiva.configuration.ProxyConnectorConfiguration; +import org.apache.archiva.metadata.repository.storage.maven2.conf.MockConfiguration; +import org.apache.archiva.model.ProjectReference; +import org.apache.archiva.model.VersionedReference; +import org.apache.archiva.policies.CachedFailuresPolicy; +import org.apache.archiva.policies.ChecksumPolicy; +import org.apache.archiva.policies.ReleasesPolicy; +import org.apache.archiva.policies.SnapshotsPolicy; +import org.apache.archiva.repository.AbstractRepositoryLayerTestCase; +import org.apache.archiva.repository.LayoutException; +import org.apache.archiva.repository.ManagedRepositoryContent; +import org.apache.archiva.repository.RemoteRepositoryContent; +import org.apache.archiva.repository.RepositoryContentProvider; +import org.apache.archiva.repository.maven2.MavenManagedRepository; +import org.apache.commons.io.FileUtils; +import org.apache.commons.lang.StringUtils; +import org.custommonkey.xmlunit.DetailedDiff; +import org.custommonkey.xmlunit.Diff; +import org.junit.Test; +import org.springframework.test.context.ContextConfiguration; +import org.xml.sax.SAXException; + +import javax.inject.Inject; +import javax.inject.Named; +import javax.xml.parsers.ParserConfigurationException; +import java.io.IOException; +import java.nio.charset.Charset; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Set; + +import static org.junit.Assert.*; + +/** + * MetadataToolsTest + */ +@SuppressWarnings( "deprecation" ) +@ContextConfiguration ( + { "classpath*:/META-INF/spring-context.xml", "classpath:/spring-context-metadata-tools-test.xml" } ) +public class MetadataToolsTest + extends AbstractRepositoryLayerTestCase +{ + @Inject + @Named ( "metadataTools#test" ) + private MetadataTools tools; + + @Inject + @Named ( "archivaConfiguration#mock" ) + protected MockConfiguration config; + + @Test + public void testGatherSnapshotVersionsA() + throws Exception + { + removeProxyConnector( "test-repo", "apache-snapshots" ); + removeProxyConnector( "test-repo", "internal-snapshots" ); + removeProxyConnector( "test-repo", "snapshots.codehaus.org" ); + + assertSnapshotVersions( "snap_shots_a", "1.0-alpha-11-SNAPSHOT", + new String[]{ "1.0-alpha-11-SNAPSHOT", "1.0-alpha-11-20070221.194724-2", + "1.0-alpha-11-20070302.212723-3", "1.0-alpha-11-20070303.152828-4", + "1.0-alpha-11-20070305.215149-5", "1.0-alpha-11-20070307.170909-6", + "1.0-alpha-11-20070314.211405-9", "1.0-alpha-11-20070316.175232-11" } ); + } + + @Test + public void testGatherSnapshotVersionsAWithProxies() + throws Exception + { + // These proxied repositories do not need to exist for the purposes of this unit test, + // just the repository ids are important. + createProxyConnector( "test-repo", "apache-snapshots" ); + createProxyConnector( "test-repo", "internal-snapshots" ); + createProxyConnector( "test-repo", "snapshots.codehaus.org" ); + + assertSnapshotVersions( "snap_shots_a", "1.0-alpha-11-SNAPSHOT", + new String[]{ "1.0-alpha-11-SNAPSHOT", "1.0-alpha-11-20070221.194724-2", + "1.0-alpha-11-20070302.212723-3", "1.0-alpha-11-20070303.152828-4", + "1.0-alpha-11-20070305.215149-5", "1.0-alpha-11-20070307.170909-6", + "1.0-alpha-11-20070314.211405-9", "1.0-alpha-11-20070315.033030-10" + /* Arrives in via snapshots.codehaus.org proxy */, + "1.0-alpha-11-20070316.175232-11" } ); + } + + @Test + public void testGetRepositorySpecificName() + throws Exception + { + RemoteRepositoryContent repoJavaNet = + createRemoteRepositoryContent( "maven2-repository.dev.java.net", "Java.net Repository for Maven 2", + "http://download.java.net/maven/2/", "default" ); + RemoteRepositoryContent repoCentral = + createRemoteRepositoryContent( "central", "Central Global Repository", "http://repo1.maven.org/maven2/", + "default" ); + + String convertedName = + tools.getRepositorySpecificName( repoJavaNet, "commons-lang/commons-lang/maven-metadata.xml" ); + assertMetadataPath( "commons-lang/commons-lang/maven-metadata-maven2-repository.dev.java.net.xml", + convertedName ); + + convertedName = tools.getRepositorySpecificName( repoCentral, "commons-lang/commons-lang/maven-metadata.xml" ); + assertMetadataPath( "commons-lang/commons-lang/maven-metadata-central.xml", convertedName ); + } + + // TODO: replace with group tests +// public void testUpdateProjectBadArtifact() +// throws Exception +// { +// try +// { +// assertUpdatedProjectMetadata( "bad_artifact", null ); +// fail( "Should have thrown an IOException on a bad artifact." ); +// } +// catch ( IOException e ) +// { +// // Expected path +// } +// } + + @Test + public void testUpdateProjectNonExistingVersion() + throws Exception + { + ManagedRepositoryContent testRepo = createTestRepoContent(); + ProjectReference reference = new ProjectReference(); + reference.setGroupId( "org.apache.archiva.metadata.tests" ); + reference.setArtifactId( "missing_artifact" ); + + prepTestRepo( testRepo, reference ); + + // check metadata prior to update -- should contain the non-existing artifact version + assertProjectMetadata( testRepo, reference, "missing_artifact", + new String[]{ "1.0-SNAPSHOT", "1.1-SNAPSHOT", "1.2-SNAPSHOT" }, "1.2-SNAPSHOT", null ); + + tools.updateMetadata( testRepo, reference ); + + // metadata should not contain the non-existing artifact version -- 1.1-SNAPSHOT + assertProjectMetadata( testRepo, reference, "missing_artifact", new String[]{ "1.0-SNAPSHOT", "1.2-SNAPSHOT" }, + "1.2-SNAPSHOT", null ); + } + + @Test + public void testUpdateProjectMissingMultipleVersions() + throws Exception + { + assertUpdatedProjectMetadata( "missing_metadata_b", + new String[]{ "1.0", "1.0.1", "2.0", "2.0.1", "2.0-20070821-dev" }, + "2.0-20070821-dev", "2.0-20070821-dev" ); + } + + @Test + public void testUpdateProjectMissingMultipleVersionsWithProxies() + throws Exception + { + // Attach the (bogus) proxies to the managed repo. + // These proxied repositories do not need to exist for the purposes of this unit test, + // just the repository ids are important. + createProxyConnector( "test-repo", "central" ); + createProxyConnector( "test-repo", "java.net" ); + + assertUpdatedProjectMetadata( "proxied_multi", + new String[]{ "1.0-spec" /* in java.net */, "1.0" /* in managed, and central */, + "1.0.1" /* in central */, "1.1" /* in managed */, "2.0-proposal-beta" + /* in java.net */, "2.0-spec" /* in java.net */, "2.0" + /* in central, and java.net */, "2.0.1" /* in java.net */, "2.1" + /* in managed */, "3.0" /* in central */, "3.1" /* in central */ }, "3.1", + "3.1" ); + } + + @Test + public void testUpdateProjectSimpleYetIncomplete() + throws Exception + { + assertUpdatedProjectMetadata( "incomplete_metadata_a", new String[]{ "1.0" }, "1.0", "1.0" ); + } + + @Test + public void testUpdateProjectSimpleYetMissing() + throws Exception + { + assertUpdatedProjectMetadata( "missing_metadata_a", new String[]{ "1.0" }, "1.0", "1.0" ); + } + + @Test + public void testUpdateVersionSimple10() + throws Exception + { + assertUpdatedReleaseVersionMetadata( "missing_metadata_a", "1.0" ); + } + + @Test + public void testUpdateVersionSimple20() + throws Exception + { + assertUpdatedReleaseVersionMetadata( "missing_metadata_b", "2.0" ); + } + + @Test + public void testUpdateVersionSimple20NotSnapshot() + throws Exception + { + assertUpdatedReleaseVersionMetadata( "missing_metadata_b", "2.0-20070821-dev" ); + } + + @Test + public void testUpdateVersionSnapshotA() + throws Exception + { + assertUpdatedSnapshotVersionMetadata( "snap_shots_a", "1.0-alpha-11-SNAPSHOT", "20070316", "175232", "11" ); + } + + @Test + public void testToPathFromVersionReference() + { + VersionedReference reference = new VersionedReference(); + reference.setGroupId( "com.foo" ); + reference.setArtifactId( "foo-tool" ); + reference.setVersion( "1.0" ); + + assertEquals( "com/foo/foo-tool/1.0/maven-metadata.xml", tools.toPath( reference ) ); + } + + @Test + public void testToPathFromProjectReference() + { + ProjectReference reference = new ProjectReference(); + reference.setGroupId( "com.foo" ); + reference.setArtifactId( "foo-tool" ); + + assertEquals( "com/foo/foo-tool/maven-metadata.xml", tools.toPath( reference ) ); + } + + @Test + public void testToProjectReferenceFooTools() + throws RepositoryMetadataException + { + assertProjectReference( "com.foo", "foo-tools", "com/foo/foo-tools/maven-metadata.xml" ); + } + + @Test + public void testToProjectReferenceAReallyLongPath() + throws RepositoryMetadataException + { + String groupId = "net.i.have.a.really.long.path.just.for.the.hell.of.it"; + String artifactId = "a"; + String path = "net/i/have/a/really/long/path/just/for/the/hell/of/it/a/maven-metadata.xml"; + + assertProjectReference( groupId, artifactId, path ); + } + + @Test + public void testToProjectReferenceCommonsLang() + throws RepositoryMetadataException + { + String groupId = "commons-lang"; + String artifactId = "commons-lang"; + String path = "commons-lang/commons-lang/maven-metadata.xml"; + + assertProjectReference( groupId, artifactId, path ); + } + + private void assertProjectReference( String groupId, String artifactId, String path ) + throws RepositoryMetadataException + { + ProjectReference reference = tools.toProjectReference( path ); + + assertNotNull( "Reference should not be null.", reference ); + assertEquals( "ProjectReference.groupId", groupId, reference.getGroupId() ); + assertEquals( "ProjectReference.artifactId", artifactId, reference.getArtifactId() ); + } + + @Test + public void testToVersionedReferenceFooTool() + throws RepositoryMetadataException + { + String groupId = "com.foo"; + String artifactId = "foo-tool"; + String version = "1.0"; + String path = "com/foo/foo-tool/1.0/maven-metadata.xml"; + + assertVersionedReference( groupId, artifactId, version, path ); + } + + @Test + public void testToVersionedReferenceAReallyLongPath() + throws RepositoryMetadataException + { + String groupId = "net.i.have.a.really.long.path.just.for.the.hell.of.it"; + String artifactId = "a"; + String version = "1.1-alpha-1"; + String path = "net/i/have/a/really/long/path/just/for/the/hell/of/it/a/1.1-alpha-1/maven-metadata.xml"; + + assertVersionedReference( groupId, artifactId, version, path ); + } + + @Test + public void testToVersionedReferenceCommonsLang() + throws RepositoryMetadataException + { + String groupId = "commons-lang"; + String artifactId = "commons-lang"; + String version = "2.1"; + String path = "commons-lang/commons-lang/2.1/maven-metadata.xml"; + + assertVersionedReference( groupId, artifactId, version, path ); + } + + @Test + public void testToVersionedReferenceSnapshot() + throws RepositoryMetadataException + { + String groupId = "com.foo"; + String artifactId = "foo-connector"; + String version = "2.1-SNAPSHOT"; + String path = "com/foo/foo-connector/2.1-SNAPSHOT/maven-metadata.xml"; + + assertVersionedReference( groupId, artifactId, version, path ); + } + + private void assertVersionedReference( String groupId, String artifactId, String version, String path ) + throws RepositoryMetadataException + { + VersionedReference reference = tools.toVersionedReference( path ); + assertNotNull( "Reference should not be null.", reference ); + + assertEquals( "VersionedReference.groupId", groupId, reference.getGroupId() ); + assertEquals( "VersionedReference.artifactId", artifactId, reference.getArtifactId() ); + assertEquals( "VersionedReference.version", version, reference.getVersion() ); + } + + private void assertSnapshotVersions( String artifactId, String version, String[] expectedVersions ) + throws Exception + { + Path repoRootDir = Paths.get( "src/test/repositories/metadata-repository" ); + + VersionedReference reference = new VersionedReference(); + reference.setGroupId( "org.apache.archiva.metadata.tests" ); + reference.setArtifactId( artifactId ); + reference.setVersion( version ); + + MavenManagedRepository repo = + createRepository( "test-repo", "Test Repository: " + name.getMethodName(), repoRootDir ); + + RepositoryContentProvider provider = applicationContext.getBean( "repositoryContentProvider#maven", RepositoryContentProvider.class ); + + ManagedRepositoryContent repoContent = + provider.createManagedContent( repo ); + + Set<String> testedVersionSet = tools.gatherSnapshotVersions( repoContent, reference ); + + // Sort the list (for asserts) + List<String> testedVersions = new ArrayList<>(); + testedVersions.addAll( testedVersionSet ); + Collections.sort( testedVersions, new VersionComparator() ); + + // Test the expected array of versions, to the actual tested versions + assertEquals( "Assert Snapshot Versions: length/size", expectedVersions.length, testedVersions.size() ); + + for ( int i = 0; i < expectedVersions.length; i++ ) + { + String actualVersion = testedVersions.get( i ); + assertEquals( "Snapshot Versions[" + i + "]", expectedVersions[i], actualVersion ); + } + } + + private void assertMetadata( String expectedMetadata, ManagedRepositoryContent repository, + ProjectReference reference ) + throws LayoutException, IOException, SAXException, ParserConfigurationException + { + Path metadataFile = Paths.get( repository.getRepoRoot(), tools.toPath( reference ) ); + String actualMetadata = org.apache.archiva.common.utils.FileUtils.readFileToString( metadataFile, Charset.defaultCharset() ); + + DetailedDiff detailedDiff = new DetailedDiff( new Diff( expectedMetadata, actualMetadata ) ); + if ( !detailedDiff.similar() ) + { + // If it isn't similar, dump the difference. + assertEquals( expectedMetadata, actualMetadata ); + } + } + + private void assertMetadata( String expectedMetadata, ManagedRepositoryContent repository, + VersionedReference reference ) + throws LayoutException, IOException, SAXException, ParserConfigurationException + { + Path metadataFile = Paths.get( repository.getRepoRoot(), tools.toPath( reference ) ); + String actualMetadata = org.apache.archiva.common.utils.FileUtils.readFileToString( metadataFile, Charset.defaultCharset() ); + + DetailedDiff detailedDiff = new DetailedDiff( new Diff( expectedMetadata, actualMetadata ) ); + if ( !detailedDiff.similar() ) + { + // If it isn't similar, dump the difference. + assertEquals( expectedMetadata, actualMetadata ); + } + } + + private void assertMetadataPath( String expected, String actual ) + { + assertEquals( "Repository Specific Metadata Path", expected, actual ); + } + + private void assertUpdatedProjectMetadata( String artifactId, String[] expectedVersions, String latestVersion, + String releaseVersion ) + throws Exception + { + ManagedRepositoryContent testRepo = createTestRepoContent(); + ProjectReference reference = new ProjectReference(); + reference.setGroupId( "org.apache.archiva.metadata.tests" ); + reference.setArtifactId( artifactId ); + + prepTestRepo( testRepo, reference ); + + tools.updateMetadata( testRepo, reference ); + + StringBuilder buf = new StringBuilder(); + buf.append( "<metadata>\n" ); + buf.append( " <groupId>" ).append( reference.getGroupId() ).append( "</groupId>\n" ); + buf.append( " <artifactId>" ).append( reference.getArtifactId() ).append( "</artifactId>\n" ); + // buf.append( " <version>1.0</version>\n" ); + + if ( expectedVersions != null ) + { + buf.append( " <versioning>\n" ); + if ( latestVersion != null ) + { + buf.append( " <latest>" ).append( latestVersion ).append( "</latest>\n" ); + } + if ( releaseVersion != null ) + { + buf.append( " <release>" ).append( releaseVersion ).append( "</release>\n" ); + } + + buf.append( " <versions>\n" ); + for ( int i = 0; i < expectedVersions.length; i++ ) + { + buf.append( " <version>" ).append( expectedVersions[i] ).append( "</version>\n" ); + } + buf.append( " </versions>\n" ); + buf.append( " </versioning>\n" ); + } + buf.append( "</metadata>" ); + + assertMetadata( buf.toString(), testRepo, reference ); + } + + private void assertProjectMetadata( ManagedRepositoryContent testRepo, ProjectReference reference, + String artifactId, String[] expectedVersions, String latestVersion, + String releaseVersion ) + throws Exception + { + StringBuilder buf = new StringBuilder(); + buf.append( "<metadata>\n" ); + buf.append( " <groupId>" ).append( reference.getGroupId() ).append( "</groupId>\n" ); + buf.append( " <artifactId>" ).append( reference.getArtifactId() ).append( "</artifactId>\n" ); + + if ( expectedVersions != null ) + { + buf.append( " <versioning>\n" ); + if ( latestVersion != null ) + { + buf.append( " <latest>" ).append( latestVersion ).append( "</latest>\n" ); + } + if ( releaseVersion != null ) + { + buf.append( " <release>" ).append( releaseVersion ).append( "</release>\n" ); + } + + buf.append( " <versions>\n" ); + for ( int i = 0; i < expectedVersions.length; i++ ) + { + buf.append( " <version>" ).append( expectedVersions[i] ).append( "</version>\n" ); + } + buf.append( " </versions>\n" ); + buf.append( " </versioning>\n" ); + } + buf.append( "</metadata>" ); + + assertMetadata( buf.toString(), testRepo, reference ); + } + + private void assertUpdatedReleaseVersionMetadata( String artifactId, String version ) + throws Exception + { + ManagedRepositoryContent testRepo = createTestRepoContent(); + VersionedReference reference = new VersionedReference(); + reference.setGroupId( "org.apache.archiva.metadata.tests" ); + reference.setArtifactId( artifactId ); + reference.setVersion( version ); + + prepTestRepo( testRepo, reference ); + + tools.updateMetadata( testRepo, reference ); + + StringBuilder buf = new StringBuilder(); + buf.append( "<metadata>\n" ); + buf.append( " <groupId>" ).append( reference.getGroupId() ).append( "</groupId>\n" ); + buf.append( " <artifactId>" ).append( reference.getArtifactId() ).append( "</artifactId>\n" ); + buf.append( " <version>" ).append( reference.getVersion() ).append( "</version>\n" ); + buf.append( "</metadata>" ); + + assertMetadata( buf.toString(), testRepo, reference ); + } + + private void assertUpdatedSnapshotVersionMetadata( String artifactId, String version, String expectedDate, + String expectedTime, String expectedBuildNumber ) + throws Exception + { + ManagedRepositoryContent testRepo = createTestRepoContent(); + VersionedReference reference = new VersionedReference(); + reference.setGroupId( "org.apache.archiva.metadata.tests" ); + reference.setArtifactId( artifactId ); + reference.setVersion( version ); + + prepTestRepo( testRepo, reference ); + + tools.updateMetadata( testRepo, reference ); + + StringBuilder buf = new StringBuilder(); + buf.append( "<metadata>\n" ); + buf.append( " <groupId>" ).append( reference.getGroupId() ).append( "</groupId>\n" ); + buf.append( " <artifactId>" ).append( reference.getArtifactId() ).append( "</artifactId>\n" ); + buf.append( " <version>" ).append( reference.getVersion() ).append( "</version>\n" ); + buf.append( " <versioning>\n" ); + buf.append( " <snapshot>\n" ); + buf.append( " <buildNumber>" ).append( expectedBuildNumber ).append( "</buildNumber>\n" ); + buf.append( " <timestamp>" ); + buf.append( expectedDate ).append( "." ).append( expectedTime ); + buf.append( "</timestamp>\n" ); + buf.append( " </snapshot>\n" ); + buf.append( " <lastUpdated>" ).append( expectedDate ).append( expectedTime ).append( "</lastUpdated>\n" ); + buf.append( " </versioning>\n" ); + buf.append( "</metadata>" ); + + assertMetadata( buf.toString(), testRepo, reference ); + } + + private void removeProxyConnector( String sourceRepoId, String targetRepoId ) + { + ProxyConnectorConfiguration toRemove = null; + for ( ProxyConnectorConfiguration pcc : config.getConfiguration().getProxyConnectors() ) + { + if ( pcc.getTargetRepoId().equals( targetRepoId ) && pcc.getSourceRepoId().equals( sourceRepoId ) ) + { + toRemove = pcc; + } + } + if ( toRemove != null ) + { + config.getConfiguration().removeProxyConnector( toRemove ); + String prefix = "proxyConnectors.proxyConnector(" + "1" + ")"; // XXX + config.triggerChange( prefix + ".sourceRepoId", toRemove.getSourceRepoId() ); + config.triggerChange( prefix + ".targetRepoId", toRemove.getTargetRepoId() ); + config.triggerChange( prefix + ".proxyId", toRemove.getProxyId() ); + config.triggerChange( prefix + ".policies.releases", toRemove.getPolicy( "releases", "" ) ); + config.triggerChange( prefix + ".policies.checksum", toRemove.getPolicy( "checksum", "" ) ); + config.triggerChange( prefix + ".policies.snapshots", toRemove.getPolicy( "snapshots", "" ) ); + config.triggerChange( prefix + ".policies.cache-failures", toRemove.getPolicy( "cache-failures", "" ) ); + } + } + + private void createProxyConnector( String sourceRepoId, String targetRepoId ) + { + ProxyConnectorConfiguration connectorConfig = new ProxyConnectorConfiguration(); + connectorConfig.setSourceRepoId( sourceRepoId ); + connectorConfig.setTargetRepoId( targetRepoId ); + connectorConfig.addPolicy( ProxyConnectorConfiguration.POLICY_CHECKSUM, ChecksumPolicy.IGNORE ); + connectorConfig.addPolicy( ProxyConnectorConfiguration.POLICY_RELEASES, ReleasesPolicy.ALWAYS ); + connectorConfig.addPolicy( ProxyConnectorConfiguration.POLICY_SNAPSHOTS, SnapshotsPolicy.ALWAYS ); + connectorConfig.addPolicy( ProxyConnectorConfiguration.POLICY_CACHE_FAILURES, CachedFailuresPolicy.NO ); + + int count = config.getConfiguration().getProxyConnectors().size(); + config.getConfiguration().addProxyConnector( connectorConfig ); + + // Proper Triggering ... + String prefix = "proxyConnectors.proxyConnector(" + count + ")"; + config.triggerChange( prefix + ".sourceRepoId", connectorConfig.getSourceRepoId() ); + config.triggerChange( prefix + ".targetRepoId", connectorConfig.getTargetRepoId() ); + config.triggerChange( prefix + ".proxyId", connectorConfig.getProxyId() ); + config.triggerChange( prefix + ".policies.releases", connectorConfig.getPolicy( "releases", "" ) ); + config.triggerChange( prefix + ".policies.checksum", connectorConfig.getPolicy( "checksum", "" ) ); + config.triggerChange( prefix + ".policies.snapshots", connectorConfig.getPolicy( "snapshots", "" ) ); + config.triggerChange( prefix + ".policies.cache-failures", connectorConfig.getPolicy( "cache-failures", "" ) ); + } + + private ManagedRepositoryContent createTestRepoContent() + throws Exception + { + Path repoRoot = Paths.get( "target/metadata-tests/" + name.getMethodName() ); + if ( Files.exists(repoRoot) ) + { + org.apache.archiva.common.utils.FileUtils.deleteDirectory( repoRoot ); + } + + Files.createDirectories(repoRoot); + + MavenManagedRepository repoConfig = + createRepository( "test-repo", "Test Repository: " + name.getMethodName(), repoRoot ); + + RepositoryContentProvider provider = applicationContext.getBean( "repositoryContentProvider#maven", RepositoryContentProvider.class ); + + ManagedRepositoryContent repoContent = + provider.createManagedContent( repoConfig ); + return repoContent; + } + + private void prepTestRepo( ManagedRepositoryContent repo, ProjectReference reference ) + throws IOException + { + String groupDir = StringUtils.replaceChars( reference.getGroupId(), '.', '/' ); + String path = groupDir + "/" + reference.getArtifactId(); + + Path srcRepoDir = Paths.get( "src/test/repositories/metadata-repository" ); + Path srcDir = srcRepoDir.resolve( path ); + Path destDir = Paths.get( repo.getRepoRoot(), path ); + + assertTrue( "Source Dir exists: " + srcDir, Files.exists(srcDir) ); + Files.createDirectories(destDir); + + FileUtils.copyDirectory( srcDir.toFile(), destDir.toFile() ); + } + + private void prepTestRepo( ManagedRepositoryContent repo, VersionedReference reference ) + throws IOException + { + ProjectReference projectRef = new ProjectReference(); + projectRef.setGroupId( reference.getGroupId() ); + projectRef.setArtifactId( reference.getArtifactId() ); + + prepTestRepo( repo, projectRef ); + } + + +} diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/metadata/RepositoryMetadataReaderTest.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/metadata/RepositoryMetadataReaderTest.java new file mode 100644 index 000000000..7c7da49cf --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/metadata/RepositoryMetadataReaderTest.java @@ -0,0 +1,79 @@ +package org.apache.archiva.repository.metadata; + +/* + * 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 junit.framework.TestCase; +import org.apache.archiva.maven2.metadata.MavenMetadataReader; +import org.apache.archiva.model.ArchivaRepositoryMetadata; +import org.apache.archiva.test.utils.ArchivaBlockJUnit4ClassRunner; +import org.apache.archiva.xml.XMLException; +import org.junit.Test; +import org.junit.runner.RunWith; + +import java.nio.file.Path; +import java.nio.file.Paths; + +/** + * RepositoryMetadataReaderTest + * + * + */ +@RunWith( ArchivaBlockJUnit4ClassRunner.class ) +public class RepositoryMetadataReaderTest + extends TestCase +{ + @Test + public void testLoadSimple() + throws XMLException + { + Path defaultRepoDir = Paths.get( "src/test/repositories/default-repository" ); + Path metadataFile = defaultRepoDir.resolve( "org/apache/maven/shared/maven-downloader/maven-metadata.xml" ); + + ArchivaRepositoryMetadata metadata = MavenMetadataReader.read( metadataFile); + + assertNotNull( metadata ); + assertEquals( "Group Id", "org.apache.maven.shared", metadata.getGroupId() ); + assertEquals( "Artifact Id", "maven-downloader", metadata.getArtifactId() ); + assertEquals( "Released Version", "1.1", metadata.getReleasedVersion() ); + assertEquals( "List of Available Versions", 2, metadata.getAvailableVersions().size() ); + assertTrue( "Available version 1.0", metadata.getAvailableVersions().contains( "1.0" ) ); + assertTrue( "Available version 1.1", metadata.getAvailableVersions().contains( "1.1" ) ); + } + + @Test + public void testLoadComplex() + throws XMLException + { + Path defaultRepoDir = Paths.get( "src/test/repositories/default-repository" ); + Path metadataFile = defaultRepoDir.resolve( "org/apache/maven/samplejar/maven-metadata.xml" ); + + ArchivaRepositoryMetadata metadata = MavenMetadataReader.read( metadataFile ); + + assertNotNull( metadata ); + assertEquals( "Group Id", "org.apache.maven", metadata.getGroupId() ); + assertEquals( "Artifact Id", "samplejar", metadata.getArtifactId() ); + assertEquals( "Released Version", "2.0", metadata.getReleasedVersion() ); + assertEquals( "Latest Version", "6.0-SNAPSHOT", metadata.getLatestVersion() ); + assertEquals( "List of Available Versions", 18, metadata.getAvailableVersions().size() ); + assertTrue( "Available version 6.0-20060311.183228-10", + metadata.getAvailableVersions().contains( "6.0-20060311.183228-10" ) ); + assertTrue( "Available version 6.0-SNAPSHOT", metadata.getAvailableVersions().contains( "6.0-SNAPSHOT" ) ); + } +} diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/metadata/RepositoryMetadataWriterTest.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/metadata/RepositoryMetadataWriterTest.java new file mode 100644 index 000000000..2a316a457 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/metadata/RepositoryMetadataWriterTest.java @@ -0,0 +1,65 @@ +package org.apache.archiva.repository.metadata; + +/* + * 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 junit.framework.TestCase; +import org.apache.archiva.model.ArchivaRepositoryMetadata; +import org.apache.archiva.test.utils.ArchivaBlockJUnit4ClassRunner; +import org.custommonkey.xmlunit.XMLAssert; +import org.junit.Test; +import org.junit.runner.RunWith; + +import java.io.StringWriter; +import java.nio.charset.Charset; +import java.nio.file.Path; +import java.nio.file.Paths; + +/** + * RepositoryMetadataWriterTest + */ +@RunWith ( ArchivaBlockJUnit4ClassRunner.class ) +public class RepositoryMetadataWriterTest + extends TestCase +{ + + @Test + public void testWriteSimple() + throws Exception + { + Path defaultRepoDir = Paths.get( "src/test/repositories/default-repository" ); + Path expectedFile = defaultRepoDir.resolve( "org/apache/maven/shared/maven-downloader/maven-metadata.xml" ); + String expectedContent = org.apache.archiva.common.utils.FileUtils.readFileToString( expectedFile, Charset.defaultCharset() ); + + ArchivaRepositoryMetadata metadata = new ArchivaRepositoryMetadata(); + + metadata.setGroupId( "org.apache.maven.shared" ); + metadata.setArtifactId( "maven-downloader" ); + metadata.setVersion( "1.0" ); + metadata.setReleasedVersion( "1.1" ); + metadata.getAvailableVersions().add( "1.0" ); + metadata.getAvailableVersions().add( "1.1" ); + metadata.setLastUpdated( "20061212214311" ); + + StringWriter actual = new StringWriter(); + RepositoryMetadataWriter.write( metadata, actual ); + + XMLAssert.assertXMLEqual( "XML Contents", expectedContent, actual.toString() ); + } +} diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/CVS/Root b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/CVS/Root new file mode 100644 index 000000000..2e65f24a6 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/CVS/Root @@ -0,0 +1 @@ +not a real CVS root - for testing exclusions diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/KEYS b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/KEYS new file mode 100644 index 000000000..d3b34d5ad --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/KEYS @@ -0,0 +1 @@ +test KEYS file
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/invalid/invalid-1.0.jar b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/invalid/invalid-1.0.jar new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/invalid/invalid-1.0.jar diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/invalid/invalid/1.0-20050611.123456-1/invalid-1.0-20050611.123456-1.jar b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/invalid/invalid/1.0-20050611.123456-1/invalid-1.0-20050611.123456-1.jar new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/invalid/invalid/1.0-20050611.123456-1/invalid-1.0-20050611.123456-1.jar diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/invalid/invalid/1.0-SNAPSHOT/invalid-1.0.jar b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/invalid/invalid/1.0-SNAPSHOT/invalid-1.0.jar new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/invalid/invalid/1.0-SNAPSHOT/invalid-1.0.jar diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/invalid/invalid/1.0/invalid-1.0b.jar b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/invalid/invalid/1.0/invalid-1.0b.jar new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/invalid/invalid/1.0/invalid-1.0b.jar diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/invalid/invalid/1.0/invalid-2.0.jar b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/invalid/invalid/1.0/invalid-2.0.jar new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/invalid/invalid/1.0/invalid-2.0.jar diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/invalid/invalid/1/invalid-1 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/invalid/invalid/1/invalid-1 new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/invalid/invalid/1/invalid-1 diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/javax/maven-metadata.xml b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/javax/maven-metadata.xml new file mode 100644 index 000000000..b3baf545d --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/javax/maven-metadata.xml @@ -0,0 +1,26 @@ +<?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> diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/javax/sql/jdbc/2.0/jdbc-2.0.jar b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/javax/sql/jdbc/2.0/jdbc-2.0.jar new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/javax/sql/jdbc/2.0/jdbc-2.0.jar diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/javax/sql/jdbc/2.0/maven-metadata-repository.xml b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/javax/sql/jdbc/2.0/maven-metadata-repository.xml new file mode 100644 index 000000000..caf5b6697 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/javax/sql/jdbc/2.0/maven-metadata-repository.xml @@ -0,0 +1,25 @@ +<?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> diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/javax/sql/jdbc/maven-metadata-repository.xml b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/javax/sql/jdbc/maven-metadata-repository.xml new file mode 100644 index 000000000..bb7570891 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/javax/sql/jdbc/maven-metadata-repository.xml @@ -0,0 +1,30 @@ +<?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> diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/javax/sql/maven-metadata-repository.xml b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/javax/sql/maven-metadata-repository.xml new file mode 100644 index 000000000..caf5b6697 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/javax/sql/maven-metadata-repository.xml @@ -0,0 +1,25 @@ +<?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> diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/archiva/sample-parent/2.1-SNAPSHOT/sample-parent-2.1-20090807.095532-1.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/archiva/sample-parent/2.1-SNAPSHOT/sample-parent-2.1-20090807.095532-1.pom new file mode 100644 index 000000000..55fdf5d28 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/archiva/sample-parent/2.1-SNAPSHOT/sample-parent-2.1-20090807.095532-1.pom @@ -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>sample-parent</artifactId> + <packaging>pom</packaging> + <version>2.1-SNAPSHOT</version> + <name>sample-parent Build 1</name> + <build> + <pluginManagement> + <plugins> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>build-helper-maven-plugin</artifactId> + <version>${build-helper-maven-plugin.version}</version> + </plugin> + </plugins> + </pluginManagement> + </build> + <properties> + <build-helper-maven-plugin.version>1.0</build-helper-maven-plugin.version> + </properties> +</project>
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/archiva/sample-parent/2.1-SNAPSHOT/sample-parent-2.1-20090808.085535-2.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/archiva/sample-parent/2.1-SNAPSHOT/sample-parent-2.1-20090808.085535-2.pom new file mode 100644 index 000000000..ffc575bbc --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/archiva/sample-parent/2.1-SNAPSHOT/sample-parent-2.1-20090808.085535-2.pom @@ -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>sample-parent</artifactId> + <packaging>pom</packaging> + <version>2.1-SNAPSHOT</version> + <name>sample-parent Build 2</name> + <build> + <pluginManagement> + <plugins> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>build-helper-maven-plugin</artifactId> + <version>${build-helper-maven-plugin.version}</version> + </plugin> + </plugins> + </pluginManagement> + </build> + <properties> + <build-helper-maven-plugin.version>1.0</build-helper-maven-plugin.version> + </properties> +</project>
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/archiva/sample-project/2.1-SNAPSHOT/sample-project-2.1-SNAPSHOT.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/archiva/sample-project/2.1-SNAPSHOT/sample-project-2.1-SNAPSHOT.pom new file mode 100644 index 000000000..b9e7e38a1 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/archiva/sample-project/2.1-SNAPSHOT/sample-project-2.1-SNAPSHOT.pom @@ -0,0 +1,47 @@ +<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> + <parent> + <groupId>org.apache.archiva</groupId> + <artifactId>sample-parent</artifactId> + <version>2.1-SNAPSHOT</version> + </parent> + <artifactId>sample-project</artifactId> + <packaging>jar</packaging> + <name>sample-project</name> + <url>http://maven.apache.org</url> + <dependencies> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>3.8.2</version> + <scope>test</scope> + </dependency> + </dependencies> + <build> + <plugins> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>build-helper-maven-plugin</artifactId> + <version>${build-helper-maven-plugin.version}</version> + <inherited>true</inherited> + <executions> + <execution> + <id>add-source</id> + <phase>generate-sources</phase> + <goals> + <goal>add-source</goal> + </goals> + <configuration> + <sources> + <source>${basedir}/java-gen</source> + <source>${basedir}/java-src</source> + <source>${basedir}/java-test</source> + </sources> + </configuration> + </execution> + </executions> + </plugin> + </plugins> + </build> +</project>
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070725.210059-1.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070725.210059-1.pom new file mode 100644 index 000000000..372560004 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070725.210059-1.pom @@ -0,0 +1,300 @@ +<?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</groupId> + <artifactId>apache</artifactId> + <version>3</version> + </parent> + <modelVersion>4.0.0</modelVersion> + <groupId>org.apache.axis2</groupId> + <artifactId>axis2</artifactId> + <version>1.3-SNAPSHOT</version> + <packaging>pom</packaging> + <name>Apache Axis 2.0 - Root</name> + <modules> + <module>modules/adb</module> + <module>modules/adb-codegen</module> + <module>modules/addressing</module> + <module>modules/codegen</module> + <module>modules/fastinfoset</module> + <module>modules/integration</module> + <module>modules/java2wsdl</module> + <module>modules/jibx</module> + <module>modules/json</module> + <module>modules/kernel</module> + <module>modules/mex</module> + <module>modules/mex-mar</module> + <module>modules/mtompolicy</module> + <module>modules/parent</module> + <module>modules/ping</module> + <module>modules/samples/version</module> + <module>modules/soapmonitor</module> + <module>modules/spring</module> + <module>modules/tool/axis2-aar-maven-plugin</module> + <module>modules/tool/axis2-ant-plugin</module> + <module>modules/tool/axis2-eclipse-codegen-plugin</module> + <module>modules/tool/axis2-eclipse-service-plugin</module> + <module>modules/tool/axis2-idea-plugin</module> + <module>modules/tool/axis2-java2wsdl-maven-plugin</module> + <module>modules/tool/axis2-mar-maven-plugin</module> + <module>modules/tool/axis2-wsdl2code-maven-plugin</module> + <module>modules/webapp</module> + <module>modules/xmlbeans</module> + <module>modules/samples</module> + <module>modules/scripting</module> + </modules> + <profiles> + <profile> + <activation> + <property> + <name>release</name> + </property> + </activation> + <modules> + <module>modules/distribution</module> + </modules> + </profile> + <profile> + <id>java14</id> + <activation> + <jdk>1.4</jdk> + </activation> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-antrun-plugin</artifactId> + <executions> + <execution> + <id>axis2-jar</id> + <phase>package</phase> + <configuration> + <tasks> + <mkdir dir="target/lib"/> + <jar destfile="target/lib/axis2-${pom.version}.jar"> + <fileset dir="modules/java2wsdl/target/classes"/> + <fileset dir="modules/kernel/target/classes"/> + <fileset dir="modules/addressing/target/classes"/> + <fileset dir="modules/codegen/target/classes"/> + <fileset dir="modules/adb/target/classes"/> + <fileset dir="modules/adb-codegen/target/classes"/> + <fileset dir="modules/xmlbeans/target/classes"/> + </jar> + </tasks> + </configuration> + <goals> + <goal>run</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + <profile> + <id>java15</id> + <activation> + <jdk>1.5</jdk> + </activation> + <modules> + <module>modules/jaxbri</module> + <module>modules/metadata</module> + <module>modules/saaj-api</module> + <module>modules/saaj</module> + <module>modules/jws-api</module> + <module>modules/jaxws-api</module> + <module>modules/jaxws</module> + <module>modules/clustering</module> + </modules> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-antrun-plugin</artifactId> + <executions> + <execution> + <id>axis2-jar</id> + <phase>package</phase> + <configuration> + <tasks> + <mkdir dir="target/lib"/> + <jar destfile="target/lib/axis2-${pom.version}.jar"> + <fileset dir="modules/java2wsdl/target/classes"/> + <fileset dir="modules/kernel/target/classes"/> + <fileset dir="modules/addressing/target/classes"/> + <fileset dir="modules/codegen/target/classes"/> + <fileset dir="modules/adb/target/classes"/> + <fileset dir="modules/adb-codegen/target/classes"/> + <fileset dir="modules/xmlbeans/target/classes"/> + <fileset dir="modules/clustering/target/classes"/> + </jar> + </tasks> + </configuration> + <goals> + <goal>run</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + <profile> + <id>java16</id> + <activation> + <jdk>1.6</jdk> + </activation> + <modules> + <module>modules/jaxbri</module> + <module>modules/metadata</module> + <module>modules/saaj-api</module> + <module>modules/saaj</module> + <module>modules/jws-api</module> + <module>modules/jaxws-api</module> + <module>modules/jaxws</module> + <module>modules/clustering</module> + </modules> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-antrun-plugin</artifactId> + <executions> + <execution> + <id>axis2-jar</id> + <phase>package</phase> + <configuration> + <tasks> + <mkdir dir="target/lib"/> + <jar destfile="target/lib/axis2-${pom.version}.jar"> + <fileset dir="modules/java2wsdl/target/classes"/> + <fileset dir="modules/kernel/target/classes"/> + <fileset dir="modules/addressing/target/classes"/> + <fileset dir="modules/codegen/target/classes"/> + <fileset dir="modules/adb/target/classes"/> + <fileset dir="modules/adb-codegen/target/classes"/> + <fileset dir="modules/xmlbeans/target/classes"/> + <fileset dir="modules/clustering/target/classes"/> + </jar> + </tasks> + </configuration> + <goals> + <goal>run</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + </profiles> + <ciManagement> + <system>continuum</system> + <url>http://vmbuild.apache.org/continuum</url> + <notifiers> + <notifier> + <configuration> + <ADDRESS>axis2-cvs@ws.apache.org</ADDRESS> + </configuration> + </notifier> + </notifiers> + </ciManagement> + <scm> + <connection> + scm:svn:http://svn.apache.org/repos/asf/webservices/axis2/trunk/java/ + </connection> + <developerConnection> + scm:svn:https://svn.apache.org/repos/asf/webservices/axis2/trunk/java/ + </developerConnection> + <url>http://svn.apache.org/viewvc/webservices/webservices/axis2/trunk/java/</url> + </scm> + <distributionManagement> + <repository> + <id>apache-repo</id> + <name>Maven Central Repository</name> + <url> + scpexe://people.apache.org//www/people.apache.org/repo/m2-ibiblio-rsync-repository</url> + </repository> + <snapshotRepository> + <id>apache-snapshots</id> + <name>Apache Development Repository</name> + <url>scpexe://people.apache.org//www/people.apache.org/repo/m2-snapshot-repository</url> + </snapshotRepository> + </distributionManagement> + <build> + <plugins> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>build-helper-maven-plugin</artifactId> + <executions> + <execution> + <id>axis2-jar-package</id> + <phase>package</phase> + <goals> + <goal>attach-artifact</goal> + </goals> + <configuration> + <artifacts> + <artifact> + <file>target/lib/axis2-${pom.version}.jar</file> + <type>jar</type> + </artifact> + </artifacts> + </configuration> + </execution> + </executions> + </plugin> + </plugins> + </build> + <reporting> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-site-plugin</artifactId> + <configuration> + <xdocDirectory>${basedir}/xdocs</xdocDirectory> + <resourcesDirectory>${basedir}/xdocs/resources</resourcesDirectory> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-javadoc-plugin</artifactId> + <configuration> + <aggregate>true</aggregate> + <links> + <link>http://java.sun.com/j2ee/1.4/docs/api</link> + <link>http://java.sun.com/j2se/1.5.0/docs/api</link> + <link>http://jakarta.apache.org/commons/collections/apidocs-COLLECTIONS_3_0/</link> + <link>http://jakarta.apache.org/commons/dbcp/apidocs/</link> + <link>http://jakarta.apache.org/commons/fileupload/apidocs/</link> + <link>http://jakarta.apache.org/commons/httpclient/apidocs/</link> + <link>http://jakarta.apache.org/commons/logging/apidocs/</link> + <link>http://jakarta.apache.org/commons/pool/apidocs/</link> + <link>http://www.junit.org/junit/javadoc/</link> + <link>http://logging.apache.org/log4j/docs/api/</link> + <link>http://jakarta.apache.org/regexp/apidocs/</link> + <link>http://jakarta.apache.org/velocity/api/</link> + </links> + </configuration> + </plugin> + </plugins> + </reporting> +</project> diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070725.210059-1.pom.md5 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070725.210059-1.pom.md5 new file mode 100644 index 000000000..7e4a5cfdd --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070725.210059-1.pom.md5 @@ -0,0 +1 @@ +69add9b3e2b7d27ae5c92de61acb2d23
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070725.210059-1.pom.sha1 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070725.210059-1.pom.sha1 new file mode 100644 index 000000000..b0a35015d --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070725.210059-1.pom.sha1 @@ -0,0 +1 @@ +e1b45d0a5c28f15e8b235a7b4b350513c790ef39
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070725.232304-2.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070725.232304-2.pom new file mode 100644 index 000000000..372560004 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070725.232304-2.pom @@ -0,0 +1,300 @@ +<?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</groupId> + <artifactId>apache</artifactId> + <version>3</version> + </parent> + <modelVersion>4.0.0</modelVersion> + <groupId>org.apache.axis2</groupId> + <artifactId>axis2</artifactId> + <version>1.3-SNAPSHOT</version> + <packaging>pom</packaging> + <name>Apache Axis 2.0 - Root</name> + <modules> + <module>modules/adb</module> + <module>modules/adb-codegen</module> + <module>modules/addressing</module> + <module>modules/codegen</module> + <module>modules/fastinfoset</module> + <module>modules/integration</module> + <module>modules/java2wsdl</module> + <module>modules/jibx</module> + <module>modules/json</module> + <module>modules/kernel</module> + <module>modules/mex</module> + <module>modules/mex-mar</module> + <module>modules/mtompolicy</module> + <module>modules/parent</module> + <module>modules/ping</module> + <module>modules/samples/version</module> + <module>modules/soapmonitor</module> + <module>modules/spring</module> + <module>modules/tool/axis2-aar-maven-plugin</module> + <module>modules/tool/axis2-ant-plugin</module> + <module>modules/tool/axis2-eclipse-codegen-plugin</module> + <module>modules/tool/axis2-eclipse-service-plugin</module> + <module>modules/tool/axis2-idea-plugin</module> + <module>modules/tool/axis2-java2wsdl-maven-plugin</module> + <module>modules/tool/axis2-mar-maven-plugin</module> + <module>modules/tool/axis2-wsdl2code-maven-plugin</module> + <module>modules/webapp</module> + <module>modules/xmlbeans</module> + <module>modules/samples</module> + <module>modules/scripting</module> + </modules> + <profiles> + <profile> + <activation> + <property> + <name>release</name> + </property> + </activation> + <modules> + <module>modules/distribution</module> + </modules> + </profile> + <profile> + <id>java14</id> + <activation> + <jdk>1.4</jdk> + </activation> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-antrun-plugin</artifactId> + <executions> + <execution> + <id>axis2-jar</id> + <phase>package</phase> + <configuration> + <tasks> + <mkdir dir="target/lib"/> + <jar destfile="target/lib/axis2-${pom.version}.jar"> + <fileset dir="modules/java2wsdl/target/classes"/> + <fileset dir="modules/kernel/target/classes"/> + <fileset dir="modules/addressing/target/classes"/> + <fileset dir="modules/codegen/target/classes"/> + <fileset dir="modules/adb/target/classes"/> + <fileset dir="modules/adb-codegen/target/classes"/> + <fileset dir="modules/xmlbeans/target/classes"/> + </jar> + </tasks> + </configuration> + <goals> + <goal>run</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + <profile> + <id>java15</id> + <activation> + <jdk>1.5</jdk> + </activation> + <modules> + <module>modules/jaxbri</module> + <module>modules/metadata</module> + <module>modules/saaj-api</module> + <module>modules/saaj</module> + <module>modules/jws-api</module> + <module>modules/jaxws-api</module> + <module>modules/jaxws</module> + <module>modules/clustering</module> + </modules> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-antrun-plugin</artifactId> + <executions> + <execution> + <id>axis2-jar</id> + <phase>package</phase> + <configuration> + <tasks> + <mkdir dir="target/lib"/> + <jar destfile="target/lib/axis2-${pom.version}.jar"> + <fileset dir="modules/java2wsdl/target/classes"/> + <fileset dir="modules/kernel/target/classes"/> + <fileset dir="modules/addressing/target/classes"/> + <fileset dir="modules/codegen/target/classes"/> + <fileset dir="modules/adb/target/classes"/> + <fileset dir="modules/adb-codegen/target/classes"/> + <fileset dir="modules/xmlbeans/target/classes"/> + <fileset dir="modules/clustering/target/classes"/> + </jar> + </tasks> + </configuration> + <goals> + <goal>run</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + <profile> + <id>java16</id> + <activation> + <jdk>1.6</jdk> + </activation> + <modules> + <module>modules/jaxbri</module> + <module>modules/metadata</module> + <module>modules/saaj-api</module> + <module>modules/saaj</module> + <module>modules/jws-api</module> + <module>modules/jaxws-api</module> + <module>modules/jaxws</module> + <module>modules/clustering</module> + </modules> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-antrun-plugin</artifactId> + <executions> + <execution> + <id>axis2-jar</id> + <phase>package</phase> + <configuration> + <tasks> + <mkdir dir="target/lib"/> + <jar destfile="target/lib/axis2-${pom.version}.jar"> + <fileset dir="modules/java2wsdl/target/classes"/> + <fileset dir="modules/kernel/target/classes"/> + <fileset dir="modules/addressing/target/classes"/> + <fileset dir="modules/codegen/target/classes"/> + <fileset dir="modules/adb/target/classes"/> + <fileset dir="modules/adb-codegen/target/classes"/> + <fileset dir="modules/xmlbeans/target/classes"/> + <fileset dir="modules/clustering/target/classes"/> + </jar> + </tasks> + </configuration> + <goals> + <goal>run</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + </profiles> + <ciManagement> + <system>continuum</system> + <url>http://vmbuild.apache.org/continuum</url> + <notifiers> + <notifier> + <configuration> + <ADDRESS>axis2-cvs@ws.apache.org</ADDRESS> + </configuration> + </notifier> + </notifiers> + </ciManagement> + <scm> + <connection> + scm:svn:http://svn.apache.org/repos/asf/webservices/axis2/trunk/java/ + </connection> + <developerConnection> + scm:svn:https://svn.apache.org/repos/asf/webservices/axis2/trunk/java/ + </developerConnection> + <url>http://svn.apache.org/viewvc/webservices/webservices/axis2/trunk/java/</url> + </scm> + <distributionManagement> + <repository> + <id>apache-repo</id> + <name>Maven Central Repository</name> + <url> + scpexe://people.apache.org//www/people.apache.org/repo/m2-ibiblio-rsync-repository</url> + </repository> + <snapshotRepository> + <id>apache-snapshots</id> + <name>Apache Development Repository</name> + <url>scpexe://people.apache.org//www/people.apache.org/repo/m2-snapshot-repository</url> + </snapshotRepository> + </distributionManagement> + <build> + <plugins> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>build-helper-maven-plugin</artifactId> + <executions> + <execution> + <id>axis2-jar-package</id> + <phase>package</phase> + <goals> + <goal>attach-artifact</goal> + </goals> + <configuration> + <artifacts> + <artifact> + <file>target/lib/axis2-${pom.version}.jar</file> + <type>jar</type> + </artifact> + </artifacts> + </configuration> + </execution> + </executions> + </plugin> + </plugins> + </build> + <reporting> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-site-plugin</artifactId> + <configuration> + <xdocDirectory>${basedir}/xdocs</xdocDirectory> + <resourcesDirectory>${basedir}/xdocs/resources</resourcesDirectory> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-javadoc-plugin</artifactId> + <configuration> + <aggregate>true</aggregate> + <links> + <link>http://java.sun.com/j2ee/1.4/docs/api</link> + <link>http://java.sun.com/j2se/1.5.0/docs/api</link> + <link>http://jakarta.apache.org/commons/collections/apidocs-COLLECTIONS_3_0/</link> + <link>http://jakarta.apache.org/commons/dbcp/apidocs/</link> + <link>http://jakarta.apache.org/commons/fileupload/apidocs/</link> + <link>http://jakarta.apache.org/commons/httpclient/apidocs/</link> + <link>http://jakarta.apache.org/commons/logging/apidocs/</link> + <link>http://jakarta.apache.org/commons/pool/apidocs/</link> + <link>http://www.junit.org/junit/javadoc/</link> + <link>http://logging.apache.org/log4j/docs/api/</link> + <link>http://jakarta.apache.org/regexp/apidocs/</link> + <link>http://jakarta.apache.org/velocity/api/</link> + </links> + </configuration> + </plugin> + </plugins> + </reporting> +</project> diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070725.232304-2.pom.md5 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070725.232304-2.pom.md5 new file mode 100644 index 000000000..7e4a5cfdd --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070725.232304-2.pom.md5 @@ -0,0 +1 @@ +69add9b3e2b7d27ae5c92de61acb2d23
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070725.232304-2.pom.sha1 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070725.232304-2.pom.sha1 new file mode 100644 index 000000000..b0a35015d --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070725.232304-2.pom.sha1 @@ -0,0 +1 @@ +e1b45d0a5c28f15e8b235a7b4b350513c790ef39
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070726.053327-3.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070726.053327-3.pom new file mode 100644 index 000000000..372560004 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070726.053327-3.pom @@ -0,0 +1,300 @@ +<?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</groupId> + <artifactId>apache</artifactId> + <version>3</version> + </parent> + <modelVersion>4.0.0</modelVersion> + <groupId>org.apache.axis2</groupId> + <artifactId>axis2</artifactId> + <version>1.3-SNAPSHOT</version> + <packaging>pom</packaging> + <name>Apache Axis 2.0 - Root</name> + <modules> + <module>modules/adb</module> + <module>modules/adb-codegen</module> + <module>modules/addressing</module> + <module>modules/codegen</module> + <module>modules/fastinfoset</module> + <module>modules/integration</module> + <module>modules/java2wsdl</module> + <module>modules/jibx</module> + <module>modules/json</module> + <module>modules/kernel</module> + <module>modules/mex</module> + <module>modules/mex-mar</module> + <module>modules/mtompolicy</module> + <module>modules/parent</module> + <module>modules/ping</module> + <module>modules/samples/version</module> + <module>modules/soapmonitor</module> + <module>modules/spring</module> + <module>modules/tool/axis2-aar-maven-plugin</module> + <module>modules/tool/axis2-ant-plugin</module> + <module>modules/tool/axis2-eclipse-codegen-plugin</module> + <module>modules/tool/axis2-eclipse-service-plugin</module> + <module>modules/tool/axis2-idea-plugin</module> + <module>modules/tool/axis2-java2wsdl-maven-plugin</module> + <module>modules/tool/axis2-mar-maven-plugin</module> + <module>modules/tool/axis2-wsdl2code-maven-plugin</module> + <module>modules/webapp</module> + <module>modules/xmlbeans</module> + <module>modules/samples</module> + <module>modules/scripting</module> + </modules> + <profiles> + <profile> + <activation> + <property> + <name>release</name> + </property> + </activation> + <modules> + <module>modules/distribution</module> + </modules> + </profile> + <profile> + <id>java14</id> + <activation> + <jdk>1.4</jdk> + </activation> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-antrun-plugin</artifactId> + <executions> + <execution> + <id>axis2-jar</id> + <phase>package</phase> + <configuration> + <tasks> + <mkdir dir="target/lib"/> + <jar destfile="target/lib/axis2-${pom.version}.jar"> + <fileset dir="modules/java2wsdl/target/classes"/> + <fileset dir="modules/kernel/target/classes"/> + <fileset dir="modules/addressing/target/classes"/> + <fileset dir="modules/codegen/target/classes"/> + <fileset dir="modules/adb/target/classes"/> + <fileset dir="modules/adb-codegen/target/classes"/> + <fileset dir="modules/xmlbeans/target/classes"/> + </jar> + </tasks> + </configuration> + <goals> + <goal>run</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + <profile> + <id>java15</id> + <activation> + <jdk>1.5</jdk> + </activation> + <modules> + <module>modules/jaxbri</module> + <module>modules/metadata</module> + <module>modules/saaj-api</module> + <module>modules/saaj</module> + <module>modules/jws-api</module> + <module>modules/jaxws-api</module> + <module>modules/jaxws</module> + <module>modules/clustering</module> + </modules> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-antrun-plugin</artifactId> + <executions> + <execution> + <id>axis2-jar</id> + <phase>package</phase> + <configuration> + <tasks> + <mkdir dir="target/lib"/> + <jar destfile="target/lib/axis2-${pom.version}.jar"> + <fileset dir="modules/java2wsdl/target/classes"/> + <fileset dir="modules/kernel/target/classes"/> + <fileset dir="modules/addressing/target/classes"/> + <fileset dir="modules/codegen/target/classes"/> + <fileset dir="modules/adb/target/classes"/> + <fileset dir="modules/adb-codegen/target/classes"/> + <fileset dir="modules/xmlbeans/target/classes"/> + <fileset dir="modules/clustering/target/classes"/> + </jar> + </tasks> + </configuration> + <goals> + <goal>run</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + <profile> + <id>java16</id> + <activation> + <jdk>1.6</jdk> + </activation> + <modules> + <module>modules/jaxbri</module> + <module>modules/metadata</module> + <module>modules/saaj-api</module> + <module>modules/saaj</module> + <module>modules/jws-api</module> + <module>modules/jaxws-api</module> + <module>modules/jaxws</module> + <module>modules/clustering</module> + </modules> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-antrun-plugin</artifactId> + <executions> + <execution> + <id>axis2-jar</id> + <phase>package</phase> + <configuration> + <tasks> + <mkdir dir="target/lib"/> + <jar destfile="target/lib/axis2-${pom.version}.jar"> + <fileset dir="modules/java2wsdl/target/classes"/> + <fileset dir="modules/kernel/target/classes"/> + <fileset dir="modules/addressing/target/classes"/> + <fileset dir="modules/codegen/target/classes"/> + <fileset dir="modules/adb/target/classes"/> + <fileset dir="modules/adb-codegen/target/classes"/> + <fileset dir="modules/xmlbeans/target/classes"/> + <fileset dir="modules/clustering/target/classes"/> + </jar> + </tasks> + </configuration> + <goals> + <goal>run</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + </profiles> + <ciManagement> + <system>continuum</system> + <url>http://vmbuild.apache.org/continuum</url> + <notifiers> + <notifier> + <configuration> + <ADDRESS>axis2-cvs@ws.apache.org</ADDRESS> + </configuration> + </notifier> + </notifiers> + </ciManagement> + <scm> + <connection> + scm:svn:http://svn.apache.org/repos/asf/webservices/axis2/trunk/java/ + </connection> + <developerConnection> + scm:svn:https://svn.apache.org/repos/asf/webservices/axis2/trunk/java/ + </developerConnection> + <url>http://svn.apache.org/viewvc/webservices/webservices/axis2/trunk/java/</url> + </scm> + <distributionManagement> + <repository> + <id>apache-repo</id> + <name>Maven Central Repository</name> + <url> + scpexe://people.apache.org//www/people.apache.org/repo/m2-ibiblio-rsync-repository</url> + </repository> + <snapshotRepository> + <id>apache-snapshots</id> + <name>Apache Development Repository</name> + <url>scpexe://people.apache.org//www/people.apache.org/repo/m2-snapshot-repository</url> + </snapshotRepository> + </distributionManagement> + <build> + <plugins> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>build-helper-maven-plugin</artifactId> + <executions> + <execution> + <id>axis2-jar-package</id> + <phase>package</phase> + <goals> + <goal>attach-artifact</goal> + </goals> + <configuration> + <artifacts> + <artifact> + <file>target/lib/axis2-${pom.version}.jar</file> + <type>jar</type> + </artifact> + </artifacts> + </configuration> + </execution> + </executions> + </plugin> + </plugins> + </build> + <reporting> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-site-plugin</artifactId> + <configuration> + <xdocDirectory>${basedir}/xdocs</xdocDirectory> + <resourcesDirectory>${basedir}/xdocs/resources</resourcesDirectory> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-javadoc-plugin</artifactId> + <configuration> + <aggregate>true</aggregate> + <links> + <link>http://java.sun.com/j2ee/1.4/docs/api</link> + <link>http://java.sun.com/j2se/1.5.0/docs/api</link> + <link>http://jakarta.apache.org/commons/collections/apidocs-COLLECTIONS_3_0/</link> + <link>http://jakarta.apache.org/commons/dbcp/apidocs/</link> + <link>http://jakarta.apache.org/commons/fileupload/apidocs/</link> + <link>http://jakarta.apache.org/commons/httpclient/apidocs/</link> + <link>http://jakarta.apache.org/commons/logging/apidocs/</link> + <link>http://jakarta.apache.org/commons/pool/apidocs/</link> + <link>http://www.junit.org/junit/javadoc/</link> + <link>http://logging.apache.org/log4j/docs/api/</link> + <link>http://jakarta.apache.org/regexp/apidocs/</link> + <link>http://jakarta.apache.org/velocity/api/</link> + </links> + </configuration> + </plugin> + </plugins> + </reporting> +</project> diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070726.053327-3.pom.md5 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070726.053327-3.pom.md5 new file mode 100644 index 000000000..7e4a5cfdd --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070726.053327-3.pom.md5 @@ -0,0 +1 @@ +69add9b3e2b7d27ae5c92de61acb2d23
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070726.053327-3.pom.sha1 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070726.053327-3.pom.sha1 new file mode 100644 index 000000000..b0a35015d --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070726.053327-3.pom.sha1 @@ -0,0 +1 @@ +e1b45d0a5c28f15e8b235a7b4b350513c790ef39
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070726.173653-5.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070726.173653-5.pom new file mode 100644 index 000000000..372560004 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070726.173653-5.pom @@ -0,0 +1,300 @@ +<?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</groupId> + <artifactId>apache</artifactId> + <version>3</version> + </parent> + <modelVersion>4.0.0</modelVersion> + <groupId>org.apache.axis2</groupId> + <artifactId>axis2</artifactId> + <version>1.3-SNAPSHOT</version> + <packaging>pom</packaging> + <name>Apache Axis 2.0 - Root</name> + <modules> + <module>modules/adb</module> + <module>modules/adb-codegen</module> + <module>modules/addressing</module> + <module>modules/codegen</module> + <module>modules/fastinfoset</module> + <module>modules/integration</module> + <module>modules/java2wsdl</module> + <module>modules/jibx</module> + <module>modules/json</module> + <module>modules/kernel</module> + <module>modules/mex</module> + <module>modules/mex-mar</module> + <module>modules/mtompolicy</module> + <module>modules/parent</module> + <module>modules/ping</module> + <module>modules/samples/version</module> + <module>modules/soapmonitor</module> + <module>modules/spring</module> + <module>modules/tool/axis2-aar-maven-plugin</module> + <module>modules/tool/axis2-ant-plugin</module> + <module>modules/tool/axis2-eclipse-codegen-plugin</module> + <module>modules/tool/axis2-eclipse-service-plugin</module> + <module>modules/tool/axis2-idea-plugin</module> + <module>modules/tool/axis2-java2wsdl-maven-plugin</module> + <module>modules/tool/axis2-mar-maven-plugin</module> + <module>modules/tool/axis2-wsdl2code-maven-plugin</module> + <module>modules/webapp</module> + <module>modules/xmlbeans</module> + <module>modules/samples</module> + <module>modules/scripting</module> + </modules> + <profiles> + <profile> + <activation> + <property> + <name>release</name> + </property> + </activation> + <modules> + <module>modules/distribution</module> + </modules> + </profile> + <profile> + <id>java14</id> + <activation> + <jdk>1.4</jdk> + </activation> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-antrun-plugin</artifactId> + <executions> + <execution> + <id>axis2-jar</id> + <phase>package</phase> + <configuration> + <tasks> + <mkdir dir="target/lib"/> + <jar destfile="target/lib/axis2-${pom.version}.jar"> + <fileset dir="modules/java2wsdl/target/classes"/> + <fileset dir="modules/kernel/target/classes"/> + <fileset dir="modules/addressing/target/classes"/> + <fileset dir="modules/codegen/target/classes"/> + <fileset dir="modules/adb/target/classes"/> + <fileset dir="modules/adb-codegen/target/classes"/> + <fileset dir="modules/xmlbeans/target/classes"/> + </jar> + </tasks> + </configuration> + <goals> + <goal>run</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + <profile> + <id>java15</id> + <activation> + <jdk>1.5</jdk> + </activation> + <modules> + <module>modules/jaxbri</module> + <module>modules/metadata</module> + <module>modules/saaj-api</module> + <module>modules/saaj</module> + <module>modules/jws-api</module> + <module>modules/jaxws-api</module> + <module>modules/jaxws</module> + <module>modules/clustering</module> + </modules> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-antrun-plugin</artifactId> + <executions> + <execution> + <id>axis2-jar</id> + <phase>package</phase> + <configuration> + <tasks> + <mkdir dir="target/lib"/> + <jar destfile="target/lib/axis2-${pom.version}.jar"> + <fileset dir="modules/java2wsdl/target/classes"/> + <fileset dir="modules/kernel/target/classes"/> + <fileset dir="modules/addressing/target/classes"/> + <fileset dir="modules/codegen/target/classes"/> + <fileset dir="modules/adb/target/classes"/> + <fileset dir="modules/adb-codegen/target/classes"/> + <fileset dir="modules/xmlbeans/target/classes"/> + <fileset dir="modules/clustering/target/classes"/> + </jar> + </tasks> + </configuration> + <goals> + <goal>run</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + <profile> + <id>java16</id> + <activation> + <jdk>1.6</jdk> + </activation> + <modules> + <module>modules/jaxbri</module> + <module>modules/metadata</module> + <module>modules/saaj-api</module> + <module>modules/saaj</module> + <module>modules/jws-api</module> + <module>modules/jaxws-api</module> + <module>modules/jaxws</module> + <module>modules/clustering</module> + </modules> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-antrun-plugin</artifactId> + <executions> + <execution> + <id>axis2-jar</id> + <phase>package</phase> + <configuration> + <tasks> + <mkdir dir="target/lib"/> + <jar destfile="target/lib/axis2-${pom.version}.jar"> + <fileset dir="modules/java2wsdl/target/classes"/> + <fileset dir="modules/kernel/target/classes"/> + <fileset dir="modules/addressing/target/classes"/> + <fileset dir="modules/codegen/target/classes"/> + <fileset dir="modules/adb/target/classes"/> + <fileset dir="modules/adb-codegen/target/classes"/> + <fileset dir="modules/xmlbeans/target/classes"/> + <fileset dir="modules/clustering/target/classes"/> + </jar> + </tasks> + </configuration> + <goals> + <goal>run</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + </profiles> + <ciManagement> + <system>continuum</system> + <url>http://vmbuild.apache.org/continuum</url> + <notifiers> + <notifier> + <configuration> + <ADDRESS>axis2-cvs@ws.apache.org</ADDRESS> + </configuration> + </notifier> + </notifiers> + </ciManagement> + <scm> + <connection> + scm:svn:http://svn.apache.org/repos/asf/webservices/axis2/trunk/java/ + </connection> + <developerConnection> + scm:svn:https://svn.apache.org/repos/asf/webservices/axis2/trunk/java/ + </developerConnection> + <url>http://svn.apache.org/viewvc/webservices/webservices/axis2/trunk/java/</url> + </scm> + <distributionManagement> + <repository> + <id>apache-repo</id> + <name>Maven Central Repository</name> + <url> + scpexe://people.apache.org//www/people.apache.org/repo/m2-ibiblio-rsync-repository</url> + </repository> + <snapshotRepository> + <id>apache-snapshots</id> + <name>Apache Development Repository</name> + <url>scpexe://people.apache.org//www/people.apache.org/repo/m2-snapshot-repository</url> + </snapshotRepository> + </distributionManagement> + <build> + <plugins> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>build-helper-maven-plugin</artifactId> + <executions> + <execution> + <id>axis2-jar-package</id> + <phase>package</phase> + <goals> + <goal>attach-artifact</goal> + </goals> + <configuration> + <artifacts> + <artifact> + <file>target/lib/axis2-${pom.version}.jar</file> + <type>jar</type> + </artifact> + </artifacts> + </configuration> + </execution> + </executions> + </plugin> + </plugins> + </build> + <reporting> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-site-plugin</artifactId> + <configuration> + <xdocDirectory>${basedir}/xdocs</xdocDirectory> + <resourcesDirectory>${basedir}/xdocs/resources</resourcesDirectory> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-javadoc-plugin</artifactId> + <configuration> + <aggregate>true</aggregate> + <links> + <link>http://java.sun.com/j2ee/1.4/docs/api</link> + <link>http://java.sun.com/j2se/1.5.0/docs/api</link> + <link>http://jakarta.apache.org/commons/collections/apidocs-COLLECTIONS_3_0/</link> + <link>http://jakarta.apache.org/commons/dbcp/apidocs/</link> + <link>http://jakarta.apache.org/commons/fileupload/apidocs/</link> + <link>http://jakarta.apache.org/commons/httpclient/apidocs/</link> + <link>http://jakarta.apache.org/commons/logging/apidocs/</link> + <link>http://jakarta.apache.org/commons/pool/apidocs/</link> + <link>http://www.junit.org/junit/javadoc/</link> + <link>http://logging.apache.org/log4j/docs/api/</link> + <link>http://jakarta.apache.org/regexp/apidocs/</link> + <link>http://jakarta.apache.org/velocity/api/</link> + </links> + </configuration> + </plugin> + </plugins> + </reporting> +</project> diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070726.173653-5.pom.md5 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070726.173653-5.pom.md5 new file mode 100644 index 000000000..7e4a5cfdd --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070726.173653-5.pom.md5 @@ -0,0 +1 @@ +69add9b3e2b7d27ae5c92de61acb2d23
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070726.173653-5.pom.sha1 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070726.173653-5.pom.sha1 new file mode 100644 index 000000000..b0a35015d --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070726.173653-5.pom.sha1 @@ -0,0 +1 @@ +e1b45d0a5c28f15e8b235a7b4b350513c790ef39
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070727.113106-7.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070727.113106-7.pom new file mode 100644 index 000000000..372560004 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070727.113106-7.pom @@ -0,0 +1,300 @@ +<?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</groupId> + <artifactId>apache</artifactId> + <version>3</version> + </parent> + <modelVersion>4.0.0</modelVersion> + <groupId>org.apache.axis2</groupId> + <artifactId>axis2</artifactId> + <version>1.3-SNAPSHOT</version> + <packaging>pom</packaging> + <name>Apache Axis 2.0 - Root</name> + <modules> + <module>modules/adb</module> + <module>modules/adb-codegen</module> + <module>modules/addressing</module> + <module>modules/codegen</module> + <module>modules/fastinfoset</module> + <module>modules/integration</module> + <module>modules/java2wsdl</module> + <module>modules/jibx</module> + <module>modules/json</module> + <module>modules/kernel</module> + <module>modules/mex</module> + <module>modules/mex-mar</module> + <module>modules/mtompolicy</module> + <module>modules/parent</module> + <module>modules/ping</module> + <module>modules/samples/version</module> + <module>modules/soapmonitor</module> + <module>modules/spring</module> + <module>modules/tool/axis2-aar-maven-plugin</module> + <module>modules/tool/axis2-ant-plugin</module> + <module>modules/tool/axis2-eclipse-codegen-plugin</module> + <module>modules/tool/axis2-eclipse-service-plugin</module> + <module>modules/tool/axis2-idea-plugin</module> + <module>modules/tool/axis2-java2wsdl-maven-plugin</module> + <module>modules/tool/axis2-mar-maven-plugin</module> + <module>modules/tool/axis2-wsdl2code-maven-plugin</module> + <module>modules/webapp</module> + <module>modules/xmlbeans</module> + <module>modules/samples</module> + <module>modules/scripting</module> + </modules> + <profiles> + <profile> + <activation> + <property> + <name>release</name> + </property> + </activation> + <modules> + <module>modules/distribution</module> + </modules> + </profile> + <profile> + <id>java14</id> + <activation> + <jdk>1.4</jdk> + </activation> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-antrun-plugin</artifactId> + <executions> + <execution> + <id>axis2-jar</id> + <phase>package</phase> + <configuration> + <tasks> + <mkdir dir="target/lib"/> + <jar destfile="target/lib/axis2-${pom.version}.jar"> + <fileset dir="modules/java2wsdl/target/classes"/> + <fileset dir="modules/kernel/target/classes"/> + <fileset dir="modules/addressing/target/classes"/> + <fileset dir="modules/codegen/target/classes"/> + <fileset dir="modules/adb/target/classes"/> + <fileset dir="modules/adb-codegen/target/classes"/> + <fileset dir="modules/xmlbeans/target/classes"/> + </jar> + </tasks> + </configuration> + <goals> + <goal>run</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + <profile> + <id>java15</id> + <activation> + <jdk>1.5</jdk> + </activation> + <modules> + <module>modules/jaxbri</module> + <module>modules/metadata</module> + <module>modules/saaj-api</module> + <module>modules/saaj</module> + <module>modules/jws-api</module> + <module>modules/jaxws-api</module> + <module>modules/jaxws</module> + <module>modules/clustering</module> + </modules> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-antrun-plugin</artifactId> + <executions> + <execution> + <id>axis2-jar</id> + <phase>package</phase> + <configuration> + <tasks> + <mkdir dir="target/lib"/> + <jar destfile="target/lib/axis2-${pom.version}.jar"> + <fileset dir="modules/java2wsdl/target/classes"/> + <fileset dir="modules/kernel/target/classes"/> + <fileset dir="modules/addressing/target/classes"/> + <fileset dir="modules/codegen/target/classes"/> + <fileset dir="modules/adb/target/classes"/> + <fileset dir="modules/adb-codegen/target/classes"/> + <fileset dir="modules/xmlbeans/target/classes"/> + <fileset dir="modules/clustering/target/classes"/> + </jar> + </tasks> + </configuration> + <goals> + <goal>run</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + <profile> + <id>java16</id> + <activation> + <jdk>1.6</jdk> + </activation> + <modules> + <module>modules/jaxbri</module> + <module>modules/metadata</module> + <module>modules/saaj-api</module> + <module>modules/saaj</module> + <module>modules/jws-api</module> + <module>modules/jaxws-api</module> + <module>modules/jaxws</module> + <module>modules/clustering</module> + </modules> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-antrun-plugin</artifactId> + <executions> + <execution> + <id>axis2-jar</id> + <phase>package</phase> + <configuration> + <tasks> + <mkdir dir="target/lib"/> + <jar destfile="target/lib/axis2-${pom.version}.jar"> + <fileset dir="modules/java2wsdl/target/classes"/> + <fileset dir="modules/kernel/target/classes"/> + <fileset dir="modules/addressing/target/classes"/> + <fileset dir="modules/codegen/target/classes"/> + <fileset dir="modules/adb/target/classes"/> + <fileset dir="modules/adb-codegen/target/classes"/> + <fileset dir="modules/xmlbeans/target/classes"/> + <fileset dir="modules/clustering/target/classes"/> + </jar> + </tasks> + </configuration> + <goals> + <goal>run</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + </profiles> + <ciManagement> + <system>continuum</system> + <url>http://vmbuild.apache.org/continuum</url> + <notifiers> + <notifier> + <configuration> + <ADDRESS>axis2-cvs@ws.apache.org</ADDRESS> + </configuration> + </notifier> + </notifiers> + </ciManagement> + <scm> + <connection> + scm:svn:http://svn.apache.org/repos/asf/webservices/axis2/trunk/java/ + </connection> + <developerConnection> + scm:svn:https://svn.apache.org/repos/asf/webservices/axis2/trunk/java/ + </developerConnection> + <url>http://svn.apache.org/viewvc/webservices/webservices/axis2/trunk/java/</url> + </scm> + <distributionManagement> + <repository> + <id>apache-repo</id> + <name>Maven Central Repository</name> + <url> + scpexe://people.apache.org//www/people.apache.org/repo/m2-ibiblio-rsync-repository</url> + </repository> + <snapshotRepository> + <id>apache-snapshots</id> + <name>Apache Development Repository</name> + <url>scpexe://people.apache.org//www/people.apache.org/repo/m2-snapshot-repository</url> + </snapshotRepository> + </distributionManagement> + <build> + <plugins> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>build-helper-maven-plugin</artifactId> + <executions> + <execution> + <id>axis2-jar-package</id> + <phase>package</phase> + <goals> + <goal>attach-artifact</goal> + </goals> + <configuration> + <artifacts> + <artifact> + <file>target/lib/axis2-${pom.version}.jar</file> + <type>jar</type> + </artifact> + </artifacts> + </configuration> + </execution> + </executions> + </plugin> + </plugins> + </build> + <reporting> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-site-plugin</artifactId> + <configuration> + <xdocDirectory>${basedir}/xdocs</xdocDirectory> + <resourcesDirectory>${basedir}/xdocs/resources</resourcesDirectory> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-javadoc-plugin</artifactId> + <configuration> + <aggregate>true</aggregate> + <links> + <link>http://java.sun.com/j2ee/1.4/docs/api</link> + <link>http://java.sun.com/j2se/1.5.0/docs/api</link> + <link>http://jakarta.apache.org/commons/collections/apidocs-COLLECTIONS_3_0/</link> + <link>http://jakarta.apache.org/commons/dbcp/apidocs/</link> + <link>http://jakarta.apache.org/commons/fileupload/apidocs/</link> + <link>http://jakarta.apache.org/commons/httpclient/apidocs/</link> + <link>http://jakarta.apache.org/commons/logging/apidocs/</link> + <link>http://jakarta.apache.org/commons/pool/apidocs/</link> + <link>http://www.junit.org/junit/javadoc/</link> + <link>http://logging.apache.org/log4j/docs/api/</link> + <link>http://jakarta.apache.org/regexp/apidocs/</link> + <link>http://jakarta.apache.org/velocity/api/</link> + </links> + </configuration> + </plugin> + </plugins> + </reporting> +</project> diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070727.113106-7.pom.md5 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070727.113106-7.pom.md5 new file mode 100644 index 000000000..7e4a5cfdd --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070727.113106-7.pom.md5 @@ -0,0 +1 @@ +69add9b3e2b7d27ae5c92de61acb2d23
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070727.113106-7.pom.sha1 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070727.113106-7.pom.sha1 new file mode 100644 index 000000000..b0a35015d --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070727.113106-7.pom.sha1 @@ -0,0 +1 @@ +e1b45d0a5c28f15e8b235a7b4b350513c790ef39
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070728.053229-10.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070728.053229-10.pom new file mode 100644 index 000000000..372560004 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070728.053229-10.pom @@ -0,0 +1,300 @@ +<?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</groupId> + <artifactId>apache</artifactId> + <version>3</version> + </parent> + <modelVersion>4.0.0</modelVersion> + <groupId>org.apache.axis2</groupId> + <artifactId>axis2</artifactId> + <version>1.3-SNAPSHOT</version> + <packaging>pom</packaging> + <name>Apache Axis 2.0 - Root</name> + <modules> + <module>modules/adb</module> + <module>modules/adb-codegen</module> + <module>modules/addressing</module> + <module>modules/codegen</module> + <module>modules/fastinfoset</module> + <module>modules/integration</module> + <module>modules/java2wsdl</module> + <module>modules/jibx</module> + <module>modules/json</module> + <module>modules/kernel</module> + <module>modules/mex</module> + <module>modules/mex-mar</module> + <module>modules/mtompolicy</module> + <module>modules/parent</module> + <module>modules/ping</module> + <module>modules/samples/version</module> + <module>modules/soapmonitor</module> + <module>modules/spring</module> + <module>modules/tool/axis2-aar-maven-plugin</module> + <module>modules/tool/axis2-ant-plugin</module> + <module>modules/tool/axis2-eclipse-codegen-plugin</module> + <module>modules/tool/axis2-eclipse-service-plugin</module> + <module>modules/tool/axis2-idea-plugin</module> + <module>modules/tool/axis2-java2wsdl-maven-plugin</module> + <module>modules/tool/axis2-mar-maven-plugin</module> + <module>modules/tool/axis2-wsdl2code-maven-plugin</module> + <module>modules/webapp</module> + <module>modules/xmlbeans</module> + <module>modules/samples</module> + <module>modules/scripting</module> + </modules> + <profiles> + <profile> + <activation> + <property> + <name>release</name> + </property> + </activation> + <modules> + <module>modules/distribution</module> + </modules> + </profile> + <profile> + <id>java14</id> + <activation> + <jdk>1.4</jdk> + </activation> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-antrun-plugin</artifactId> + <executions> + <execution> + <id>axis2-jar</id> + <phase>package</phase> + <configuration> + <tasks> + <mkdir dir="target/lib"/> + <jar destfile="target/lib/axis2-${pom.version}.jar"> + <fileset dir="modules/java2wsdl/target/classes"/> + <fileset dir="modules/kernel/target/classes"/> + <fileset dir="modules/addressing/target/classes"/> + <fileset dir="modules/codegen/target/classes"/> + <fileset dir="modules/adb/target/classes"/> + <fileset dir="modules/adb-codegen/target/classes"/> + <fileset dir="modules/xmlbeans/target/classes"/> + </jar> + </tasks> + </configuration> + <goals> + <goal>run</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + <profile> + <id>java15</id> + <activation> + <jdk>1.5</jdk> + </activation> + <modules> + <module>modules/jaxbri</module> + <module>modules/metadata</module> + <module>modules/saaj-api</module> + <module>modules/saaj</module> + <module>modules/jws-api</module> + <module>modules/jaxws-api</module> + <module>modules/jaxws</module> + <module>modules/clustering</module> + </modules> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-antrun-plugin</artifactId> + <executions> + <execution> + <id>axis2-jar</id> + <phase>package</phase> + <configuration> + <tasks> + <mkdir dir="target/lib"/> + <jar destfile="target/lib/axis2-${pom.version}.jar"> + <fileset dir="modules/java2wsdl/target/classes"/> + <fileset dir="modules/kernel/target/classes"/> + <fileset dir="modules/addressing/target/classes"/> + <fileset dir="modules/codegen/target/classes"/> + <fileset dir="modules/adb/target/classes"/> + <fileset dir="modules/adb-codegen/target/classes"/> + <fileset dir="modules/xmlbeans/target/classes"/> + <fileset dir="modules/clustering/target/classes"/> + </jar> + </tasks> + </configuration> + <goals> + <goal>run</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + <profile> + <id>java16</id> + <activation> + <jdk>1.6</jdk> + </activation> + <modules> + <module>modules/jaxbri</module> + <module>modules/metadata</module> + <module>modules/saaj-api</module> + <module>modules/saaj</module> + <module>modules/jws-api</module> + <module>modules/jaxws-api</module> + <module>modules/jaxws</module> + <module>modules/clustering</module> + </modules> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-antrun-plugin</artifactId> + <executions> + <execution> + <id>axis2-jar</id> + <phase>package</phase> + <configuration> + <tasks> + <mkdir dir="target/lib"/> + <jar destfile="target/lib/axis2-${pom.version}.jar"> + <fileset dir="modules/java2wsdl/target/classes"/> + <fileset dir="modules/kernel/target/classes"/> + <fileset dir="modules/addressing/target/classes"/> + <fileset dir="modules/codegen/target/classes"/> + <fileset dir="modules/adb/target/classes"/> + <fileset dir="modules/adb-codegen/target/classes"/> + <fileset dir="modules/xmlbeans/target/classes"/> + <fileset dir="modules/clustering/target/classes"/> + </jar> + </tasks> + </configuration> + <goals> + <goal>run</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + </profiles> + <ciManagement> + <system>continuum</system> + <url>http://vmbuild.apache.org/continuum</url> + <notifiers> + <notifier> + <configuration> + <ADDRESS>axis2-cvs@ws.apache.org</ADDRESS> + </configuration> + </notifier> + </notifiers> + </ciManagement> + <scm> + <connection> + scm:svn:http://svn.apache.org/repos/asf/webservices/axis2/trunk/java/ + </connection> + <developerConnection> + scm:svn:https://svn.apache.org/repos/asf/webservices/axis2/trunk/java/ + </developerConnection> + <url>http://svn.apache.org/viewvc/webservices/webservices/axis2/trunk/java/</url> + </scm> + <distributionManagement> + <repository> + <id>apache-repo</id> + <name>Maven Central Repository</name> + <url> + scpexe://people.apache.org//www/people.apache.org/repo/m2-ibiblio-rsync-repository</url> + </repository> + <snapshotRepository> + <id>apache-snapshots</id> + <name>Apache Development Repository</name> + <url>scpexe://people.apache.org//www/people.apache.org/repo/m2-snapshot-repository</url> + </snapshotRepository> + </distributionManagement> + <build> + <plugins> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>build-helper-maven-plugin</artifactId> + <executions> + <execution> + <id>axis2-jar-package</id> + <phase>package</phase> + <goals> + <goal>attach-artifact</goal> + </goals> + <configuration> + <artifacts> + <artifact> + <file>target/lib/axis2-${pom.version}.jar</file> + <type>jar</type> + </artifact> + </artifacts> + </configuration> + </execution> + </executions> + </plugin> + </plugins> + </build> + <reporting> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-site-plugin</artifactId> + <configuration> + <xdocDirectory>${basedir}/xdocs</xdocDirectory> + <resourcesDirectory>${basedir}/xdocs/resources</resourcesDirectory> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-javadoc-plugin</artifactId> + <configuration> + <aggregate>true</aggregate> + <links> + <link>http://java.sun.com/j2ee/1.4/docs/api</link> + <link>http://java.sun.com/j2se/1.5.0/docs/api</link> + <link>http://jakarta.apache.org/commons/collections/apidocs-COLLECTIONS_3_0/</link> + <link>http://jakarta.apache.org/commons/dbcp/apidocs/</link> + <link>http://jakarta.apache.org/commons/fileupload/apidocs/</link> + <link>http://jakarta.apache.org/commons/httpclient/apidocs/</link> + <link>http://jakarta.apache.org/commons/logging/apidocs/</link> + <link>http://jakarta.apache.org/commons/pool/apidocs/</link> + <link>http://www.junit.org/junit/javadoc/</link> + <link>http://logging.apache.org/log4j/docs/api/</link> + <link>http://jakarta.apache.org/regexp/apidocs/</link> + <link>http://jakarta.apache.org/velocity/api/</link> + </links> + </configuration> + </plugin> + </plugins> + </reporting> +</project> diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070728.053229-10.pom.md5 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070728.053229-10.pom.md5 new file mode 100644 index 000000000..7e4a5cfdd --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070728.053229-10.pom.md5 @@ -0,0 +1 @@ +69add9b3e2b7d27ae5c92de61acb2d23
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070728.053229-10.pom.sha1 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070728.053229-10.pom.sha1 new file mode 100644 index 000000000..b0a35015d --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070728.053229-10.pom.sha1 @@ -0,0 +1 @@ +e1b45d0a5c28f15e8b235a7b4b350513c790ef39
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070728.112043-11.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070728.112043-11.pom new file mode 100644 index 000000000..372560004 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070728.112043-11.pom @@ -0,0 +1,300 @@ +<?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</groupId> + <artifactId>apache</artifactId> + <version>3</version> + </parent> + <modelVersion>4.0.0</modelVersion> + <groupId>org.apache.axis2</groupId> + <artifactId>axis2</artifactId> + <version>1.3-SNAPSHOT</version> + <packaging>pom</packaging> + <name>Apache Axis 2.0 - Root</name> + <modules> + <module>modules/adb</module> + <module>modules/adb-codegen</module> + <module>modules/addressing</module> + <module>modules/codegen</module> + <module>modules/fastinfoset</module> + <module>modules/integration</module> + <module>modules/java2wsdl</module> + <module>modules/jibx</module> + <module>modules/json</module> + <module>modules/kernel</module> + <module>modules/mex</module> + <module>modules/mex-mar</module> + <module>modules/mtompolicy</module> + <module>modules/parent</module> + <module>modules/ping</module> + <module>modules/samples/version</module> + <module>modules/soapmonitor</module> + <module>modules/spring</module> + <module>modules/tool/axis2-aar-maven-plugin</module> + <module>modules/tool/axis2-ant-plugin</module> + <module>modules/tool/axis2-eclipse-codegen-plugin</module> + <module>modules/tool/axis2-eclipse-service-plugin</module> + <module>modules/tool/axis2-idea-plugin</module> + <module>modules/tool/axis2-java2wsdl-maven-plugin</module> + <module>modules/tool/axis2-mar-maven-plugin</module> + <module>modules/tool/axis2-wsdl2code-maven-plugin</module> + <module>modules/webapp</module> + <module>modules/xmlbeans</module> + <module>modules/samples</module> + <module>modules/scripting</module> + </modules> + <profiles> + <profile> + <activation> + <property> + <name>release</name> + </property> + </activation> + <modules> + <module>modules/distribution</module> + </modules> + </profile> + <profile> + <id>java14</id> + <activation> + <jdk>1.4</jdk> + </activation> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-antrun-plugin</artifactId> + <executions> + <execution> + <id>axis2-jar</id> + <phase>package</phase> + <configuration> + <tasks> + <mkdir dir="target/lib"/> + <jar destfile="target/lib/axis2-${pom.version}.jar"> + <fileset dir="modules/java2wsdl/target/classes"/> + <fileset dir="modules/kernel/target/classes"/> + <fileset dir="modules/addressing/target/classes"/> + <fileset dir="modules/codegen/target/classes"/> + <fileset dir="modules/adb/target/classes"/> + <fileset dir="modules/adb-codegen/target/classes"/> + <fileset dir="modules/xmlbeans/target/classes"/> + </jar> + </tasks> + </configuration> + <goals> + <goal>run</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + <profile> + <id>java15</id> + <activation> + <jdk>1.5</jdk> + </activation> + <modules> + <module>modules/jaxbri</module> + <module>modules/metadata</module> + <module>modules/saaj-api</module> + <module>modules/saaj</module> + <module>modules/jws-api</module> + <module>modules/jaxws-api</module> + <module>modules/jaxws</module> + <module>modules/clustering</module> + </modules> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-antrun-plugin</artifactId> + <executions> + <execution> + <id>axis2-jar</id> + <phase>package</phase> + <configuration> + <tasks> + <mkdir dir="target/lib"/> + <jar destfile="target/lib/axis2-${pom.version}.jar"> + <fileset dir="modules/java2wsdl/target/classes"/> + <fileset dir="modules/kernel/target/classes"/> + <fileset dir="modules/addressing/target/classes"/> + <fileset dir="modules/codegen/target/classes"/> + <fileset dir="modules/adb/target/classes"/> + <fileset dir="modules/adb-codegen/target/classes"/> + <fileset dir="modules/xmlbeans/target/classes"/> + <fileset dir="modules/clustering/target/classes"/> + </jar> + </tasks> + </configuration> + <goals> + <goal>run</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + <profile> + <id>java16</id> + <activation> + <jdk>1.6</jdk> + </activation> + <modules> + <module>modules/jaxbri</module> + <module>modules/metadata</module> + <module>modules/saaj-api</module> + <module>modules/saaj</module> + <module>modules/jws-api</module> + <module>modules/jaxws-api</module> + <module>modules/jaxws</module> + <module>modules/clustering</module> + </modules> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-antrun-plugin</artifactId> + <executions> + <execution> + <id>axis2-jar</id> + <phase>package</phase> + <configuration> + <tasks> + <mkdir dir="target/lib"/> + <jar destfile="target/lib/axis2-${pom.version}.jar"> + <fileset dir="modules/java2wsdl/target/classes"/> + <fileset dir="modules/kernel/target/classes"/> + <fileset dir="modules/addressing/target/classes"/> + <fileset dir="modules/codegen/target/classes"/> + <fileset dir="modules/adb/target/classes"/> + <fileset dir="modules/adb-codegen/target/classes"/> + <fileset dir="modules/xmlbeans/target/classes"/> + <fileset dir="modules/clustering/target/classes"/> + </jar> + </tasks> + </configuration> + <goals> + <goal>run</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + </profiles> + <ciManagement> + <system>continuum</system> + <url>http://vmbuild.apache.org/continuum</url> + <notifiers> + <notifier> + <configuration> + <ADDRESS>axis2-cvs@ws.apache.org</ADDRESS> + </configuration> + </notifier> + </notifiers> + </ciManagement> + <scm> + <connection> + scm:svn:http://svn.apache.org/repos/asf/webservices/axis2/trunk/java/ + </connection> + <developerConnection> + scm:svn:https://svn.apache.org/repos/asf/webservices/axis2/trunk/java/ + </developerConnection> + <url>http://svn.apache.org/viewvc/webservices/webservices/axis2/trunk/java/</url> + </scm> + <distributionManagement> + <repository> + <id>apache-repo</id> + <name>Maven Central Repository</name> + <url> + scpexe://people.apache.org//www/people.apache.org/repo/m2-ibiblio-rsync-repository</url> + </repository> + <snapshotRepository> + <id>apache-snapshots</id> + <name>Apache Development Repository</name> + <url>scpexe://people.apache.org//www/people.apache.org/repo/m2-snapshot-repository</url> + </snapshotRepository> + </distributionManagement> + <build> + <plugins> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>build-helper-maven-plugin</artifactId> + <executions> + <execution> + <id>axis2-jar-package</id> + <phase>package</phase> + <goals> + <goal>attach-artifact</goal> + </goals> + <configuration> + <artifacts> + <artifact> + <file>target/lib/axis2-${pom.version}.jar</file> + <type>jar</type> + </artifact> + </artifacts> + </configuration> + </execution> + </executions> + </plugin> + </plugins> + </build> + <reporting> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-site-plugin</artifactId> + <configuration> + <xdocDirectory>${basedir}/xdocs</xdocDirectory> + <resourcesDirectory>${basedir}/xdocs/resources</resourcesDirectory> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-javadoc-plugin</artifactId> + <configuration> + <aggregate>true</aggregate> + <links> + <link>http://java.sun.com/j2ee/1.4/docs/api</link> + <link>http://java.sun.com/j2se/1.5.0/docs/api</link> + <link>http://jakarta.apache.org/commons/collections/apidocs-COLLECTIONS_3_0/</link> + <link>http://jakarta.apache.org/commons/dbcp/apidocs/</link> + <link>http://jakarta.apache.org/commons/fileupload/apidocs/</link> + <link>http://jakarta.apache.org/commons/httpclient/apidocs/</link> + <link>http://jakarta.apache.org/commons/logging/apidocs/</link> + <link>http://jakarta.apache.org/commons/pool/apidocs/</link> + <link>http://www.junit.org/junit/javadoc/</link> + <link>http://logging.apache.org/log4j/docs/api/</link> + <link>http://jakarta.apache.org/regexp/apidocs/</link> + <link>http://jakarta.apache.org/velocity/api/</link> + </links> + </configuration> + </plugin> + </plugins> + </reporting> +</project> diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070728.112043-11.pom.md5 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070728.112043-11.pom.md5 new file mode 100644 index 000000000..7e4a5cfdd --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070728.112043-11.pom.md5 @@ -0,0 +1 @@ +69add9b3e2b7d27ae5c92de61acb2d23
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070728.112043-11.pom.sha1 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070728.112043-11.pom.sha1 new file mode 100644 index 000000000..b0a35015d --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070728.112043-11.pom.sha1 @@ -0,0 +1 @@ +e1b45d0a5c28f15e8b235a7b4b350513c790ef39
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070729.171937-16.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070729.171937-16.pom new file mode 100644 index 000000000..372560004 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070729.171937-16.pom @@ -0,0 +1,300 @@ +<?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</groupId> + <artifactId>apache</artifactId> + <version>3</version> + </parent> + <modelVersion>4.0.0</modelVersion> + <groupId>org.apache.axis2</groupId> + <artifactId>axis2</artifactId> + <version>1.3-SNAPSHOT</version> + <packaging>pom</packaging> + <name>Apache Axis 2.0 - Root</name> + <modules> + <module>modules/adb</module> + <module>modules/adb-codegen</module> + <module>modules/addressing</module> + <module>modules/codegen</module> + <module>modules/fastinfoset</module> + <module>modules/integration</module> + <module>modules/java2wsdl</module> + <module>modules/jibx</module> + <module>modules/json</module> + <module>modules/kernel</module> + <module>modules/mex</module> + <module>modules/mex-mar</module> + <module>modules/mtompolicy</module> + <module>modules/parent</module> + <module>modules/ping</module> + <module>modules/samples/version</module> + <module>modules/soapmonitor</module> + <module>modules/spring</module> + <module>modules/tool/axis2-aar-maven-plugin</module> + <module>modules/tool/axis2-ant-plugin</module> + <module>modules/tool/axis2-eclipse-codegen-plugin</module> + <module>modules/tool/axis2-eclipse-service-plugin</module> + <module>modules/tool/axis2-idea-plugin</module> + <module>modules/tool/axis2-java2wsdl-maven-plugin</module> + <module>modules/tool/axis2-mar-maven-plugin</module> + <module>modules/tool/axis2-wsdl2code-maven-plugin</module> + <module>modules/webapp</module> + <module>modules/xmlbeans</module> + <module>modules/samples</module> + <module>modules/scripting</module> + </modules> + <profiles> + <profile> + <activation> + <property> + <name>release</name> + </property> + </activation> + <modules> + <module>modules/distribution</module> + </modules> + </profile> + <profile> + <id>java14</id> + <activation> + <jdk>1.4</jdk> + </activation> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-antrun-plugin</artifactId> + <executions> + <execution> + <id>axis2-jar</id> + <phase>package</phase> + <configuration> + <tasks> + <mkdir dir="target/lib"/> + <jar destfile="target/lib/axis2-${pom.version}.jar"> + <fileset dir="modules/java2wsdl/target/classes"/> + <fileset dir="modules/kernel/target/classes"/> + <fileset dir="modules/addressing/target/classes"/> + <fileset dir="modules/codegen/target/classes"/> + <fileset dir="modules/adb/target/classes"/> + <fileset dir="modules/adb-codegen/target/classes"/> + <fileset dir="modules/xmlbeans/target/classes"/> + </jar> + </tasks> + </configuration> + <goals> + <goal>run</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + <profile> + <id>java15</id> + <activation> + <jdk>1.5</jdk> + </activation> + <modules> + <module>modules/jaxbri</module> + <module>modules/metadata</module> + <module>modules/saaj-api</module> + <module>modules/saaj</module> + <module>modules/jws-api</module> + <module>modules/jaxws-api</module> + <module>modules/jaxws</module> + <module>modules/clustering</module> + </modules> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-antrun-plugin</artifactId> + <executions> + <execution> + <id>axis2-jar</id> + <phase>package</phase> + <configuration> + <tasks> + <mkdir dir="target/lib"/> + <jar destfile="target/lib/axis2-${pom.version}.jar"> + <fileset dir="modules/java2wsdl/target/classes"/> + <fileset dir="modules/kernel/target/classes"/> + <fileset dir="modules/addressing/target/classes"/> + <fileset dir="modules/codegen/target/classes"/> + <fileset dir="modules/adb/target/classes"/> + <fileset dir="modules/adb-codegen/target/classes"/> + <fileset dir="modules/xmlbeans/target/classes"/> + <fileset dir="modules/clustering/target/classes"/> + </jar> + </tasks> + </configuration> + <goals> + <goal>run</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + <profile> + <id>java16</id> + <activation> + <jdk>1.6</jdk> + </activation> + <modules> + <module>modules/jaxbri</module> + <module>modules/metadata</module> + <module>modules/saaj-api</module> + <module>modules/saaj</module> + <module>modules/jws-api</module> + <module>modules/jaxws-api</module> + <module>modules/jaxws</module> + <module>modules/clustering</module> + </modules> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-antrun-plugin</artifactId> + <executions> + <execution> + <id>axis2-jar</id> + <phase>package</phase> + <configuration> + <tasks> + <mkdir dir="target/lib"/> + <jar destfile="target/lib/axis2-${pom.version}.jar"> + <fileset dir="modules/java2wsdl/target/classes"/> + <fileset dir="modules/kernel/target/classes"/> + <fileset dir="modules/addressing/target/classes"/> + <fileset dir="modules/codegen/target/classes"/> + <fileset dir="modules/adb/target/classes"/> + <fileset dir="modules/adb-codegen/target/classes"/> + <fileset dir="modules/xmlbeans/target/classes"/> + <fileset dir="modules/clustering/target/classes"/> + </jar> + </tasks> + </configuration> + <goals> + <goal>run</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + </profiles> + <ciManagement> + <system>continuum</system> + <url>http://vmbuild.apache.org/continuum</url> + <notifiers> + <notifier> + <configuration> + <ADDRESS>axis2-cvs@ws.apache.org</ADDRESS> + </configuration> + </notifier> + </notifiers> + </ciManagement> + <scm> + <connection> + scm:svn:http://svn.apache.org/repos/asf/webservices/axis2/trunk/java/ + </connection> + <developerConnection> + scm:svn:https://svn.apache.org/repos/asf/webservices/axis2/trunk/java/ + </developerConnection> + <url>http://svn.apache.org/viewvc/webservices/webservices/axis2/trunk/java/</url> + </scm> + <distributionManagement> + <repository> + <id>apache-repo</id> + <name>Maven Central Repository</name> + <url> + scpexe://people.apache.org//www/people.apache.org/repo/m2-ibiblio-rsync-repository</url> + </repository> + <snapshotRepository> + <id>apache-snapshots</id> + <name>Apache Development Repository</name> + <url>scpexe://people.apache.org//www/people.apache.org/repo/m2-snapshot-repository</url> + </snapshotRepository> + </distributionManagement> + <build> + <plugins> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>build-helper-maven-plugin</artifactId> + <executions> + <execution> + <id>axis2-jar-package</id> + <phase>package</phase> + <goals> + <goal>attach-artifact</goal> + </goals> + <configuration> + <artifacts> + <artifact> + <file>target/lib/axis2-${pom.version}.jar</file> + <type>jar</type> + </artifact> + </artifacts> + </configuration> + </execution> + </executions> + </plugin> + </plugins> + </build> + <reporting> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-site-plugin</artifactId> + <configuration> + <xdocDirectory>${basedir}/xdocs</xdocDirectory> + <resourcesDirectory>${basedir}/xdocs/resources</resourcesDirectory> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-javadoc-plugin</artifactId> + <configuration> + <aggregate>true</aggregate> + <links> + <link>http://java.sun.com/j2ee/1.4/docs/api</link> + <link>http://java.sun.com/j2se/1.5.0/docs/api</link> + <link>http://jakarta.apache.org/commons/collections/apidocs-COLLECTIONS_3_0/</link> + <link>http://jakarta.apache.org/commons/dbcp/apidocs/</link> + <link>http://jakarta.apache.org/commons/fileupload/apidocs/</link> + <link>http://jakarta.apache.org/commons/httpclient/apidocs/</link> + <link>http://jakarta.apache.org/commons/logging/apidocs/</link> + <link>http://jakarta.apache.org/commons/pool/apidocs/</link> + <link>http://www.junit.org/junit/javadoc/</link> + <link>http://logging.apache.org/log4j/docs/api/</link> + <link>http://jakarta.apache.org/regexp/apidocs/</link> + <link>http://jakarta.apache.org/velocity/api/</link> + </links> + </configuration> + </plugin> + </plugins> + </reporting> +</project> diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070729.171937-16.pom.md5 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070729.171937-16.pom.md5 new file mode 100644 index 000000000..7e4a5cfdd --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070729.171937-16.pom.md5 @@ -0,0 +1 @@ +69add9b3e2b7d27ae5c92de61acb2d23
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070729.171937-16.pom.sha1 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070729.171937-16.pom.sha1 new file mode 100644 index 000000000..b0a35015d --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070729.171937-16.pom.sha1 @@ -0,0 +1 @@ +e1b45d0a5c28f15e8b235a7b4b350513c790ef39
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070730.232112-20.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070730.232112-20.pom new file mode 100644 index 000000000..372560004 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070730.232112-20.pom @@ -0,0 +1,300 @@ +<?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</groupId> + <artifactId>apache</artifactId> + <version>3</version> + </parent> + <modelVersion>4.0.0</modelVersion> + <groupId>org.apache.axis2</groupId> + <artifactId>axis2</artifactId> + <version>1.3-SNAPSHOT</version> + <packaging>pom</packaging> + <name>Apache Axis 2.0 - Root</name> + <modules> + <module>modules/adb</module> + <module>modules/adb-codegen</module> + <module>modules/addressing</module> + <module>modules/codegen</module> + <module>modules/fastinfoset</module> + <module>modules/integration</module> + <module>modules/java2wsdl</module> + <module>modules/jibx</module> + <module>modules/json</module> + <module>modules/kernel</module> + <module>modules/mex</module> + <module>modules/mex-mar</module> + <module>modules/mtompolicy</module> + <module>modules/parent</module> + <module>modules/ping</module> + <module>modules/samples/version</module> + <module>modules/soapmonitor</module> + <module>modules/spring</module> + <module>modules/tool/axis2-aar-maven-plugin</module> + <module>modules/tool/axis2-ant-plugin</module> + <module>modules/tool/axis2-eclipse-codegen-plugin</module> + <module>modules/tool/axis2-eclipse-service-plugin</module> + <module>modules/tool/axis2-idea-plugin</module> + <module>modules/tool/axis2-java2wsdl-maven-plugin</module> + <module>modules/tool/axis2-mar-maven-plugin</module> + <module>modules/tool/axis2-wsdl2code-maven-plugin</module> + <module>modules/webapp</module> + <module>modules/xmlbeans</module> + <module>modules/samples</module> + <module>modules/scripting</module> + </modules> + <profiles> + <profile> + <activation> + <property> + <name>release</name> + </property> + </activation> + <modules> + <module>modules/distribution</module> + </modules> + </profile> + <profile> + <id>java14</id> + <activation> + <jdk>1.4</jdk> + </activation> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-antrun-plugin</artifactId> + <executions> + <execution> + <id>axis2-jar</id> + <phase>package</phase> + <configuration> + <tasks> + <mkdir dir="target/lib"/> + <jar destfile="target/lib/axis2-${pom.version}.jar"> + <fileset dir="modules/java2wsdl/target/classes"/> + <fileset dir="modules/kernel/target/classes"/> + <fileset dir="modules/addressing/target/classes"/> + <fileset dir="modules/codegen/target/classes"/> + <fileset dir="modules/adb/target/classes"/> + <fileset dir="modules/adb-codegen/target/classes"/> + <fileset dir="modules/xmlbeans/target/classes"/> + </jar> + </tasks> + </configuration> + <goals> + <goal>run</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + <profile> + <id>java15</id> + <activation> + <jdk>1.5</jdk> + </activation> + <modules> + <module>modules/jaxbri</module> + <module>modules/metadata</module> + <module>modules/saaj-api</module> + <module>modules/saaj</module> + <module>modules/jws-api</module> + <module>modules/jaxws-api</module> + <module>modules/jaxws</module> + <module>modules/clustering</module> + </modules> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-antrun-plugin</artifactId> + <executions> + <execution> + <id>axis2-jar</id> + <phase>package</phase> + <configuration> + <tasks> + <mkdir dir="target/lib"/> + <jar destfile="target/lib/axis2-${pom.version}.jar"> + <fileset dir="modules/java2wsdl/target/classes"/> + <fileset dir="modules/kernel/target/classes"/> + <fileset dir="modules/addressing/target/classes"/> + <fileset dir="modules/codegen/target/classes"/> + <fileset dir="modules/adb/target/classes"/> + <fileset dir="modules/adb-codegen/target/classes"/> + <fileset dir="modules/xmlbeans/target/classes"/> + <fileset dir="modules/clustering/target/classes"/> + </jar> + </tasks> + </configuration> + <goals> + <goal>run</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + <profile> + <id>java16</id> + <activation> + <jdk>1.6</jdk> + </activation> + <modules> + <module>modules/jaxbri</module> + <module>modules/metadata</module> + <module>modules/saaj-api</module> + <module>modules/saaj</module> + <module>modules/jws-api</module> + <module>modules/jaxws-api</module> + <module>modules/jaxws</module> + <module>modules/clustering</module> + </modules> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-antrun-plugin</artifactId> + <executions> + <execution> + <id>axis2-jar</id> + <phase>package</phase> + <configuration> + <tasks> + <mkdir dir="target/lib"/> + <jar destfile="target/lib/axis2-${pom.version}.jar"> + <fileset dir="modules/java2wsdl/target/classes"/> + <fileset dir="modules/kernel/target/classes"/> + <fileset dir="modules/addressing/target/classes"/> + <fileset dir="modules/codegen/target/classes"/> + <fileset dir="modules/adb/target/classes"/> + <fileset dir="modules/adb-codegen/target/classes"/> + <fileset dir="modules/xmlbeans/target/classes"/> + <fileset dir="modules/clustering/target/classes"/> + </jar> + </tasks> + </configuration> + <goals> + <goal>run</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + </profiles> + <ciManagement> + <system>continuum</system> + <url>http://vmbuild.apache.org/continuum</url> + <notifiers> + <notifier> + <configuration> + <ADDRESS>axis2-cvs@ws.apache.org</ADDRESS> + </configuration> + </notifier> + </notifiers> + </ciManagement> + <scm> + <connection> + scm:svn:http://svn.apache.org/repos/asf/webservices/axis2/trunk/java/ + </connection> + <developerConnection> + scm:svn:https://svn.apache.org/repos/asf/webservices/axis2/trunk/java/ + </developerConnection> + <url>http://svn.apache.org/viewvc/webservices/webservices/axis2/trunk/java/</url> + </scm> + <distributionManagement> + <repository> + <id>apache-repo</id> + <name>Maven Central Repository</name> + <url> + scpexe://people.apache.org//www/people.apache.org/repo/m2-ibiblio-rsync-repository</url> + </repository> + <snapshotRepository> + <id>apache-snapshots</id> + <name>Apache Development Repository</name> + <url>scpexe://people.apache.org//www/people.apache.org/repo/m2-snapshot-repository</url> + </snapshotRepository> + </distributionManagement> + <build> + <plugins> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>build-helper-maven-plugin</artifactId> + <executions> + <execution> + <id>axis2-jar-package</id> + <phase>package</phase> + <goals> + <goal>attach-artifact</goal> + </goals> + <configuration> + <artifacts> + <artifact> + <file>target/lib/axis2-${pom.version}.jar</file> + <type>jar</type> + </artifact> + </artifacts> + </configuration> + </execution> + </executions> + </plugin> + </plugins> + </build> + <reporting> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-site-plugin</artifactId> + <configuration> + <xdocDirectory>${basedir}/xdocs</xdocDirectory> + <resourcesDirectory>${basedir}/xdocs/resources</resourcesDirectory> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-javadoc-plugin</artifactId> + <configuration> + <aggregate>true</aggregate> + <links> + <link>http://java.sun.com/j2ee/1.4/docs/api</link> + <link>http://java.sun.com/j2se/1.5.0/docs/api</link> + <link>http://jakarta.apache.org/commons/collections/apidocs-COLLECTIONS_3_0/</link> + <link>http://jakarta.apache.org/commons/dbcp/apidocs/</link> + <link>http://jakarta.apache.org/commons/fileupload/apidocs/</link> + <link>http://jakarta.apache.org/commons/httpclient/apidocs/</link> + <link>http://jakarta.apache.org/commons/logging/apidocs/</link> + <link>http://jakarta.apache.org/commons/pool/apidocs/</link> + <link>http://www.junit.org/junit/javadoc/</link> + <link>http://logging.apache.org/log4j/docs/api/</link> + <link>http://jakarta.apache.org/regexp/apidocs/</link> + <link>http://jakarta.apache.org/velocity/api/</link> + </links> + </configuration> + </plugin> + </plugins> + </reporting> +</project> diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070730.232112-20.pom.md5 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070730.232112-20.pom.md5 new file mode 100644 index 000000000..7e4a5cfdd --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070730.232112-20.pom.md5 @@ -0,0 +1 @@ +69add9b3e2b7d27ae5c92de61acb2d23
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070730.232112-20.pom.sha1 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070730.232112-20.pom.sha1 new file mode 100644 index 000000000..b0a35015d --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070730.232112-20.pom.sha1 @@ -0,0 +1 @@ +e1b45d0a5c28f15e8b235a7b4b350513c790ef39
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070731.113304-21.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070731.113304-21.pom new file mode 100644 index 000000000..8d5931c0e --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070731.113304-21.pom @@ -0,0 +1,268 @@ +<?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</groupId> + <artifactId>apache</artifactId> + <version>3</version> + </parent> + <modelVersion>4.0.0</modelVersion> + <groupId>org.apache.axis2</groupId> + <artifactId>axis2</artifactId> + <version>1.3-SNAPSHOT</version> + <packaging>pom</packaging> + <name>Apache Axis 2.0 - Root</name> + <modules> + <module>modules/adb</module> + <module>modules/adb-codegen</module> + <module>modules/addressing</module> + <module>modules/codegen</module> + <module>modules/fastinfoset</module> + <module>modules/integration</module> + <module>modules/java2wsdl</module> + <module>modules/jibx</module> + <module>modules/json</module> + <module>modules/kernel</module> + <module>modules/mex</module> + <module>modules/mex-mar</module> + <module>modules/mtompolicy</module> + <module>modules/parent</module> + <module>modules/ping</module> + <module>modules/samples/version</module> + <module>modules/soapmonitor</module> + <module>modules/spring</module> + <module>modules/tool/axis2-aar-maven-plugin</module> + <module>modules/tool/axis2-ant-plugin</module> + <module>modules/tool/axis2-eclipse-codegen-plugin</module> + <module>modules/tool/axis2-eclipse-service-plugin</module> + <module>modules/tool/axis2-idea-plugin</module> + <module>modules/tool/axis2-java2wsdl-maven-plugin</module> + <module>modules/tool/axis2-mar-maven-plugin</module> + <module>modules/tool/axis2-wsdl2code-maven-plugin</module> + <module>modules/webapp</module> + <module>modules/xmlbeans</module> + <module>modules/samples</module> + <module>modules/scripting</module> + </modules> + <profiles> + <profile> + <activation> + <property> + <name>release</name> + </property> + </activation> + <modules> + <module>modules/documentation</module> + <module>modules/distribution</module> + </modules> + </profile> + <profile> + <id>java14</id> + <activation> + <jdk>1.4</jdk> + </activation> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-antrun-plugin</artifactId> + <executions> + <execution> + <id>axis2-jar</id> + <phase>package</phase> + <configuration> + <tasks> + <mkdir dir="target/lib"/> + <jar destfile="target/lib/axis2-${pom.version}.jar"> + <fileset dir="modules/java2wsdl/target/classes"/> + <fileset dir="modules/kernel/target/classes"/> + <fileset dir="modules/addressing/target/classes"/> + <fileset dir="modules/codegen/target/classes"/> + <fileset dir="modules/adb/target/classes"/> + <fileset dir="modules/adb-codegen/target/classes"/> + <fileset dir="modules/xmlbeans/target/classes"/> + </jar> + </tasks> + </configuration> + <goals> + <goal>run</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + <profile> + <id>java15</id> + <activation> + <jdk>1.5</jdk> + </activation> + <modules> + <module>modules/jaxbri</module> + <module>modules/metadata</module> + <module>modules/saaj-api</module> + <module>modules/saaj</module> + <module>modules/jws-api</module> + <module>modules/jaxws-api</module> + <module>modules/jaxws</module> + <module>modules/clustering</module> + </modules> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-antrun-plugin</artifactId> + <executions> + <execution> + <id>axis2-jar</id> + <phase>package</phase> + <configuration> + <tasks> + <mkdir dir="target/lib"/> + <jar destfile="target/lib/axis2-${pom.version}.jar"> + <fileset dir="modules/java2wsdl/target/classes"/> + <fileset dir="modules/kernel/target/classes"/> + <fileset dir="modules/addressing/target/classes"/> + <fileset dir="modules/codegen/target/classes"/> + <fileset dir="modules/adb/target/classes"/> + <fileset dir="modules/adb-codegen/target/classes"/> + <fileset dir="modules/xmlbeans/target/classes"/> + <fileset dir="modules/clustering/target/classes"/> + </jar> + </tasks> + </configuration> + <goals> + <goal>run</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + <profile> + <id>java16</id> + <activation> + <jdk>1.6</jdk> + </activation> + <modules> + <module>modules/jaxbri</module> + <module>modules/metadata</module> + <module>modules/saaj-api</module> + <module>modules/saaj</module> + <module>modules/jws-api</module> + <module>modules/jaxws-api</module> + <module>modules/jaxws</module> + <module>modules/clustering</module> + </modules> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-antrun-plugin</artifactId> + <executions> + <execution> + <id>axis2-jar</id> + <phase>package</phase> + <configuration> + <tasks> + <mkdir dir="target/lib"/> + <jar destfile="target/lib/axis2-${pom.version}.jar"> + <fileset dir="modules/java2wsdl/target/classes"/> + <fileset dir="modules/kernel/target/classes"/> + <fileset dir="modules/addressing/target/classes"/> + <fileset dir="modules/codegen/target/classes"/> + <fileset dir="modules/adb/target/classes"/> + <fileset dir="modules/adb-codegen/target/classes"/> + <fileset dir="modules/xmlbeans/target/classes"/> + <fileset dir="modules/clustering/target/classes"/> + </jar> + </tasks> + </configuration> + <goals> + <goal>run</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + </profiles> + <ciManagement> + <system>continuum</system> + <url>http://vmbuild.apache.org/continuum</url> + <notifiers> + <notifier> + <configuration> + <ADDRESS>axis2-cvs@ws.apache.org</ADDRESS> + </configuration> + </notifier> + </notifiers> + </ciManagement> + <scm> + <connection> + scm:svn:http://svn.apache.org/repos/asf/webservices/axis2/trunk/java/ + </connection> + <developerConnection> + scm:svn:https://svn.apache.org/repos/asf/webservices/axis2/trunk/java/ + </developerConnection> + <url>http://svn.apache.org/viewvc/webservices/webservices/axis2/trunk/java/</url> + </scm> + <distributionManagement> + <repository> + <id>apache-repo</id> + <name>Maven Central Repository</name> + <url> + scpexe://people.apache.org//www/people.apache.org/repo/m2-ibiblio-rsync-repository</url> + </repository> + <snapshotRepository> + <id>apache-snapshots</id> + <name>Apache Development Repository</name> + <url>scpexe://people.apache.org//www/people.apache.org/repo/m2-snapshot-repository</url> + </snapshotRepository> + </distributionManagement> + <build> + <plugins> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>build-helper-maven-plugin</artifactId> + <executions> + <execution> + <id>axis2-jar-package</id> + <phase>package</phase> + <goals> + <goal>attach-artifact</goal> + </goals> + <configuration> + <artifacts> + <artifact> + <file>target/lib/axis2-${pom.version}.jar</file> + <type>jar</type> + </artifact> + </artifacts> + </configuration> + </execution> + </executions> + </plugin> + </plugins> + </build> +</project> diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070731.113304-21.pom.md5 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070731.113304-21.pom.md5 new file mode 100644 index 000000000..9cebfeecc --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070731.113304-21.pom.md5 @@ -0,0 +1 @@ +8530af16aa7f3e5268b96ff88dd703a8
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070731.113304-21.pom.sha1 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070731.113304-21.pom.sha1 new file mode 100644 index 000000000..45d7111f6 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070731.113304-21.pom.sha1 @@ -0,0 +1 @@ +d2a036ec537737153980aed1157bad133230f2c8
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070731.172936-22.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070731.172936-22.pom new file mode 100644 index 000000000..8d5931c0e --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070731.172936-22.pom @@ -0,0 +1,268 @@ +<?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</groupId> + <artifactId>apache</artifactId> + <version>3</version> + </parent> + <modelVersion>4.0.0</modelVersion> + <groupId>org.apache.axis2</groupId> + <artifactId>axis2</artifactId> + <version>1.3-SNAPSHOT</version> + <packaging>pom</packaging> + <name>Apache Axis 2.0 - Root</name> + <modules> + <module>modules/adb</module> + <module>modules/adb-codegen</module> + <module>modules/addressing</module> + <module>modules/codegen</module> + <module>modules/fastinfoset</module> + <module>modules/integration</module> + <module>modules/java2wsdl</module> + <module>modules/jibx</module> + <module>modules/json</module> + <module>modules/kernel</module> + <module>modules/mex</module> + <module>modules/mex-mar</module> + <module>modules/mtompolicy</module> + <module>modules/parent</module> + <module>modules/ping</module> + <module>modules/samples/version</module> + <module>modules/soapmonitor</module> + <module>modules/spring</module> + <module>modules/tool/axis2-aar-maven-plugin</module> + <module>modules/tool/axis2-ant-plugin</module> + <module>modules/tool/axis2-eclipse-codegen-plugin</module> + <module>modules/tool/axis2-eclipse-service-plugin</module> + <module>modules/tool/axis2-idea-plugin</module> + <module>modules/tool/axis2-java2wsdl-maven-plugin</module> + <module>modules/tool/axis2-mar-maven-plugin</module> + <module>modules/tool/axis2-wsdl2code-maven-plugin</module> + <module>modules/webapp</module> + <module>modules/xmlbeans</module> + <module>modules/samples</module> + <module>modules/scripting</module> + </modules> + <profiles> + <profile> + <activation> + <property> + <name>release</name> + </property> + </activation> + <modules> + <module>modules/documentation</module> + <module>modules/distribution</module> + </modules> + </profile> + <profile> + <id>java14</id> + <activation> + <jdk>1.4</jdk> + </activation> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-antrun-plugin</artifactId> + <executions> + <execution> + <id>axis2-jar</id> + <phase>package</phase> + <configuration> + <tasks> + <mkdir dir="target/lib"/> + <jar destfile="target/lib/axis2-${pom.version}.jar"> + <fileset dir="modules/java2wsdl/target/classes"/> + <fileset dir="modules/kernel/target/classes"/> + <fileset dir="modules/addressing/target/classes"/> + <fileset dir="modules/codegen/target/classes"/> + <fileset dir="modules/adb/target/classes"/> + <fileset dir="modules/adb-codegen/target/classes"/> + <fileset dir="modules/xmlbeans/target/classes"/> + </jar> + </tasks> + </configuration> + <goals> + <goal>run</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + <profile> + <id>java15</id> + <activation> + <jdk>1.5</jdk> + </activation> + <modules> + <module>modules/jaxbri</module> + <module>modules/metadata</module> + <module>modules/saaj-api</module> + <module>modules/saaj</module> + <module>modules/jws-api</module> + <module>modules/jaxws-api</module> + <module>modules/jaxws</module> + <module>modules/clustering</module> + </modules> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-antrun-plugin</artifactId> + <executions> + <execution> + <id>axis2-jar</id> + <phase>package</phase> + <configuration> + <tasks> + <mkdir dir="target/lib"/> + <jar destfile="target/lib/axis2-${pom.version}.jar"> + <fileset dir="modules/java2wsdl/target/classes"/> + <fileset dir="modules/kernel/target/classes"/> + <fileset dir="modules/addressing/target/classes"/> + <fileset dir="modules/codegen/target/classes"/> + <fileset dir="modules/adb/target/classes"/> + <fileset dir="modules/adb-codegen/target/classes"/> + <fileset dir="modules/xmlbeans/target/classes"/> + <fileset dir="modules/clustering/target/classes"/> + </jar> + </tasks> + </configuration> + <goals> + <goal>run</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + <profile> + <id>java16</id> + <activation> + <jdk>1.6</jdk> + </activation> + <modules> + <module>modules/jaxbri</module> + <module>modules/metadata</module> + <module>modules/saaj-api</module> + <module>modules/saaj</module> + <module>modules/jws-api</module> + <module>modules/jaxws-api</module> + <module>modules/jaxws</module> + <module>modules/clustering</module> + </modules> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-antrun-plugin</artifactId> + <executions> + <execution> + <id>axis2-jar</id> + <phase>package</phase> + <configuration> + <tasks> + <mkdir dir="target/lib"/> + <jar destfile="target/lib/axis2-${pom.version}.jar"> + <fileset dir="modules/java2wsdl/target/classes"/> + <fileset dir="modules/kernel/target/classes"/> + <fileset dir="modules/addressing/target/classes"/> + <fileset dir="modules/codegen/target/classes"/> + <fileset dir="modules/adb/target/classes"/> + <fileset dir="modules/adb-codegen/target/classes"/> + <fileset dir="modules/xmlbeans/target/classes"/> + <fileset dir="modules/clustering/target/classes"/> + </jar> + </tasks> + </configuration> + <goals> + <goal>run</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + </profiles> + <ciManagement> + <system>continuum</system> + <url>http://vmbuild.apache.org/continuum</url> + <notifiers> + <notifier> + <configuration> + <ADDRESS>axis2-cvs@ws.apache.org</ADDRESS> + </configuration> + </notifier> + </notifiers> + </ciManagement> + <scm> + <connection> + scm:svn:http://svn.apache.org/repos/asf/webservices/axis2/trunk/java/ + </connection> + <developerConnection> + scm:svn:https://svn.apache.org/repos/asf/webservices/axis2/trunk/java/ + </developerConnection> + <url>http://svn.apache.org/viewvc/webservices/webservices/axis2/trunk/java/</url> + </scm> + <distributionManagement> + <repository> + <id>apache-repo</id> + <name>Maven Central Repository</name> + <url> + scpexe://people.apache.org//www/people.apache.org/repo/m2-ibiblio-rsync-repository</url> + </repository> + <snapshotRepository> + <id>apache-snapshots</id> + <name>Apache Development Repository</name> + <url>scpexe://people.apache.org//www/people.apache.org/repo/m2-snapshot-repository</url> + </snapshotRepository> + </distributionManagement> + <build> + <plugins> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>build-helper-maven-plugin</artifactId> + <executions> + <execution> + <id>axis2-jar-package</id> + <phase>package</phase> + <goals> + <goal>attach-artifact</goal> + </goals> + <configuration> + <artifacts> + <artifact> + <file>target/lib/axis2-${pom.version}.jar</file> + <type>jar</type> + </artifact> + </artifacts> + </configuration> + </execution> + </executions> + </plugin> + </plugins> + </build> +</project> diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070731.172936-22.pom.md5 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070731.172936-22.pom.md5 new file mode 100644 index 000000000..9cebfeecc --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070731.172936-22.pom.md5 @@ -0,0 +1 @@ +8530af16aa7f3e5268b96ff88dd703a8
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070731.172936-22.pom.sha1 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070731.172936-22.pom.sha1 new file mode 100644 index 000000000..45d7111f6 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070731.172936-22.pom.sha1 @@ -0,0 +1 @@ +d2a036ec537737153980aed1157bad133230f2c8
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070802.113139-29.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070802.113139-29.pom new file mode 100644 index 000000000..8d5931c0e --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070802.113139-29.pom @@ -0,0 +1,268 @@ +<?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</groupId> + <artifactId>apache</artifactId> + <version>3</version> + </parent> + <modelVersion>4.0.0</modelVersion> + <groupId>org.apache.axis2</groupId> + <artifactId>axis2</artifactId> + <version>1.3-SNAPSHOT</version> + <packaging>pom</packaging> + <name>Apache Axis 2.0 - Root</name> + <modules> + <module>modules/adb</module> + <module>modules/adb-codegen</module> + <module>modules/addressing</module> + <module>modules/codegen</module> + <module>modules/fastinfoset</module> + <module>modules/integration</module> + <module>modules/java2wsdl</module> + <module>modules/jibx</module> + <module>modules/json</module> + <module>modules/kernel</module> + <module>modules/mex</module> + <module>modules/mex-mar</module> + <module>modules/mtompolicy</module> + <module>modules/parent</module> + <module>modules/ping</module> + <module>modules/samples/version</module> + <module>modules/soapmonitor</module> + <module>modules/spring</module> + <module>modules/tool/axis2-aar-maven-plugin</module> + <module>modules/tool/axis2-ant-plugin</module> + <module>modules/tool/axis2-eclipse-codegen-plugin</module> + <module>modules/tool/axis2-eclipse-service-plugin</module> + <module>modules/tool/axis2-idea-plugin</module> + <module>modules/tool/axis2-java2wsdl-maven-plugin</module> + <module>modules/tool/axis2-mar-maven-plugin</module> + <module>modules/tool/axis2-wsdl2code-maven-plugin</module> + <module>modules/webapp</module> + <module>modules/xmlbeans</module> + <module>modules/samples</module> + <module>modules/scripting</module> + </modules> + <profiles> + <profile> + <activation> + <property> + <name>release</name> + </property> + </activation> + <modules> + <module>modules/documentation</module> + <module>modules/distribution</module> + </modules> + </profile> + <profile> + <id>java14</id> + <activation> + <jdk>1.4</jdk> + </activation> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-antrun-plugin</artifactId> + <executions> + <execution> + <id>axis2-jar</id> + <phase>package</phase> + <configuration> + <tasks> + <mkdir dir="target/lib"/> + <jar destfile="target/lib/axis2-${pom.version}.jar"> + <fileset dir="modules/java2wsdl/target/classes"/> + <fileset dir="modules/kernel/target/classes"/> + <fileset dir="modules/addressing/target/classes"/> + <fileset dir="modules/codegen/target/classes"/> + <fileset dir="modules/adb/target/classes"/> + <fileset dir="modules/adb-codegen/target/classes"/> + <fileset dir="modules/xmlbeans/target/classes"/> + </jar> + </tasks> + </configuration> + <goals> + <goal>run</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + <profile> + <id>java15</id> + <activation> + <jdk>1.5</jdk> + </activation> + <modules> + <module>modules/jaxbri</module> + <module>modules/metadata</module> + <module>modules/saaj-api</module> + <module>modules/saaj</module> + <module>modules/jws-api</module> + <module>modules/jaxws-api</module> + <module>modules/jaxws</module> + <module>modules/clustering</module> + </modules> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-antrun-plugin</artifactId> + <executions> + <execution> + <id>axis2-jar</id> + <phase>package</phase> + <configuration> + <tasks> + <mkdir dir="target/lib"/> + <jar destfile="target/lib/axis2-${pom.version}.jar"> + <fileset dir="modules/java2wsdl/target/classes"/> + <fileset dir="modules/kernel/target/classes"/> + <fileset dir="modules/addressing/target/classes"/> + <fileset dir="modules/codegen/target/classes"/> + <fileset dir="modules/adb/target/classes"/> + <fileset dir="modules/adb-codegen/target/classes"/> + <fileset dir="modules/xmlbeans/target/classes"/> + <fileset dir="modules/clustering/target/classes"/> + </jar> + </tasks> + </configuration> + <goals> + <goal>run</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + <profile> + <id>java16</id> + <activation> + <jdk>1.6</jdk> + </activation> + <modules> + <module>modules/jaxbri</module> + <module>modules/metadata</module> + <module>modules/saaj-api</module> + <module>modules/saaj</module> + <module>modules/jws-api</module> + <module>modules/jaxws-api</module> + <module>modules/jaxws</module> + <module>modules/clustering</module> + </modules> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-antrun-plugin</artifactId> + <executions> + <execution> + <id>axis2-jar</id> + <phase>package</phase> + <configuration> + <tasks> + <mkdir dir="target/lib"/> + <jar destfile="target/lib/axis2-${pom.version}.jar"> + <fileset dir="modules/java2wsdl/target/classes"/> + <fileset dir="modules/kernel/target/classes"/> + <fileset dir="modules/addressing/target/classes"/> + <fileset dir="modules/codegen/target/classes"/> + <fileset dir="modules/adb/target/classes"/> + <fileset dir="modules/adb-codegen/target/classes"/> + <fileset dir="modules/xmlbeans/target/classes"/> + <fileset dir="modules/clustering/target/classes"/> + </jar> + </tasks> + </configuration> + <goals> + <goal>run</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + </profiles> + <ciManagement> + <system>continuum</system> + <url>http://vmbuild.apache.org/continuum</url> + <notifiers> + <notifier> + <configuration> + <ADDRESS>axis2-cvs@ws.apache.org</ADDRESS> + </configuration> + </notifier> + </notifiers> + </ciManagement> + <scm> + <connection> + scm:svn:http://svn.apache.org/repos/asf/webservices/axis2/trunk/java/ + </connection> + <developerConnection> + scm:svn:https://svn.apache.org/repos/asf/webservices/axis2/trunk/java/ + </developerConnection> + <url>http://svn.apache.org/viewvc/webservices/webservices/axis2/trunk/java/</url> + </scm> + <distributionManagement> + <repository> + <id>apache-repo</id> + <name>Maven Central Repository</name> + <url> + scpexe://people.apache.org//www/people.apache.org/repo/m2-ibiblio-rsync-repository</url> + </repository> + <snapshotRepository> + <id>apache-snapshots</id> + <name>Apache Development Repository</name> + <url>scpexe://people.apache.org//www/people.apache.org/repo/m2-snapshot-repository</url> + </snapshotRepository> + </distributionManagement> + <build> + <plugins> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>build-helper-maven-plugin</artifactId> + <executions> + <execution> + <id>axis2-jar-package</id> + <phase>package</phase> + <goals> + <goal>attach-artifact</goal> + </goals> + <configuration> + <artifacts> + <artifact> + <file>target/lib/axis2-${pom.version}.jar</file> + <type>jar</type> + </artifact> + </artifacts> + </configuration> + </execution> + </executions> + </plugin> + </plugins> + </build> +</project> diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070802.113139-29.pom.md5 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070802.113139-29.pom.md5 new file mode 100644 index 000000000..9cebfeecc --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070802.113139-29.pom.md5 @@ -0,0 +1 @@ +8530af16aa7f3e5268b96ff88dd703a8
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070802.113139-29.pom.sha1 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070802.113139-29.pom.sha1 new file mode 100644 index 000000000..45d7111f6 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/axis2-1.3-20070802.113139-29.pom.sha1 @@ -0,0 +1 @@ +d2a036ec537737153980aed1157bad133230f2c8
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/maven-metadata.xml b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/maven-metadata.xml new file mode 100644 index 000000000..3d2b170fc --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/maven-metadata.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="UTF-8"?><metadata> + <groupId>org.apache.axis2</groupId> + <artifactId>axis2</artifactId> + <version>1.3-SNAPSHOT</version> + <versioning> + <snapshot> + <timestamp>20070802.113139</timestamp> + <buildNumber>29</buildNumber> + </snapshot> + <lastUpdated>20070802113139</lastUpdated> + </versioning> +</metadata> diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/maven-metadata.xml.md5 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/maven-metadata.xml.md5 new file mode 100644 index 000000000..f39e1f745 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/maven-metadata.xml.md5 @@ -0,0 +1 @@ +f68494b20d262a4974d61e2911f90291
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/maven-metadata.xml.sha1 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/maven-metadata.xml.sha1 new file mode 100644 index 000000000..ebf6c8ce2 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/axis2/axis2/1.3-SNAPSHOT/maven-metadata.xml.sha1 @@ -0,0 +1 @@ +6d0399f05e374923a3929683b4176fe67d8ed08f
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/cocoon/cocoon/1/cocoon-1.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/cocoon/cocoon/1/cocoon-1.pom new file mode 100644 index 000000000..81201451e --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/cocoon/cocoon/1/cocoon-1.pom @@ -0,0 +1,379 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + Copyright 2005 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. +--> +<!--+ + | This is the main Maven file that contains all global settings, management and information. + | @version $Id: cocoon-1.pom 580582 2007-09-29 13:37:01Z joakime $ + +--> +<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> + + <parent> + <groupId>org.apache</groupId> + <artifactId>apache</artifactId> + <version>1</version> + </parent> + + <packaging>pom</packaging> + + <groupId>org.apache.cocoon</groupId> + <artifactId>cocoon</artifactId> + <version>1</version> + + <name>Apache Cocoon</name> + <url>http://cocoon.apache.org</url> + <licenses> + <license> + <name>Apache License, Version 2.0</name> + <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url> + <distribution>repo</distribution> + </license> + </licenses> + <!--modules> + <module>blocks</module> + <module>commons</module> + <module>core</module> + <module>tools</module> + </modules--> + <repositories> + <repository> + <id>central</id> + <name>Maven central repository</name> + <url>http://ibiblio.org/maven2</url> + </repository> + <repository> + <id>apache.snapshot</id> + <name>Apache Snapshot Repository</name> + <url>http://svn.apache.org/maven-snapshot-repository</url> + </repository> + <repository> + <id>apache-cvs</id> + <name>Apache Maven Repository</name> + <url>http://svn.apache.org/repository</url> + <layout>legacy</layout> + </repository> + </repositories> + <!-- Activate this element if you want to use snapshot versions of plugins + <pluginRepositories> + <pluginRepository> + <id>snapshots</id> + <url>http://snapshots.maven.codehaus.org/maven2</url> + </pluginRepository> + </pluginRepositories> + --> + <organization> + <name>The Apache Software Foundation</name> + <url>http://www.apache.org/</url> + </organization> + <developers> + <developer> + <id>crossley</id> + <name>David Crossley</name> + <email>crossley@apache.org</email> + <organization>ASF</organization> + <organizationUrl>http://www.apache.org/</organizationUrl> + <roles> + <role>Committer</role> + </roles> + <timezone>+10</timezone> + </developer> + <developer> + <id>bdelacretaz</id> + <name>Bertrand Delacretaz</name> + <email>bdelacretaz@apache.org</email> + <organization>ASF</organization> + <organizationUrl>http://www.apache.org</organizationUrl> + <roles> + <role>Committer</role> + </roles> + <timezone>+1</timezone> + </developer> + <developer> + <id>danielf</id> + <name>Daniel Fagerstrom</name> + <email>danielf@apache.org</email> + <organization>ASF</organization> + <organizationUrl>http://www.apache.org</organizationUrl> + <roles> + <role>Committer</role> + </roles> + <timezone>+1</timezone> + </developer> + <developer> + <id>antonio</id> + <name>Antonio Gallardo</name> + <email>antonio@apache.org</email> + <organization>ASF</organization> + <organizationUrl>http://www.apache.org</organizationUrl> + <roles> + <role>Committer</role> + </roles> + <timezone>-6</timezone> + </developer> + <developer> + <id>lgawron</id> + <name>Leszek Gawron</name> + <email>lgawron@apache.org</email> + <organization>ASF</organization> + <organizationUrl>http://www.apache.org</organizationUrl> + <roles> + <role>Committer</role> + </roles> + <timezone>+1</timezone> + </developer> + <developer> + <id>joerg</id> + <name>Jorg Heinicke</name> + <email>joerg@apache.org</email> + <organization>ASF</organization> + <organizationUrl>http://www.apache.org</organizationUrl> + <timezone>+1</timezone> + <roles> + <role>Committer</role> + </roles> + </developer> + <developer> + <id>jheymans</id> + <name>Jorg Heymans</name> + <email>jheymans@apache.org</email> + <organization>ASF</organization> + <organizationUrl>http://www.apache.org</organizationUrl> + <roles> + <role>Committer</role> + </roles> + <timezone>+1</timezone> + </developer> + <developer> + <id>anathaniel</id> + <name>Alfred Nathaniel</name> + <email>anathaniel@apache.org</email> + <organization>ASF</organization> + <organizationUrl>http://www.apache.org</organizationUrl> + <roles> + <role>Committer</role> + </roles> + <timezone>+1</timezone> + </developer> + <developer> + <id>giacomo</id> + <name>Giacomo Pati</name> + <email>giacomo@apache.org</email> + <organization>ASF</organization> + <organizationUrl>http://www.apache.org</organizationUrl> + <roles> + <role>Committer</role> + </roles> + <timezone>+1</timezone> + </developer> + <developer> + <id>reinhard</id> + <name>Reinhard Poetz</name> + <email>reinhard@apache.org</email> + <organization>ASF</organization> + <organizationUrl>http://www.apache.org</organizationUrl> + <roles> + <role>Committer</role> + </roles> + <timezone>+1</timezone> + </developer> + <developer> + <id>jbq</id> + <name>Jean-Baptiste Quenot</name> + <email>jbq@apache.org</email> + <organization>ASF</organization> + <organizationUrl>http://www.apache.org</organizationUrl> + <roles> + <role>Committer</role> + </roles> + <timezone>+1</timezone> + </developer> + <developer> + <id>gianugo</id> + <name>Gianugo Rabellino</name> + <email>gianugo@apache.org</email> + <organization>ASF</organization> + <organizationUrl>http://www.apache.org</organizationUrl> + <roles> + <role>Committer</role> + </roles> + <timezone>+1</timezone> + </developer> + <developer> + <id>cziegeler</id> + <name>Carsten Ziegeler</name> + <email>cziegeler@apache.org</email> + <organization>ASF</organization> + <organizationUrl>http://www.apache.org</organizationUrl> + <roles> + <role>Committer</role> + </roles> + <timezone>+1</timezone> + </developer> + <developer> + <id>vgritsenko</id> + <name>Vadim Gritsenko</name> + <email>vgritsenko@apache.org</email> + <organization>ASF</organization> + <organizationUrl>http://www.apache.org</organizationUrl> + <roles> + <role>Committer</role> + </roles> + <timezone>-5</timezone> + </developer> + </developers> + <issueManagement> + <system>jira</system> + <url>https://issues.apache.org/jira/browse/COCOON</url> + </issueManagement> + <ciManagement> + <system>continuum</system> + <url>http://cocoon.zones.apache.org:12000/continuum/servlet/continuum</url> + <notifiers> + <notifier> + <type>mail</type> + <configuration> + <address>dev@cocoon.apache.org</address> + </configuration> + </notifier> + </notifiers> + </ciManagement> + <mailingLists> + <mailingList> + <name>Cocoon User List</name> + <subscribe>users-subscribe@cocoon.apache.org</subscribe> + <unsubscribe>users-unsubscribe@cocoon.apache.org</unsubscribe> + <post>users@cocoon.apache.org</post> + <archive>http://mail-archives.apache.org/mod_mbox/cocoon-users</archive> + <otherArchives> + <otherArchive>http://www.mail-archive.com/users@cocoon.apache.org/</otherArchive> + <otherArchive>http://marc.theaimsgroup.com/?l=xml-cocoon-user</otherArchive> + <otherArchive>http://news.gmane.org/gmane.text.xml.cocoon.user</otherArchive> + </otherArchives> + </mailingList> + <mailingList> + <name>Cocoon Developer List</name> + <subscribe>dev-subscribe@cocoon.apache.org</subscribe> + <unsubscribe>dev-unsubscribe@cocoon.apache.org</unsubscribe> + <post>dev@cocoon.apache.org</post> + <archive>http://mail-archives.apache.org/mod_mbox/cocoon-dev</archive> + <otherArchives> + <otherArchive>http://www.mail-archive.com/dev@cocoon.apache.org/</otherArchive> + <otherArchive>http://marc.theaimsgroup.com/?l=xml-cocoon-dev</otherArchive> + <otherArchive>http://news.gmane.org/gmane.text.xml.cocoon.dev</otherArchive> + </otherArchives> + </mailingList> + <mailingList> + <name>Cocoon Documentation List</name> + <subscribe>docs-subscribe@cocoon.apache.org</subscribe> + <unsubscribe>docs-unsubscribe@cocoon.apache.org</unsubscribe> + <post>docs@cocoon.apache.org</post> + <archive>http://mail-archives.apache.org/mod_mbox/cocoon-docs</archive> + <otherArchives> + <otherArchive>http://www.mail-archive.com/dev@cocoon.apache.org/</otherArchive> + <otherArchive>http://marc.theaimsgroup.com/?l=xml-cocoon-docs</otherArchive> + <otherArchive>http://news.gmane.org/gmane.text.xml.cocoon.docs</otherArchive> + </otherArchives> + </mailingList> + <mailingList> + <name>Cocoon Subversion Repository List</name> + <subscribe>cvs-subscribe@cocoon.apache.org</subscribe> + <unsubscribe>cvs-unsubscribe@cocoon.apache.org</unsubscribe> + <archive>http://mail-archives.apache.org/mod_mbox/cocoon-cvs</archive> + <otherArchives> + <otherArchive>http://www.mail-archive.com/cvs@cocoon.apache.org/</otherArchive> + <otherArchive>http://marc.theaimsgroup.com/?l=xml-cocoon-cvs</otherArchive> + <otherArchive>http://news.gmane.org/gmane.text.xml.cocoon.cvs</otherArchive> + </otherArchives> + </mailingList> + </mailingLists> + <scm> + <connection>scm:svn:https://svn.apache.org/repos/asf/cocoon/tags/cocoon-1</connection> + <developerConnection>scm:svn:https://svn.apache.org/repos/asf/cocoon/tags/cocoon-1</developerConnection> + <url>https://svn.apache.org/repos/asf/cocoon/tags/cocoon-1</url> + </scm> + <distributionManagement> + <repository> + <id>apache-maven</id> + <name>release repository</name> + <url>scpexe://people.apache.org/www/people.apache.org/repo/m2-ibiblio-rsync-repository</url> + </repository> + <snapshotRepository> + <id>apache-maven-snapshot</id> + <name>snapshot repository</name> + <url>scpexe://people.apache.org/www/people.apache.org/repo/m2-snapshot-repository</url> + </snapshotRepository> + </distributionManagement> + <build> + <pluginManagement> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-surefire-plugin</artifactId> + <version>2.2</version> + </plugin> + </plugins> + </pluginManagement> + <extensions> + <extension> + <groupId>org.apache.maven.wagon</groupId> + <artifactId>wagon-ssh-external</artifactId> + <version>1.0-alpha-6</version> + </extension> + </extensions> + <!-- + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-compiler-plugin</artifactId> + <configuration> + <source>1.4</source> + <target>1.4</target> + </configuration> + </plugin> + </plugins> + --> + <plugins> + <plugin> + <artifactId>maven-release-plugin</artifactId> + <configuration> + <tagBase>https://svn.apache.org/repos/asf/cocoon/tags</tagBase> + </configuration> + </plugin> + </plugins> + </build> + <reporting> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-project-info-reports-plugin</artifactId> + <reportSets> + <reportSet> + <reports> + <report>dependencies</report> + <report>project-team</report> + <report>mailing-list</report> + <report>cim</report> + <report>issue-tracking</report> + <report>license</report> + <report>scm</report> + </reports> + </reportSet> + </reportSets> + </plugin> + </plugins> + </reporting> +</project>
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/A/1.0/A-1.0.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/A/1.0/A-1.0.pom new file mode 100644 index 000000000..202a0a448 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/A/1.0/A-1.0.pom @@ -0,0 +1,28 @@ +<!-- + ~ 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> diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/A/1.0/A-1.0.war b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/A/1.0/A-1.0.war new file mode 100644 index 000000000..54d190b23 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/A/1.0/A-1.0.war @@ -0,0 +1 @@ +dummy content. sample file only.
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/B/1.0/B-1.0.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/B/1.0/B-1.0.pom new file mode 100644 index 000000000..fa5f8f6c8 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/B/1.0/B-1.0.pom @@ -0,0 +1,28 @@ +<!-- + ~ 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> diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/B/2.0/B-2.0.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/B/2.0/B-2.0.pom new file mode 100644 index 000000000..c3034e820 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/B/2.0/B-2.0.pom @@ -0,0 +1,28 @@ +<!-- + ~ 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> diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/C/1.0/C-1.0.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/C/1.0/C-1.0.pom new file mode 100644 index 000000000..ae14cd7eb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/C/1.0/C-1.0.pom @@ -0,0 +1,28 @@ +<!-- + ~ 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> diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/C/1.0/C-1.0.war b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/C/1.0/C-1.0.war new file mode 100644 index 000000000..54d190b23 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/C/1.0/C-1.0.war @@ -0,0 +1 @@ +dummy content. sample file only.
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-applet/1.0-SNAPSHOT/archiva-applet-1.0-SNAPSHOT.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-applet/1.0-SNAPSHOT/archiva-applet-1.0-SNAPSHOT.pom new file mode 100644 index 000000000..d48ebf7a8 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-applet/1.0-SNAPSHOT/archiva-applet-1.0-SNAPSHOT.pom @@ -0,0 +1,69 @@ +<?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"> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva</artifactId> + <version>1.0-SNAPSHOT</version> + </parent> + <artifactId>archiva-applet</artifactId> + <name>Archiva Applet</name> + <description> + Applet for performing local operations on files such as creating a checksum of an artifact + before uploading it. + </description> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-jar-plugin</artifactId> + <version>2.1</version> + <configuration> + <keystore>src/keystore/keystore</keystore> + <alias>mykey</alias> + <storepass>password</storepass> + <keypass>password</keypass> + </configuration> + <executions> + <execution> + <goals> + <goal>sign</goal> + </goals> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>cobertura-maven-plugin</artifactId> + <configuration> + <instrumentation> + <!-- TODO: should this module have tests? --> + <excludes> + <exclude>**/**</exclude> + </excludes> + </instrumentation> + </configuration> + </plugin> + </plugins> + </build> +</project> diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-base/1.0-SNAPSHOT/archiva-base-1.0-SNAPSHOT.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-base/1.0-SNAPSHOT/archiva-base-1.0-SNAPSHOT.pom new file mode 100644 index 000000000..cd51f1edc --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-base/1.0-SNAPSHOT/archiva-base-1.0-SNAPSHOT.pom @@ -0,0 +1,42 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + ~ Copyright 2005-2006 The Apache Software Foundation. + ~ + ~ Licensed under the Apache License, Version 2.0 (the "License"); + ~ you may not use this file except in compliance with the License. + ~ You may obtain a copy of the License at + ~ + ~ http://www.apache.org/licenses/LICENSE-2.0 + ~ + ~ Unless required by applicable law or agreed to in writing, software + ~ distributed under the License is distributed on an "AS IS" BASIS, + ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + ~ See the License for the specific language governing permissions and + ~ limitations under the License. + --> + +<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> + <parent> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-parent</artifactId> + <version>1.0-SNAPSHOT</version> + <relativePath>../pom.xml</relativePath> + </parent> + + <artifactId>archiva-base</artifactId> + <name>Archiva Base</name> + <packaging>pom</packaging> + + <modules> + <module>archiva-common</module> + <module>archiva-configuration</module> + <module>archiva-consumers</module> + <module>archiva-indexer</module> + <module>archiva-model</module> + <!-- <module>archiva-proxy</module> --> + <module>archiva-repository-layer</module> + <module>archiva-xml-tools</module> + </modules> +</project> diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-cli/1.0-SNAPSHOT/archiva-cli-1.0-SNAPSHOT.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-cli/1.0-SNAPSHOT/archiva-cli-1.0-SNAPSHOT.pom new file mode 100644 index 000000000..3041a9f8d --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-cli/1.0-SNAPSHOT/archiva-cli-1.0-SNAPSHOT.pom @@ -0,0 +1,68 @@ +<?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. + --> + +<project> + <parent> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-parent</artifactId> + <version>1.0-SNAPSHOT</version> + </parent> + <modelVersion>4.0.0</modelVersion> + <artifactId>archiva-cli</artifactId> + <name>Archiva Command Line Client</name> + <dependencies> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-converter</artifactId> + </dependency> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-repository-layer</artifactId> + </dependency> + <dependency> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-component-api</artifactId> + </dependency> + <dependency> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-cli</artifactId> + <version>1.0</version> + </dependency> + <dependency> + <groupId>commons-lang</groupId> + <artifactId>commons-lang</artifactId> + </dependency> + </dependencies> + <build> + <plugins> + <plugin> + <artifactId>maven-assembly-plugin</artifactId> + <configuration> + <descriptor>src/main/assembly/archiva-cli-assembly.xml</descriptor> + <archive> + <manifest> + <mainClass>org.apache.archiva.cli.ArchivaCli</mainClass> + </manifest> + </archive> + </configuration> + </plugin> + </plugins> + </build> +</project> diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-common/1.0-SNAPSHOT/archiva-common-1.0-SNAPSHOT.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-common/1.0-SNAPSHOT/archiva-common-1.0-SNAPSHOT.pom new file mode 100644 index 000000000..17a20abd5 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-common/1.0-SNAPSHOT/archiva-common-1.0-SNAPSHOT.pom @@ -0,0 +1,98 @@ +<?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-base</artifactId> + <version>1.0-SNAPSHOT</version> + </parent> + <modelVersion>4.0.0</modelVersion> + <artifactId>archiva-common</artifactId> + <name>Archiva Base :: Common</name> + <dependencies> + <!-- TO OTHER DEVELOPERS: + This module should depend on NO OTHER ARCHIVA MODULES. + If you feel tempted to add one, discuss it first in the + archiva-dev@maven.apache.org mailing-list. + joakime@apache.org + --> + <dependency> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-component-api</artifactId> + </dependency> + <!-- + <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-artifact-manager</artifactId> + </dependency> + <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-project</artifactId> + </dependency> + --> + <dependency> + <groupId>commons-lang</groupId> + <artifactId>commons-lang</artifactId> + </dependency> + <dependency> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-container-default</artifactId> + </dependency> + </dependencies> + <build> + <plugins> + <!-- + <plugin> + <artifactId>maven-jar-plugin</artifactId> + <executions> + <execution> + <id>test-jar</id> + <goals> + <goal>test-jar</goal> + </goals> + </execution> + </executions> + </plugin> + --> + <plugin> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-maven-plugin</artifactId> + <!-- + <executions> + <execution> + <id>merge</id> + <goals> + <goal>merge-descriptors</goal> + </goals> + <configuration> + <descriptors> + <descriptor>${basedir}/src/main/resources/META-INF/plexus/components.xml</descriptor> + <descriptor>${project.build.directory}/generated-resources/plexus/META-INF/plexus/components.xml</descriptor> + </descriptors> + </configuration> + </execution> + </executions> + --> + </plugin> + </plugins> + </build> +</project> diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-configuration/1.0-SNAPSHOT/archiva-configuration-1.0-SNAPSHOT.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-configuration/1.0-SNAPSHOT/archiva-configuration-1.0-SNAPSHOT.pom new file mode 100644 index 000000000..790d0cfa4 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-configuration/1.0-SNAPSHOT/archiva-configuration-1.0-SNAPSHOT.pom @@ -0,0 +1,109 @@ +<?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-base</artifactId> + <version>1.0-SNAPSHOT</version> + </parent> + <modelVersion>4.0.0</modelVersion> + <artifactId>archiva-configuration</artifactId> + <name>Archiva Base :: Configuration</name> + <dependencies> + <dependency> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-component-api</artifactId> + </dependency> + <dependency> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-utils</artifactId> + </dependency> + <dependency> + <groupId>commons-lang</groupId> + <artifactId>commons-lang</artifactId> + </dependency> + <dependency> + <groupId>commons-io</groupId> + <artifactId>commons-io</artifactId> + </dependency> + <dependency> + <groupId>org.codehaus.plexus.registry</groupId> + <artifactId>plexus-registry-api</artifactId> + <version>1.0-alpha-2-SNAPSHOT</version> + </dependency> + <dependency> + <groupId>org.codehaus.plexus.registry</groupId> + <artifactId>plexus-registry-commons</artifactId> + <version>1.0-alpha-2-SNAPSHOT</version> + <scope>test</scope> + </dependency> + <!-- Test Deps --> + <dependency> + <groupId>easymock</groupId> + <artifactId>easymock</artifactId> + <version>1.2_Java1.3</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-container-default</artifactId> + <scope>test</scope> + </dependency> + </dependencies> + <build> + <plugins> + <plugin> + <groupId>org.codehaus.modello</groupId> + <artifactId>modello-maven-plugin</artifactId> + <version>1.0-alpha-15-SNAPSHOT</version> + <executions> + <execution> + <goals> + <goal>java</goal> + <goal>registry-reader</goal> + <goal>registry-writer</goal> + </goals> + </execution> + </executions> + <configuration> + <version>1.0.0</version> + <model>src/main/mdo/configuration.mdo</model> + </configuration> + </plugin> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>cobertura-maven-plugin</artifactId> + <configuration> + <instrumentation> + <!-- exclude generated --> + <excludes> + <exclude>org/apache/maven/archiva/configuration/io/**</exclude> + <exclude>org/apache/maven/archiva/configuration/*RepositoryConfiguration.*</exclude> + <exclude>org/apache/maven/archiva/configuration/Configuration.*</exclude> + <exclude>org/apache/maven/archiva/configuration/Proxy.*</exclude> + </excludes> + </instrumentation> + </configuration> + </plugin> + </plugins> + </build> +</project> diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-consumer-api/1.0-SNAPSHOT/archiva-consumer-api-1.0-SNAPSHOT.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-consumer-api/1.0-SNAPSHOT/archiva-consumer-api-1.0-SNAPSHOT.pom new file mode 100644 index 000000000..f331ed074 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-consumer-api/1.0-SNAPSHOT/archiva-consumer-api-1.0-SNAPSHOT.pom @@ -0,0 +1,38 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + ~ Copyright 2005-2006 The Apache Software Foundation. + ~ + ~ Licensed under the Apache License, Version 2.0 (the "License"); + ~ you may not use this file except in compliance with the License. + ~ You may obtain a copy of the License at + ~ + ~ http://www.apache.org/licenses/LICENSE-2.0 + ~ + ~ Unless required by applicable law or agreed to in writing, software + ~ distributed under the License is distributed on an "AS IS" BASIS, + ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + ~ See the License for the specific language governing permissions and + ~ limitations under the License. + --> + +<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> + <parent> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-consumers</artifactId> + <version>1.0-SNAPSHOT</version> + <relativePath>../pom.xml</relativePath> + </parent> + + <artifactId>archiva-consumer-api</artifactId> + <name>Archiva Consumer API</name> + <packaging>jar</packaging> + + <dependencies> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-model</artifactId> + </dependency> + </dependencies> +</project> diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-consumers/1.0-SNAPSHOT/archiva-consumers-1.0-SNAPSHOT.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-consumers/1.0-SNAPSHOT/archiva-consumers-1.0-SNAPSHOT.pom new file mode 100644 index 000000000..8969b9ed3 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-consumers/1.0-SNAPSHOT/archiva-consumers-1.0-SNAPSHOT.pom @@ -0,0 +1,41 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + ~ Copyright 2005-2006 The Apache Software Foundation. + ~ + ~ Licensed under the Apache License, Version 2.0 (the "License"); + ~ you may not use this file except in compliance with the License. + ~ You may obtain a copy of the License at + ~ + ~ http://www.apache.org/licenses/LICENSE-2.0 + ~ + ~ Unless required by applicable law or agreed to in writing, software + ~ distributed under the License is distributed on an "AS IS" BASIS, + ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + ~ See the License for the specific language governing permissions and + ~ limitations under the License. + --> + +<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> + <parent> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-base</artifactId> + <version>1.0-SNAPSHOT</version> + <relativePath>../pom.xml</relativePath> + </parent> + + <artifactId>archiva-consumers</artifactId> + <name>Archiva Consumers</name> + <packaging>pom</packaging> + + <modules> + <module>archiva-consumer-api</module> + <module>archiva-core-consumers</module> + <!-- + <module>archiva-database-consumers</module> + <module>archiva-lucene-consumers</module> + <module>archiva-signature-consumers</module> + --> + </modules> +</project> diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-converter/1.0-SNAPSHOT/archiva-converter-1.0-SNAPSHOT.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-converter/1.0-SNAPSHOT/archiva-converter-1.0-SNAPSHOT.pom new file mode 100644 index 000000000..49bde7bd2 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-converter/1.0-SNAPSHOT/archiva-converter-1.0-SNAPSHOT.pom @@ -0,0 +1,79 @@ +<?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-converter</artifactId> + <name>Archiva Repository Converter</name> + <dependencies> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-discoverer</artifactId> + </dependency> + <dependency> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-utils</artifactId> + </dependency> + <dependency> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-component-api</artifactId> + </dependency> + <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-artifact</artifactId> + </dependency> + <dependency> + <groupId>org.apache.maven.shared</groupId> + <artifactId>maven-model-converter</artifactId> + </dependency> + <dependency> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-digest</artifactId> + </dependency> + <dependency> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-i18n</artifactId> + <version>1.0-beta-6</version> + </dependency> + <dependency> + <groupId>commons-io</groupId> + <artifactId>commons-io</artifactId> + </dependency> + <!-- TEST DEPS --> + <dependency> + <groupId>hsqldb</groupId> + <artifactId>hsqldb</artifactId> + <version>1.7.3.3</version> + <scope>test</scope> + </dependency> + <!-- Needed for PlexusTestCase --> + <dependency> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-container-default</artifactId> + <scope>test</scope> + </dependency> + </dependencies> +</project> diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-core-consumers/1.0-SNAPSHOT/archiva-core-consumers-1.0-SNAPSHOT.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-core-consumers/1.0-SNAPSHOT/archiva-core-consumers-1.0-SNAPSHOT.pom new file mode 100644 index 000000000..182578f57 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-core-consumers/1.0-SNAPSHOT/archiva-core-consumers-1.0-SNAPSHOT.pom @@ -0,0 +1,50 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + ~ Copyright 2005-2006 The Apache Software Foundation. + ~ + ~ Licensed under the Apache License, Version 2.0 (the "License"); + ~ you may not use this file except in compliance with the License. + ~ You may obtain a copy of the License at + ~ + ~ http://www.apache.org/licenses/LICENSE-2.0 + ~ + ~ Unless required by applicable law or agreed to in writing, software + ~ distributed under the License is distributed on an "AS IS" BASIS, + ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + ~ See the License for the specific language governing permissions and + ~ limitations under the License. + --> + +<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> + <parent> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-consumers</artifactId> + <version>1.0-SNAPSHOT</version> + <relativePath>../pom.xml</relativePath> + </parent> + + <artifactId>archiva-core-consumers</artifactId> + <name>Archiva Consumers :: Core Consumers</name> + <packaging>jar</packaging> + + <dependencies> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-configuration</artifactId> + </dependency> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-consumer-api</artifactId> + </dependency> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-repository-layer</artifactId> + </dependency> + <dependency> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-digest</artifactId> + </dependency> + </dependencies> +</project> diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-core/1.0-SNAPSHOT/archiva-core-1.0-SNAPSHOT.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-core/1.0-SNAPSHOT/archiva-core-1.0-SNAPSHOT.pom new file mode 100644 index 000000000..18b98fc7b --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-core/1.0-SNAPSHOT/archiva-core-1.0-SNAPSHOT.pom @@ -0,0 +1,113 @@ +<?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> + <artifactId>archiva</artifactId> + <groupId>org.apache.maven.archiva</groupId> + <version>1.0-SNAPSHOT</version> + </parent> + <modelVersion>4.0.0</modelVersion> + <artifactId>archiva-core</artifactId> + <name>Archiva Core</name> + <dependencies> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-configuration</artifactId> + </dependency> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-discoverer</artifactId> + </dependency> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-proxy</artifactId> + </dependency> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-reports-standard</artifactId> + </dependency> + <dependency> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-component-api</artifactId> + </dependency> + <dependency> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-quartz</artifactId> + <version>1.0-alpha-3</version> + </dependency> + <dependency> + <groupId>org.codehaus.plexus.cache</groupId> + <artifactId>plexus-cache-ehcache</artifactId> + <version>1.0-alpha-1-SNAPSHOT</version> + </dependency> + <dependency> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-taskqueue</artifactId> + <version>1.0-alpha-6</version> + </dependency> + <dependency> + <groupId>commons-lang</groupId> + <artifactId>commons-lang</artifactId> + </dependency> + <dependency> + <groupId>org.codehaus.plexus.registry</groupId> + <artifactId>plexus-registry-commons</artifactId> + <version>1.0-SNAPSHOT</version> + <scope>test</scope> + </dependency> + <!-- TEST DEPS --> + <dependency> + <groupId>hsqldb</groupId> + <artifactId>hsqldb</artifactId> + <version>1.7.3.3</version> + <scope>test</scope> + </dependency> + <!-- needed for PlexusTestCase --> + <dependency> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-container-default</artifactId> + <scope>test</scope> + </dependency> + </dependencies> + <build> + <plugins> + <plugin> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-maven-plugin</artifactId> + <executions> + <execution> + <id>merge</id> + <goals> + <goal>merge-descriptors</goal> + </goals> + <configuration> + <descriptors> + <descriptor>${basedir}/src/main/resources/META-INF/plexus/components.xml</descriptor> + <descriptor>${project.build.directory}/generated-resources/plexus/META-INF/plexus/components.xml</descriptor> + </descriptors> + </configuration> + </execution> + </executions> + </plugin> + </plugins> + </build> +</project> diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-discoverer/1.0-SNAPSHOT/archiva-discoverer-1.0-SNAPSHOT.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-discoverer/1.0-SNAPSHOT/archiva-discoverer-1.0-SNAPSHOT.pom new file mode 100644 index 000000000..8a96e39c5 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-discoverer/1.0-SNAPSHOT/archiva-discoverer-1.0-SNAPSHOT.pom @@ -0,0 +1,65 @@ +<?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-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> diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-indexer/1.0-SNAPSHOT/archiva-indexer-1.0-SNAPSHOT.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-indexer/1.0-SNAPSHOT/archiva-indexer-1.0-SNAPSHOT.pom new file mode 100644 index 000000000..7d77d445f --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-indexer/1.0-SNAPSHOT/archiva-indexer-1.0-SNAPSHOT.pom @@ -0,0 +1,81 @@ +<?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-base</artifactId> + <version>1.0-SNAPSHOT</version> + </parent> + <modelVersion>4.0.0</modelVersion> + <artifactId>archiva-indexer</artifactId> + <name>Archiva Base :: Indexer</name> + <dependencies> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-configuration</artifactId> + </dependency> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-model</artifactId> + </dependency> + <dependency> + <groupId>org.apache.lucene</groupId> + <artifactId>lucene-core</artifactId> + <version>2.0.0</version> + </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.codehaus.plexus</groupId> + <artifactId>plexus-digest</artifactId> + </dependency> + <dependency> + <groupId>commons-lang</groupId> + <artifactId>commons-lang</artifactId> + </dependency> + <dependency> + <groupId>commons-io</groupId> + <artifactId>commons-io</artifactId> + </dependency> + </dependencies> + <build> + <plugins> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>cobertura-maven-plugin</artifactId> + <configuration> + <check> + <!-- TODO: increase coverage --> + <totalLineRate>80</totalLineRate> + <totalBranchRate>80</totalBranchRate> + </check> + </configuration> + </plugin> + </plugins> + </build> +</project> diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-model/1.0-SNAPSHOT/archiva-model-1.0-SNAPSHOT.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-model/1.0-SNAPSHOT/archiva-model-1.0-SNAPSHOT.pom new file mode 100644 index 000000000..9c9053a3c --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-model/1.0-SNAPSHOT/archiva-model-1.0-SNAPSHOT.pom @@ -0,0 +1,169 @@ +<?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-base</artifactId> + <version>1.0-SNAPSHOT</version> + </parent> + <modelVersion>4.0.0</modelVersion> + <artifactId>archiva-model</artifactId> + <name>Archiva Base :: Model</name> + <dependencies> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-common</artifactId> + </dependency> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-test-A</artifactId> + <version>${pom.version}</version> + </dependency> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-test-B</artifactId> + <version>${parent.version}</version> + </dependency> + <dependency> + <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> + </dependency> + <dependency> + <groupId>commons-lang</groupId> + <artifactId>commons-lang</artifactId> + </dependency> + <dependency> + <groupId>commons-io</groupId> + <artifactId>commons-io</artifactId> + </dependency> + </dependencies> + <build> + <plugins> + <plugin> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-maven-plugin</artifactId> + </plugin> + <plugin> + <groupId>org.codehaus.modello</groupId> + <artifactId>modello-maven-plugin</artifactId> + <version>1.0-alpha-15-SNAPSHOT</version> + <configuration> + <version>1.0.0</version> + <packageWithVersion>false</packageWithVersion> + <model>src/main/mdo/archiva-base.xml</model> + </configuration> + <executions> + <execution> + <id>archiva-base</id> + <goals> + <goal>java</goal> + <goal>xsd</goal> + <goal>jpox-jdo-mapping</goal> + <goal>jpox-metadata-class</goal> + <!-- + <goal>xpp3-writer</goal> + <goal>xpp3-reader</goal> + --> + </goals> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>jpox-maven-plugin</artifactId> + <version>1.1.6</version> + <dependencies> + <dependency> + <groupId>org.apache.derby</groupId> + <artifactId>derby</artifactId> + <version>10.2.1.6</version> + </dependency> + </dependencies> + <executions> + <execution> + <id>create-ddl</id> + <phase>generate-test-resources</phase> + <goals> + <goal>schema-create</goal> + </goals> + <configuration> + <outputFile>${basedir}/target/classes/org/apache/maven/archiva/model/schema.ddl</outputFile> + <toolProperties> + <property> + <name>javax.jdo.option.ConnectionDriverName</name> + <value>org.apache.derby.jdbc.EmbeddedDriver</value> + </property> + <property> + <name>javax.jdo.option.ConnectionURL</name> + <value>jdbc:derby:target/jdo-schema-create;create=true</value> + </property> + <property> + <name>javax.jdo.option.ConnectionUserName</name> + <value>sa</value> + </property> + <property> + <name>javax.jdo.option.ConnectionPassword</name> + <value></value> + </property> + <property> + <name>log4j.configuration</name> + <value>${basedir}/src/test/resources/log4j.xml</value> + </property> + <property> + <name>org.jpox.autoCreateTables</name> + <value>true</value> + </property> + </toolProperties> + </configuration> + </execution> + <execution> + <id>enhance</id> + <goals> + <goal>enhance</goal> + </goals> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>cobertura-maven-plugin</artifactId> + <configuration> + <instrumentation> + <!-- exclude generated --> + <excludes> + <exclude>org/apache/maven/archiva/reporting/model/**</exclude> + </excludes> + </instrumentation> + </configuration> + </plugin> + </plugins> + </build> +</project> diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-parent/1.0-SNAPSHOT/archiva-parent-1.0-SNAPSHOT.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-parent/1.0-SNAPSHOT/archiva-parent-1.0-SNAPSHOT.pom new file mode 100644 index 000000000..970098384 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-parent/1.0-SNAPSHOT/archiva-parent-1.0-SNAPSHOT.pom @@ -0,0 +1,566 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + ~ Copyright 2005-2006 The Apache Software Foundation. + ~ + ~ Licensed under the Apache License, Version 2.0 (the "License"); + ~ you may not use this file except in compliance with the License. + ~ You may obtain a copy of the License at + ~ + ~ http://www.apache.org/licenses/LICENSE-2.0 + ~ + ~ Unless required by applicable law or agreed to in writing, software + ~ distributed under the License is distributed on an "AS IS" BASIS, + ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + ~ See the License for the specific language governing permissions and + ~ limitations under the License. + --> + +<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> + <parent> + <groupId>org.apache.maven</groupId> + <artifactId>maven-parent</artifactId> + <version>4</version> + <relativePath>../pom/maven/pom.xml</relativePath> + </parent> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-parent</artifactId> + <packaging>pom</packaging> + <name>Archiva</name> + <version>1.0-SNAPSHOT</version> + <description> + Archiva is an application for managing one or more remote repositories, including + administration, artifact handling, + browsing and searching. + </description> + <url>http://maven.apache.org/archiva</url> + <issueManagement> + <system>jira</system> + <url>http://jira.codehaus.org/browse/MRM</url> + </issueManagement> + <mailingLists> + <mailingList> + <name>Maven Archiva User List</name> + <subscribe>archiva-users-subscribe@maven.apache.org</subscribe> + <unsubscribe>archiva-users-unsubscribe@maven.apache.org</unsubscribe> + <post>archiva-users@maven.apache.org</post> + <archive>http://mail-archives.apache.org/mod_mbox/maven-archiva-users</archive> + </mailingList> + <mailingList> + <name>Maven Archiva Developer List</name> + <subscribe>archiva-dev-subscribe@maven.apache.org</subscribe> + <unsubscribe>archiva-dev-unsubscribe@maven.apache.org</unsubscribe> + <post>archiva-dev@maven.apache.org</post> + <archive>http://mail-archives.apache.org/mod_mbox/maven-archiva-dev</archive> + </mailingList> + <mailingList> + <name>Maven Archiva Commits List</name> + <subscribe>archiva-commits-subscribe@maven.apache.org</subscribe> + <unsubscribe>archiva-commits-unsubscribe@maven.apache.org</unsubscribe> + <post>archiva-commits@maven.apache.org</post> + <archive>http://mail-archives.apache.org/mod_mbox/maven-archiva-commits</archive> + </mailingList> + </mailingLists> + <scm> + <connection>scm:svn:http://svn.apache.org/repos/asf/maven/archiva/trunk</connection> + <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/archiva/trunk</developerConnection> + <url>http://svn.apache.org/viewcvs.cgi/maven/archiva/trunk</url> + </scm> + <distributionManagement> + <site> + <id>apache.website</id> + <url>scpexe://people.apache.org/www/maven.apache.org/archiva/</url> + </site> + </distributionManagement> + <build> + <plugins> + <plugin> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-maven-plugin</artifactId> + <version>1.3.3</version> + <executions> + <execution> + <id>generate</id> + <goals> + <goal>descriptor</goal> + </goals> + </execution> + </executions> + </plugin> + <plugin> + <artifactId>maven-compiler-plugin</artifactId> + <configuration> + <source>1.4</source> + <target>1.4</target> + </configuration> + </plugin> + <plugin> + <artifactId>maven-surefire-plugin</artifactId> + <version>2.2</version> + </plugin> + </plugins> + <pluginManagement> + <plugins> + <plugin> + <artifactId>maven-idea-plugin</artifactId> + <configuration> + <jdkLevel>1.4</jdkLevel> + </configuration> + </plugin> + <plugin> + <artifactId>maven-release-plugin</artifactId> + <configuration> + <tagBase>https://svn.apache.org/repos/asf/maven/archiva/tags</tagBase> + </configuration> + </plugin> + </plugins> + </pluginManagement> + </build> + <modules> + <module>archiva-api</module> + <module>archiva-base</module> + <module>archiva-database</module> + <module>archiva-reporting</module> + <module>archiva-web</module> + <module>archiva-cli</module> + <module>maven-meeper</module> + </modules> + <dependencies> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>3.8.1</version> + <scope>test</scope> + </dependency> + </dependencies> + <dependencyManagement> + <dependencies> + <dependency> + <groupId>org.apache.maven.shared</groupId> + <artifactId>maven-app-configuration-model</artifactId> + <version>1.0-SNAPSHOT</version> + </dependency> + <dependency> + <groupId>org.apache.maven.shared</groupId> + <artifactId>maven-app-configuration-web</artifactId> + <version>1.0-SNAPSHOT</version> + </dependency> + <dependency> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-container-default</artifactId> + <version>1.0-alpha-18</version> + </dependency> + <dependency> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-component-api</artifactId> + <version>1.0-alpha-18</version> + </dependency> + <dependency> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-utils</artifactId> + <version>1.4</version> + </dependency> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-log4j12</artifactId> + <version>1.2</version> + </dependency> + <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-repository-metadata</artifactId> + <version>${maven.version}</version> + </dependency> + <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-model</artifactId> + <version>${maven.version}</version> + </dependency> + <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-artifact</artifactId> + <version>${maven.version}</version> + </dependency> + <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-artifact-manager</artifactId> + <version>${maven.version}</version> + </dependency> + <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-project</artifactId> + <version>${maven.version}</version> + </dependency> + <dependency> + <groupId>org.apache.maven.shared</groupId> + <artifactId>maven-model-converter</artifactId> + <version>2.0.5-SNAPSHOT</version> + </dependency> + <dependency> + <groupId>org.apache.maven.wagon</groupId> + <artifactId>wagon-provider-api</artifactId> + <version>${wagon.version}</version> + </dependency> + <dependency> + <groupId>org.apache.maven.wagon</groupId> + <artifactId>wagon-ssh</artifactId> + <version>${wagon.version}</version> + </dependency> + <dependency> + <groupId>org.apache.maven.wagon</groupId> + <artifactId>wagon-file</artifactId> + <version>${wagon.version}</version> + </dependency> + <dependency> + <groupId>org.apache.maven.wagon</groupId> + <artifactId>wagon-http-lightweight</artifactId> + <version>${wagon.version}</version> + </dependency> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-common</artifactId> + <version>${archiva.version}</version> + </dependency> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-core</artifactId> + <version>${archiva.version}</version> + </dependency> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-reports-standard</artifactId> + <version>${archiva.version}</version> + </dependency> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-model</artifactId> + <version>${archiva.version}</version> + </dependency> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-database</artifactId> + <version>${archiva.version}</version> + </dependency> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-consumer-api</artifactId> + <version>${archiva.version}</version> + </dependency> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-model</artifactId> + <version>${archiva.version}</version> + </dependency> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-database</artifactId> + <version>${archiva.version}</version> + </dependency> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-discoverer</artifactId> + <version>${archiva.version}</version> + </dependency> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-repository-layer</artifactId> + <version>${archiva.version}</version> + </dependency> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-indexer</artifactId> + <version>${archiva.version}</version> + </dependency> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-proxy</artifactId> + <version>${archiva.version}</version> + </dependency> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-applet</artifactId> + <version>${archiva.version}</version> + </dependency> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-security</artifactId> + <version>${archiva.version}</version> + </dependency> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-configuration</artifactId> + <version>${archiva.version}</version> + </dependency> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-converter</artifactId> + <version>${archiva.version}</version> + </dependency> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-utils</artifactId> + <version>${archiva.version}</version> + </dependency> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-webapp</artifactId> + <version>${archiva.version}</version> + <type>war</type> + </dependency> + <dependency> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-digest</artifactId> + <version>1.1-SNAPSHOT</version> + </dependency> + <dependency> + <groupId>org.codehaus.plexus.security</groupId> + <artifactId>plexus-security-rbac-profile</artifactId> + <version>${plexus-security.version}</version> + </dependency> + <dependency> + <groupId>org.codehaus.plexus.security</groupId> + <artifactId>plexus-security-system</artifactId> + <version>${plexus-security.version}</version> + </dependency> + <dependency> + <groupId>org.codehaus.plexus.security</groupId> + <artifactId>plexus-security-system</artifactId> + <version>${plexus-security.version}</version> + </dependency> + <dependency> + <groupId>org.codehaus.plexus.security</groupId> + <artifactId>plexus-security-ui-web</artifactId> + <version>${plexus-security.version}</version> + <type>war</type> + </dependency> + <dependency> + <groupId>org.codehaus.plexus.security</groupId> + <artifactId>plexus-security-ui-web-integration</artifactId> + <version>${plexus-security.version}</version> + </dependency> + <dependency> + <groupId>org.codehaus.plexus.security</groupId> + <artifactId>plexus-security-ui-web-taglib</artifactId> + <version>${plexus-security.version}</version> + </dependency> + <dependency> + <groupId>org.codehaus.plexus.security</groupId> + <artifactId>plexus-security-authentication-provider-user-manager</artifactId> + <version>${plexus-security.version}</version> + </dependency> + <dependency> + <groupId>org.codehaus.plexus.security</groupId> + <artifactId>plexus-security-authentication-provider-keystore</artifactId> + <version>${plexus-security.version}</version> + </dependency> + <dependency> + <groupId>org.codehaus.plexus.security</groupId> + <artifactId>plexus-security-user-management-api</artifactId> + <version>${plexus-security.version}</version> + </dependency> + <dependency> + <groupId>org.codehaus.plexus.security</groupId> + <artifactId>plexus-security-user-management-provider-jdo</artifactId> + <version>${plexus-security.version}</version> + </dependency> + <dependency> + <groupId>org.codehaus.plexus.security</groupId> + <artifactId>plexus-security-authorization-rbac-store-cached</artifactId> + <version>${plexus-security.version}</version> + </dependency> + <dependency> + <groupId>org.codehaus.plexus.security</groupId> + <artifactId>plexus-security-authorization-rbac-store-jdo</artifactId> + <version>${plexus-security.version}</version> + </dependency> + <dependency> + <groupId>org.codehaus.plexus.security</groupId> + <artifactId>plexus-security-authorization-api</artifactId> + <version>${plexus-security.version}</version> + </dependency> + <dependency> + <groupId>org.codehaus.plexus.security</groupId> + <artifactId>plexus-security-authorization-rbac-authorizer</artifactId> + <version>${plexus-security.version}</version> + </dependency> + <dependency> + <groupId>org.codehaus.plexus.security</groupId> + <artifactId>plexus-security-keys-jdo</artifactId> + <version>${plexus-security.version}</version> + </dependency> + <dependency> + <groupId>commons-lang</groupId> + <artifactId>commons-lang</artifactId> + <version>2.2</version> + </dependency> + <dependency> + <groupId>commons-io</groupId> + <artifactId>commons-io</artifactId> + <version>1.2</version> + </dependency> + <dependency> + <groupId>org.apache.derby</groupId> + <artifactId>derby</artifactId> + <version>10.1.3.1</version> + </dependency> + </dependencies> + </dependencyManagement> + <reporting> + <plugins> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>cobertura-maven-plugin</artifactId> + </plugin> + <plugin> + <artifactId>maven-checkstyle-plugin</artifactId> + <configuration> + <configLocation>config/maven_checks.xml</configLocation> + </configuration> + </plugin> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>changelog-maven-plugin</artifactId> + </plugin> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>taglist-maven-plugin</artifactId> + </plugin> + <plugin> + <artifactId>maven-jxr-plugin</artifactId> + <configuration> + <aggregate>true</aggregate> + </configuration> + </plugin> + <plugin> + <artifactId>maven-surefire-report-plugin</artifactId> + </plugin> + <plugin> + <artifactId>maven-javadoc-plugin</artifactId> + <configuration> + <source>1.4</source> + <aggregate>true</aggregate> + </configuration> + </plugin> + <plugin> + <artifactId>maven-pmd-plugin</artifactId> + <!-- TODO: choose appropriate rulesets --> + </plugin> + </plugins> + </reporting> + <profiles> + <profile> + <id>ci</id> + <activation> + <property> + <name>enableCiProfile</name> + <value>true</value> + </property> + </activation> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-pmd-plugin</artifactId> + <executions> + <execution> + <phase>process-sources</phase> + <goals> + <!-- TODO: after rules are set + <goal>check</goal> + --> + <goal>cpd-check</goal> + </goals> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-checkstyle-plugin</artifactId> + <executions> + <execution> + <phase>process-sources</phase> + <goals> + <!-- TODO: reformat first, and correct the checks (some are not consistent with the Maven style) + <goal>check</goal> + --> + </goals> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>cobertura-maven-plugin</artifactId> + <configuration> + <check> + <totalLineRate>77</totalLineRate> + <totalBranchRate>95</totalBranchRate> + </check> + + <instrumentation> + <excludes> + <exclude>**/*$*</exclude> + </excludes> + </instrumentation> + </configuration> + <executions> + <execution> + <id>clean</id> + <goals> + <goal>clean</goal> + </goals> + </execution> + <execution> + <id>check</id> + <goals> + <goal>check</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + </profiles> + <repositories> + <repository> + <id>codehaus.org</id> + <url>http://repository.codehaus.org</url> + <releases> + <enabled>true</enabled> + </releases> + <snapshots> + <enabled>false</enabled> + </snapshots> + </repository> + <!-- TODO: remove once ehcache, p-sec, registry, webdav, xwork, naming released --> + <repository> + <id>snapshots.codehaus.org</id> + <url>http://snapshots.repository.codehaus.org</url> + <releases> + <enabled>false</enabled> + </releases> + <snapshots> + <enabled>true</enabled> + </snapshots> + </repository> + </repositories> + <!-- TODO: remove once modello is released --> + <pluginRepositories> + <pluginRepository> + <id>snapshots.codehaus.org</id> + <url>http://snapshots.repository.codehaus.org</url> + <releases> + <enabled>false</enabled> + </releases> + <snapshots> + <enabled>true</enabled> + </snapshots> + </pluginRepository> + </pluginRepositories> + <properties> + <archiva.version>1.0-SNAPSHOT</archiva.version> + <maven.version>2.0.5</maven.version> + <wagon.version>1.0-beta-2</wagon.version> + <plexus-security.version>1.0-alpha-11-SNAPSHOT</plexus-security.version> + </properties> +</project> diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-plexus-application/1.0-SNAPSHOT/archiva-plexus-application-1.0-SNAPSHOT.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-plexus-application/1.0-SNAPSHOT/archiva-plexus-application-1.0-SNAPSHOT.pom new file mode 100644 index 000000000..21edbff05 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-plexus-application/1.0-SNAPSHOT/archiva-plexus-application-1.0-SNAPSHOT.pom @@ -0,0 +1,62 @@ +<?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> + <artifactId>archiva</artifactId> + <groupId>org.apache.maven.archiva</groupId> + <version>1.0-SNAPSHOT</version> + </parent> + <modelVersion>4.0.0</modelVersion> + <artifactId>archiva-plexus-application</artifactId> + <packaging>plexus-application</packaging> + <name>Archiva Plexus Application</name> + <build> + <plugins> + <plugin> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-appserver-maven-plugin</artifactId> + <version>2.0-alpha-7</version> + <extensions>true</extensions> + <configuration> + <applicationConfiguration>src/conf/application.xml</applicationConfiguration> + <configurationsDirectory>src/conf</configurationsDirectory> + <configurationProperties>src/plexus.properties</configurationProperties> + <applicationName>archiva</applicationName> + <runtimeConfiguration>src/conf/plexus.xml</runtimeConfiguration> + <runtimeConfigurationProperties>src/plexus.properties</runtimeConfigurationProperties> + <runtimePath>target/plexus-archiva-runtime</runtimePath> + </configuration> + </plugin> + </plugins> + </build> + <dependencies> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-webapp</artifactId> + <type>war</type> + </dependency> + </dependencies> + <!-- For filtering --> + <properties> + <archivaVersion>${project.version}</archivaVersion> + </properties> +</project> diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-plexus-runtime/1.0-SNAPSHOT/archiva-plexus-runtime-1.0-SNAPSHOT.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-plexus-runtime/1.0-SNAPSHOT/archiva-plexus-runtime-1.0-SNAPSHOT.pom new file mode 100644 index 000000000..1c675dc62 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-plexus-runtime/1.0-SNAPSHOT/archiva-plexus-runtime-1.0-SNAPSHOT.pom @@ -0,0 +1,145 @@ +<?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-plexus-runtime</artifactId> + <name>Archiva Runtime Generator</name> + <dependencies> + <dependency> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-container-default</artifactId> + </dependency> + <dependency> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-utils</artifactId> + </dependency> + <dependency> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-appserver-host</artifactId> + <version>2.0-alpha-7</version> + </dependency> + <!-- Services --> + <dependency> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-appserver-service-jetty</artifactId> + <version>2.0-alpha-7</version> + <type>plexus-service</type> + </dependency> + <!-- Plexus applications --> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-plexus-application</artifactId> + <version>${project.version}</version> + <type>plexus-application</type> + </dependency> + + <!-- Additional Core Artifacts --> + <dependency> + <groupId>log4j</groupId> + <artifactId>log4j</artifactId> + <version>1.2.8</version> + </dependency> + <dependency> + <groupId>commons-logging</groupId> + <artifactId>commons-logging-api</artifactId> + <version>1.0.4</version> + </dependency> + <dependency> + <groupId>org.apache.derby</groupId> + <artifactId>derby</artifactId> + <scope>runtime</scope> + </dependency> + <dependency> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-naming</artifactId> + <version>1.0-alpha-3-SNAPSHOT</version> + <scope>runtime</scope> + </dependency> + <dependency> + <groupId>javax.mail</groupId> + <artifactId>mail</artifactId> + <version>1.4</version> + <scope>runtime</scope> + </dependency> + </dependencies> + <build> + <plugins> + <plugin> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-appserver-maven-plugin</artifactId> + <version>2.0-alpha-7</version> + <extensions>true</extensions> + <executions> + <execution> + <phase>process-resources</phase> + <goals> + <goal>assemble-runtime</goal> + <goal>add-services</goal> + <goal>add-apps</goal> + </goals> + </execution> + </executions> + <configuration> + <runtimeConfiguration>src/conf/plexus.xml</runtimeConfiguration> + <runtimeConfigurationProperties>src/plexus.properties</runtimeConfigurationProperties> + <runtimePath>target/plexus-archiva-runtime</runtimePath> + <additionalCoreArtifacts> + <additionalCoreArtifact>commons-logging:commons-logging-api</additionalCoreArtifact> + <additionalCoreArtifact>log4j:log4j</additionalCoreArtifact> + <additionalCoreArtifact>org.apache.derby:derby</additionalCoreArtifact> + <additionalCoreArtifact>org.codehaus.plexus:plexus-naming</additionalCoreArtifact> + <additionalCoreArtifact>commons-pool:commons-pool</additionalCoreArtifact> + <additionalCoreArtifact>commons-dbcp:commons-dbcp</additionalCoreArtifact> + <additionalCoreArtifact>commons-collections:commons-collections</additionalCoreArtifact> + <additionalCoreArtifact>directory-naming:naming-core</additionalCoreArtifact> + <additionalCoreArtifact>directory-naming:naming-factory</additionalCoreArtifact> + <additionalCoreArtifact>directory-naming:naming-java</additionalCoreArtifact> + <additionalCoreArtifact>directory-naming:naming-config</additionalCoreArtifact> + <additionalCoreArtifact>javax.mail:mail</additionalCoreArtifact> + <additionalCoreArtifact>javax.activation:activation</additionalCoreArtifact> + </additionalCoreArtifacts> + </configuration> + </plugin> + <plugin> + <artifactId>maven-assembly-plugin</artifactId> + <version>2.1</version> + <executions> + <execution> + <phase>package</phase> + <goals> + <goal>single</goal> + </goals> + </execution> + </executions> + <configuration> + <descriptor>src/main/assembly/bin.xml</descriptor> + <finalName>archiva</finalName> + </configuration> + </plugin> + </plugins> + </build> +</project> diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-proxy/1.0-SNAPSHOT/archiva-proxy-1.0-SNAPSHOT.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-proxy/1.0-SNAPSHOT/archiva-proxy-1.0-SNAPSHOT.pom new file mode 100644 index 000000000..23488ee0a --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-proxy/1.0-SNAPSHOT/archiva-proxy-1.0-SNAPSHOT.pom @@ -0,0 +1,60 @@ +<?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-proxy</artifactId> + <name>Archiva Proxy</name> + <dependencies> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-common</artifactId> + </dependency> + <dependency> + <groupId>org.apache.maven.wagon</groupId> + <artifactId>wagon-file</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.apache.maven.wagon</groupId> + <artifactId>wagon-provider-api</artifactId> + </dependency> + <dependency> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-digest</artifactId> + </dependency> + <dependency> + <groupId>easymock</groupId> + <artifactId>easymock</artifactId> + <version>1.2_Java1.3</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>commons-io</groupId> + <artifactId>commons-io</artifactId> + </dependency> + </dependencies> +</project> diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-reports-standard/1.0-SNAPSHOT/archiva-reports-standard-1.0-SNAPSHOT.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-reports-standard/1.0-SNAPSHOT/archiva-reports-standard-1.0-SNAPSHOT.pom new file mode 100644 index 000000000..24eb19954 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-reports-standard/1.0-SNAPSHOT/archiva-reports-standard-1.0-SNAPSHOT.pom @@ -0,0 +1,176 @@ +<?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-reports-standard</artifactId> + <name>Archiva Standard Reports</name> + <dependencies> + <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-artifact-manager</artifactId> + </dependency> + <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-model</artifactId> + </dependency> + <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-repository-metadata</artifactId> + </dependency> + <dependency> + <groupId>org.apache.maven.wagon</groupId> + <artifactId>wagon-provider-api</artifactId> + </dependency> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-repository-layer</artifactId> + </dependency> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-indexer</artifactId> + </dependency> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-discoverer</artifactId> + </dependency> + <dependency> + <groupId>commons-lang</groupId> + <artifactId>commons-lang</artifactId> + </dependency> + <dependency> + <groupId>commons-io</groupId> + <artifactId>commons-io</artifactId> + </dependency> + <dependency> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-jdo2</artifactId> + <version>1.0-alpha-8</version> + <exclusions> + <exclusion> + <groupId>xerces</groupId> + <artifactId>xercesImpl</artifactId> + </exclusion> + <exclusion> + <groupId>xerces</groupId> + <artifactId>xmlParserAPIs</artifactId> + </exclusion> + </exclusions> + </dependency> + <dependency> + <groupId>jpox</groupId> + <artifactId>jpox</artifactId> + <version>1.1.6</version> + <scope>compile</scope> + <exclusions> + <!-- targeting JDK 1.4 we don't need this --> + <exclusion> + <groupId>javax.sql</groupId> + <artifactId>jdbc-stdext</artifactId> + </exclusion> + </exclusions> + </dependency> + <!-- TEST DEPS --> + <dependency> + <groupId>hsqldb</groupId> + <artifactId>hsqldb</artifactId> + <version>1.7.3.3</version> + <scope>test</scope> + </dependency> + </dependencies> + <build> + <plugins> + <plugin> + <groupId>org.codehaus.modello</groupId> + <artifactId>modello-maven-plugin</artifactId> + <version>1.0-alpha-14-SNAPSHOT</version> + <configuration> + <version>1.0.0</version> + <packageWithVersion>false</packageWithVersion> + <model>src/main/mdo/reporting.mdo</model> + </configuration> + <executions> + <execution> + <id>modello-java</id> + <goals> + <goal>java</goal> + <goal>jpox-metadata-class</goal> + <!-- + <goal>xpp3-writer</goal> + <goal>xpp3-reader</goal> + --> + </goals> + </execution> + <execution> + <id>jpox-jdo-mapping</id> + <goals> + <goal>jpox-jdo-mapping</goal> + </goals> + <configuration> + <outputDirectory>${basedir}/target/classes/org/apache/maven/archiva/reporting/model/</outputDirectory> + </configuration> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>jpox-maven-plugin</artifactId> + <version>1.1.6-SNAPSHOT</version> + <executions> + <execution> + <goals> + <goal>enhance</goal> + </goals> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>cobertura-maven-plugin</artifactId> + <configuration> + <instrumentation> + <!-- exclude generated --> + <excludes> + <exclude>org/apache/maven/archiva/reporting/model/**</exclude> + </excludes> + </instrumentation> + </configuration> + </plugin> + </plugins> + </build> +</project> diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-repository-layer/1.0-SNAPSHOT/archiva-repository-layer-1.0-SNAPSHOT.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-repository-layer/1.0-SNAPSHOT/archiva-repository-layer-1.0-SNAPSHOT.pom new file mode 100644 index 000000000..6ec87f431 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-repository-layer/1.0-SNAPSHOT/archiva-repository-layer-1.0-SNAPSHOT.pom @@ -0,0 +1,103 @@ +<?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-base</artifactId> + <version>1.0-SNAPSHOT</version> + </parent> + <modelVersion>4.0.0</modelVersion> + <artifactId>archiva-repository-layer</artifactId> + <name>Archiva Repository Interface Layer</name> + <dependencies> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-consumer-api</artifactId> + </dependency> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-model</artifactId> + <version>1.0-SNAPSHOT</version> + </dependency> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-xml-tools</artifactId> + <version>1.0-SNAPSHOT</version> + </dependency> + <dependency> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-utils</artifactId> + </dependency> + <dependency> + <groupId>org.codehaus.plexus.cache</groupId> + <artifactId>plexus-cache-api</artifactId> + <version>1.0-alpha-2-SNAPSHOT</version> + <scope>compile</scope> + </dependency> + <dependency> + <groupId>org.codehaus.plexus.cache</groupId> + <artifactId>plexus-cache-ehcache</artifactId> + <version>1.0-alpha-2-SNAPSHOT</version> + <scope>compile</scope> + </dependency> + <!-- + <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-artifact</artifactId> + </dependency> + <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-artifact-manager</artifactId> + </dependency> + <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-repository-metadata</artifactId> + </dependency> + --> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-log4j12</artifactId> + </dependency> + </dependencies> + <build> + <plugins> + <plugin> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-maven-plugin</artifactId> + <executions> + <execution> + <id>merge</id> + <goals> + <goal>merge-descriptors</goal> + </goals> + <configuration> + <descriptors> + <descriptor>${basedir}/src/main/resources/META-INF/plexus/components.xml</descriptor> + <descriptor>${project.build.directory}/generated-resources/plexus/META-INF/plexus/components.xml</descriptor> + </descriptors> + </configuration> + </execution> + </executions> + </plugin> + </plugins> + </build> +</project> diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-security/1.0-SNAPSHOT/archiva-security-1.0-SNAPSHOT.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-security/1.0-SNAPSHOT/archiva-security-1.0-SNAPSHOT.pom new file mode 100644 index 000000000..78cbd1282 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-security/1.0-SNAPSHOT/archiva-security-1.0-SNAPSHOT.pom @@ -0,0 +1,45 @@ +<?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> + <artifactId>archiva</artifactId> + <groupId>org.apache.maven.archiva</groupId> + <version>1.0-SNAPSHOT</version> + </parent> + <modelVersion>4.0.0</modelVersion> + <artifactId>archiva-security</artifactId> + <name>Archiva Security Configuration</name> + <dependencies> + <dependency> + <groupId>org.codehaus.plexus.security</groupId> + <artifactId>plexus-security-rbac-profile</artifactId> + </dependency> + <dependency> + <groupId>org.codehaus.plexus.security</groupId> + <artifactId>plexus-security-system</artifactId> + </dependency> + <dependency> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-component-api</artifactId> + </dependency> + </dependencies> +</project> diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-webapp/1.0-SNAPSHOT/archiva-webapp-1.0-SNAPSHOT.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-webapp/1.0-SNAPSHOT/archiva-webapp-1.0-SNAPSHOT.pom new file mode 100644 index 000000000..8304d2dd0 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-webapp/1.0-SNAPSHOT/archiva-webapp-1.0-SNAPSHOT.pom @@ -0,0 +1,334 @@ +<?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"> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva</artifactId> + <version>1.0-SNAPSHOT</version> + </parent> + <artifactId>archiva-webapp</artifactId> + <packaging>war</packaging> + <name>Archiva Web Application</name> + <dependencies> + <dependency> + <groupId>javax.servlet</groupId> + <artifactId>servlet-api</artifactId> + <version>2.4</version> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>javax.servlet</groupId> + <artifactId>jsp-api</artifactId> + <version>2.0</version> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>opensymphony</groupId> + <artifactId>sitemesh</artifactId> + <version>2.2.1</version> + </dependency> + <dependency> + <groupId>taglibs</groupId> + <artifactId>standard</artifactId> + <version>1.1.2</version> + </dependency> + <dependency> + <groupId>javax.servlet</groupId> + <artifactId>jstl</artifactId> + <version>1.1.2</version> + </dependency> + <dependency> + <groupId>org.apache.maven.shared</groupId> + <artifactId>maven-app-configuration-model</artifactId> + </dependency> + <dependency> + <groupId>org.apache.maven.shared</groupId> + <artifactId>maven-app-configuration-web</artifactId> + </dependency> + <dependency> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-log4j-logging</artifactId> + <version>1.1-alpha-2</version> + <scope>runtime</scope> + </dependency> + <dependency> + <groupId>commons-logging</groupId> + <artifactId>commons-logging</artifactId> + <version>1.0.4</version> + <scope>runtime</scope> + </dependency> + <dependency> + <groupId>commons-lang</groupId> + <artifactId>commons-lang</artifactId> + <version>2.2</version> + </dependency> + <dependency> + <groupId>org.apache.maven.wagon</groupId> + <artifactId>wagon-http-lightweight</artifactId> + <scope>runtime</scope> + </dependency> + <dependency> + <groupId>org.apache.maven.wagon</groupId> + <artifactId>wagon-file</artifactId> + <scope>runtime</scope> + </dependency> + <dependency> + <groupId>opensymphony</groupId> + <artifactId>webwork</artifactId> + <version>2.2.4</version> + </dependency> + <dependency> + <groupId>org.codehaus.plexus.registry</groupId> + <artifactId>plexus-registry-commons</artifactId> + <version>1.0-SNAPSHOT</version> + </dependency> + <dependency> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-component-api</artifactId> + </dependency> + <dependency> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-container-default</artifactId> + </dependency> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-proxy</artifactId> + </dependency> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-core</artifactId> + </dependency> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-common</artifactId> + </dependency> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-security</artifactId> + </dependency> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-applet</artifactId> + <!-- TODO: actually, just exclude from WAR plugin --> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-project</artifactId> + </dependency> + <dependency> + <groupId>org.apache.maven.shared</groupId> + <artifactId>maven-dependency-tree</artifactId> + <version>1.0-alpha-2</version> + </dependency> + <!-- Plexus Security Dependencies --> + <dependency> + <groupId>org.codehaus.plexus.security</groupId> + <artifactId>plexus-security-ui-web</artifactId> + <type>war</type> + <scope>runtime</scope> + </dependency> + <dependency> + <groupId>org.codehaus.plexus.security</groupId> + <artifactId>plexus-security-ui-web-taglib</artifactId> + </dependency> + <!-- Other dependencies --> + <dependency> + <groupId>org.codehaus.plexus.webdav</groupId> + <artifactId>plexus-webdav-simple</artifactId> + <version>1.0-alpha-1-SNAPSHOT</version> + </dependency> + <dependency> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-xwork-integration</artifactId> + <version>1.0-alpha-5</version> + </dependency> + <dependency> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-utils</artifactId> + </dependency> + <dependency> + <groupId>org.apache.derby</groupId> + <artifactId>derby</artifactId> + <version>10.1.3.1</version> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>javax.mail</groupId> + <artifactId>mail</artifactId> + <version>1.4</version> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>javax.activation</groupId> + <artifactId>activation</artifactId> + <version>1.1</version> + <scope>provided</scope> + </dependency> + </dependencies> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-clean-plugin</artifactId> + <version>2.1.1</version> + <!-- This configuration is added to cleanup from war:inplace --> + <configuration> + <filesets> + <fileset> + <directory>${basedir}/src/main/webapp</directory> + <includes> + <!-- TODO: META-INF shouldn't be required, seems to be an issue with the current war plugin --> + <include>META-INF</include> + <include>images/pss</include> + <!-- Images from other wars --> + <include>template/pss</include> + <!-- Templates from other wars --> + <include>WEB-INF/classes</include> + <!-- Classes and Resources from other wars --> + <include>WEB-INF/lib</include> + <!-- Dependencies from other wars --> + <include>WEB-INF/database</include> + <!-- Database location configured in application.xml --> + <include>WEB-INF/logs</include> + <!-- Log file location specified in application.xml --> + <include>pss</include> + <!-- plexus-security css and javascript --> + <include>css/pss</include> + <include>WEB-INF/jsp/pss</include> + <!-- plexus-security jsps --> + <include>WEB-INF/template/pss</include> + <!-- plexus-security xwork templates --> + <include>WEB-INF/logs</include> + <!-- Directory created by jetty:run --> + <include>WEB-INF/temp</include> + <!-- Directory created by jetty:run --> + </includes> + </fileset> + </filesets> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-war-plugin</artifactId> + <version>2.0.1</version> + <configuration> + <!-- Some versions of maven-war-plugin (snapshots) have this incorrectly defaulted to true. + Specifically setting this to false to avoid accidental jar file creation. --> + <archiveClasses>false</archiveClasses> + <dependentWarExcludes>META-INF/**,WEB-INF/web.xml,WEB-INF/classes/xwork.xml</dependentWarExcludes> + </configuration> + <!-- TODO: would be good to make the jetty plugin aware of these and remove the below --> + <executions> + <execution> + <phase>compile</phase> + <goals> + <!-- Needed to get the plexus-security war overlay to do its thing before jetty:run --> + <goal>inplace</goal> + </goals> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.mortbay.jetty</groupId> + <artifactId>maven-jetty-plugin</artifactId> + <version>6.1.1</version> + <configuration> + <scanIntervalSeconds>10</scanIntervalSeconds> + <contextPath>/</contextPath> + <jettyEnvXml>src/jetty-env.xml</jettyEnvXml> + <connectors> + <connector implementation="org.mortbay.jetty.nio.SelectChannelConnector"> + <port>9091</port> + <maxIdleTime>60000</maxIdleTime> + </connector> + </connectors> + <systemProperties> + <systemProperty> + <name>appserver.base</name> + <value>${project.build.directory}/appserver-base</value> + </systemProperty> + <systemProperty> + <name>derby.system.home</name> + <value>${project.build.directory}/appserver-base/logs</value> + </systemProperty> + </systemProperties> + </configuration> + <dependencies> + <dependency> + <groupId>org.apache.derby</groupId> + <artifactId>derby</artifactId> + <version>10.1.3.1</version> + </dependency> + </dependencies> + </plugin> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>dependency-maven-plugin</artifactId> + <executions> + <execution> + <id>copy</id> + <phase>process-resources</phase> + <goals> + <goal>copy</goal> + </goals> + <configuration> + <artifactItems> + <artifactItem> + <groupId>${project.groupId}</groupId> + <artifactId>archiva-applet</artifactId> + <version>${project.version}</version> + <outputDirectory>src/main/webapp</outputDirectory> + <destFileName>archiva-applet.jar</destFileName> + </artifactItem> + </artifactItems> + </configuration> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-maven-plugin</artifactId> + <configuration> + <roleDefaults> + <roleDefault> + <role>com.opensymphony.xwork.Action</role> + <instantiation-strategy>per-lookup</instantiation-strategy> + </roleDefault> + </roleDefaults> + </configuration> + </plugin> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>cobertura-maven-plugin</artifactId> + <configuration> + <instrumentation> + <excludes> + <exclude>**/**</exclude> + </excludes> + </instrumentation> + </configuration> + </plugin> + </plugins> + </build> +</project> diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-xml-tools/1.0-SNAPSHOT/archiva-xml-tools-1.0-SNAPSHOT.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-xml-tools/1.0-SNAPSHOT/archiva-xml-tools-1.0-SNAPSHOT.pom new file mode 100644 index 000000000..efa42d3f0 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-xml-tools/1.0-SNAPSHOT/archiva-xml-tools-1.0-SNAPSHOT.pom @@ -0,0 +1,79 @@ +<?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-base</artifactId> + <version>1.0-SNAPSHOT</version> + </parent> + <modelVersion>4.0.0</modelVersion> + <artifactId>archiva-xml-tools</artifactId> + <name>Archiva Base :: XML Tools</name> + <dependencies> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-common</artifactId> + </dependency> + <dependency> + <groupId>dom4j</groupId> + <artifactId>dom4j</artifactId> + <version>1.6.1</version> + </dependency> + <dependency> + <groupId>jaxen</groupId> + <artifactId>jaxen</artifactId> + <version>1.1</version> + </dependency> + <dependency> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-utils</artifactId> + </dependency> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-log4j12</artifactId> + </dependency> + </dependencies> + <!-- + <build> + <plugins> + <plugin> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-maven-plugin</artifactId> + <executions> + <execution> + <id>merge</id> + <goals> + <goal>merge-descriptors</goal> + </goals> + <configuration> + <descriptors> + <descriptor>${basedir}/src/main/resources/META-INF/plexus/components.xml</descriptor> + <descriptor>${project.build.directory}/generated-resources/plexus/META-INF/plexus/components.xml</descriptor> + </descriptors> + </configuration> + </execution> + </executions> + </plugin> + </plugins> + </build> + --> +</project> diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/archiva/archiva/1.0-SNAPSHOT/archiva-1.0-20061126.005254-2.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/archiva/archiva/1.0-SNAPSHOT/archiva-1.0-20061126.005254-2.pom new file mode 100644 index 000000000..201905d46 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/archiva/archiva/1.0-SNAPSHOT/archiva-1.0-20061126.005254-2.pom @@ -0,0 +1,505 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + ~ Copyright 2005-2006 The Apache Software Foundation. + ~ + ~ Licensed under the Apache License, Version 2.0 (the "License"); + ~ you may not use this file except in compliance with the License. + ~ You may obtain a copy of the License at + ~ + ~ http://www.apache.org/licenses/LICENSE-2.0 + ~ + ~ Unless required by applicable law or agreed to in writing, software + ~ distributed under the License is distributed on an "AS IS" BASIS, + ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + ~ See the License for the specific language governing permissions and + ~ limitations under the License. + --> + +<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> + <parent> + <groupId>org.apache.maven</groupId> + <artifactId>maven-parent</artifactId> + <version>4</version> + <relativePath>../pom/maven/pom.xml</relativePath> + </parent> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva</artifactId> + <packaging>pom</packaging> + <name>Archiva</name> + <version>1.0-SNAPSHOT</version> + <description> + Archiva is an application for managing one or more remote repositories, including + administration, artifact handling, + browsing and searching. + </description> + <url>http://maven.apache.org/archiva</url> + <issueManagement> + <system>jira</system> + <url>http://jira.codehaus.org/browse/MRM</url> + </issueManagement> + <mailingLists> + <mailingList> + <name>Maven Archiva User List</name> + <subscribe>archiva-users-subscribe@maven.apache.org</subscribe> + <unsubscribe>archiva-users-unsubscribe@maven.apache.org</unsubscribe> + <post>archiva-users@maven.apache.org</post> + <archive>http://mail-archives.apache.org/mod_mbox/maven-archiva-users</archive> + </mailingList> + <mailingList> + <name>Maven Archiva Developer List</name> + <subscribe>archiva-dev-subscribe@maven.apache.org</subscribe> + <unsubscribe>archiva-dev-unsubscribe@maven.apache.org</unsubscribe> + <post>archiva-dev@maven.apache.org</post> + <archive>http://mail-archives.apache.org/mod_mbox/maven-archiva-dev</archive> + </mailingList> + <mailingList> + <name>Maven Archiva Commits List</name> + <subscribe>archiva-commits-subscribe@maven.apache.org</subscribe> + <unsubscribe>archiva-commits-unsubscribe@maven.apache.org</unsubscribe> + <post>archiva-commits@maven.apache.org</post> + <archive>http://mail-archives.apache.org/mod_mbox/maven-archiva-commits</archive> + </mailingList> + </mailingLists> + <scm> + <connection>scm:svn:http://svn.apache.org/repos/asf/maven/archiva/trunk</connection> + <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/archiva/trunk</developerConnection> + <url>http://svn.apache.org/viewcvs.cgi/maven/archiva/trunk</url> + </scm> + <distributionManagement> + <site> + <id>apache.website</id> + <url>scpexe://people.apache.org/www/maven.apache.org/archiva/</url> + </site> + </distributionManagement> + <build> + <extensions> + <extension> + <groupId>org.apache.maven.wagon</groupId> + <artifactId>wagon-ssh-external</artifactId> + <version>1.0-alpha-5</version> + </extension> + </extensions> + <plugins> + <plugin> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-maven-plugin</artifactId> + <version>1.3</version> + <executions> + <execution> + <goals> + <goal>descriptor</goal> + <goal>merge-descriptors</goal> + </goals> + </execution> + </executions> + </plugin> + <plugin> + <artifactId>maven-compiler-plugin</artifactId> + <configuration> + <source>1.4</source> + <target>1.4</target> + </configuration> + </plugin> + <plugin> + <artifactId>maven-surefire-plugin</artifactId> + <version>2.2</version> + </plugin> + </plugins> + <pluginManagement> + <plugins> + <plugin> + <artifactId>maven-idea-plugin</artifactId> + <configuration> + <jdkLevel>1.4</jdkLevel> + </configuration> + </plugin> + <plugin> + <artifactId>maven-release-plugin</artifactId> + <configuration> + <tagBase>https://svn.apache.org/repos/asf/maven/archiva/tags</tagBase> + </configuration> + </plugin> + </plugins> + </pluginManagement> + </build> + <modules> + <module>archiva-applet</module> + <module>archiva-converter</module> + <module>archiva-discoverer</module> + <module>archiva-reports-standard</module> + <module>archiva-indexer</module> + <module>archiva-webapp</module> + <module>archiva-proxy</module> + <module>archiva-core</module> + <module>archiva-configuration</module> + <module>maven-meeper</module> + <module>archiva-repository-layer</module> + <module>archiva-plexus-application</module> + <module>archiva-plexus-runtime</module> + <module>archiva-security</module> + <module>archiva-cli</module> + </modules> + <dependencies> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>3.8.1</version> + <scope>test</scope> + </dependency> + </dependencies> + <dependencyManagement> + <dependencies> + <dependency> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-container-default</artifactId> + <version>1.0-alpha-10</version> + </dependency> + <dependency> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-utils</artifactId> + <version>1.3</version> + </dependency> + <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-repository-metadata</artifactId> + <version>${maven.version}</version> + </dependency> + <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-model</artifactId> + <version>${maven.version}</version> + </dependency> + <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-artifact</artifactId> + <version>${maven.version}</version> + </dependency> + <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-artifact-manager</artifactId> + <version>${maven.version}</version> + </dependency> + <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-project</artifactId> + <version>${maven.version}</version> + </dependency> + <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-model-converter</artifactId> + <version>2.0.4</version> + </dependency> + <dependency> + <groupId>org.apache.maven.wagon</groupId> + <artifactId>wagon-provider-api</artifactId> + <version>${wagon.version}</version> + </dependency> + <dependency> + <groupId>org.apache.maven.wagon</groupId> + <artifactId>wagon-ssh</artifactId> + <version>${wagon.version}</version> + </dependency> + <dependency> + <groupId>org.apache.maven.wagon</groupId> + <artifactId>wagon-file</artifactId> + <version>${wagon.version}</version> + </dependency> + <dependency> + <groupId>org.apache.maven.wagon</groupId> + <artifactId>wagon-http-lightweight</artifactId> + <version>${wagon.version}</version> + </dependency> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-core</artifactId> + <version>${pom.version}</version> + </dependency> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-reports-standard</artifactId> + <version>${pom.version}</version> + </dependency> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-discoverer</artifactId> + <version>${pom.version}</version> + </dependency> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-repository-layer</artifactId> + <version>${pom.version}</version> + </dependency> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-indexer</artifactId> + <version>${pom.version}</version> + </dependency> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-proxy</artifactId> + <version>${pom.version}</version> + </dependency> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-applet</artifactId> + <version>${pom.version}</version> + </dependency> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-security</artifactId> + <version>${pom.version}</version> + </dependency> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-configuration</artifactId> + <version>${pom.version}</version> + </dependency> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-converter</artifactId> + <version>${pom.version}</version> + </dependency> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-webapp</artifactId> + <version>${pom.version}</version> + <type>war</type> + </dependency> + <dependency> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-digest</artifactId> + <version>1.0-SNAPSHOT</version> + </dependency> + <dependency> + <groupId>org.codehaus.plexus.security</groupId> + <artifactId>plexus-security-rbac-profile</artifactId> + <version>${plexus-security.version}</version> + </dependency> + <dependency> + <groupId>org.codehaus.plexus.security</groupId> + <artifactId>plexus-security-system</artifactId> + <version>${plexus-security.version}</version> + </dependency> + <dependency> + <groupId>org.codehaus.plexus.security</groupId> + <artifactId>plexus-security-system</artifactId> + <version>${plexus-security.version}</version> + </dependency> + <dependency> + <groupId>org.codehaus.plexus.security</groupId> + <artifactId>plexus-security-ui-web</artifactId> + <version>${plexus-security.version}</version> + <type>war</type> + </dependency> + <dependency> + <groupId>org.codehaus.plexus.security</groupId> + <artifactId>plexus-security-ui-web-integration</artifactId> + <version>${plexus-security.version}</version> + </dependency> + <dependency> + <groupId>org.codehaus.plexus.security</groupId> + <artifactId>plexus-security-ui-web-taglib</artifactId> + <version>${plexus-security.version}</version> + </dependency> + <dependency> + <groupId>org.codehaus.plexus.security</groupId> + <artifactId>plexus-security-authentication-provider-user-manager</artifactId> + <version>${plexus-security.version}</version> + </dependency> + <dependency> + <groupId>org.codehaus.plexus.security</groupId> + <artifactId>plexus-security-authentication-provider-keystore</artifactId> + <version>${plexus-security.version}</version> + </dependency> + <dependency> + <groupId>org.codehaus.plexus.security</groupId> + <artifactId>plexus-security-user-management-api</artifactId> + <version>${plexus-security.version}</version> + </dependency> + <dependency> + <groupId>org.codehaus.plexus.security</groupId> + <artifactId>plexus-security-user-management-provider-jdo</artifactId> + <version>${plexus-security.version}</version> + </dependency> + <dependency> + <groupId>org.codehaus.plexus.security</groupId> + <artifactId>plexus-security-authorization-rbac-store-jdo</artifactId> + <version>${plexus-security.version}</version> + </dependency> + <dependency> + <groupId>org.codehaus.plexus.security</groupId> + <artifactId>plexus-security-authorization-api</artifactId> + <version>${plexus-security.version}</version> + </dependency> + <dependency> + <groupId>org.codehaus.plexus.security</groupId> + <artifactId>plexus-security-authorization-rbac-authorizer</artifactId> + <version>${plexus-security.version}</version> + </dependency> + <dependency> + <groupId>org.codehaus.plexus.security</groupId> + <artifactId>plexus-security-keys-jdo</artifactId> + <version>${plexus-security.version}</version> + </dependency> + </dependencies> + </dependencyManagement> + <reporting> + <plugins> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>cobertura-maven-plugin</artifactId> + </plugin> + <plugin> + <artifactId>maven-checkstyle-plugin</artifactId> + <configuration> + <configLocation>config/maven_checks.xml</configLocation> + </configuration> + </plugin> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>changelog-maven-plugin</artifactId> + </plugin> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>taglist-maven-plugin</artifactId> + </plugin> + <plugin> + <artifactId>maven-jxr-plugin</artifactId> + <configuration> + <aggregate>true</aggregate> + </configuration> + </plugin> + <plugin> + <artifactId>maven-surefire-report-plugin</artifactId> + </plugin> + <plugin> + <artifactId>maven-javadoc-plugin</artifactId> + <configuration> + <aggregate>true</aggregate> + </configuration> + </plugin> + <plugin> + <artifactId>maven-pmd-plugin</artifactId> + <!-- TODO: choose appropriate rulesets --> + </plugin> + </plugins> + </reporting> + <profiles> + <profile> + <id>ci</id> + <activation> + <property> + <name>enableCiProfile</name> + <value>true</value> + </property> + </activation> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-pmd-plugin</artifactId> + <executions> + <execution> + <phase>process-sources</phase> + <goals> + <!-- TODO: after rules are set + <goal>check</goal> + --> + <goal>cpd-check</goal> + </goals> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-checkstyle-plugin</artifactId> + <executions> + <execution> + <phase>process-sources</phase> + <goals> + <!-- TODO: reformat first, and correct the checks (some are not consistent with the Maven style) + <goal>check</goal> + --> + </goals> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>cobertura-maven-plugin</artifactId> + <configuration> + <check> + <totalLineRate>77</totalLineRate> + <totalBranchRate>95</totalBranchRate> + </check> + + <instrumentation> + <excludes> + <exclude>**/*$*</exclude> + </excludes> + </instrumentation> + </configuration> + <executions> + <execution> + <id>clean</id> + <goals> + <goal>clean</goal> + </goals> + </execution> + <execution> + <id>check</id> + <goals> + <goal>check</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + </profiles> + <!-- TODO: remove once xwork integration, plexus container is released --> + <repositories> + <repository> + <id>codehaus.org</id> + <url>http://snapshots.repository.codehaus.org</url> + <releases> + <enabled>false</enabled> + </releases> + <snapshots> + <enabled>true</enabled> + </snapshots> + </repository> + </repositories> + <pluginRepositories> + <pluginRepository> + <id>codehaus.org</id> + <url>http://snapshots.repository.codehaus.org</url> + <releases> + <enabled>false</enabled> + </releases> + <snapshots> + <enabled>true</enabled> + </snapshots> + </pluginRepository> + + <!-- See: http://www.nabble.com/NoClassDefFoundError-from-shared-in-project-info-reports-tf2678299s177.html#a7489595 --> + <pluginRepository> + <id>apache.org</id> + <url>http://people.apache.org/repo/m2-snapshot-repository</url> + <releases> + <enabled>false</enabled> + </releases> + <snapshots> + <enabled>true</enabled> + </snapshots> + </pluginRepository> + </pluginRepositories> + <properties> + <maven.version>2.0.4</maven.version> + <wagon.version>1.0-beta-1</wagon.version> + <plexus-security.version>1.0-alpha-6-SNAPSHOT</plexus-security.version> + </properties> +</project> diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/archiva/archiva/1.0-SNAPSHOT/archiva-1.0-SNAPSHOT-site.xml b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/archiva/archiva/1.0-SNAPSHOT/archiva-1.0-SNAPSHOT-site.xml new file mode 100644 index 000000000..ac3c2e716 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/archiva/archiva/1.0-SNAPSHOT/archiva-1.0-SNAPSHOT-site.xml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="ISO-8859-1"?><project> + <bannerLeft> + <name>Maven</name> + <src>http://maven.apache.org/images/apache-maven-project-2.png</src> + <href>http://maven.apache.org/</href> + </bannerLeft> + <bannerRight> + <src>images/archiva-logo-banner.jpg</src> + </bannerRight> + <publishDate format="dd MMM yyyy" /> + <skin> + <groupId>org.apache.maven.skins</groupId> + <artifactId>maven-stylus-skin</artifactId> + </skin> + <body> + <links> + <item name="Maven" href="http://maven.apache.org/" /> + </links> + <menu name="Documentation"> + <item name="Welcome" href="/index.html" /> + <item name="Getting Started" href="/guides/getting-started/index.html" /> + <item name="FAQ" href="http://docs.codehaus.org/display/MAVENUSER/Archiva+FAQ" /> + <item name="Maven Configuration" href="/guides/getting-started/maven-configuration.html" /> + <item name="Developing" href="/guides/developing/index.html" /> + </menu> + <menu inherit="bottom" ref="reports" /> + </body> +</project>
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/archiva/archiva/1.0-SNAPSHOT/archiva-1.0-SNAPSHOT.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/archiva/archiva/1.0-SNAPSHOT/archiva-1.0-SNAPSHOT.pom new file mode 100644 index 000000000..31df31eda --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/archiva/archiva/1.0-SNAPSHOT/archiva-1.0-SNAPSHOT.pom @@ -0,0 +1,556 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + ~ Copyright 2005-2006 The Apache Software Foundation. + ~ + ~ Licensed under the Apache License, Version 2.0 (the "License"); + ~ you may not use this file except in compliance with the License. + ~ You may obtain a copy of the License at + ~ + ~ http://www.apache.org/licenses/LICENSE-2.0 + ~ + ~ Unless required by applicable law or agreed to in writing, software + ~ distributed under the License is distributed on an "AS IS" BASIS, + ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + ~ See the License for the specific language governing permissions and + ~ limitations under the License. + --> + +<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> + <parent> + <groupId>org.apache.maven</groupId> + <artifactId>maven-parent</artifactId> + <version>4</version> + <relativePath>../pom/maven/pom.xml</relativePath> + </parent> + <prerequisites> + <maven>2.0.5</maven> + </prerequisites> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva</artifactId> + <packaging>pom</packaging> + <name>Archiva</name> + <version>1.0-SNAPSHOT</version> + <description> + Archiva is an application for managing one or more remote repositories, including + administration, artifact handling, + browsing and searching. + </description> + <url>http://maven.apache.org/archiva</url> + <issueManagement> + <system>jira</system> + <url>http://jira.codehaus.org/browse/MRM</url> + </issueManagement> + <mailingLists> + <mailingList> + <name>Maven Archiva User List</name> + <subscribe>archiva-users-subscribe@maven.apache.org</subscribe> + <unsubscribe>archiva-users-unsubscribe@maven.apache.org</unsubscribe> + <post>archiva-users@maven.apache.org</post> + <archive>http://mail-archives.apache.org/mod_mbox/maven-archiva-users</archive> + </mailingList> + <mailingList> + <name>Maven Archiva Developer List</name> + <subscribe>archiva-dev-subscribe@maven.apache.org</subscribe> + <unsubscribe>archiva-dev-unsubscribe@maven.apache.org</unsubscribe> + <post>archiva-dev@maven.apache.org</post> + <archive>http://mail-archives.apache.org/mod_mbox/maven-archiva-dev</archive> + </mailingList> + <mailingList> + <name>Maven Archiva Commits List</name> + <subscribe>archiva-commits-subscribe@maven.apache.org</subscribe> + <unsubscribe>archiva-commits-unsubscribe@maven.apache.org</unsubscribe> + <post>archiva-commits@maven.apache.org</post> + <archive>http://mail-archives.apache.org/mod_mbox/maven-archiva-commits</archive> + </mailingList> + </mailingLists> + <scm> + <connection>scm:svn:http://svn.apache.org/repos/asf/maven/archiva/trunk</connection> + <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/archiva/trunk</developerConnection> + <url>http://svn.apache.org/viewcvs.cgi/maven/archiva/trunk</url> + </scm> + <distributionManagement> + <site> + <id>apache.website</id> + <url>scpexe://people.apache.org/www/maven.apache.org/archiva/</url> + </site> + </distributionManagement> + <build> + <plugins> + <plugin> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-maven-plugin</artifactId> + <version>1.3.3</version> + <executions> + <execution> + <id>generate</id> + <goals> + <goal>descriptor</goal> + </goals> + </execution> + </executions> + </plugin> + <plugin> + <artifactId>maven-compiler-plugin</artifactId> + <configuration> + <source>1.4</source> + <target>1.4</target> + </configuration> + </plugin> + <plugin> + <artifactId>maven-surefire-plugin</artifactId> + <version>2.2</version> + </plugin> + </plugins> + <pluginManagement> + <plugins> + <plugin> + <artifactId>maven-idea-plugin</artifactId> + <configuration> + <jdkLevel>1.4</jdkLevel> + </configuration> + </plugin> + <plugin> + <artifactId>maven-release-plugin</artifactId> + <configuration> + <tagBase>https://svn.apache.org/repos/asf/maven/archiva/tags</tagBase> + </configuration> + </plugin> + </plugins> + </pluginManagement> + </build> + <modules> + <module>archiva-applet</module> + <module>archiva-converter</module> + <module>archiva-common</module> + <module>archiva-discoverer</module> + <module>archiva-reports-standard</module> + <module>archiva-indexer</module> + <module>archiva-webapp</module> + <module>archiva-proxy</module> + <module>archiva-core</module> + <module>archiva-configuration</module> + <module>maven-meeper</module> + <module>archiva-repository-layer</module> + <module>archiva-plexus-application</module> + <module>archiva-plexus-runtime</module> + <module>archiva-security</module> + <module>archiva-cli</module> + </modules> + <dependencies> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>3.8.1</version> + <scope>test</scope> + </dependency> + </dependencies> + <dependencyManagement> + <dependencies> + <dependency> + <groupId>org.apache.maven.shared</groupId> + <artifactId>maven-app-configuration-model</artifactId> + <version>1.0-SNAPSHOT</version> + </dependency> + <dependency> + <groupId>org.apache.maven.shared</groupId> + <artifactId>maven-app-configuration-web</artifactId> + <version>1.0-SNAPSHOT</version> + </dependency> + <dependency> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-container-default</artifactId> + <version>1.0-alpha-17</version> + </dependency> + <dependency> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-component-api</artifactId> + <version>1.0-alpha-17</version> + </dependency> + <dependency> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-utils</artifactId> + <version>1.4</version> + </dependency> + <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-repository-metadata</artifactId> + <version>${maven.version}</version> + </dependency> + <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-model</artifactId> + <version>${maven.version}</version> + </dependency> + <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-artifact</artifactId> + <version>${maven.version}</version> + </dependency> + <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-artifact-manager</artifactId> + <version>${maven.version}</version> + </dependency> + <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-project</artifactId> + <version>${maven.version}</version> + </dependency> + <dependency> + <groupId>org.apache.maven.shared</groupId> + <artifactId>maven-model-converter</artifactId> + <version>2.0.5-SNAPSHOT</version> + </dependency> + <dependency> + <groupId>org.apache.maven.wagon</groupId> + <artifactId>wagon-provider-api</artifactId> + <version>${wagon.version}</version> + </dependency> + <dependency> + <groupId>org.apache.maven.wagon</groupId> + <artifactId>wagon-ssh</artifactId> + <version>${wagon.version}</version> + </dependency> + <dependency> + <groupId>org.apache.maven.wagon</groupId> + <artifactId>wagon-file</artifactId> + <version>${wagon.version}</version> + </dependency> + <dependency> + <groupId>org.apache.maven.wagon</groupId> + <artifactId>wagon-http-lightweight</artifactId> + <version>${wagon.version}</version> + </dependency> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-common</artifactId> + <version>${pom.version}</version> + </dependency> + <!-- + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-common</artifactId> + <version>${pom.version}</version> + <classifier>tests</classifier> + <scope>test</scope> + </dependency> + --> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-core</artifactId> + <version>${pom.version}</version> + </dependency> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-reports-standard</artifactId> + <version>${pom.version}</version> + </dependency> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-discoverer</artifactId> + <version>${pom.version}</version> + </dependency> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-repository-layer</artifactId> + <version>${pom.version}</version> + </dependency> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-indexer</artifactId> + <version>${pom.version}</version> + </dependency> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-proxy</artifactId> + <version>${pom.version}</version> + </dependency> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-applet</artifactId> + <version>${pom.version}</version> + </dependency> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-security</artifactId> + <version>${pom.version}</version> + </dependency> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-configuration</artifactId> + <version>${pom.version}</version> + </dependency> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-converter</artifactId> + <version>${pom.version}</version> + </dependency> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-utils</artifactId> + <version>${pom.version}</version> + </dependency> + <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-webapp</artifactId> + <version>${pom.version}</version> + <type>war</type> + </dependency> + <dependency> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-digest</artifactId> + <version>1.0</version> + </dependency> + <dependency> + <groupId>org.codehaus.plexus.security</groupId> + <artifactId>plexus-security-rbac-profile</artifactId> + <version>${plexus-security.version}</version> + </dependency> + <dependency> + <groupId>org.codehaus.plexus.security</groupId> + <artifactId>plexus-security-system</artifactId> + <version>${plexus-security.version}</version> + </dependency> + <dependency> + <groupId>org.codehaus.plexus.security</groupId> + <artifactId>plexus-security-system</artifactId> + <version>${plexus-security.version}</version> + </dependency> + <dependency> + <groupId>org.codehaus.plexus.security</groupId> + <artifactId>plexus-security-ui-web</artifactId> + <version>${plexus-security.version}</version> + <type>war</type> + </dependency> + <dependency> + <groupId>org.codehaus.plexus.security</groupId> + <artifactId>plexus-security-ui-web-integration</artifactId> + <version>${plexus-security.version}</version> + </dependency> + <dependency> + <groupId>org.codehaus.plexus.security</groupId> + <artifactId>plexus-security-ui-web-taglib</artifactId> + <version>${plexus-security.version}</version> + </dependency> + <dependency> + <groupId>org.codehaus.plexus.security</groupId> + <artifactId>plexus-security-authentication-provider-user-manager</artifactId> + <version>${plexus-security.version}</version> + </dependency> + <dependency> + <groupId>org.codehaus.plexus.security</groupId> + <artifactId>plexus-security-authentication-provider-keystore</artifactId> + <version>${plexus-security.version}</version> + </dependency> + <dependency> + <groupId>org.codehaus.plexus.security</groupId> + <artifactId>plexus-security-user-management-api</artifactId> + <version>${plexus-security.version}</version> + </dependency> + <dependency> + <groupId>org.codehaus.plexus.security</groupId> + <artifactId>plexus-security-user-management-provider-jdo</artifactId> + <version>${plexus-security.version}</version> + </dependency> + <dependency> + <groupId>org.codehaus.plexus.security</groupId> + <artifactId>plexus-security-authorization-rbac-store-cached</artifactId> + <version>${plexus-security.version}</version> + </dependency> + <dependency> + <groupId>org.codehaus.plexus.security</groupId> + <artifactId>plexus-security-authorization-rbac-store-jdo</artifactId> + <version>${plexus-security.version}</version> + </dependency> + <dependency> + <groupId>org.codehaus.plexus.security</groupId> + <artifactId>plexus-security-authorization-api</artifactId> + <version>${plexus-security.version}</version> + </dependency> + <dependency> + <groupId>org.codehaus.plexus.security</groupId> + <artifactId>plexus-security-authorization-rbac-authorizer</artifactId> + <version>${plexus-security.version}</version> + </dependency> + <dependency> + <groupId>org.codehaus.plexus.security</groupId> + <artifactId>plexus-security-keys-jdo</artifactId> + <version>${plexus-security.version}</version> + </dependency> + <dependency> + <groupId>commons-lang</groupId> + <artifactId>commons-lang</artifactId> + <version>2.2</version> + </dependency> + <dependency> + <groupId>commons-io</groupId> + <artifactId>commons-io</artifactId> + <version>1.2</version> + </dependency> + <dependency> + <groupId>org.apache.derby</groupId> + <artifactId>derby</artifactId> + <version>10.1.3.1</version> + </dependency> + </dependencies> + </dependencyManagement> + <reporting> + <plugins> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>cobertura-maven-plugin</artifactId> + </plugin> + <plugin> + <artifactId>maven-checkstyle-plugin</artifactId> + <configuration> + <configLocation>config/maven_checks.xml</configLocation> + </configuration> + </plugin> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>changelog-maven-plugin</artifactId> + </plugin> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>taglist-maven-plugin</artifactId> + </plugin> + <plugin> + <artifactId>maven-jxr-plugin</artifactId> + <configuration> + <aggregate>true</aggregate> + </configuration> + </plugin> + <plugin> + <artifactId>maven-surefire-report-plugin</artifactId> + </plugin> + <plugin> + <artifactId>maven-javadoc-plugin</artifactId> + <configuration> + <source>1.4</source> + <aggregate>true</aggregate> + </configuration> + </plugin> + <plugin> + <artifactId>maven-pmd-plugin</artifactId> + <!-- TODO: choose appropriate rulesets --> + </plugin> + </plugins> + </reporting> + <profiles> + <profile> + <id>ci</id> + <activation> + <property> + <name>enableCiProfile</name> + <value>true</value> + </property> + </activation> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-pmd-plugin</artifactId> + <executions> + <execution> + <phase>process-sources</phase> + <goals> + <!-- TODO: after rules are set + <goal>check</goal> + --> + <goal>cpd-check</goal> + </goals> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-checkstyle-plugin</artifactId> + <executions> + <execution> + <phase>process-sources</phase> + <goals> + <!-- TODO: reformat first, and correct the checks (some are not consistent with the Maven style) + <goal>check</goal> + --> + </goals> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>cobertura-maven-plugin</artifactId> + <configuration> + <check> + <totalLineRate>77</totalLineRate> + <totalBranchRate>95</totalBranchRate> + </check> + + <instrumentation> + <excludes> + <exclude>**/*$*</exclude> + </excludes> + </instrumentation> + </configuration> + <executions> + <execution> + <id>clean</id> + <goals> + <goal>clean</goal> + </goals> + </execution> + <execution> + <id>check</id> + <goals> + <goal>check</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + </profiles> + <repositories> + <repository> + <id>codehaus.org</id> + <url>http://repository.codehaus.org</url> + <releases> + <enabled>true</enabled> + </releases> + <snapshots> + <enabled>false</enabled> + </snapshots> + </repository> + <!-- TODO: remove once ehcache, p-sec, registry, webdav, xwork, naming released --> + <repository> + <id>codehaus.org</id> + <url>http://snapshots.repository.codehaus.org</url> + <releases> + <enabled>false</enabled> + </releases> + <snapshots> + <enabled>true</enabled> + </snapshots> + </repository> + </repositories> + <!-- TODO: remove once modello is released --> + <pluginRepositories> + <pluginRepository> + <id>codehaus.org</id> + <url>http://snapshots.repository.codehaus.org</url> + <releases> + <enabled>false</enabled> + </releases> + <snapshots> + <enabled>true</enabled> + </snapshots> + </pluginRepository> + </pluginRepositories> + <properties> + <maven.version>2.0.5</maven.version> + <wagon.version>1.0-beta-2</wagon.version> + <plexus-security.version>1.0-alpha-10-SNAPSHOT</plexus-security.version> + </properties> +</project> diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/discovery/1.0/discovery-1.0.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/discovery/1.0/discovery-1.0.pom new file mode 100644 index 000000000..5a29f6117 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/discovery/1.0/discovery-1.0.pom @@ -0,0 +1,28 @@ +<!-- + ~ 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> diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/maven-metadata.xml b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/maven-metadata.xml new file mode 100644 index 000000000..8ce7fc7bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/maven-metadata.xml @@ -0,0 +1,23 @@ +<?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>
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/maven-parent/4/maven-parent-4-site.xml b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/maven-parent/4/maven-parent-4-site.xml new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/maven-parent/4/maven-parent-4-site.xml diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/maven-parent/4/maven-parent-4-site_en.xml b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/maven-parent/4/maven-parent-4-site_en.xml new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/maven-parent/4/maven-parent-4-site_en.xml diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/maven-parent/4/maven-parent-4.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/maven-parent/4/maven-parent-4.pom new file mode 100644 index 000000000..132d9d736 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/maven-parent/4/maven-parent-4.pom @@ -0,0 +1,304 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<!-- + ~ Copyright 2005-2006 The Apache Software Foundation. + ~ + ~ Licensed under the Apache License, Version 2.0 (the "License"); + ~ you may not use this file except in compliance with the License. + ~ You may obtain a copy of the License at + ~ + ~ http://www.apache.org/licenses/LICENSE-2.0 + ~ + ~ Unless required by applicable law or agreed to in writing, software + ~ distributed under the License is distributed on an "AS IS" BASIS, + ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + ~ See the License for the specific language governing permissions and + ~ limitations under the License. + --> + +<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> + <parent> + <groupId>org.apache</groupId> + <artifactId>apache</artifactId> + <version>3</version> + <relativePath>../asf/pom.xml</relativePath> + </parent> + <groupId>org.apache.maven</groupId> + <artifactId>maven-parent</artifactId> + <version>4</version> + <packaging>pom</packaging> + <name>Apache Maven</name> + <description> + Maven is a software project management and comprehension tool. Based on the concept of a project object model + (POM), Maven can manage a project's build, reporting and documentation from a central piece of information. + </description> + <url>http://maven.apache.org/</url> + <issueManagement> + <system>jira</system> + <url>http://jira.codehaus.org/browse/MPA</url> + </issueManagement> + <ciManagement> + <system>continuum</system> + <url>http://maven.zones.apache.org:8080/continuum</url> + <notifiers> + <notifier> + <type>mail</type> + <configuration> + <address>notifications@maven.apache.org</address> + </configuration> + </notifier> + </notifiers> + </ciManagement> + <inceptionYear>2002</inceptionYear> + <mailingLists> + <mailingList> + <name>Maven Announcements List</name> + <post>announce@maven.apache.org</post> + <subscribe>announce-subscribe@maven.apache.org</subscribe> + <unsubscribe>announce-unsubscribe@maven.apache.org</unsubscribe> + <archive>http://mail-archives.apache.org/mod_mbox/maven-announce/</archive> + </mailingList> + <mailingList> + <name>Maven Issues List</name> + <post>issues@maven.apache.org</post> + <subscribe>issues-subscribe@maven.apache.org</subscribe> + <unsubscribe>issues-unsubscribe@maven.apache.org</unsubscribe> + <archive>http://mail-archives.apache.org/mod_mbox/maven-issues/</archive> + </mailingList> + <mailingList> + <name>Maven Notifications List</name> + <post>notifications@maven.apache.org</post> + <subscribe>notifications-subscribe@maven.apache.org</subscribe> + <unsubscribe>notifications-unsubscribe@maven.apache.org</unsubscribe> + <archive>http://mail-archives.apache.org/mod_mbox/maven-notifications/</archive> + </mailingList> + </mailingLists> + + <developers> + <developer> + <id>jvanzyl</id> + <name>Jason van Zyl</name> + <email>jason@maven.org</email> + <organization>ASF</organization> + <roles> + <role>PMC Chair</role> + </roles> + <timezone>-5</timezone> + </developer> + <developer> + <id>brett</id> + <name>Brett Porter</name> + <email>brett@apache.org</email> + <organization>ASF</organization> + <roles> + <role>PMC Member</role> + </roles> + <timezone>+10</timezone> + </developer> + <developer> + <id>evenisse</id> + <name>Emmanuel Venisse</name> + <email>evenisse@apache.org</email> + <organization>ASF</organization> + <roles> + <role>PMC Member</role> + </roles> + <timezone>+1</timezone> + </developer> + <developer> + <id>kenney</id> + <name>Kenney Westerhof</name> + <email>kenney@apache.org</email> + <organization>Neonics</organization> + <roles> + <role>PMC Member</role> + </roles> + </developer> + <developer> + <id>snicoll</id> + <name>Stephane Nicoll</name> + <email>snicoll@apache.org</email> + <organization>ASF</organization> + <roles> + <role>PMC Member</role> + </roles> + <timezone>+1</timezone> + </developer> + <developer> + <id>vmassol</id> + <name>Vincent Massol</name> + <email>vmassol@apache.org</email> + <organization>ASF</organization> + <roles> + <role>PMC Member</role> + </roles> + <timezone>+1</timezone> + </developer> + <developer> + <id>fgiust</id> + <name>Fabrizio Giustina</name> + <email>fgiust@apache.org</email> + <organization>openmind</organization> + <roles> + <role>PMC Member</role> + </roles> + <timezone>+1</timezone> + </developer> + <developer> + <id>epunzalan</id> + <name>Edwin Punzalan</name> + <email>epunzalan@mergere.com</email> + <organization>Mergere</organization> + <roles> + <role>Committer</role> + </roles> + <timezone>+8</timezone> + </developer> + <developer> + <id>mperham</id> + <name>Mike Perham</name> + <email>mperham@gmail.com</email> + <organization>IBM</organization> + <roles> + <role>PMC Member</role> + </roles> + <timezone>-6</timezone> + </developer> + <developer> + <id>jdcasey</id> + <name>John Casey</name> + <email>jdcasey@apache.org</email> + <organization>ASF</organization> + <roles> + <role>PMC Member</role> + </roles> + <timezone>-5</timezone> + </developer> + <developer> + <id>trygvis</id> + <name>Trygve Laugstol</name> + <email>trygvis@apache.org</email> + <organization>ASF</organization> + <roles> + <role>PMC Member</role> + </roles> + <timezone>+1</timezone> + </developer> + <developer> + <id>vsiveton</id> + <name>Vincent Siveton</name> + <email>vsiveton@apache.org</email> + <organization>ASF</organization> + <roles> + <role>PMC Member</role> + </roles> + <timezone>-5</timezone> + </developer> + <developer> + <id>carlos</id> + <name>Carlos Sanchez</name> + <email>carlos@apache.org</email> + <organization>ASF</organization> + <roles> + <role>PMC Member</role> + </roles> + <timezone>+1</timezone> + </developer> + <developer> + <id>dennisl</id> + <name>Dennis Lundberg</name> + <email>dennisl@apache.org</email> + <organization>ASF</organization> + <roles> + <role>PMC Member</role> + </roles> + <timezone>+1</timezone> + </developer> + </developers> + + <distributionManagement> + <site> + <id>apache.website</id> + <url>scp://people.apache.org/www/maven.apache.org</url> + </site> + </distributionManagement> + +<!-- Disabled until projects have been made to comply + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-pmd-plugin</artifactId> + <executions> + <execution> + <goals> + <goal>cpd-check</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> +--> + + <reporting> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-surefire-report-plugin</artifactId> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-checkstyle-plugin</artifactId> + <configuration> + <configLocation>http://svn.apache.org/repos/asf/maven/plugins/trunk/maven-checkstyle-plugin/src/main/resources/config/maven_checks.xml</configLocation> + <headerLocation>http://svn.apache.org/repos/asf/maven/plugins/trunk/maven-checkstyle-plugin/src/main/resources/config/maven-header.txt</headerLocation> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-pmd-plugin</artifactId> + </plugin> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>cobertura-maven-plugin</artifactId> + </plugin> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>taglist-maven-plugin</artifactId> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-jxr-plugin</artifactId> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-javadoc-plugin</artifactId> + <configuration> + <links> + <link>http://java.sun.com/j2ee/1.4/docs/api</link> + <link>http://java.sun.com/j2se/1.5.0/docs/api</link> + <link>http://jakarta.apache.org/commons/collections/apidocs-COLLECTIONS_3_0/</link> + <link>http://jakarta.apache.org/commons/dbcp/apidocs/</link> + <link>http://jakarta.apache.org/commons/fileupload/apidocs/</link> + <link>http://jakarta.apache.org/commons/httpclient/apidocs/</link> + <link>http://jakarta.apache.org/commons/logging/apidocs/</link> + <link>http://jakarta.apache.org/commons/pool/apidocs/</link> + <link>http://www.junit.org/junit/javadoc/</link> + <link>http://logging.apache.org/log4j/docs/api/</link> + <link>http://jakarta.apache.org/regexp/apidocs/</link> + <link>http://jakarta.apache.org/velocity/api/</link> + </links> + </configuration> + </plugin> + </plugins> + </reporting> + + <scm> + <connection>scm:svn:http://svn.apache.org/repos/asf/maven/pom/maven/tags/maven-parent-4</connection> + <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/pom/maven/tags/maven-parent-4</developerConnection> + <url>http://svn.apache.org/viewvc/maven/pom/maven/tags/maven-parent-4</url> + </scm> +</project> + diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/maven-parent/4/maven-parent-4.pom.sha1 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/maven-parent/4/maven-parent-4.pom.sha1 new file mode 100644 index 000000000..b6caacf5e --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/maven-parent/4/maven-parent-4.pom.sha1 @@ -0,0 +1 @@ +0fc039b0bd4d17d7c147a30e1d83994629c5297c
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/samplejar/1.0/samplejar-1.0.jar b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/samplejar/1.0/samplejar-1.0.jar new file mode 100644 index 000000000..54d190b23 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/samplejar/1.0/samplejar-1.0.jar @@ -0,0 +1 @@ +dummy content. sample file only.
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/samplejar/1.0/samplejar-1.0.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/samplejar/1.0/samplejar-1.0.pom new file mode 100644 index 000000000..6ab57d162 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/samplejar/1.0/samplejar-1.0.pom @@ -0,0 +1,29 @@ +<!-- + ~ 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> diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/samplejar/2.0/samplejar-2.0.jar b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/samplejar/2.0/samplejar-2.0.jar new file mode 100644 index 000000000..54d190b23 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/samplejar/2.0/samplejar-2.0.jar @@ -0,0 +1 @@ +dummy content. sample file only.
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/samplejar/2.0/samplejar-2.0.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/samplejar/2.0/samplejar-2.0.pom new file mode 100644 index 000000000..a959980df --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/samplejar/2.0/samplejar-2.0.pom @@ -0,0 +1,29 @@ +<!-- + ~ 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> diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/samplejar/maven-metadata.xml b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/samplejar/maven-metadata.xml new file mode 100644 index 000000000..89de35f4e --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/samplejar/maven-metadata.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<metadata> + <groupId>org.apache.maven</groupId> + <artifactId>samplejar</artifactId> + <version>6.0-SNAPSHOT</version> + <versioning> + <release>2.0</release> + <latest>6.0-SNAPSHOT</latest> + <snapshot> + <buildNumber>26</buildNumber> + </snapshot> + <versions> + <version>6.0-SNAPSHOT</version> + <version>6.0-20060311.093250-41</version> + <version>6.0-20060311.183228-42</version> + <version>6.0-20060311.183228-40</version> + <version>6.0-20060311.183228-37</version> + <version>6.0-20060311.183228-30</version> + <version>6.0-20060311.183228-29</version> + <version>6.0-20060311.183228-6</version> + <version>6.0-20060311.183228-9</version> + <version>6.0-20060311.183228-10</version> + <version>6.0-20060313.001659-43</version> + <version>6.0-20060313.001659-41</version> + <version>6.0-20060313.001659-38</version> + <version>6.0-20060313.001659-31</version> + <version>6.0-20060313.001659-30</version> + <version>6.0-20060313.001659-7</version> + <version>6.0-20060313.001659-10</version> + <version>6.0-20060313.001659-11</version> + </versions> + <lastUpdated>20060313010719</lastUpdated> + </versioning> +</metadata> diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/shared/maven-downloader/1.0/maven-downloader-1.0-javadoc.jar b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/shared/maven-downloader/1.0/maven-downloader-1.0-javadoc.jar Binary files differnew file mode 100644 index 000000000..ae0cb2e32 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/shared/maven-downloader/1.0/maven-downloader-1.0-javadoc.jar diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/shared/maven-downloader/1.0/maven-downloader-1.0-javadoc.jar.md5 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/shared/maven-downloader/1.0/maven-downloader-1.0-javadoc.jar.md5 new file mode 100644 index 000000000..15a0630f6 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/shared/maven-downloader/1.0/maven-downloader-1.0-javadoc.jar.md5 @@ -0,0 +1 @@ +69af4ffaf5e65d02b6ca50467e79b42a
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/shared/maven-downloader/1.0/maven-downloader-1.0-javadoc.jar.sha1 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/shared/maven-downloader/1.0/maven-downloader-1.0-javadoc.jar.sha1 new file mode 100644 index 000000000..107f46801 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/shared/maven-downloader/1.0/maven-downloader-1.0-javadoc.jar.sha1 @@ -0,0 +1 @@ +902005afa0e151d7750735180f692d32fa5d76e2
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/shared/maven-downloader/1.0/maven-downloader-1.0-sources.jar b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/shared/maven-downloader/1.0/maven-downloader-1.0-sources.jar Binary files differnew file mode 100644 index 000000000..faa0d98cc --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/shared/maven-downloader/1.0/maven-downloader-1.0-sources.jar diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/shared/maven-downloader/1.0/maven-downloader-1.0-sources.jar.md5 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/shared/maven-downloader/1.0/maven-downloader-1.0-sources.jar.md5 new file mode 100644 index 000000000..3a84ad832 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/shared/maven-downloader/1.0/maven-downloader-1.0-sources.jar.md5 @@ -0,0 +1 @@ +f7d54f505b8affa8a8235e01fbc38219
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/shared/maven-downloader/1.0/maven-downloader-1.0-sources.jar.sha1 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/shared/maven-downloader/1.0/maven-downloader-1.0-sources.jar.sha1 new file mode 100644 index 000000000..3a72dc7bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/shared/maven-downloader/1.0/maven-downloader-1.0-sources.jar.sha1 @@ -0,0 +1 @@ +821f8ec6e32c3fecd1b1fb85f83bfea148a86da8
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/shared/maven-downloader/1.0/maven-downloader-1.0.jar b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/shared/maven-downloader/1.0/maven-downloader-1.0.jar Binary files differnew file mode 100644 index 000000000..712c664dd --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/shared/maven-downloader/1.0/maven-downloader-1.0.jar diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/shared/maven-downloader/1.0/maven-downloader-1.0.jar.md5 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/shared/maven-downloader/1.0/maven-downloader-1.0.jar.md5 new file mode 100644 index 000000000..04d4ce468 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/shared/maven-downloader/1.0/maven-downloader-1.0.jar.md5 @@ -0,0 +1 @@ +a2af4d8c1c00d8405ae2074fbcca87aa
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/shared/maven-downloader/1.0/maven-downloader-1.0.jar.sha1 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/shared/maven-downloader/1.0/maven-downloader-1.0.jar.sha1 new file mode 100644 index 000000000..19ae195e0 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/shared/maven-downloader/1.0/maven-downloader-1.0.jar.sha1 @@ -0,0 +1 @@ +43dfd03d32f70b8b72cdbefa1678dbeacf9a1f8c
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/shared/maven-downloader/1.0/maven-downloader-1.0.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/shared/maven-downloader/1.0/maven-downloader-1.0.pom new file mode 100644 index 000000000..d3c136b8c --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/shared/maven-downloader/1.0/maven-downloader-1.0.pom @@ -0,0 +1,56 @@ +<?xml version="1.0"?><project> + <parent> + <artifactId>maven-shared-components</artifactId> + <groupId>org.apache.maven.shared</groupId> + <version>4</version> + </parent> + <modelVersion>4.0.0</modelVersion> + <groupId>org.apache.maven.shared</groupId> + <artifactId>maven-downloader</artifactId> + <name>Maven Downloader</name> + <version>1.0</version> + <description>Provide a super simple interface for downloading a single artifact.</description> + <url>http://maven.apache.org</url> + <scm> + <connection>scm:svn:https://svn.apache.org/repos/asf/maven/shared/tags/maven-downloader-1.0</connection> + <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/shared/tags/maven-downloader-1.0</developerConnection> + <url>https://svn.apache.org/repos/asf/maven/shared/tags/maven-downloader-1.0</url> + </scm> + <build> + <plugins> + <plugin> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-maven-plugin</artifactId> + <version>1.1</version> + <executions> + <execution> + <goals> + <goal>descriptor</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + <dependencies> + <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-artifact-manager</artifactId> + <version>2.0</version> + </dependency> + <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-artifact</artifactId> + <version>2.0</version> + </dependency> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>3.8.1</version> + <scope>test</scope> + </dependency> + </dependencies> + <distributionManagement> + <status>deployed</status> + </distributionManagement> +</project>
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/shared/maven-downloader/1.0/maven-downloader-1.0.pom.md5 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/shared/maven-downloader/1.0/maven-downloader-1.0.pom.md5 new file mode 100644 index 000000000..89e705b79 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/shared/maven-downloader/1.0/maven-downloader-1.0.pom.md5 @@ -0,0 +1 @@ +8ab3c303c12323c469be9beb591f3f12
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/shared/maven-downloader/1.0/maven-downloader-1.0.pom.sha1 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/shared/maven-downloader/1.0/maven-downloader-1.0.pom.sha1 new file mode 100644 index 000000000..1a75091fa --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/shared/maven-downloader/1.0/maven-downloader-1.0.pom.sha1 @@ -0,0 +1 @@ +e4484abb15526e31b8ea514d3ba68e31189c12b0
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/shared/maven-downloader/1.1/maven-downloader-1.1-javadoc.jar b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/shared/maven-downloader/1.1/maven-downloader-1.1-javadoc.jar Binary files differnew file mode 100644 index 000000000..3114e1ae6 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/shared/maven-downloader/1.1/maven-downloader-1.1-javadoc.jar diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/shared/maven-downloader/1.1/maven-downloader-1.1-javadoc.jar.md5 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/shared/maven-downloader/1.1/maven-downloader-1.1-javadoc.jar.md5 new file mode 100644 index 000000000..3f77b9093 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/shared/maven-downloader/1.1/maven-downloader-1.1-javadoc.jar.md5 @@ -0,0 +1 @@ +942c2a52f0e38b1e59b12837905d1f25
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/shared/maven-downloader/1.1/maven-downloader-1.1-javadoc.jar.sha1 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/shared/maven-downloader/1.1/maven-downloader-1.1-javadoc.jar.sha1 new file mode 100644 index 000000000..1b0a186fc --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/shared/maven-downloader/1.1/maven-downloader-1.1-javadoc.jar.sha1 @@ -0,0 +1 @@ +738d6a8c195613ee689f0a7b8f0c6f194e909473
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/shared/maven-downloader/1.1/maven-downloader-1.1-sources.jar b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/shared/maven-downloader/1.1/maven-downloader-1.1-sources.jar Binary files differnew file mode 100644 index 000000000..994054bb4 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/shared/maven-downloader/1.1/maven-downloader-1.1-sources.jar diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/shared/maven-downloader/1.1/maven-downloader-1.1-sources.jar.md5 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/shared/maven-downloader/1.1/maven-downloader-1.1-sources.jar.md5 new file mode 100644 index 000000000..aada2770b --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/shared/maven-downloader/1.1/maven-downloader-1.1-sources.jar.md5 @@ -0,0 +1 @@ +c892f8533031750419c77dc87ed35a3b
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/shared/maven-downloader/1.1/maven-downloader-1.1-sources.jar.sha1 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/shared/maven-downloader/1.1/maven-downloader-1.1-sources.jar.sha1 new file mode 100644 index 000000000..37af4fe89 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/shared/maven-downloader/1.1/maven-downloader-1.1-sources.jar.sha1 @@ -0,0 +1 @@ +8aa5027d2688c4540eec9c2b85bbee496f6d4e7c
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/shared/maven-downloader/1.1/maven-downloader-1.1.jar b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/shared/maven-downloader/1.1/maven-downloader-1.1.jar Binary files differnew file mode 100644 index 000000000..ae6638b79 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/shared/maven-downloader/1.1/maven-downloader-1.1.jar diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/shared/maven-downloader/1.1/maven-downloader-1.1.jar.md5 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/shared/maven-downloader/1.1/maven-downloader-1.1.jar.md5 new file mode 100644 index 000000000..f5c14a937 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/shared/maven-downloader/1.1/maven-downloader-1.1.jar.md5 @@ -0,0 +1 @@ +b8e59f5b162f8c0f6ef23d8d249cfed8
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/shared/maven-downloader/1.1/maven-downloader-1.1.jar.sha1 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/shared/maven-downloader/1.1/maven-downloader-1.1.jar.sha1 new file mode 100644 index 000000000..1bcc406e0 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/shared/maven-downloader/1.1/maven-downloader-1.1.jar.sha1 @@ -0,0 +1 @@ +923bf441d4ab0d80d45e77576dff86e2b22d2ac4
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/shared/maven-downloader/1.1/maven-downloader-1.1.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/shared/maven-downloader/1.1/maven-downloader-1.1.pom new file mode 100644 index 000000000..db5fe99e7 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/shared/maven-downloader/1.1/maven-downloader-1.1.pom @@ -0,0 +1,56 @@ +<?xml version="1.0"?><project> + <parent> + <artifactId>maven-shared-components</artifactId> + <groupId>org.apache.maven.shared</groupId> + <version>4</version> + </parent> + <modelVersion>4.0.0</modelVersion> + <groupId>org.apache.maven.shared</groupId> + <artifactId>maven-downloader</artifactId> + <name>Maven Downloader</name> + <version>1.1</version> + <description>Provide a super simple interface for downloading a single artifact.</description> + <url>http://maven.apache.org</url> + <scm> + <connection>scm:svn:https://svn.apache.org/repos/asf/maven/shared/tags/maven-downloader-1.1</connection> + <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/shared/tags/maven-downloader-1.1</developerConnection> + <url>https://svn.apache.org/repos/asf/maven/shared/tags/maven-downloader-1.1</url> + </scm> + <build> + <plugins> + <plugin> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-maven-plugin</artifactId> + <version>1.1</version> + <executions> + <execution> + <goals> + <goal>descriptor</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + <dependencies> + <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-artifact-manager</artifactId> + <version>2.0</version> + </dependency> + <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-artifact</artifactId> + <version>2.0</version> + </dependency> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>3.8.1</version> + <scope>test</scope> + </dependency> + </dependencies> + <distributionManagement> + <status>deployed</status> + </distributionManagement> +</project>
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/shared/maven-downloader/1.1/maven-downloader-1.1.pom.md5 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/shared/maven-downloader/1.1/maven-downloader-1.1.pom.md5 new file mode 100644 index 000000000..bffe895ee --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/shared/maven-downloader/1.1/maven-downloader-1.1.pom.md5 @@ -0,0 +1 @@ +f4d26363c090391c0b8f5a1c4d5c946a
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/shared/maven-downloader/1.1/maven-downloader-1.1.pom.sha1 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/shared/maven-downloader/1.1/maven-downloader-1.1.pom.sha1 new file mode 100644 index 000000000..fb062b05f --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/shared/maven-downloader/1.1/maven-downloader-1.1.pom.sha1 @@ -0,0 +1 @@ +59f81ef23c583f0dd8e7f432ba88595c645e1fc1
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/shared/maven-downloader/maven-metadata.xml b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/shared/maven-downloader/maven-metadata.xml new file mode 100644 index 000000000..6fbced025 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/shared/maven-downloader/maven-metadata.xml @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<metadata> + <groupId>org.apache.maven.shared</groupId> + <artifactId>maven-downloader</artifactId> + <version>1.0</version> + <versioning> + <release>1.1</release> + <versions> + <version>1.0</version> + <version>1.1</version> + </versions> + <lastUpdated>20061212214311</lastUpdated> + </versioning> +</metadata> diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/shared/maven-downloader/maven-metadata.xml.md5 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/shared/maven-downloader/maven-metadata.xml.md5 new file mode 100644 index 000000000..354ec6c58 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/shared/maven-downloader/maven-metadata.xml.md5 @@ -0,0 +1 @@ +f18235bd6072aa77beb7e01f07905e53
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/shared/maven-downloader/maven-metadata.xml.sha1 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/shared/maven-downloader/maven-metadata.xml.sha1 new file mode 100644 index 000000000..0ff8edcaf --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/shared/maven-downloader/maven-metadata.xml.sha1 @@ -0,0 +1 @@ +7f87ddac6169d99fa54f29bc9a3f7af5a9c8741f
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/some-ejb/1.0/maven-metadata.xml b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/some-ejb/1.0/maven-metadata.xml new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/some-ejb/1.0/maven-metadata.xml diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/some-ejb/1.0/some-ejb-1.0-client.jar b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/some-ejb/1.0/some-ejb-1.0-client.jar new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/some-ejb/1.0/some-ejb-1.0-client.jar diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/test/1.0-SNAPSHOT/test-1.0-20050611.112233-1-javadoc.jar b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/test/1.0-SNAPSHOT/test-1.0-20050611.112233-1-javadoc.jar new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/test/1.0-SNAPSHOT/test-1.0-20050611.112233-1-javadoc.jar diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/test/1.0-SNAPSHOT/test-1.0-20050611.112233-1.jar b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/test/1.0-SNAPSHOT/test-1.0-20050611.112233-1.jar new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/test/1.0-SNAPSHOT/test-1.0-20050611.112233-1.jar diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/test/1.0-SNAPSHOT/wrong-artifactId-1.0-20050611.112233-1.jar b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/test/1.0-SNAPSHOT/wrong-artifactId-1.0-20050611.112233-1.jar new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/test/1.0-SNAPSHOT/wrong-artifactId-1.0-20050611.112233-1.jar diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/test/2.0.4-SNAPSHOT/test-2.0.4-SNAPSHOT.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/test/2.0.4-SNAPSHOT/test-2.0.4-SNAPSHOT.pom new file mode 100644 index 000000000..ca115b505 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/test/2.0.4-SNAPSHOT/test-2.0.4-SNAPSHOT.pom @@ -0,0 +1,143 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<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>test</artifactId> + <packaging>pom</packaging> + <version> + ${prj.ver.maj}.${prj.ver.min}.${prj.ver.inc}${prj.ver.suf} + </version> + + <name>Test Archiva</name> + <description> + ${pom.name} [version ${pom.version}]. Confluence: + ${kb.confluence.url}/display/${prj.confluence.path} + </description> + + <build> + <extensions> + <extension> + <groupId>org.apache.maven.wagon</groupId> + + <artifactId>wagon-webdav</artifactId> + <version>1.0-beta-2</version> + </extension> + </extensions> + </build> + + <issueManagement> + <system>jira</system> + + <url>${kb.jira.url}/browse/${prj.jira.key}</url> + </issueManagement> + <ciManagement> + <system>hudson</system> + <url> + ${kb.hudson.url}/view/${prj.hudson.view.root} + -=${prj.svn.branch}=-/ + </url> + </ciManagement> + <inceptionYear>2005</inceptionYear> + + <licenses> + <license> + <name>KB Internal License</name> + <distribution>repo</distribution> + <comments>This is internal project of KB.</comments> + </license> + </licenses> + + <organization> + <name>KB, a.s.</name> + <url>http://www.kb.cz/</url> + </organization> + + <properties> + <!-- + - common settings + --> + <kb.svn.url>http://svn-server/renaissance</kb.svn.url> + + <kb.svn.view.url>http://svn-server/renaissance</kb.svn.view.url> + <kb.site.url>http://tools-server/projects</kb.site.url> + <kb.site.dir> + scp://tools-server/home/tools/var/maven-sites + </kb.site.dir> + <kb.jira.url>http://jira-server/jira</kb.jira.url> + <kb.confluence.url> + http://confluence-server/confluence + </kb.confluence.url> + <kb.hudson.url>http://tools-server/hudson</kb.hudson.url> + + <!-- Project configuration --> + <prj.url.root>${pom.groupId}</prj.url.root> + <prj.hudson.view.root>${pom.groupId}</prj.hudson.view.root> + <prj.svn>${kb.svn.url}/${prj.svn.path}</prj.svn> + <prj.svn.tagBase>${prj.svn}/tags</prj.svn.tagBase> + <prj.svn.branch>trunk</prj.svn.branch> + + <prj.java.version>1.5</prj.java.version> + <prj.source.encoding>UTF-8</prj.source.encoding> + + <!-- + - Project specific + --> + <!-- version --> + <prj.ver.maj>2</prj.ver.maj> + <prj.ver.min>0</prj.ver.min> + <prj.ver.inc>4</prj.ver.inc> + <prj.ver.suf>-SNAPSHOT</prj.ver.suf><!-- !!! Increase this value after release. --> + + <!-- paths and identificators in external systems --> + <prj.url.relative> + ${prj.url.root}/${prj.ver.maj}.${prj.ver.min}${prj.ver.suf} + </prj.url.relative> + <prj.svn.path>test/maven-arch/test-arch</prj.svn.path> + <prj.jira.key>TSTARCH</prj.jira.key> + + <prj.confluence.path>TEST/Archiva</prj.confluence.path> + </properties> + + <!-- MRM-731 : variable in url pom are not replaced. --> + <url>http://j.random.server.com/docs/${project.groupId}/${project.artifactId}/${project.version}</url> + + <scm> + <connection>scm:svn:${prj.svn}/${prj.svn.branch}</connection> + <developerConnection> + scm:svn:${prj.svn}/${prj.svn.branch} + </developerConnection> + + <url>${kb.svn.view.url}/${prj.svn.path}/${prj.svn.branch}</url> + </scm> + + <distributionManagement> + <repository> + <id>internal</id> + <name>Internal Release Repository</name> + <url> + dav:http://tools-server/archiva/repository/internal + </url> + + <uniqueVersion>false</uniqueVersion> + </repository> + <snapshotRepository> + <id>snapshots</id> + <name>Internal Snapshot Repository</name> + <url> + dav:http://tools-server/archiva/repository/snapshots + </url> + <uniqueVersion>false</uniqueVersion> + + </snapshotRepository> + <site> + <id>website</id> + <name>Internal Maven Website</name> + <url>${kb.site.dir}/${prj.url.relative}</url> + </site> + </distributionManagement> + +</project> diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/testing/1.0/testing-1.0-sources.jar b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/testing/1.0/testing-1.0-sources.jar new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/testing/1.0/testing-1.0-sources.jar diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/testing/1.0/testing-1.0-test-sources.jar b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/testing/1.0/testing-1.0-test-sources.jar new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/testing/1.0/testing-1.0-test-sources.jar diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/testing/1.0/testing-1.0.jar b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/testing/1.0/testing-1.0.jar new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/testing/1.0/testing-1.0.jar diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/testing/1.0/testing-1.0.tar.gz b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/testing/1.0/testing-1.0.tar.gz new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/testing/1.0/testing-1.0.tar.gz diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/testing/1.0/testing-1.0.zip b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/testing/1.0/testing-1.0.zip new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/testing/1.0/testing-1.0.zip diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/update/test-not-updated/1.0/test-not-updated-1.0.jar b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/update/test-not-updated/1.0/test-not-updated-1.0.jar new file mode 100644 index 000000000..54d190b23 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/update/test-not-updated/1.0/test-not-updated-1.0.jar @@ -0,0 +1 @@ +dummy content. sample file only.
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/update/test-not-updated/1.0/test-not-updated-1.0.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/update/test-not-updated/1.0/test-not-updated-1.0.pom new file mode 100644 index 000000000..452727f28 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/update/test-not-updated/1.0/test-not-updated-1.0.pom @@ -0,0 +1,29 @@ +<!-- + ~ 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> diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/update/test-not-updated/maven-metadata.xml b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/update/test-not-updated/maven-metadata.xml new file mode 100644 index 000000000..bd56a21c1 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/update/test-not-updated/maven-metadata.xml @@ -0,0 +1,24 @@ +<?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>
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/update/test-updated/1.0/test-updated-1.0.jar b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/update/test-updated/1.0/test-updated-1.0.jar new file mode 100644 index 000000000..54d190b23 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/update/test-updated/1.0/test-updated-1.0.jar @@ -0,0 +1 @@ +dummy content. sample file only.
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/update/test-updated/1.0/test-updated-1.0.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/update/test-updated/1.0/test-updated-1.0.pom new file mode 100644 index 000000000..edd7b6479 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/update/test-updated/1.0/test-updated-1.0.pom @@ -0,0 +1,29 @@ +<!-- + ~ 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> diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/update/test-updated/maven-metadata.xml b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/update/test-updated/maven-metadata.xml new file mode 100644 index 000000000..86e063ca8 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/maven/update/test-updated/maven-metadata.xml @@ -0,0 +1,24 @@ +<?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>
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/testgroup/discovery/1.0/discovery-1.0.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/testgroup/discovery/1.0/discovery-1.0.pom new file mode 100644 index 000000000..12538e81a --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/testgroup/discovery/1.0/discovery-1.0.pom @@ -0,0 +1,28 @@ +<!-- + ~ 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> diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/testgroup/discovery/1.0/maven-metadata.xml b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/testgroup/discovery/1.0/maven-metadata.xml new file mode 100644 index 000000000..8ee18048c --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/testgroup/discovery/1.0/maven-metadata.xml @@ -0,0 +1,25 @@ +<?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>
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/testgroup/discovery/maven-metadata.xml b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/testgroup/discovery/maven-metadata.xml new file mode 100644 index 000000000..b024ef7ef --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/org/apache/testgroup/discovery/maven-metadata.xml @@ -0,0 +1,24 @@ +<?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>
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/test-project/test-project-api/2.4.4/test-project-api-2.4.4.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/test-project/test-project-api/2.4.4/test-project-api-2.4.4.pom new file mode 100644 index 000000000..fa0c87e5c --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/test-project/test-project-api/2.4.4/test-project-api-2.4.4.pom @@ -0,0 +1,39 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>test-project</groupId> + <artifactId>test-project</artifactId> + <version>2.4.4</version> + </parent> + <groupId>test-project</groupId> + <artifactId>test-project-api</artifactId> + <name>Test Project API</name> + + <dependencies> + <dependency> + <groupId>javax.activation</groupId> + <artifactId>activation</artifactId> + </dependency> + <dependency> + <groupId>stax</groupId> + <artifactId>stax-api</artifactId> + </dependency> + </dependencies> + + <build> + <plugins> + <plugin> + <artifactId>maven-source-plugin</artifactId> + <executions> + <execution> + <phase>package</phase> + <goals> + <goal>jar</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> +</project> diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/test-project/test-project-broker-ejb/2.4.4/test-project-broker-ejb-2.4.4.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/test-project/test-project-broker-ejb/2.4.4/test-project-broker-ejb-2.4.4.pom new file mode 100644 index 000000000..b333a52d2 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/test-project/test-project-broker-ejb/2.4.4/test-project-broker-ejb-2.4.4.pom @@ -0,0 +1,77 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>test-project</groupId> + <artifactId>test-project-broker-pom</artifactId> + <version>2.4.4</version> + </parent> + <artifactId>test-project-broker-ejb</artifactId> + <name>Test Project Broker EJB</name> + <packaging>ejb</packaging> + + <dependencies> + <dependency> + <groupId>test-project</groupId> + <artifactId>test-project-common</artifactId> + <type>test-jar</type> + <version>${pom.version}</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>test-project</groupId> + <artifactId>test-project-common</artifactId> + <version>${pom.version}</version> + </dependency> + <dependency> + <groupId>test-project</groupId> + <artifactId>test-project-api</artifactId> + <version>${pom.version}</version> + </dependency> + <dependency> + <groupId>commons-httpclient</groupId> + <artifactId>commons-httpclient</artifactId> + </dependency> + <dependency> + <groupId>commons-id</groupId> + <artifactId>commons-id</artifactId> + </dependency> + <dependency> + <groupId>commons-discovery</groupId> + <artifactId>commons-discovery</artifactId> + </dependency> + <dependency> + <groupId>commons-logging</groupId> + <artifactId>commons-logging</artifactId> + </dependency> + <dependency> + <groupId>log4j</groupId> + <artifactId>log4j</artifactId> + </dependency> + <dependency> + <groupId>org.springframework</groupId> + <artifactId>spring-mock</artifactId> + </dependency> + <dependency> + <groupId>javax.jms</groupId> + <artifactId>jms</artifactId> + </dependency> + <dependency> + <groupId>javax.servlet</groupId> + <artifactId>servlet-api</artifactId> + </dependency> + <dependency> + <groupId>javax.activation</groupId> + <artifactId>activation</artifactId> + </dependency> + <dependency> + <groupId>javax.mail</groupId> + <artifactId>mail</artifactId> + </dependency> + <dependency> + <groupId>javax.management</groupId> + <artifactId>jmxri</artifactId> + </dependency> + </dependencies> + +</project> diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/test-project/test-project-broker-pom/2.4.4/test-project-broker-pom-2.4.4.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/test-project/test-project-broker-pom/2.4.4/test-project-broker-pom-2.4.4.pom new file mode 100644 index 000000000..fd5473630 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/test-project/test-project-broker-pom/2.4.4/test-project-broker-pom-2.4.4.pom @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>test-project</groupId> + <artifactId>test-project</artifactId> + <version>2.4.4</version> + </parent> + <artifactId>test-project-broker-pom</artifactId> + <name>Test Project Broker POM</name> + <packaging>pom</packaging> + + <modules> + <module>broker-ejb</module> + </modules> +</project> diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/test-project/test-project-common/2.4.4/test-project-common-2.4.4.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/test-project/test-project-common/2.4.4/test-project-common-2.4.4.pom new file mode 100644 index 000000000..d47958b23 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/test-project/test-project-common/2.4.4/test-project-common-2.4.4.pom @@ -0,0 +1,119 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>test-project</groupId> + <artifactId>test-project</artifactId> + <version>2.4.4</version> + </parent> + <groupId>test-project</groupId> + <artifactId>test-project-common</artifactId> + <name>Test Project Commons</name> + <dependencies> + <dependency> + <groupId>test-project</groupId> + <artifactId>test-project-api</artifactId> + <version>${pom.version}</version> + </dependency> + <dependency> + <groupId>commons-id</groupId> + <artifactId>commons-id</artifactId> + </dependency> + <dependency> + <groupId>commons-discovery</groupId> + <artifactId>commons-discovery</artifactId> + </dependency> + <dependency> + <groupId>org.springframework</groupId> + <artifactId>spring</artifactId> + </dependency> + <dependency> + <groupId>commons-lang</groupId> + <artifactId>commons-lang</artifactId> + </dependency> + <dependency> + <groupId>commons-collections</groupId> + <artifactId>commons-collections</artifactId> + </dependency> + <dependency> + <groupId>commons-logging</groupId> + <artifactId>commons-logging</artifactId> + </dependency> + <dependency> + <groupId>commons-httpclient</groupId> + <artifactId>commons-httpclient</artifactId> + </dependency> + <dependency> + <groupId>log4j</groupId> + <artifactId>log4j</artifactId> + </dependency> + <dependency> + <groupId>stax</groupId> + <artifactId>stax-api</artifactId> + </dependency> + <dependency> + <groupId>org.codehaus.woodstox</groupId> + <artifactId>wstx-asl</artifactId> + </dependency> + <dependency> + <groupId>org.codehaus.castor</groupId> + <artifactId>castor</artifactId> + </dependency> + <dependency> + <groupId>xerces</groupId> + <artifactId>xerces</artifactId> + </dependency> + <dependency> + <groupId>javax.activation</groupId> + <artifactId>activation</artifactId> + </dependency> + <dependency> + <groupId>javax.jms</groupId> + <artifactId>jms</artifactId> + </dependency> + <dependency> + <groupId>javax.ejb</groupId> + <artifactId>ejb</artifactId> + </dependency> + <dependency> + <groupId>javax.servlet</groupId> + <artifactId>servlet-api</artifactId> + </dependency> + <dependency> + <groupId>javax.mail</groupId> + <artifactId>mail</artifactId> + </dependency> + <dependency> + <groupId>javax.management</groupId> + <artifactId>jmxri</artifactId> + </dependency> + </dependencies> + + + <build> + <plugins> + <plugin> + <artifactId>maven-source-plugin</artifactId> + <executions> + <execution> + <phase>package</phase> + <goals> + <goal>jar</goal> + </goals> + </execution> + </executions> + </plugin> + <plugin> + <artifactId>maven-jar-plugin</artifactId> + <executions> + <execution> + <phase>package</phase> + <goals> + <goal>test-jar</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> +</project> diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/test-project/test-project-endpoint-ejb/2.4.4/test-project-endpoint-ejb-2.4.4.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/test-project/test-project-endpoint-ejb/2.4.4/test-project-endpoint-ejb-2.4.4.pom new file mode 100644 index 000000000..582f1e5e1 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/test-project/test-project-endpoint-ejb/2.4.4/test-project-endpoint-ejb-2.4.4.pom @@ -0,0 +1,75 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>test-project</groupId> + <artifactId>test-project-endpoint-pom</artifactId> + <version>2.4.4</version> + </parent> + <groupId>test-project</groupId> + <artifactId>test-project-endpoint-ejb</artifactId> + <name>Test Project Endpoint EJB</name> + <packaging>ejb</packaging> + + <dependencies> + <dependency> + <groupId>test-project</groupId> + <artifactId>test-project-common</artifactId> + <version>${pom.version}</version> + </dependency> + <dependency> + <groupId>test-project</groupId> + <artifactId>test-project-api</artifactId> + <version>${pom.version}</version> + </dependency> + <dependency> + <!-- for tests only --> + <groupId>test-project</groupId> + <artifactId>test-project-common</artifactId> + <version>${pom.version}</version> + <type>test-jar</type> + <scope>test</scope> + </dependency> + <dependency> + <groupId>commons-id</groupId> + <artifactId>commons-id</artifactId> + </dependency> + <dependency> + <groupId>commons-discovery</groupId> + <artifactId>commons-discovery</artifactId> + </dependency> + <dependency> + <groupId>commons-logging</groupId> + <artifactId>commons-logging</artifactId> + </dependency> + <dependency> + <groupId>log4j</groupId> + <artifactId>log4j</artifactId> + </dependency> + <dependency> + <groupId>javax.jms</groupId> + <artifactId>jms</artifactId> + </dependency> + <dependency> + <groupId>javax.activation</groupId> + <artifactId>activation</artifactId> + </dependency> + <dependency> + <groupId>javax.mail</groupId> + <artifactId>mail</artifactId> + </dependency> + <dependency> + <groupId>xml-apis</groupId> + <artifactId>xml-apis</artifactId> + </dependency> + <dependency> + <groupId>javax.management</groupId> + <artifactId>jmxri</artifactId> + </dependency> + <dependency> + <groupId>javax.servlet</groupId> + <artifactId>servlet-api</artifactId> + </dependency> + </dependencies> + +</project> diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/test-project/test-project-endpoint-pom/2.4.4/test-project-endpoint-pom-2.4.4.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/test-project/test-project-endpoint-pom/2.4.4/test-project-endpoint-pom-2.4.4.pom new file mode 100644 index 000000000..ea4d6372d --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/test-project/test-project-endpoint-pom/2.4.4/test-project-endpoint-pom-2.4.4.pom @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>test-project</groupId> + <artifactId>test-project</artifactId> + <version>2.4.4</version> + </parent> + <artifactId>test-project-endpoint-pom</artifactId> + <name>Test Project Endpoint POM</name> + <packaging>pom</packaging> + + <modules> + <module>endpoint-ejb</module> + </modules> +</project> diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/test-project/test-project/2.4.4/test-project-2.4.4.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/test-project/test-project/2.4.4/test-project-2.4.4.pom new file mode 100644 index 000000000..6dc471979 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/default-repository/test-project/test-project/2.4.4/test-project-2.4.4.pom @@ -0,0 +1,161 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project> + <modelVersion>4.0.0</modelVersion> + + <groupId>test-project</groupId> + <artifactId>test-project</artifactId> + <name>Test Project</name> + <version>2.4.4</version> + <packaging>pom</packaging> + + <organization> + <name>Company</name> + <url>http://www.company.com/</url> + </organization> + <inceptionYear>2002</inceptionYear> + + <modules> + <module>api</module> + <module>common</module> + <module>broker</module> + <module>endpoint</module> + </modules> + + <dependencies> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>3.8.1</version> + <scope>test</scope> + </dependency> + </dependencies> + <dependencyManagement> + <dependencies> + <!-- common version strategy --> + <dependency> + <groupId>javax.activation</groupId> + <artifactId>activation</artifactId> + <version>1.0.2</version> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>javax.jms</groupId> + <artifactId>jms</artifactId> + <version>1.0.2</version> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>javax.ejb</groupId> + <artifactId>ejb</artifactId> + <version>2.0</version> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>javax.servlet</groupId> + <artifactId>servlet-api</artifactId> + <version>2.4</version> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>javax.mail</groupId> + <artifactId>mail</artifactId> + <version>1.4</version> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>xml-apis</groupId> + <artifactId>xml-apis</artifactId> + <version>2.0.2</version> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>commons-logging</groupId> + <artifactId>commons-logging</artifactId> + <version>1.0.4</version> + </dependency> + <dependency> + <groupId>commons-lang</groupId> + <artifactId>commons-lang</artifactId> + <version>2.1</version> + </dependency> + <dependency> + <groupId>commons-collections</groupId> + <artifactId>commons-collections</artifactId> + <version>3.2</version> + </dependency> + <dependency> + <groupId>org.springframework</groupId> + <artifactId>spring</artifactId> + <version>2.0.7</version> + </dependency> + <dependency> + <groupId>org.springframework</groupId> + <artifactId>spring-mock</artifactId> + <version>2.0.7</version> + <scope>test</scope> + <exclusions> + <exclusion> + <groupId>org.springframework</groupId> + <artifactId>spring-jdbc</artifactId> + </exclusion> + <exclusion> + <groupId>org.springframework</groupId> + <artifactId>spring-web</artifactId> + </exclusion> + </exclusions> + </dependency> + <dependency> + <groupId>log4j</groupId> + <artifactId>log4j</artifactId> + <version>1.2.8</version> + </dependency> + <dependency> + <groupId>commons-discovery</groupId> + <artifactId>commons-discovery</artifactId> + <version>0.2</version> + </dependency> + <dependency> + <groupId>commons-id</groupId> + <artifactId>commons-id</artifactId> + <version>0.1-dev</version> + </dependency> + <dependency> + <groupId>org.codehaus.castor</groupId> + <artifactId>castor</artifactId> + <version>1.0.5-xml</version> + </dependency> + <dependency> + <groupId>xerces</groupId> + <artifactId>xerces</artifactId> + <version>2.4.0</version> + </dependency> + <dependency> + <groupId>commons-httpclient</groupId> + <artifactId>commons-httpclient</artifactId> + <version>3.1</version> + </dependency> + <dependency> + <groupId>stax</groupId> + <artifactId>stax-api</artifactId> + <version>1.0.1</version> + </dependency> + <dependency> + <groupId>org.codehaus.woodstox</groupId> + <artifactId>wstx-asl</artifactId> + <version>3.2.1</version> + </dependency> + <dependency> + <groupId>com.thoughtworks.xstream</groupId> + <artifactId>xstream</artifactId> + <version>1.2.2</version> + </dependency> + <dependency> + <groupId>javax.management</groupId> + <artifactId>jmxri</artifactId> + <version>1.2.1</version> + <scope>provided</scope> + </dependency> + </dependencies> + </dependencyManagement> + +</project> diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/bad_artifact/empty.txt b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/bad_artifact/empty.txt new file mode 100644 index 000000000..1f855bdb8 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/bad_artifact/empty.txt @@ -0,0 +1,2 @@ +git svn break to sync empty directories so add an empty file + diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/include_xml/1.0/include_xml-1.0.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/include_xml/1.0/include_xml-1.0.pom new file mode 100644 index 000000000..18cd43943 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/include_xml/1.0/include_xml-1.0.pom @@ -0,0 +1,25 @@ +<!-- + ~ 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> + <modelVersion>4.0.0</modelVersion> + <groupId>org.apache.archiva.metadata.tests</groupId> + <artifactId>include_xml</artifactId> + <version>1.0</version> + <packaging>xml</packaging> +</project> diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/include_xml/1.0/include_xml-1.0.xml b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/include_xml/1.0/include_xml-1.0.xml new file mode 100644 index 000000000..176a50bcf --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/include_xml/1.0/include_xml-1.0.xml @@ -0,0 +1,2 @@ +<xml /> +
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/include_xml/1.0/maven-metadata.xml b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/include_xml/1.0/maven-metadata.xml new file mode 100644 index 000000000..624cbdace --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/include_xml/1.0/maven-metadata.xml @@ -0,0 +1,3 @@ +<metadata> + +</metadata>
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/incomplete_metadata_a/1.0/incomplete_metadata_a-1.0.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/incomplete_metadata_a/1.0/incomplete_metadata_a-1.0.pom new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/incomplete_metadata_a/1.0/incomplete_metadata_a-1.0.pom diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/incomplete_metadata_a/maven-metadata.xml b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/incomplete_metadata_a/maven-metadata.xml new file mode 100644 index 000000000..5ecf49673 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/incomplete_metadata_a/maven-metadata.xml @@ -0,0 +1,5 @@ +<metadata> + <groupId>org.apache.archiva.metadata.tests</groupId> + <artifactId>incomplete_metadata_a</artifactId> + <version>1.0</version> +</metadata> diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/missing_artifact/1.0-SNAPSHOT/maven-metadata.xml b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/missing_artifact/1.0-SNAPSHOT/maven-metadata.xml new file mode 100644 index 000000000..e8840e709 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/missing_artifact/1.0-SNAPSHOT/maven-metadata.xml @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<metadata> + <groupId>org.apache.archiva.metadata.tests</groupId> + <artifactId>missing_artifact</artifactId> + <version>1.0-SNAPSHOT</version> + <versioning> + <snapshot> + <buildNumber>1</buildNumber> + <timestamp>20091007.132409</timestamp> + </snapshot> + </versioning> +</metadata> diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/missing_artifact/1.0-SNAPSHOT/missing_artifact-1.0-20091007.132409-1.jar b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/missing_artifact/1.0-SNAPSHOT/missing_artifact-1.0-20091007.132409-1.jar new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/missing_artifact/1.0-SNAPSHOT/missing_artifact-1.0-20091007.132409-1.jar diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/missing_artifact/1.0-SNAPSHOT/missing_artifact-1.0-20091007.132409-1.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/missing_artifact/1.0-SNAPSHOT/missing_artifact-1.0-20091007.132409-1.pom new file mode 100644 index 000000000..d2c43abe5 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/missing_artifact/1.0-SNAPSHOT/missing_artifact-1.0-20091007.132409-1.pom @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?><project> + <modelVersion>4.0.0</modelVersion> + <groupId>org.apache.archiva.metadata.tests</groupId> + <artifactId>missing_artifact</artifactId> + <version>1.0-SNAPSHOT</version> +</project>
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/missing_artifact/1.2-SNAPSHOT/maven-metadata.xml b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/missing_artifact/1.2-SNAPSHOT/maven-metadata.xml new file mode 100644 index 000000000..1487bb280 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/missing_artifact/1.2-SNAPSHOT/maven-metadata.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8"?><metadata> + <groupId>org.apache.archiva.metadata.tests</groupId> + <artifactId>missing_artifact</artifactId> + <version>1.2-SNAPSHOT</version> + <versioning> + <snapshot> + <timestamp>20091011.133751</timestamp> + <buildNumber>1</buildNumber> + </snapshot> + </versioning> +</metadata> diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/missing_artifact/1.2-SNAPSHOT/missing_artifact-1.2-20091011.133751-1.jar b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/missing_artifact/1.2-SNAPSHOT/missing_artifact-1.2-20091011.133751-1.jar new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/missing_artifact/1.2-SNAPSHOT/missing_artifact-1.2-20091011.133751-1.jar diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/missing_artifact/1.2-SNAPSHOT/missing_artifact-1.2-20091011.133751-1.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/missing_artifact/1.2-SNAPSHOT/missing_artifact-1.2-20091011.133751-1.pom new file mode 100644 index 000000000..f68e5230b --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/missing_artifact/1.2-SNAPSHOT/missing_artifact-1.2-20091011.133751-1.pom @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?><project> + <modelVersion>4.0.0</modelVersion> + <groupId>org.apache.archiva.metadata.tests</groupId> + <artifactId>missing_artifact</artifactId> + <version>1.2-SNAPSHOT</version> +</project>
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/missing_artifact/maven-metadata.xml b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/missing_artifact/maven-metadata.xml new file mode 100644 index 000000000..3867fb5bd --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/missing_artifact/maven-metadata.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="UTF-8"?><metadata> + <groupId>org.apache.archiva.metadata.tests</groupId> + <artifactId>missing_artifact</artifactId> + <versioning> + <latest>1.2-SNAPSHOT</latest> + <versions> + <version>1.0-SNAPSHOT</version> + <version>1.1-SNAPSHOT</version> + <version>1.2-SNAPSHOT</version> + </versions> + </versioning> +</metadata> diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/missing_metadata_a/1.0/missing_metadata_a-1.0.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/missing_metadata_a/1.0/missing_metadata_a-1.0.pom new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/missing_metadata_a/1.0/missing_metadata_a-1.0.pom diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/missing_metadata_b/1.0.1/missing_metadata_b-1.0.1.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/missing_metadata_b/1.0.1/missing_metadata_b-1.0.1.pom new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/missing_metadata_b/1.0.1/missing_metadata_b-1.0.1.pom diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/missing_metadata_b/1.0/missing_metadata_b-1.0.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/missing_metadata_b/1.0/missing_metadata_b-1.0.pom new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/missing_metadata_b/1.0/missing_metadata_b-1.0.pom diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/missing_metadata_b/2.0-20070821-dev/missing_metadata_b-2.0-20070821-dev.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/missing_metadata_b/2.0-20070821-dev/missing_metadata_b-2.0-20070821-dev.pom new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/missing_metadata_b/2.0-20070821-dev/missing_metadata_b-2.0-20070821-dev.pom diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/missing_metadata_b/2.0.1/missing_metadata_b-2.0.1.jar b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/missing_metadata_b/2.0.1/missing_metadata_b-2.0.1.jar new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/missing_metadata_b/2.0.1/missing_metadata_b-2.0.1.jar diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/missing_metadata_b/2.0/missing_metadata_b-2.0.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/missing_metadata_b/2.0/missing_metadata_b-2.0.pom new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/missing_metadata_b/2.0/missing_metadata_b-2.0.pom diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/proxied_multi/1.0/proxied_multi-1.0.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/proxied_multi/1.0/proxied_multi-1.0.pom new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/proxied_multi/1.0/proxied_multi-1.0.pom diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/proxied_multi/1.1/proxied_multi-1.1.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/proxied_multi/1.1/proxied_multi-1.1.pom new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/proxied_multi/1.1/proxied_multi-1.1.pom diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/proxied_multi/2.1/proxied_multi-2.1.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/proxied_multi/2.1/proxied_multi-2.1.pom new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/proxied_multi/2.1/proxied_multi-2.1.pom diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/proxied_multi/maven-metadata-central.xml b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/proxied_multi/maven-metadata-central.xml new file mode 100644 index 000000000..a8b764bd7 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/proxied_multi/maven-metadata-central.xml @@ -0,0 +1,16 @@ +<metadata> + <groupId>org.apache.archiva.metadata.tests</groupId> + <artifactId>proxied_multi</artifactId> + <version>1.0</version> + <versioning> + <latest>3.1</latest> + <release>3.1</release> + <versions> + <version>1.0</version> + <version>1.0.1</version> + <version>2.0</version> + <version>3.0</version> + <version>3.1</version> + </versions> + </versioning> +</metadata> diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/proxied_multi/maven-metadata-java.net.xml b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/proxied_multi/maven-metadata-java.net.xml new file mode 100644 index 000000000..13024c74e --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/proxied_multi/maven-metadata-java.net.xml @@ -0,0 +1,16 @@ +<metadata> + <groupId>org.apache.archiva.metadata.tests</groupId> + <artifactId>proxied_multi</artifactId> + <version>1.0</version> + <versioning> + <latest>2.0.1</latest> + <release>2.0.1</release> + <versions> + <version>1.0-spec</version> + <version>2.0</version> + <version>2.0-proposal-beta</version> + <version>2.0-spec</version> + <version>2.0.1</version> + </versions> + </versioning> +</metadata> diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/proxied_multi/maven-metadata.xml b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/proxied_multi/maven-metadata.xml new file mode 100644 index 000000000..a1e402c94 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/proxied_multi/maven-metadata.xml @@ -0,0 +1,14 @@ +<metadata> + <groupId>org.apache.archiva.metadata.tests</groupId> + <artifactId>proxied_multi</artifactId> + <version>1.0</version> + <versioning> + <latest>2.1</latest> + <release>2.1</release> + <versions> + <version>1.0</version> + <version>1.1</version> + <version>2.1</version> + </versions> + </versioning> +</metadata> diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/maven-metadata-apache-snapshots.xml b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/maven-metadata-apache-snapshots.xml new file mode 100644 index 000000000..f3e0dbd0a --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/maven-metadata-apache-snapshots.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?><metadata> + <groupId>org.apache.archiva.metadata.tests</groupId> + <artifactId>snap_shots_a</artifactId> + <version>1.0-alpha-11-SNAPSHOT</version> +</metadata> diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/maven-metadata-internal-snapshots.xml b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/maven-metadata-internal-snapshots.xml new file mode 100644 index 000000000..f3e0dbd0a --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/maven-metadata-internal-snapshots.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?><metadata> + <groupId>org.apache.archiva.metadata.tests</groupId> + <artifactId>snap_shots_a</artifactId> + <version>1.0-alpha-11-SNAPSHOT</version> +</metadata> diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/maven-metadata-snapshots.codehaus.org.xml b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/maven-metadata-snapshots.codehaus.org.xml new file mode 100644 index 000000000..f62d4482f --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/maven-metadata-snapshots.codehaus.org.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="UTF-8"?><metadata> + <groupId>org.apache.archiva.metadata.tests</groupId> + <artifactId>snap_shots_a</artifactId> + <version>1.0-alpha-11-SNAPSHOT</version> + <versioning> + <snapshot> + <timestamp>20070315.033030</timestamp> + <buildNumber>10</buildNumber> + </snapshot> + <lastUpdated>20070315.033030</lastUpdated> + </versioning> +</metadata> diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/maven-metadata.xml b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/maven-metadata.xml new file mode 100644 index 000000000..3265734bd --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/maven-metadata.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?><metadata> + <groupId>org.apache.archiva.metadata.tests</groupId> + <artifactId>snap_shots_a</artifactId> + <version>1.0-alpha-11-SNAPSHOT</version> + <versioning> + <snapshot /> + <lastUpdated>20070314163205</lastUpdated> + </versioning> +</metadata> diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/snap_shots_a-1.0-alpha-11-20070221.194724-2-javadoc.jar b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/snap_shots_a-1.0-alpha-11-20070221.194724-2-javadoc.jar new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/snap_shots_a-1.0-alpha-11-20070221.194724-2-javadoc.jar diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/snap_shots_a-1.0-alpha-11-20070221.194724-2-sources.jar b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/snap_shots_a-1.0-alpha-11-20070221.194724-2-sources.jar new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/snap_shots_a-1.0-alpha-11-20070221.194724-2-sources.jar diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/snap_shots_a-1.0-alpha-11-20070221.194724-2.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/snap_shots_a-1.0-alpha-11-20070221.194724-2.pom new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/snap_shots_a-1.0-alpha-11-20070221.194724-2.pom diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/snap_shots_a-1.0-alpha-11-20070221.194724-2.war b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/snap_shots_a-1.0-alpha-11-20070221.194724-2.war new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/snap_shots_a-1.0-alpha-11-20070221.194724-2.war diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/snap_shots_a-1.0-alpha-11-20070302.212723-3-sources.jar b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/snap_shots_a-1.0-alpha-11-20070302.212723-3-sources.jar new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/snap_shots_a-1.0-alpha-11-20070302.212723-3-sources.jar diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/snap_shots_a-1.0-alpha-11-20070302.212723-3.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/snap_shots_a-1.0-alpha-11-20070302.212723-3.pom new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/snap_shots_a-1.0-alpha-11-20070302.212723-3.pom diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/snap_shots_a-1.0-alpha-11-20070302.212723-3.war b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/snap_shots_a-1.0-alpha-11-20070302.212723-3.war new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/snap_shots_a-1.0-alpha-11-20070302.212723-3.war diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/snap_shots_a-1.0-alpha-11-20070303.152828-4-sources.jar b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/snap_shots_a-1.0-alpha-11-20070303.152828-4-sources.jar new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/snap_shots_a-1.0-alpha-11-20070303.152828-4-sources.jar diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/snap_shots_a-1.0-alpha-11-20070303.152828-4.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/snap_shots_a-1.0-alpha-11-20070303.152828-4.pom new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/snap_shots_a-1.0-alpha-11-20070303.152828-4.pom diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/snap_shots_a-1.0-alpha-11-20070303.152828-4.war b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/snap_shots_a-1.0-alpha-11-20070303.152828-4.war new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/snap_shots_a-1.0-alpha-11-20070303.152828-4.war diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/snap_shots_a-1.0-alpha-11-20070305.215149-5.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/snap_shots_a-1.0-alpha-11-20070305.215149-5.pom new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/snap_shots_a-1.0-alpha-11-20070305.215149-5.pom diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/snap_shots_a-1.0-alpha-11-20070305.215149-5.pom.sha1 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/snap_shots_a-1.0-alpha-11-20070305.215149-5.pom.sha1 new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/snap_shots_a-1.0-alpha-11-20070305.215149-5.pom.sha1 diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/snap_shots_a-1.0-alpha-11-20070305.215149-5.war b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/snap_shots_a-1.0-alpha-11-20070305.215149-5.war new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/snap_shots_a-1.0-alpha-11-20070305.215149-5.war diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/snap_shots_a-1.0-alpha-11-20070305.215149-5.war.sha1 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/snap_shots_a-1.0-alpha-11-20070305.215149-5.war.sha1 new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/snap_shots_a-1.0-alpha-11-20070305.215149-5.war.sha1 diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/snap_shots_a-1.0-alpha-11-20070307.170909-6.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/snap_shots_a-1.0-alpha-11-20070307.170909-6.pom new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/snap_shots_a-1.0-alpha-11-20070307.170909-6.pom diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/snap_shots_a-1.0-alpha-11-20070307.170909-6.pom.sha1 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/snap_shots_a-1.0-alpha-11-20070307.170909-6.pom.sha1 new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/snap_shots_a-1.0-alpha-11-20070307.170909-6.pom.sha1 diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/snap_shots_a-1.0-alpha-11-20070307.170909-6.war b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/snap_shots_a-1.0-alpha-11-20070307.170909-6.war new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/snap_shots_a-1.0-alpha-11-20070307.170909-6.war diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/snap_shots_a-1.0-alpha-11-20070307.170909-6.war.sha1 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/snap_shots_a-1.0-alpha-11-20070307.170909-6.war.sha1 new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/snap_shots_a-1.0-alpha-11-20070307.170909-6.war.sha1 diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/snap_shots_a-1.0-alpha-11-20070314.211405-9.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/snap_shots_a-1.0-alpha-11-20070314.211405-9.pom new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/snap_shots_a-1.0-alpha-11-20070314.211405-9.pom diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/snap_shots_a-1.0-alpha-11-20070314.211405-9.pom.sha1 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/snap_shots_a-1.0-alpha-11-20070314.211405-9.pom.sha1 new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/snap_shots_a-1.0-alpha-11-20070314.211405-9.pom.sha1 diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/snap_shots_a-1.0-alpha-11-20070314.211405-9.war b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/snap_shots_a-1.0-alpha-11-20070314.211405-9.war new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/snap_shots_a-1.0-alpha-11-20070314.211405-9.war diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/snap_shots_a-1.0-alpha-11-20070314.211405-9.war.sha1 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/snap_shots_a-1.0-alpha-11-20070314.211405-9.war.sha1 new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/snap_shots_a-1.0-alpha-11-20070314.211405-9.war.sha1 diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/snap_shots_a-1.0-alpha-11-20070316.175232-11.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/snap_shots_a-1.0-alpha-11-20070316.175232-11.pom new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/snap_shots_a-1.0-alpha-11-20070316.175232-11.pom diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/snap_shots_a-1.0-alpha-11-20070316.175232-11.pom.sha1 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/snap_shots_a-1.0-alpha-11-20070316.175232-11.pom.sha1 new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/snap_shots_a-1.0-alpha-11-20070316.175232-11.pom.sha1 diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/snap_shots_a-1.0-alpha-11-20070316.175232-11.war b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/snap_shots_a-1.0-alpha-11-20070316.175232-11.war new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/snap_shots_a-1.0-alpha-11-20070316.175232-11.war diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/snap_shots_a-1.0-alpha-11-20070316.175232-11.war.sha1 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/snap_shots_a-1.0-alpha-11-20070316.175232-11.war.sha1 new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/snap_shots_a-1.0-alpha-11-20070316.175232-11.war.sha1 diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/snap_shots_a-1.0-alpha-11-SNAPSHOT-sources.jar b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/snap_shots_a-1.0-alpha-11-SNAPSHOT-sources.jar new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/snap_shots_a-1.0-alpha-11-SNAPSHOT-sources.jar diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/snap_shots_a-1.0-alpha-11-SNAPSHOT.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/snap_shots_a-1.0-alpha-11-SNAPSHOT.pom new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/snap_shots_a-1.0-alpha-11-SNAPSHOT.pom diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/snap_shots_a-1.0-alpha-11-SNAPSHOT.war b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/snap_shots_a-1.0-alpha-11-SNAPSHOT.war new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT/snap_shots_a-1.0-alpha-11-SNAPSHOT.war diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/maven-metadata.xml b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/maven-metadata.xml new file mode 100644 index 000000000..efda5def5 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/maven-metadata.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="UTF-8"?><metadata> + <groupId>org.apache.archiva.metadata.tests</groupId> + <artifactId>snap_shots_b</artifactId> + <version>2.2-SNAPSHOT</version> + <versioning> + <snapshot> + <timestamp>20070316.153953</timestamp> + <buildNumber>10</buildNumber> + </snapshot> + <lastUpdated>20070316153953</lastUpdated> + </versioning> +</metadata> diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070221.172940-1.jar b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070221.172940-1.jar new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070221.172940-1.jar diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070221.172940-1.jar.md5 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070221.172940-1.jar.md5 new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070221.172940-1.jar.md5 diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070221.172940-1.jar.sha1 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070221.172940-1.jar.sha1 new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070221.172940-1.jar.sha1 diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070221.172940-1.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070221.172940-1.pom new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070221.172940-1.pom diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070221.172940-1.pom.md5 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070221.172940-1.pom.md5 new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070221.172940-1.pom.md5 diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070221.172940-1.pom.sha1 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070221.172940-1.pom.sha1 new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070221.172940-1.pom.sha1 diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070221.194724-2-sources.jar b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070221.194724-2-sources.jar new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070221.194724-2-sources.jar diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070221.194724-2-sources.jar.md5 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070221.194724-2-sources.jar.md5 new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070221.194724-2-sources.jar.md5 diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070221.194724-2-sources.jar.sha1 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070221.194724-2-sources.jar.sha1 new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070221.194724-2-sources.jar.sha1 diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070221.194724-2.jar b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070221.194724-2.jar new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070221.194724-2.jar diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070221.194724-2.jar.md5 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070221.194724-2.jar.md5 new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070221.194724-2.jar.md5 diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070221.194724-2.jar.sha1 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070221.194724-2.jar.sha1 new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070221.194724-2.jar.sha1 diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070221.194724-2.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070221.194724-2.pom new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070221.194724-2.pom diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070221.194724-2.pom.md5 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070221.194724-2.pom.md5 new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070221.194724-2.pom.md5 diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070221.194724-2.pom.sha1 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070221.194724-2.pom.sha1 new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070221.194724-2.pom.sha1 diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070302.212723-3-sources.jar b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070302.212723-3-sources.jar new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070302.212723-3-sources.jar diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070302.212723-3-sources.jar.md5 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070302.212723-3-sources.jar.md5 new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070302.212723-3-sources.jar.md5 diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070302.212723-3-sources.jar.sha1 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070302.212723-3-sources.jar.sha1 new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070302.212723-3-sources.jar.sha1 diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070302.212723-3.jar b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070302.212723-3.jar new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070302.212723-3.jar diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070302.212723-3.jar.md5 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070302.212723-3.jar.md5 new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070302.212723-3.jar.md5 diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070302.212723-3.jar.sha1 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070302.212723-3.jar.sha1 new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070302.212723-3.jar.sha1 diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070302.212723-3.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070302.212723-3.pom new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070302.212723-3.pom diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070302.212723-3.pom.md5 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070302.212723-3.pom.md5 new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070302.212723-3.pom.md5 diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070302.212723-3.pom.sha1 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070302.212723-3.pom.sha1 new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070302.212723-3.pom.sha1 diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070303.152828-4-sources.jar b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070303.152828-4-sources.jar new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070303.152828-4-sources.jar diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070303.152828-4-sources.jar.md5 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070303.152828-4-sources.jar.md5 new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070303.152828-4-sources.jar.md5 diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070303.152828-4-sources.jar.sha1 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070303.152828-4-sources.jar.sha1 new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070303.152828-4-sources.jar.sha1 diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070303.152828-4.jar b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070303.152828-4.jar new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070303.152828-4.jar diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070303.152828-4.jar.md5 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070303.152828-4.jar.md5 new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070303.152828-4.jar.md5 diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070303.152828-4.jar.sha1 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070303.152828-4.jar.sha1 new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070303.152828-4.jar.sha1 diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070303.152828-4.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070303.152828-4.pom new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070303.152828-4.pom diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070303.152828-4.pom.md5 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070303.152828-4.pom.md5 new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070303.152828-4.pom.md5 diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070303.152828-4.pom.sha1 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070303.152828-4.pom.sha1 new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070303.152828-4.pom.sha1 diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070305.215149-5.jar b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070305.215149-5.jar new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070305.215149-5.jar diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070305.215149-5.jar.md5 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070305.215149-5.jar.md5 new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070305.215149-5.jar.md5 diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070305.215149-5.jar.sha1 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070305.215149-5.jar.sha1 new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070305.215149-5.jar.sha1 diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070305.215149-5.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070305.215149-5.pom new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070305.215149-5.pom diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070305.215149-5.pom.md5 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070305.215149-5.pom.md5 new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070305.215149-5.pom.md5 diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070305.215149-5.pom.sha1 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070305.215149-5.pom.sha1 new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070305.215149-5.pom.sha1 diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070307.170909-6.jar b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070307.170909-6.jar new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070307.170909-6.jar diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070307.170909-6.jar.md5 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070307.170909-6.jar.md5 new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070307.170909-6.jar.md5 diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070307.170909-6.jar.sha1 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070307.170909-6.jar.sha1 new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070307.170909-6.jar.sha1 diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070307.170909-6.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070307.170909-6.pom new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070307.170909-6.pom diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070307.170909-6.pom.md5 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070307.170909-6.pom.md5 new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070307.170909-6.pom.md5 diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070307.170909-6.pom.sha1 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070307.170909-6.pom.sha1 new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070307.170909-6.pom.sha1 diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070314.190911-7.jar b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070314.190911-7.jar new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070314.190911-7.jar diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070314.190911-7.jar.md5 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070314.190911-7.jar.md5 new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070314.190911-7.jar.md5 diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070314.190911-7.jar.sha1 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070314.190911-7.jar.sha1 new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070314.190911-7.jar.sha1 diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070314.190911-7.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070314.190911-7.pom new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070314.190911-7.pom diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070314.190911-7.pom.md5 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070314.190911-7.pom.md5 new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070314.190911-7.pom.md5 diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070314.190911-7.pom.sha1 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070314.190911-7.pom.sha1 new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070314.190911-7.pom.sha1 diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070314.193642-8.jar b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070314.193642-8.jar new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070314.193642-8.jar diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070314.193642-8.jar.md5 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070314.193642-8.jar.md5 new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070314.193642-8.jar.md5 diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070314.193642-8.jar.sha1 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070314.193642-8.jar.sha1 new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070314.193642-8.jar.sha1 diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070314.193642-8.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070314.193642-8.pom new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070314.193642-8.pom diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070314.193642-8.pom.md5 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070314.193642-8.pom.md5 new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070314.193642-8.pom.md5 diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070314.193642-8.pom.sha1 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070314.193642-8.pom.sha1 new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070314.193642-8.pom.sha1 diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070314.211405-9-javadoc.jar b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070314.211405-9-javadoc.jar new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070314.211405-9-javadoc.jar diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070314.211405-9-javadoc.jar.md5 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070314.211405-9-javadoc.jar.md5 new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070314.211405-9-javadoc.jar.md5 diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070314.211405-9-javadoc.jar.sha1 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070314.211405-9-javadoc.jar.sha1 new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070314.211405-9-javadoc.jar.sha1 diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070314.211405-9-sources.jar b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070314.211405-9-sources.jar new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070314.211405-9-sources.jar diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070314.211405-9-sources.jar.md5 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070314.211405-9-sources.jar.md5 new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070314.211405-9-sources.jar.md5 diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070314.211405-9-sources.jar.sha1 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070314.211405-9-sources.jar.sha1 new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070314.211405-9-sources.jar.sha1 diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070314.211405-9.jar b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070314.211405-9.jar new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070314.211405-9.jar diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070314.211405-9.jar.md5 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070314.211405-9.jar.md5 new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070314.211405-9.jar.md5 diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070314.211405-9.jar.sha1 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070314.211405-9.jar.sha1 new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070314.211405-9.jar.sha1 diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070314.211405-9.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070314.211405-9.pom new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070314.211405-9.pom diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070314.211405-9.pom.md5 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070314.211405-9.pom.md5 new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070314.211405-9.pom.md5 diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070314.211405-9.pom.sha1 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070314.211405-9.pom.sha1 new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070314.211405-9.pom.sha1 diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070316.153953-10.jar b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070316.153953-10.jar new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070316.153953-10.jar diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070316.153953-10.jar.md5 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070316.153953-10.jar.md5 new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070316.153953-10.jar.md5 diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070316.153953-10.jar.sha1 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070316.153953-10.jar.sha1 new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070316.153953-10.jar.sha1 diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070316.153953-10.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070316.153953-10.pom new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070316.153953-10.pom diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070316.153953-10.pom.md5 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070316.153953-10.pom.md5 new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070316.153953-10.pom.md5 diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070316.153953-10.pom.sha1 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070316.153953-10.pom.sha1 new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/repositories/metadata-repository/org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT/snap_shots_b-2.2-20070316.153953-10.pom.sha1 diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/META-INF/spring-context.xml b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/META-INF/spring-context.xml new file mode 100644 index 000000000..5b721190f --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/META-INF/spring-context.xml @@ -0,0 +1,30 @@ +<?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. + --> + +<beans xmlns="http://www.springframework.org/schema/beans" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://www.springframework.org/schema/beans + http://www.springframework.org/schema/beans/spring-beans-3.0.xsd" + default-lazy-init="true"> + + + + +</beans>
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/com/example/test/test-artifact-module-a/1.0/test-artifact-module-a-1.0.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/com/example/test/test-artifact-module-a/1.0/test-artifact-module-a-1.0.pom new file mode 100644 index 000000000..c8db3fb29 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/com/example/test/test-artifact-module-a/1.0/test-artifact-module-a-1.0.pom @@ -0,0 +1,19 @@ +<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> + <parent> + <groupId>com.example.test</groupId> + <artifactId>test-artifact-root</artifactId> + <version>1.0</version> + </parent> + <artifactId>test-artifact-module-a</artifactId> + <packaging>jar</packaging> + <name>Test Artifact :: Module A</name> + <url>http://maven.apache.org</url> + <dependencies> + <dependency> + <groupId>commons-io</groupId> + <artifactId>commons-io</artifactId> + </dependency> + </dependencies> +</project> diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/com/example/test/test-artifact-module-a/1.0/test-artifact-module-a-1.0.pom.md5 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/com/example/test/test-artifact-module-a/1.0/test-artifact-module-a-1.0.pom.md5 new file mode 100644 index 000000000..40dc44a73 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/com/example/test/test-artifact-module-a/1.0/test-artifact-module-a-1.0.pom.md5 @@ -0,0 +1 @@ +61a4d030260fc6bee0681cf99ba54674 test-artifact-module-a-1.0.pom diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/com/example/test/test-artifact-module-a/1.0/test-artifact-module-a-1.0.pom.sha1 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/com/example/test/test-artifact-module-a/1.0/test-artifact-module-a-1.0.pom.sha1 new file mode 100644 index 000000000..59d811196 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/com/example/test/test-artifact-module-a/1.0/test-artifact-module-a-1.0.pom.sha1 @@ -0,0 +1 @@ +6f54bc4223bc39d7880420f66baa3a24d7f9c181 test-artifact-module-a-1.0.pom diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/com/example/test/test-artifact-module-b/1.0/test-artifact-module-b-1.0.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/com/example/test/test-artifact-module-b/1.0/test-artifact-module-b-1.0.pom new file mode 100644 index 000000000..1ba7d8710 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/com/example/test/test-artifact-module-b/1.0/test-artifact-module-b-1.0.pom @@ -0,0 +1,20 @@ +<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> + <parent> + <groupId>com.example.test</groupId> + <artifactId>test-snapshot-artifact-root</artifactId> + <version>1.1-SNAPSHOT</version> + </parent> + <artifactId>test-artifact-module-b</artifactId> + <packaging>jar</packaging> + <version>1.0</version> + <name>Test Artifact :: Module B</name> + <url>http://maven.apache.org</url> + <dependencies> + <dependency> + <groupId>commons-io</groupId> + <artifactId>commons-io</artifactId> + </dependency> + </dependencies> +</project> diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/com/example/test/test-artifact-module-b/1.0/test-artifact-module-b-1.0.pom.md5 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/com/example/test/test-artifact-module-b/1.0/test-artifact-module-b-1.0.pom.md5 new file mode 100644 index 000000000..c087db3b9 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/com/example/test/test-artifact-module-b/1.0/test-artifact-module-b-1.0.pom.md5 @@ -0,0 +1 @@ +daa5fa59239b1a81d7c04aea1c235aad test-artifact-module-b-1.0.pom diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/com/example/test/test-artifact-module-b/1.0/test-artifact-module-b-1.0.pom.sha1 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/com/example/test/test-artifact-module-b/1.0/test-artifact-module-b-1.0.pom.sha1 new file mode 100644 index 000000000..3315ef896 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/com/example/test/test-artifact-module-b/1.0/test-artifact-module-b-1.0.pom.sha1 @@ -0,0 +1 @@ +3d0a66ad4f202b823feb367c46c7574cbb0301c8 test-artifact-module-b-1.0.pom diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/com/example/test/test-artifact-parent/1/test-artifact-parent-1.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/com/example/test/test-artifact-parent/1/test-artifact-parent-1.pom new file mode 100644 index 000000000..4a3ebefb0 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/com/example/test/test-artifact-parent/1/test-artifact-parent-1.pom @@ -0,0 +1,41 @@ +<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>com.example.test</groupId> + <artifactId>test-artifact-parent</artifactId> + <version>1</version> + <packaging>pom</packaging> + <name>Test Artifact :: Parent</name> + <description>This is the uber parent POM.</description> + <url>http://test.com</url> + <scm> + <connection>scm:svn:http://svn.example.com/repos/test-artifact-parent/trunk</connection> + <developerConnection>scm:svn:https://svn.example.com/repos/test-artifact-parent/trunk</developerConnection> + <url>http://svn.example.com/repos/test-artifact-parent/trunk</url> + </scm> + <distributionManagement> + <repository> + <id>releases</id> + <name>Releases Repository</name> + <url>http://repo.test.com/archiva/repository/releases</url> + </repository> + <snapshotRepository> + <id>snapshots</id> + <name>Snapshots Repository</name> + <url>http://repo.test.com/archiva/repository/snapshots</url> + </snapshotRepository> + </distributionManagement> + <developers> + <developer> + <id>jsmith</id> + <name>John Smith</name> + <email>jsmith@mail.com</email> + </developer> + </developers> + <licenses> + <license> + <name>The Apache Software License, Version 2.0</name> + <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url> + </license> + </licenses> +</project> diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/com/example/test/test-artifact-parent/1/test-artifact-parent-1.pom.md5 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/com/example/test/test-artifact-parent/1/test-artifact-parent-1.pom.md5 new file mode 100644 index 000000000..98587da1d --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/com/example/test/test-artifact-parent/1/test-artifact-parent-1.pom.md5 @@ -0,0 +1 @@ +92c60efe85e23fe5afd8a854cea87209 test-artifact-parent-1.pom diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/com/example/test/test-artifact-parent/1/test-artifact-parent-1.pom.sha1 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/com/example/test/test-artifact-parent/1/test-artifact-parent-1.pom.sha1 new file mode 100644 index 000000000..a0bcb35bd --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/com/example/test/test-artifact-parent/1/test-artifact-parent-1.pom.sha1 @@ -0,0 +1 @@ +6eca3509acf66023c29e2bc17f73e79d1d1a341a test-artifact-parent-1.pom diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/com/example/test/test-artifact-root/1.0/test-artifact-root-1.0.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/com/example/test/test-artifact-root/1.0/test-artifact-root-1.0.pom new file mode 100644 index 000000000..6fe544923 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/com/example/test/test-artifact-root/1.0/test-artifact-root-1.0.pom @@ -0,0 +1,40 @@ +<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> + <parent> + <groupId>com.example.test</groupId> + <artifactId>test-artifact-parent</artifactId> + <version>1</version> + </parent> + <artifactId>test-artifact-root</artifactId> + <version>1.0</version> + <packaging>pom</packaging> + <name>Test Artifact :: Root</name> + <description>This is the Test project.</description> + <modules> + <module>test-artifact-module-a</module> + <module>test-artifact-module-b</module> + </modules> + <scm> + <connection>scm:svn:http://svn.example.com/repos/test-artifact/trunk</connection> + <developerConnection>scm:svn:https://svn.example.com/repos/test-artifact/trunk</developerConnection> + <url>http://svn.example.com/repos/test-artifact/trunk</url> + </scm> + <dependencyManagement> + <dependencies> + <dependency> + <groupId>commons-io</groupId> + <artifactId>commons-io</artifactId> + <version>1.4</version> + </dependency> + </dependencies> + </dependencyManagement> + <dependencies> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>3.8.1</version> + <scope>test</scope> + </dependency> + </dependencies> +</project> diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/com/example/test/test-artifact-root/1.0/test-artifact-root-1.0.pom.md5 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/com/example/test/test-artifact-root/1.0/test-artifact-root-1.0.pom.md5 new file mode 100644 index 000000000..8870d46d1 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/com/example/test/test-artifact-root/1.0/test-artifact-root-1.0.pom.md5 @@ -0,0 +1 @@ +034449f8696981edce2485b841a02a47 test-artifact-root-1.0.pom diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/com/example/test/test-artifact-root/1.0/test-artifact-root-1.0.pom.sha1 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/com/example/test/test-artifact-root/1.0/test-artifact-root-1.0.pom.sha1 new file mode 100644 index 000000000..eba419703 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/com/example/test/test-artifact-root/1.0/test-artifact-root-1.0.pom.sha1 @@ -0,0 +1 @@ +bef26aec1a0714cec7fa56cdbb7ebcdb452295eb test-artifact-root-1.0.pom diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/com/example/test/test-snapshot-artifact-module-a/1.1-SNAPSHOT/test-snapshot-artifact-module-a-1.1-SNAPSHOT.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/com/example/test/test-snapshot-artifact-module-a/1.1-SNAPSHOT/test-snapshot-artifact-module-a-1.1-SNAPSHOT.pom new file mode 100644 index 000000000..8250e90ca --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/com/example/test/test-snapshot-artifact-module-a/1.1-SNAPSHOT/test-snapshot-artifact-module-a-1.1-SNAPSHOT.pom @@ -0,0 +1,18 @@ +<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> + <parent> + <groupId>com.example.test</groupId> + <artifactId>test-snapshot-artifact-root</artifactId> + <version>1.1-SNAPSHOT</version> + </parent> + <artifactId>test-snapshot-artifact-module-a</artifactId> + <packaging>jar</packaging> + <name>Test Snapshot Artifact :: Module A</name> + <dependencies> + <dependency> + <groupId>commons-io</groupId> + <artifactId>commons-io</artifactId> + </dependency> + </dependencies> +</project> diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/com/example/test/test-snapshot-artifact-module-a/1.1-SNAPSHOT/test-snapshot-artifact-module-a-1.1-SNAPSHOT.pom.md5 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/com/example/test/test-snapshot-artifact-module-a/1.1-SNAPSHOT/test-snapshot-artifact-module-a-1.1-SNAPSHOT.pom.md5 new file mode 100644 index 000000000..a36564b4f --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/com/example/test/test-snapshot-artifact-module-a/1.1-SNAPSHOT/test-snapshot-artifact-module-a-1.1-SNAPSHOT.pom.md5 @@ -0,0 +1 @@ +3b689a3c3cacecdf4371c342606211f1 test-snapshot-artifact-module-a-1.1-SNAPSHOT.pom diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/com/example/test/test-snapshot-artifact-module-a/1.1-SNAPSHOT/test-snapshot-artifact-module-a-1.1-SNAPSHOT.pom.sha1 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/com/example/test/test-snapshot-artifact-module-a/1.1-SNAPSHOT/test-snapshot-artifact-module-a-1.1-SNAPSHOT.pom.sha1 new file mode 100644 index 000000000..e9d1ab6f9 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/com/example/test/test-snapshot-artifact-module-a/1.1-SNAPSHOT/test-snapshot-artifact-module-a-1.1-SNAPSHOT.pom.sha1 @@ -0,0 +1 @@ +b401e87baeeb0174efd85eaf327d9c98efe79cf1 test-snapshot-artifact-module-a-1.1-SNAPSHOT.pom diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/com/example/test/test-snapshot-artifact-root/1.1-SNAPSHOT/maven-metadata.xml b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/com/example/test/test-snapshot-artifact-root/1.1-SNAPSHOT/maven-metadata.xml new file mode 100644 index 000000000..8fa2f8f08 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/com/example/test/test-snapshot-artifact-root/1.1-SNAPSHOT/maven-metadata.xml @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="UTF-8"?> +<metadata> + <groupId>com.example.test</groupId> + <artifactId>test-snapshot-artifact-root</artifactId> + <version>1.1-SNAPSHOT</version> + <versioning> + <snapshot> + <timestamp>20100310.014828</timestamp> + <buildNumber>2</buildNumber> + </snapshot> + <lastUpdated>20100310014828</lastUpdated> + </versioning> +</metadata> diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/com/example/test/test-snapshot-artifact-root/1.1-SNAPSHOT/test-snapshot-artifact-root-1.1-20100310.014828-2.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/com/example/test/test-snapshot-artifact-root/1.1-SNAPSHOT/test-snapshot-artifact-root-1.1-20100310.014828-2.pom new file mode 100644 index 000000000..75fe8be54 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/com/example/test/test-snapshot-artifact-root/1.1-SNAPSHOT/test-snapshot-artifact-root-1.1-20100310.014828-2.pom @@ -0,0 +1,39 @@ +<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> + <parent> + <groupId>com.example.test</groupId> + <artifactId>test-artifact-parent</artifactId> + <version>1</version> + </parent> + <artifactId>test-snapshot-artifact-root</artifactId> + <version>1.1-SNAPSHOT</version> + <packaging>pom</packaging> + <name>Test Snapshot Artifact :: Root</name> + <description>This is the Test project.</description> + <modules> + <module>test-snapshot-artifact-module-a</module> + </modules> + <scm> + <connection>scm:svn:http://svn.example.com/repos/test-snapshot-artifact/trunk</connection> + <developerConnection>scm:svn:https://svn.example.com/repos/test-snapshot-artifact/trunk</developerConnection> + <url>http://svn.example.com/repos/test-snapshot-artifact/trunk</url> + </scm> + <dependencyManagement> + <dependencies> + <dependency> + <groupId>commons-io</groupId> + <artifactId>commons-io</artifactId> + <version>1.4</version> + </dependency> + </dependencies> + </dependencyManagement> + <dependencies> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>3.8.1</version> + <scope>test</scope> + </dependency> + </dependencies> +</project> diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/com/example/test/test-snapshot-artifact-root/1.1-SNAPSHOT/test-snapshot-artifact-root-1.1-20100310.014828-2.pom.md5 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/com/example/test/test-snapshot-artifact-root/1.1-SNAPSHOT/test-snapshot-artifact-root-1.1-20100310.014828-2.pom.md5 new file mode 100644 index 000000000..278e71bca --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/com/example/test/test-snapshot-artifact-root/1.1-SNAPSHOT/test-snapshot-artifact-root-1.1-20100310.014828-2.pom.md5 @@ -0,0 +1 @@ +0c304367d7a99291eb8292b1fe7114a2 test-snapshot-artifact-root-1.1-20100310.014828-2.pom diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/com/example/test/test-snapshot-artifact-root/1.1-SNAPSHOT/test-snapshot-artifact-root-1.1-20100310.014828-2.pom.sha1 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/com/example/test/test-snapshot-artifact-root/1.1-SNAPSHOT/test-snapshot-artifact-root-1.1-20100310.014828-2.pom.sha1 new file mode 100644 index 000000000..3fe44e181 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/com/example/test/test-snapshot-artifact-root/1.1-SNAPSHOT/test-snapshot-artifact-root-1.1-20100310.014828-2.pom.sha1 @@ -0,0 +1 @@ +e5e6ca9ae3628ae474c155619467848dc900b8cf test-snapshot-artifact-root-1.1-20100310.014828-2.pom diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/commons-io/commons-io/1.4/commons-io-1.4.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/commons-io/commons-io/1.4/commons-io-1.4.pom new file mode 100644 index 000000000..09abb5a47 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/commons-io/commons-io/1.4/commons-io-1.4.pom @@ -0,0 +1,419 @@ +<?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. +--> +<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.commons</groupId> + <artifactId>commons-parent</artifactId> + <version>7</version> + </parent> + <modelVersion>4.0.0</modelVersion> + <groupId>commons-io</groupId> + <artifactId>commons-io</artifactId> + <version>1.4</version> + <name>Commons IO</name> + + <inceptionYear>2002</inceptionYear> + <description> + Commons-IO contains utility classes, stream implementations, file filters, file comparators and endian classes. + </description> + + <url>http://commons.apache.org/io/</url> + + <issueManagement> + <system>jira</system> + <url>http://issues.apache.org/jira/browse/IO</url> + </issueManagement> + + <scm> + <connection>scm:svn:http://svn.apache.org/repos/asf/commons/proper/io/trunk</connection> + <developerConnection>scm:svn:https://svn.apache.org/repos/asf/commons/proper/io/trunk</developerConnection> + <url>http://svn.apache.org/viewvc/commons/proper/io/trunk</url> + </scm> + + <developers> + <developer> + <name>Scott Sanders</name> + <id>sanders</id> + <email>sanders@apache.org</email> + <organization></organization> + <roles> + <role>Java Developer</role> + </roles> + </developer> + <developer> + <name>dIon Gillard</name> + <id>dion</id> + <email>dion@apache.org</email> + <organization></organization> + <roles> + <role>Java Developer</role> + </roles> + </developer> + <developer> + <name>Nicola Ken Barozzi</name> + <id>nicolaken</id> + <email>nicolaken@apache.org</email> + <organization></organization> + <roles> + <role>Java Developer</role> + </roles> + </developer> + <developer> + <name>Henri Yandell</name> + <id>bayard</id> + <email>bayard@apache.org</email> + <organization></organization> + <roles> + <role>Java Developer</role> + </roles> + </developer> + <developer> + <name>Stephen Colebourne</name> + <id>scolebourne</id> + <organization></organization> + <roles> + <role>Java Developer</role> + </roles> + <timezone>0</timezone> + </developer> + <developer> + <name>Jeremias Maerki</name> + <id>jeremias</id> + <email>jeremias@apache.org</email> + <organization/> + <roles> + <role>Java Developer</role> + </roles> + <timezone>+1</timezone> + </developer> + <developer> + <name>Matthew Hawthorne</name> + <id>matth</id> + <email>matth@apache.org</email> + <organization/> + <roles> + <role>Java Developer</role> + </roles> + </developer> + <developer> + <name>Martin Cooper</name> + <id>martinc</id> + <email>martinc@apache.org</email> + <organization/> + <roles> + <role>Java Developer</role> + </roles> + </developer> + <developer> + <name>Rob Oxspring</name> + <id>roxspring</id> + <email>roxspring@apache.org</email> + <organization/> + <roles> + <role>Java Developer</role> + </roles> + </developer> + <developer> + <name>Jochen Wiedmann</name> + <id>jochen</id> + <email>jochen.wiedmann@gmail.com</email> + </developer> + <developer> + <name>Niall Pemberton</name> + <id>niallp</id> + <roles> + <role>Java Developer</role> + </roles> + </developer> + <developer> + <name>Jukka Zitting</name> + <id>jukka</id> + <roles> + <role>Java Developer</role> + </roles> + </developer> + </developers> + + <contributors> + <contributor> + <name>Rahul Akolkar</name> + </contributor> + <contributor> + <name>Jason Anderson</name> + </contributor> + <contributor> + <name>Nathan Beyer</name> + </contributor> + <contributor> + <name>Emmanuel Bourg</name> + </contributor> + <contributor> + <name>Chris Eldredge</name> + </contributor> + <contributor> + <name>Magnus Grimsell</name> + </contributor> + <contributor> + <name>Jim Harrington</name> + </contributor> + <contributor> + <name>Thomas Ledoux</name> + </contributor> + <contributor> + <name>Andy Lehane</name> + </contributor> + <contributor> + <name>Marcelo Liberato</name> + </contributor> + <contributor> + <name>Alban Peignier</name> + <email>alban.peignier at free.fr</email> + </contributor> + <contributor> + <name>Ian Springer</name> + </contributor> + <contributor> + <name>Masato Tezuka</name> + </contributor> + <contributor> + <name>James Urie</name> + </contributor> + <contributor> + <name>Frank W. Zammetti</name> + </contributor> + </contributors> + + <dependencies> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>3.8.1</version> + <scope>test</scope> + </dependency> + </dependencies> + + <build> + <sourceDirectory>src/java</sourceDirectory> + <testSourceDirectory>src/test</testSourceDirectory> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-surefire-plugin</artifactId> + <configuration> + <includes> + <include>**/*Test*</include> + </includes> + <excludes> + <exclude>**/*AbstractTestCase*</exclude> + <exclude>**/AllIOTestSuite*</exclude> + <exclude>**/PackageTestSuite*</exclude> + <exclude>**/testtools/**</exclude> + + <!-- http://jira.codehaus.org/browse/SUREFIRE-44 --> + <exclude>**/*$*</exclude> + </excludes> + </configuration> + </plugin> + <plugin> + <artifactId>maven-assembly-plugin</artifactId> + <configuration> + <descriptors> + <descriptor>src/main/assembly/bin.xml</descriptor> + <descriptor>src/main/assembly/src.xml</descriptor> + </descriptors> + <tarLongFileMode>gnu</tarLongFileMode> + </configuration> + </plugin> + + <plugin> + <artifactId>maven-jar-plugin</artifactId> + <configuration> + <archive> + <!-- + Configure OSGi bundle information + (remove when maven bundle plugin is added to commons-parent pom) + --> + <manifestEntries> + <Bundle-SymbolicName>org.apache.commons.io</Bundle-SymbolicName> + <Bundle-License>http://www.apache.org/licenses/LICENSE-2.0.txt</Bundle-License> + <Bundle-ManifestVersion>2</Bundle-ManifestVersion> + <Bundle-Name>Apache Commons IO Bundle</Bundle-Name> + <Bundle-Vendor>${project.organization.name}</Bundle-Vendor> + <Bundle-Version>${project.version}</Bundle-Version> + <Export-Package> +org.apache.commons.io;version=${project.version}, +org.apache.commons.io.comparator;version=${project.version}, +org.apache.commons.io.filefilter;version=${project.version}, +org.apache.commons.io.input;version=${project.version}, +org.apache.commons.io.output;version=${project.version} + </Export-Package> + <Import-Package> +org.apache.commons.io;version=${project.version}, +org.apache.commons.io.comparator;version=${project.version}, +org.apache.commons.io.filefilter;version=${project.version}, +org.apache.commons.io.input;version=${project.version}, +org.apache.commons.io.output;version=${project.version} + </Import-Package> + </manifestEntries> + </archive> + </configuration> + </plugin> + </plugins> + </build> + + <reporting> + <plugins> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>cobertura-maven-plugin</artifactId> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-changes-plugin</artifactId> + <version>2.0-beta-3</version> + <configuration> + <issueLinkTemplate>%URL%/../%ISSUE%</issueLinkTemplate> + <!-- + JIRA Search parameters: + - resolution=1 specifies "Fixed" + - fixfor=12312101 specifies "Commons IO version 1.4" + + If/when http://jira.codehaus.org/browse/MCHANGES-92 + is fixed this will be easier/less messy + --> + <filter>&&resolution=1&fixfor=12312101</filter> + </configuration> + <reportSets> + <reportSet> + <reports> + <report>jira-report</report> + </reports> + </reportSet> + </reportSets> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-checkstyle-plugin</artifactId> + <version>2.1</version> + <configuration> + <configLocation>checkstyle.xml</configLocation> + <enableRulesSummary>false</enableRulesSummary> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-javadoc-plugin</artifactId> + <version>2.3</version> + <configuration> + <source>1.4</source> + <links> + <link>http://java.sun.com/j2se/1.4.2/docs/api</link> + </links> + </configuration> + </plugin> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>clirr-maven-plugin</artifactId> + <version>2.1</version> + <configuration> + <comparisonVersion>1.3.2</comparisonVersion> + <minSeverity>info</minSeverity> + </configuration> + </plugin> + </plugins> + </reporting> + + <profiles> + <profile> + <id>release</id> + <build> + <plugins> + <plugin> + <artifactId>maven-site-plugin</artifactId> + <executions> + <execution> + <goals> + <goal>site</goal> + </goals> + <phase>package</phase> + </execution> + </executions> + </plugin> + <plugin> + <artifactId>maven-antrun-plugin</artifactId> + <executions> + <execution> + <goals> + <goal>run</goal> + </goals> + <phase>package</phase> + <configuration> + <tasks> + <copy todir="${project.build.directory}/site/api-release"> + <fileset dir="${project.build.directory}/site/apidocs"/> + </copy> + </tasks> + </configuration> + </execution> + </executions> + </plugin> + <plugin> + <artifactId>maven-assembly-plugin</artifactId> + <executions> + <execution> + <goals> + <goal>attached</goal> + </goals> + <phase>package</phase> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + <profile> + <id>rc</id> + <build> + <plugins> + <plugin> + <artifactId>maven-site-plugin</artifactId> + <executions> + <execution> + <goals> + <goal>site</goal> + </goals> + <phase>package</phase> + </execution> + </executions> + </plugin> + <plugin> + <artifactId>maven-assembly-plugin</artifactId> + <executions> + <execution> + <goals> + <goal>attached</goal> + </goals> + <phase>package</phase> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + </profiles> +</project> diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/m1-repo-filelist.txt b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/m1-repo-filelist.txt new file mode 100644 index 000000000..3ddb2c4ce --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/m1-repo-filelist.txt @@ -0,0 +1,6230 @@ +# Directory listing from people.apache.org +# of path /www/people.apache.org/repo/m1-ibiblio-rsync-repository +# Taken September 9, 2007 +# +# File listing has been filtered using the following sed command. +# +# sed -e "/\.md5$/d" -e "/\.sha1$/d" -e "/\.asc$/d" -e "/\.meta$/d" \ +# -e "/LICENSE/d" -e "/\/licenses\//d" +# +# Any entries in here that are blatently wrong should be deleted. +# +ant/jars/ant-1.4.1.jar +ant/jars/ant-1.5.1.jar +ant/jars/ant-1.5.2.jar +ant/jars/ant-1.5.3-1.jar +ant/jars/ant-1.5.4.jar +ant/jars/ant-1.6.3.jar +ant/jars/ant-1.5.jar +ant/jars/ant-1.6.1.jar +ant/jars/ant-1.6.2.jar +ant/jars/ant-1.6.jar +ant/jars/ant-1.6.4.jar +ant/jars/ant-1.6.5.jar +ant/jars/ant-antlr-1.6.1.jar +ant/jars/ant-antlr-1.6.2.jar +ant/jars/ant-antlr-1.6.3.jar +ant/jars/ant-antlr-1.6.4.jar +ant/jars/ant-apache-oro-1.6.5.jar +ant/jars/ant-antlr-1.6.5.jar +ant/jars/ant-antlr-1.6.jar +ant/jars/ant-apache-bcel-1.6.2.jar +ant/jars/ant-apache-bcel-1.6.3.jar +ant/jars/ant-apache-bcel-1.6.4.jar +ant/jars/ant-apache-bcel-1.6.5.jar +ant/jars/ant-apache-bsf-1.6.1.jar +ant/jars/ant-apache-bsf-1.6.2.jar +ant/jars/ant-apache-bsf-1.6.3.jar +ant/jars/ant-apache-bsf-1.6.4.jar +ant/jars/ant-apache-bsf-1.6.5.jar +ant/jars/ant-apache-bsf-1.6.jar +ant/jars/ant-apache-log4j-1.6.2.jar +ant/jars/ant-apache-log4j-1.6.3.jar +ant/jars/ant-apache-log4j-1.6.4.jar +ant/jars/ant-apache-log4j-1.6.5.jar +ant/jars/ant-apache-oro-1.6.2.jar +ant/jars/ant-apache-oro-1.6.3.jar +ant/jars/ant-apache-oro-1.6.4.jar +ant/jars/ant-apache-regexp-1.6.2.jar +ant/jars/ant-apache-regexp-1.6.3.jar +ant/jars/ant-apache-regexp-1.6.4.jar +ant/jars/ant-apache-regexp-1.6.5.jar +ant/jars/ant-apache-resolver-1.6.jar +ant/jars/ant-apache-resolver-1.6.1.jar +ant/jars/ant-apache-resolver-1.6.2.jar +ant/jars/ant-apache-resolver-1.6.3.jar +ant/jars/ant-apache-resolver-1.6.4.jar +ant/jars/ant-apache-resolver-1.6.5.jar +ant/jars/ant-commons-logging-1.6.1.jar +ant/jars/ant-commons-logging-1.6.2.jar +ant/jars/ant-commons-logging-1.6.3.jar +ant/jars/ant-commons-logging-1.6.4.jar +ant/jars/ant-commons-logging-1.6.5.jar +ant/jars/ant-commons-logging-1.6.jar +ant/jars/ant-commons-net-1.6.1.jar +ant/jars/ant-commons-net-1.6.2.jar +ant/jars/ant-commons-net-1.6.3.jar +ant/jars/ant-commons-net-1.6.jar +ant/jars/ant-commons-net-1.6.4.jar +ant/jars/ant-commons-net-1.6.5.jar +ant/jars/ant-icontract-1.6.1.jar +ant/jars/ant-icontract-1.6.2.jar +ant/jars/ant-icontract-1.6.3.jar +ant/jars/ant-icontract-1.6.4.jar +ant/jars/ant-icontract-1.6.5.jar +ant/jars/ant-icontract-1.6.jar +ant/jars/ant-jai-1.6.1.jar +ant/jars/ant-jai-1.6.2.jar +ant/jars/ant-jai-1.6.3.jar +ant/jars/ant-jakarta-bcel-1.6.1.jar +ant/jars/ant-jai-1.6.4.jar +ant/jars/ant-jai-1.6.5.jar +ant/jars/ant-jai-1.6.jar +ant/jars/ant-jakarta-bcel-1.6.jar +ant/jars/ant-jakarta-log4j-1.6.1.jar +ant/jars/ant-jakarta-log4j-1.6.jar +ant/jars/ant-jakarta-oro-1.6.1.jar +ant/jars/ant-jakarta-oro-1.6.jar +ant/jars/ant-jakarta-regexp-1.6.1.jar +ant/jars/ant-jakarta-regexp-1.6.jar +ant/jars/ant-javamail-1.6.1.jar +ant/jars/ant-javamail-1.6.2.jar +ant/jars/ant-javamail-1.6.3.jar +ant/jars/ant-javamail-1.6.4.jar +ant/jars/ant-javamail-1.6.5.jar +ant/jars/ant-javamail-1.6.jar +ant/jars/ant-jdepend-1.6.1.jar +ant/jars/ant-jdepend-1.6.2.jar +ant/jars/ant-jdepend-1.6.jar +ant/jars/ant-jdepend-1.6.3.jar +ant/jars/ant-jdepend-1.6.4.jar +ant/jars/ant-jdepend-1.6.5.jar +ant/jars/ant-jmf-1.6.1.jar +ant/jars/ant-jmf-1.6.2.jar +ant/jars/ant-jmf-1.6.3.jar +ant/jars/ant-jmf-1.6.4.jar +ant/jars/ant-jmf-1.6.5.jar +ant/jars/ant-jmf-1.6.jar +ant/jars/ant-jsch-1.6.1.jar +ant/jars/ant-jsch-1.6.2.jar +ant/jars/ant-jsch-1.6.3.jar +ant/jars/ant-jsch-1.6.4.jar +ant/jars/ant-jsch-1.6.5.jar +ant/jars/ant-jsch-1.6.jar +ant/jars/ant-junit-1.6.1.jar +ant/jars/ant-junit-1.6.2.jar +ant/jars/ant-junit-1.6.3.jar +ant/jars/ant-junit-1.6.4.jar +ant/jars/ant-junit-1.6.5.jar +ant/jars/ant-junit-1.6.jar +ant/jars/ant-launcher-1.6.1.jar +ant/jars/ant-launcher-1.6.2.jar +ant/jars/ant-launcher-1.6.3.jar +ant/jars/ant-launcher-1.6.4.jar +ant/jars/ant-launcher-1.6.5.jar +ant/jars/ant-launcher-1.6.jar +ant/jars/ant-netrexx-1.6.1.jar +ant/jars/ant-netrexx-1.6.2.jar +ant/jars/ant-netrexx-1.6.3.jar +ant/jars/ant-netrexx-1.6.4.jar +ant/jars/ant-netrexx-1.6.5.jar +ant/jars/ant-netrexx-1.6.jar +ant/jars/ant-nodeps-1.6.1.jar +ant/jars/ant-nodeps-1.6.2.jar +ant/jars/ant-nodeps-1.6.3.jar +ant/jars/ant-nodeps-1.6.4.jar +ant/jars/ant-nodeps-1.6.5.jar +ant/jars/ant-nodeps-1.6.jar +ant/jars/ant-optional-1.4.1.jar +ant/jars/ant-optional-1.5.1.jar +ant/jars/ant-optional-1.5.2.jar +ant/jars/ant-optional-1.5.3-1.jar +ant/jars/ant-optional-1.5.jar +ant/jars/ant-starteam-1.6.1.jar +ant/jars/ant-starteam-1.6.2.jar +ant/jars/ant-starteam-1.6.3.jar +ant/jars/ant-starteam-1.6.4.jar +ant/jars/ant-starteam-1.6.5.jar +ant/jars/ant-swing-1.6.1.jar +ant/jars/ant-starteam-1.6.jar +ant/jars/ant-stylebook-1.6.1.jar +ant/jars/ant-stylebook-1.6.2.jar +ant/jars/ant-stylebook-1.6.3.jar +ant/jars/ant-stylebook-1.6.4.jar +ant/jars/ant-swing-1.6.5.jar +ant/jars/ant-stylebook-1.6.5.jar +ant/jars/ant-stylebook-1.6.jar +ant/jars/ant-swing-1.6.2.jar +ant/jars/ant-swing-1.6.3.jar +ant/jars/ant-swing-1.6.4.jar +ant/jars/ant-swing-1.6.jar +ant/jars/ant-trax-1.6.1.jar +ant/jars/ant-trax-1.6.2.jar +ant/jars/ant-trax-1.6.3.jar +ant/jars/ant-trax-1.6.4.jar +ant/jars/ant-trax-1.6.5.jar +ant/jars/ant-trax-1.6.jar +ant/jars/ant-vaj-1.6.1.jar +ant/jars/ant-vaj-1.6.2.jar +ant/jars/ant-vaj-1.6.3.jar +ant/jars/ant-vaj-1.6.4.jar +ant/jars/ant-vaj-1.6.5.jar +ant/jars/ant-vaj-1.6.jar +ant/jars/ant-weblogic-1.6.1.jar +ant/jars/ant-weblogic-1.6.2.jar +ant/jars/ant-weblogic-1.6.3.jar +ant/jars/ant-weblogic-1.6.4.jar +ant/jars/ant-weblogic-1.6.5.jar +ant/jars/ant-weblogic-1.6.jar +ant/jars/ant-xalan1-1.6.1.jar +ant/jars/ant-xalan1-1.6.2.jar +ant/jars/ant-xalan1-1.6.3.jar +ant/jars/ant-xalan1-1.6.4.jar +ant/jars/ant-xalan1-1.6.5.jar +ant/jars/ant-xalan1-1.6.jar +ant/jars/ant-xalan2-1.6.1.jar +ant/jars/ant-xalan2-1.6.jar +ant/jars/ant-xslp-1.6.1.jar +ant/jars/ant-xslp-1.6.2.jar +ant/jars/ant-xslp-1.6.3.jar +ant/jars/ant-xslp-1.6.4.jar +ant/jars/ant-xslp-1.6.5.jar +ant/jars/ant-xslp-1.6.jar +ant/jars/optional-1.5.4.jar +ant-contrib/jars/ant-contrib-20020829.jar +ant-contrib/jars/cpptasks-20030309.134440.jar +ant-doxygen/jars/ant-doxygen-1.2.jar +apache-jaxme/jars/jaxme-incubation-0.2.jar +apache-jaxme/jars/jaxme-rt-incubation-0.2.jar +apache-jaxme/jars/jaxmeapi-incubation-0.2.jar +apache-jaxme/jars/jaxmejs-incubation-0.2.jar +apache-jaxme/jars/jaxmepm-incubation-0.2.jar +apache-jaxme/jars/jaxmexs-incubation-0.2.jar +avalon/jars/avalon-activation-1.0.jar +avalon/jars/avalon-activation-spi-1.0.jar +avalon/jars/avalon-assembly-1.0.jar +avalon/jars/avalon-assembly-spi-1.0.jar +avalon/jars/avalon-composition-1.0.jar +avalon/jars/avalon-meta-1.0.jar +avalon/jars/avalon-composition-spi-1.0.jar +avalon/jars/avalon-framework-4.1.4.jar +avalon/jars/avalon-framework-api-4.1.4.jar +avalon/jars/avalon-logkit-1.2.2.jar +avalon/jars/avalon-logkit-1.2.jar +avalon/jars/avalon-meta-spi-1.0.jar +avalon/jars/avalon-meta-tools-1.0.jar +avalon-activation/jars/avalon-activation-api-1.0-beta-1-RC1.jar +avalon-activation/jars/avalon-activation-api-1.0b1.jar +avalon-activation/jars/avalon-activation-api-1.1-dev.jar +avalon-activation/jars/avalon-activation-api-1.2-dev.jar +avalon-activation/jars/avalon-activation-api-1.2.1-dev.jar +avalon-activation/jars/avalon-activation-api-1.2.1.jar +avalon-activation/jars/avalon-activation-api-1.2.2.jar +avalon-activation/jars/avalon-activation-api-2.0-DEV.jar +avalon-activation/jars/avalon-activation-api-2.0.0.jar +avalon-activation/jars/avalon-activation-impl-1.0-beta-1-RC1.jar +avalon-activation/jars/avalon-activation-impl-1.0b1.jar +avalon-activation/jars/avalon-activation-impl-1.0b2.jar +avalon-activation/jars/avalon-activation-impl-1.1-dev.jar +avalon-activation/jars/avalon-activation-impl-1.2-dev.jar +avalon-activation/jars/avalon-activation-impl-1.2.1-dev.jar +avalon-activation/jars/avalon-activation-impl-1.2.2-dev.jar +avalon-activation/jars/avalon-activation-impl-1.2.3-dev.jar +avalon-activation/jars/avalon-activation-impl-1.2.3.jar +avalon-activation/jars/avalon-activation-impl-1.2.4.jar +avalon-activation/jars/avalon-activation-impl-1.2.5.jar +avalon-activation/jars/avalon-activation-impl-1.2.6.jar +avalon-activation/jars/avalon-activation-impl-2.0-DEV.jar +avalon-activation/jars/avalon-activation-impl-2.0.0.jar +avalon-activation/jars/avalon-activation-spi-1.0-beta-1-RC1.jar +avalon-activation/jars/avalon-activation-spi-1.0b1.jar +avalon-activation/jars/avalon-activation-spi-1.1-dev.jar +avalon-activation/jars/avalon-activation-spi-1.2-dev.jar +avalon-activation/jars/avalon-activation-spi-1.2.1-dev.jar +avalon-activation/jars/avalon-activation-spi-1.2.2-dev.jar +avalon-activation/jars/avalon-activation-spi-1.2.2.jar +avalon-activation/jars/avalon-activation-spi-2.0-DEV.jar +avalon-apps/jars/avalon-apps-hsql-0.1.jar +avalon-apps/jars/avalon-apps-sevak-api-0.1.jar +avalon-apps/jars/avalon-apps-sevak-jo-0.1.jar +avalon-composition/jars/avalon-composition-api-1.0-beta-1-RC1.jar +avalon-composition/jars/avalon-composition-api-1.0b1.jar +avalon-composition/jars/avalon-composition-api-1.1-dev.jar +avalon-composition/jars/avalon-composition-api-1.2-dev.jar +avalon-composition/jars/avalon-composition-api-1.2.1-dev.jar +avalon-composition/jars/avalon-composition-api-1.2.1.jar +avalon-composition/jars/avalon-composition-api-1.2.2.jar +avalon-composition/jars/avalon-composition-api-1.2.3.jar +avalon-composition/jars/avalon-composition-api-2.0-DEV.jar +avalon-composition/jars/avalon-composition-api-2.0.0.jar +avalon-composition/jars/avalon-composition-impl-1.0-beta-1-RC1.jar +avalon-composition/jars/avalon-composition-impl-1.0b1.jar +avalon-composition/jars/avalon-composition-impl-1.1-dev.jar +avalon-composition/jars/avalon-composition-impl-1.2-dev.jar +avalon-composition/jars/avalon-composition-impl-1.2.1-dev.jar +avalon-composition/jars/avalon-composition-impl-1.2.2-dev.jar +avalon-composition/jars/avalon-composition-impl-1.2.2.jar +avalon-composition/jars/avalon-composition-impl-1.2.3.jar +avalon-composition/jars/avalon-composition-impl-1.2.4.jar +avalon-composition/jars/avalon-composition-impl-1.2.5.jar +avalon-composition/jars/avalon-composition-impl-2.0-DEV.jar +avalon-composition/jars/avalon-composition-impl-2.0.0.jar +avalon-composition/jars/avalon-composition-spi-1.0-beta-1-RC1.jar +avalon-composition/jars/avalon-composition-spi-1.0b1.jar +avalon-composition/jars/avalon-composition-spi-1.1-dev.jar +avalon-composition/jars/avalon-composition-spi-1.2-dev.jar +avalon-composition/jars/avalon-composition-spi-1.2.1-dev.jar +avalon-composition/jars/avalon-composition-spi-1.2.1.jar +avalon-composition/jars/avalon-composition-spi-2.0-DEV.jar +avalon-composition/jars/avalon-composition-spi-2.0.0.jar +avalon-cornerstone/jars/avalon-cornerstone-4.0.jar +avalon-extension/jars/avalon-extension-impl-1.0-RC1.jar +avalon-extension/jars/avalon-extension-impl-1.0.jar +avalon-extension/jars/avalon-extension-impl-1.1.jar +avalon-extension/jars/avalon-extension-spi-1.0-RC1.jar +avalon-extension/jars/avalon-extension-spi-1.0.jar +avalon-extension/jars/avalon-extension-spi-1.1.jar +avalon-framework/distributions/avalon-framework-4.1.5-RC3-src.tar.gz +avalon-framework/distributions/avalon-framework-4.1.5-RC3-src.zip +avalon-framework/distributions/avalon-framework-4.1.5-RC3.tar.gz +avalon-framework/distributions/avalon-framework-4.1.5-RC3.zip +avalon-framework/distributions/avalon-framework-4.1.5.src.tar.gz +avalon-framework/distributions/avalon-framework-4.1.5.src.zip +avalon-framework/distributions/avalon-framework-4.1.5.tar.gz +avalon-framework/distributions/avalon-framework-4.1.5.zip +avalon-framework/jars/avalon-framework-20020627.jar +avalon-framework/jars/avalon-framework-4.0.jar +avalon-framework/jars/avalon-framework-4.1.3.jar +avalon-framework/jars/avalon-framework-4.1.4.jar +avalon-framework/jars/avalon-framework-4.1.5-RC2.jar +avalon-framework/jars/avalon-framework-4.1.5-dev.jar +avalon-framework/jars/avalon-framework-4.1.5.jar +avalon-framework/jars/avalon-framework-api-4.1.5-RC2.jar +avalon-framework/jars/avalon-framework-api-4.1.5-RC3.jar +avalon-framework/jars/avalon-framework-api-4.1.5-dev.jar +avalon-framework/jars/avalon-framework-api-4.1.5.jar +avalon-framework/jars/avalon-framework-api-4.2.0.jar +avalon-framework/jars/avalon-framework-api-4.3.jar +avalon-framework/jars/avalon-framework-impl-4.1.5-RC2.jar +avalon-framework/jars/avalon-framework-impl-4.1.5-RC3.jar +avalon-framework/jars/avalon-framework-impl-4.1.5-dev.jar +avalon-framework/jars/avalon-framework-impl-4.1.5.jar +avalon-framework/jars/avalon-framework-impl-4.2.0.jar +avalon-framework/jars/avalon-framework-impl-4.3.jar +avalon-framework/poms/avalon-framework-api-4.3.pom +avalon-framework/poms/avalon-framework-impl-4.3.pom +avalon-http/blocks/avalon-http-1.3.block +avalon-http/jars/avalon-http-api-1.3.jar +avalon-http/jars/avalon-http-impl-1.3.jar +avalon-logging/jars/avalon-logging-api-1.0.0.jar +avalon-logging/jars/avalon-logging-impl-1.0.0.jar +avalon-logging/jars/avalon-logging-logkit-api-1.0.0.jar +avalon-logging/jars/avalon-logging-logkit-impl-1.0.0.jar +avalon-logging/jars/avalon-logging-spi-1.0.0.jar +avalon-logkit/jars/avalon-logkit-2.0.0.jar +avalon-logkit/jars/avalon-logkit-2.0.jar +avalon-logkit/jars/avalon-logkit-2.1.jar +avalon-logkit/poms/avalon-logkit-2.1.pom +avalon-meta/distributions/1.1/avalon-meta-1.1-src.tar.gz +avalon-meta/distributions/1.1/avalon-meta-1.1-src.zip +avalon-meta/distributions/1.1/avalon-meta-1.1.tar.gz +avalon-meta/distributions/1.1/avalon-meta-1.1.zip +avalon-meta/distributions/1.3/avalon-meta-1.3-src.tar.gz.MD5 +avalon-meta/distributions/1.3/avalon-meta-1.3-src.tar.gz +avalon-meta/distributions/1.3/avalon-meta-1.3-src.zip.MD5 +avalon-meta/distributions/1.3/avalon-meta-1.3-src.zip +avalon-meta/distributions/1.3/avalon-meta-1.3.tar.gz.MD5 +avalon-meta/distributions/1.3/avalon-meta-1.3.tar.gz +avalon-meta/distributions/1.3/avalon-meta-1.3.zip.MD5 +avalon-meta/distributions/1.3/avalon-meta-1.3.zip +avalon-meta/distributions/1.3.1/avalon-meta-1.3.1-src.tar.gz.MD5 +avalon-meta/distributions/1.3.1/avalon-meta-1.3.1-src.tar.gz +avalon-meta/distributions/1.3.1/avalon-meta-1.3.1-src.zip.MD5 +avalon-meta/distributions/1.3.1/avalon-meta-1.3.1-src.zip +avalon-meta/distributions/1.3.1/avalon-meta-1.3.1.tar.gz.MD5 +avalon-meta/distributions/1.3.1/avalon-meta-1.3.1.tar.gz +avalon-meta/distributions/1.3.1/avalon-meta-1.3.1.zip.MD5 +avalon-meta/distributions/1.3.1/avalon-meta-1.3.1.zip +avalon-meta/jars/avalon-meta-api-1.2.1-dev.jar +avalon-meta/jars/avalon-meta-api-1.1-RC1.jar +avalon-meta/jars/avalon-meta-api-1.1.jar +avalon-meta/jars/avalon-meta-api-1.2-dev.jar +avalon-meta/jars/avalon-meta-api-1.4.0.jar +avalon-meta/jars/avalon-meta-api-1.3.jar +avalon-meta/jars/avalon-meta-spi-1.2.1-dev.jar +avalon-meta/jars/avalon-meta-impl-1.1-RC1.jar +avalon-meta/jars/avalon-meta-impl-1.1.jar +avalon-meta/jars/avalon-meta-impl-1.2-dev.jar +avalon-meta/jars/avalon-meta-spi-1.2-dev.jar +avalon-meta/jars/avalon-meta-impl-1.2.1-dev.jar +avalon-meta/jars/avalon-meta-impl-1.3.1.jar +avalon-meta/jars/avalon-meta-impl-1.3.jar +avalon-meta/jars/avalon-meta-impl-1.4.0.jar +avalon-meta/jars/avalon-meta-plugin-1.1.jar +avalon-meta/jars/avalon-meta-plugin-1.2.jar +avalon-meta/jars/avalon-meta-plugin-1.3.1.jar +avalon-meta/jars/avalon-meta-plugin-1.3.2.jar +avalon-meta/jars/avalon-meta-plugin-1.3.jar +avalon-meta/jars/avalon-meta-spi-1.1-RC1.jar +avalon-meta/jars/avalon-meta-spi-1.1.jar +avalon-meta/jars/avalon-meta-spi-1.4.0.jar +avalon-meta/jars/avalon-meta-spi-1.3.jar +avalon-meta/jars/avalon-meta-tools-1.1-RC1.jar +avalon-meta/jars/avalon-meta-tools-1.1.jar +avalon-meta/jars/avalon-meta-tools-1.2-dev.jar +avalon-meta/jars/avalon-meta-tools-1.2.1-dev.jar +avalon-meta/jars/avalon-meta-tools-1.3.1.jar +avalon-meta/jars/avalon-meta-tools-1.3.jar +avalon-meta/jars/avalon-meta-tools-1.4.0.jar +avalon-meta/plugins/avalon-meta-plugin-1.3.1.jar +avalon-meta/plugins/avalon-meta-plugin-1.1.jar +avalon-meta/plugins/avalon-meta-plugin-1.2.jar +avalon-meta/plugins/avalon-meta-plugin-1.3.2.jar +avalon-meta/plugins/avalon-meta-plugin-1.3.jar +avalon-meta/plugins/avalon-meta-plugin-1.4.0.jar +avalon-phoenix/jars/avalon-phoenix-bsh-commands-4.0.4.jar +avalon-phoenix/jars/avalon-phoenix-client-4.0.4.jar +avalon-phoenix/jars/avalon-phoenix-client-4.0.jar +avalon-phoenix/jars/avalon-phoenix-engine-4.0.4.jar +avalon-phoenix/jars/avalon-phoenix-loader-4.0.4.jar +avalon-phoenix/jars/avalon-phoenix-metagenerate-4.0.jar +avalon-repository/distributions/1.2/avalon-repository-1.2-src.tar.gz.MD5 +avalon-repository/distributions/1.2/avalon-repository-1.2-src.tar.gz +avalon-repository/distributions/1.2/avalon-repository-1.2-src.zip.MD5 +avalon-repository/distributions/1.2/avalon-repository-1.2-src.zip +avalon-repository/distributions/1.2/avalon-repository-1.2.tar.gz.MD5 +avalon-repository/distributions/1.2/avalon-repository-1.2.tar.gz +avalon-repository/distributions/1.2/avalon-repository-1.2.zip.MD5 +avalon-repository/distributions/1.2/avalon-repository-1.2.zip +avalon-repository/jars/avalon-repository-api-1.2-dev.jar +avalon-repository/jars/avalon-repository-api-1.2.jar +avalon-repository/jars/avalon-repository-api-2.0.0.jar +avalon-repository/jars/avalon-repository-cli-2.0.0.jar +avalon-repository/jars/avalon-repository-impl-1.2.jar +avalon-repository/jars/avalon-repository-impl-1.0-beta-1-RC1.jar +avalon-repository/jars/avalon-repository-impl-1.0b1.jar +avalon-repository/jars/avalon-repository-impl-1.1-dev.jar +avalon-repository/jars/avalon-repository-impl-1.2-dev.jar +avalon-repository/jars/avalon-repository-impl-2.0.0.jar +avalon-repository/jars/avalon-repository-main-1.2-dev.jar +avalon-repository/jars/avalon-repository-main-1.2.jar +avalon-repository/jars/avalon-repository-main-2.0.0.jar +avalon-repository/jars/avalon-repository-spi-1.0-beta-1-RC1.jar +avalon-repository/jars/avalon-repository-spi-1.0b1.jar +avalon-repository/jars/avalon-repository-spi-1.1-dev.jar +avalon-repository/jars/avalon-repository-spi-1.2-dev.jar +avalon-repository/jars/avalon-repository-spi-1.2.jar +avalon-repository/jars/avalon-repository-spi-2.0.0.jar +avalon-repository/jars/avalon-repository-util-1.2-dev.jar +avalon-repository/jars/avalon-repository-util-1.2.jar +avalon-repository/jars/avalon-repository-util-2.0.0.jar +avalon-repository/propertiess/repository.properties +avalon-util/distributions/1.0/avalon-util-1.0-src.tar.gz.MD5 +avalon-util/distributions/1.0/avalon-util-1.0-src.tar.gz +avalon-util/distributions/1.0/avalon-util-1.0-src.zip.MD5 +avalon-util/distributions/1.0/avalon-util-1.0-src.zip +avalon-util/distributions/1.0/avalon-util-1.0.tar.gz.MD5 +avalon-util/distributions/1.0/avalon-util-1.0.tar.gz +avalon-util/distributions/1.0/avalon-util-1.0.zip.MD5 +avalon-util/distributions/1.0/avalon-util-1.0.zip +avalon-util/jars/avalon-util-criteria-1.0-dev.jar +avalon-util/jars/avalon-plugin-1.0-dev.jar +avalon-util/jars/avalon-plugin-1.0.jar +avalon-util/jars/avalon-util-criteria-1.0.jar +avalon-util/jars/avalon-util-criteria-1.1.0.jar +avalon-util/jars/avalon-util-defaults-1.0-dev.jar +avalon-util/jars/avalon-util-defaults-1.1-dev.jar +avalon-util/jars/avalon-util-defaults-1.1.jar +avalon-util/jars/avalon-util-defaults-1.2.1.jar +avalon-util/jars/avalon-util-env-1.0-dev.jar +avalon-util/jars/avalon-util-env-1.0.jar +avalon-util/jars/avalon-util-env-1.1.1.jar +avalon-util/jars/avalon-util-exception-1.0-dev.jar +avalon-util/jars/avalon-util-exception-1.0.0.jar +avalon-util/jars/avalon-util-exception-1.0.jar +avalon-util/jars/avalon-util-extension-api-1.2.0.jar +avalon-util/jars/avalon-util-extension-impl-1.2.0.jar +avalon-util/jars/avalon-util-i18n-1.0.0.jar +avalon-util/plugins/avalon-util-plugin-1.0.0.jar +avalon-util/plugins/avalon-plugin-1.0-dev.jar +avalon-util/plugins/avalon-plugin-1.0.jar +axis/jars/axis-1.0.jar +axis/jars/axis-1.1-beta.jar +axis/jars/axis-1.1.jar +axis/jars/axis-1.2-RC1.jar +axis/jars/axis-1.2-RC2.jar +axis/jars/axis-1.2-RC3.jar +axis/jars/axis-1.2-beta-2.jar +axis/jars/axis-1.2-alpha-1.jar +axis/jars/axis-1.2-beta-3.jar +axis/jars/axis-1.2.1.jar +axis/jars/axis-1.2.jar +axis/jars/axis-1.3.jar +axis/jars/axis-1.4.jar +axis/jars/axis-1.4.jar.sha +axis/jars/axis-ant-1.1.jar +axis/jars/axis-ant-1.2-RC1.jar +axis/jars/axis-ant-1.2.1.jar +axis/jars/axis-ant-1.2-RC2.jar +axis/jars/axis-ant-1.2-RC3.jar +axis/jars/axis-ant-1.2-beta-2.jar +axis/jars/axis-ant-1.2-beta-3.jar +axis/jars/axis-ant-1.2.jar +axis/jars/axis-ant-1.3.jar +axis/jars/axis-ant-1.4.jar +axis/jars/axis-jaxrpc-1.2.jar +axis/jars/axis-ant-1.4.jar.sha +axis/jars/axis-jaxrpc-1.2-RC1.jar +axis/jars/axis-jaxrpc-1.2-RC2.jar +axis/jars/axis-jaxrpc-1.2-RC3.jar +axis/jars/axis-jaxrpc-1.2-alpha-1.jar +axis/jars/axis-jaxrpc-1.2-beta-2.jar +axis/jars/axis-jaxrpc-1.2-beta-3.jar +axis/jars/axis-jaxrpc-1.2.1.jar +axis/jars/axis-jaxrpc-1.3.jar +axis/jars/axis-jaxrpc-1.4.jar +axis/jars/axis-jaxrpc-1.4.jar.sha +axis/jars/axis-saaj-1.2-RC1.jar +axis/jars/axis-saaj-1.2-RC2.jar +axis/jars/axis-saaj-1.2-RC3.jar +axis/jars/axis-saaj-1.2-alpha-1.jar +axis/jars/axis-saaj-1.2-beta-2.jar +axis/jars/axis-saaj-1.2-beta-3.jar +axis/jars/axis-saaj-1.2.1.jar +axis/jars/axis-saaj-1.2.jar +axis/jars/axis-saaj-1.3.jar +axis/jars/axis-saaj-1.4.jar +axis/jars/axis-saaj-1.4.jar.sha +axis/jars/axis-schema-1.3.jar +axis/jars/axis-wsdl4j-1.2-RC1.jar +axis/jars/axis-wsdl4j-1.2-RC2.jar +axis/jars/axis-wsdl4j-1.2-RC3.jar +axis/jars/axis-wsdl4j-1.2-beta-2.jar +axis/jars/axis-wsdl4j-1.2-beta-3.jar +axis/jars/axis-wsdl4j-1.2.1.jar +axis/jars/axis-wsdl4j-1.2.jar +axis/jars/axis-wsdl4j-1.3.jar +axis/poms/axis-1.2.1.pom +axis2/jars/addressing-0.94.mar +axis2/jars/axis2-0.9.jar +axis2/jars/axis2-0.95.jar +axis2/jars/axis2-1.0.jar +axis2/jars/axis2-adb-0.94.jar +axis2/jars/axis2-adb-0.95.jar +axis2/jars/axis2-adb-1.0.jar +axis2/jars/axis2-codegen-0.94.jar +axis2/jars/axis2-codegen-0.95.jar +axis2/jars/axis2-codegen-1.0.jar +axis2/jars/axis2-core-0.94.jar +axis2/jars/axis2-doom-0.94.jar +axis2/jars/axis2-doom-0.95.jar +axis2/jars/axis2-java2wsdl-1.0.jar +axis2/jars/axis2-jibx-1.0.jar +axis2/jars/axis2-kernel-0.95.jar +axis2/jars/axis2-kernel-1.0.jar +axis2/jars/axis2-xmlbeans-1.0.jar +axis2/mars/addressing-0.94.mar +axis2/mars/addressing-0.95.mar +axis2/mars/addressing-1.0.mar +axis2/mars/rampart-1.0.mar +axis2/mars/security-0.95.mar +axis2/mars/soapmonitor-1.0.mar +batik/jars/batik-1.1.1.jar +batik/jars/batik-1.5.jar +batik/jars/batik-awt-util-1.5.jar +batik/jars/batik-awt-util-1.6.jar +batik/jars/batik-bridge-1.5.jar +batik/jars/batik-bridge-1.6.jar +batik/jars/batik-css-1.5.jar +batik/jars/batik-css-1.6.jar +batik/jars/batik-dom-1.5.jar +batik/jars/batik-dom-1.6.jar +batik/jars/batik-ext-1.5.jar +batik/jars/batik-ext-1.6.jar +batik/jars/batik-extension-1.5.jar +batik/jars/batik-extension-1.6.jar +batik/jars/batik-gui-util-1.5.jar +batik/jars/batik-gui-util-1.6.jar +batik/jars/batik-gvt-1.5.jar +batik/jars/batik-gvt-1.6.jar +batik/jars/batik-parser-1.5.jar +batik/jars/batik-parser-1.6.jar +batik/jars/batik-rasterizer-1.5.jar +batik/jars/batik-rasterizer-1.6.jar +batik/jars/batik-script-1.5.jar +batik/jars/batik-rasterizer-ext-1.6.jar +batik/jars/batik-rasterizer-ext.jar +batik/jars/batik-script-1.6.jar +batik/jars/batik-slideshow-1.6.jar +batik/jars/batik-squiggle-1.6.jar +batik/jars/batik-squiggle-ext-1.6.jar +batik/jars/batik-squiggle-ext.jar +batik/jars/batik-svg-dom-1.5.jar +batik/jars/batik-svg-dom-1.6.jar +batik/jars/batik-svggen-1.5.jar +batik/jars/batik-svggen-1.6.jar +batik/jars/batik-svgpp-1.6.jar +batik/jars/batik-swing-1.5.jar +batik/jars/batik-swing-1.6.jar +batik/jars/batik-transcoder-1.5.jar +batik/jars/batik-transcoder-1.6.jar +batik/jars/batik-ttf2svg-1.6.jar +batik/jars/batik-util-1.5.jar +batik/jars/batik-util-1.6.jar +batik/jars/batik-xml-1.5.jar +batik/jars/batik-xml-1.6.jar +batik/poms/batik-awt-util-1.6.pom +batik/poms/batik-bridge-1.6.pom +batik/poms/batik-css-1.6.pom +batik/poms/batik-dom-1.6.pom +batik/poms/batik-ext-1.6.pom +batik/poms/batik-extension-1.6.pom +batik/poms/batik-gvt-1.6.pom +batik/poms/batik-gui-util-1.6.pom +batik/poms/batik-parser-1.6.pom +batik/poms/batik-rasterizer-1.6.pom +batik/poms/batik-rasterizer-ext-1.6.pom +batik/poms/batik-script-1.6.pom +batik/poms/batik-slideshow-1.6.pom +batik/poms/batik-squiggle-1.6.pom +batik/poms/batik-squiggle-ext-1.6.pom +batik/poms/batik-svg-dom-1.6.pom +batik/poms/batik-svggen-1.6.pom +batik/poms/batik-svgpp-1.6.pom +batik/poms/batik-swing-1.6.pom +batik/poms/batik-transcoder-1.6.pom +batik/poms/batik-ttf2svg-1.6.pom +batik/poms/batik-util-1.6.pom +batik/poms/batik-xml-1.6.pom +bsf/jars/bsf-2.2.jar +bsf/jars/bsf-2.3.0-rc1.jar +bcel/jars/bcel-5.0.jar +bcel/jars/bcel-5.1.jar +beehive/jars/apache-xbean-beehive-1.0-alpha.jar +beehive/jars/beehive-netui-compiler-1.0-alpha.jar +beehive/jars/beehive-netui-pageflow-1.0-alpha.jar +beehive/jars/beehive-netui-scoping-1.0-alpha.jar +beehive/jars/controls-1.0-alpha.jar +beehive/jars/beehive-netui-tags-databinding-1.0-alpha.jar +beehive/jars/beehive-netui-tags-html-1.0-alpha.jar +beehive/jars/beehive-netui-tags-template-1.0-alpha.jar +beehive/jars/beehive-netui-util-1.0-alpha.jar +beehive/jars/wsdltypes-beehive-1.0-alpha.jar +beehive/jars/wsm-1.0-alpha.jar +beehive/jars/wsm-axis-1.0-alpha.jar +beehive/poms/beehive-controls-1.0.pom +beehive/tlds/beehive-netui-tags-databinding-1.0-alpha.tld +beehive/tlds/beehive-netui-tags-html-1.0-alpha.tld +beehive/tlds/beehive-netui-tags-template-1.0-alpha.tld +beehive/xmls/buildWebappCore.xml +beehive/xmls/buildWebapp.xml +beehive/xmls/webappRuntimeCore.xml +beehive/xmls/runTomcatCore.xml +cactus/distributions/jakarta-cactus-1.5-beta1-src.zip +cactus/distributions/jakarta-cactus-12-1.5-beta1.zip +cactus/distributions/jakarta-cactus-13-1.5-beta1.zip +cactus/jars/cactus-1.4b1.jar +cactus/jars/cactus-12-1.4.1.jar +cactus/jars/cactus-12-1.5-beta1.jar +cactus/jars/cactus-12-1.7.1.jar +cactus/jars/cactus-12-1.7.2.jar +cactus/jars/cactus-13-1.4.1.jar +cactus/jars/cactus-13-1.5-beta1.jar +cactus/jars/cactus-13-1.5-rc1.jar +cactus/jars/cactus-13-1.5dev-20030522.jar +cactus/jars/cactus-13-1.5dev-20030607.jar +cactus/jars/cactus-13-1.5dev-20030619.jar +cactus/jars/cactus-13-1.6.1.jar +cactus/jars/cactus-13-1.6dev-20030807.jar +cactus/jars/cactus-13-1.6.jar +cactus/jars/cactus-13-1.6dev-20030809.jar +cactus/jars/cactus-13-1.6dev-20030829.jar +cactus/jars/cactus-13-1.6dev-20040115.jar +cactus/jars/cactus-13-1.7.1.jar +cactus/jars/cactus-13-1.7.2.jar +cactus/jars/cactus-ant-13-1.6.1.jar +cactus/jars/cactus-ant-13-1.6.jar +cactus/jars/cactus-13-1.7.jar +cactus/jars/cactus-13-1.7dev-20040815.jar +cactus/jars/cactus-ant-1.4.1.jar +cactus/jars/cactus-ant-12-1.5-beta1.jar +cactus/jars/cactus-ant-12-1.7.1.jar +cactus/jars/cactus-ant-12-1.7.2.jar +cactus/jars/cactus-ant-13-1.5-beta1.jar +cactus/jars/cactus-ant-13-1.5-rc1.jar +cactus/jars/cactus-ant-13-1.5dev-20030522.jar +cactus/jars/cactus-ant-13-1.5dev-20030607.jar +cactus/jars/cactus-ant-13-1.5dev-20030619.jar +cactus/jars/cactus-ant-13-1.6dev-20030807.jar +cactus/jars/cactus-ant-13-1.6dev-20030809.jar +cactus/jars/cactus-ant-13-1.6dev-20030829.jar +cactus/jars/cactus-ant-13-1.6dev-20040115.jar +cactus/jars/cactus-ant-13-1.7.1.jar +cactus/jars/cactus-ant-13-1.7dev-20040815.jar +cactus/jars/cactus-ant-13-1.7.2.jar +cactus/jars/cactus-ant-13-1.7.jar +cactus/jars/cactus-framework-13-1.5dev-20030322.jar +cactus/jars/cactus-framework-13-1.5dev-20030407.jar +cactus/jars/cactus-integration-ant-1.5dev-20030322.jar +cactus/jars/cactus-integration-ant-1.5dev-20030407.jar +cactus/plugins/cactus-maven-1.6.1.jar +cactus/plugins/cactus-maven-1.6.jar +cactus/plugins/cactus-maven-1.6dev-20031031.jar +cactus/plugins/cactus-maven-1.6dev-20040115.jar +cactus/plugins/cactus-maven-1.7.1.jar +cactus/plugins/cactus-maven-1.7dev-20040815.jar +cactus/plugins/cactus-maven-1.7.2.jar +cactus/plugins/cactus-maven-1.7.jar +cactus/poms/cactus-maven-1.7.1.pom +cactus/poms/cactus-maven-1.7.2.pom +cactus/zips/jakarta-cactus-integration-ant-13-1.5dev-20030325.zip +cactus/zips/jakarta-cactus-integration-ant-13-1.5dev-20030329.zip +cactus/zips/jakarta-cactus-integration-ant-13-1.5dev-20030407.zip +cactus/zips/jakarta-cactus-integration-ant-13-1.5dev-20030426.zip +cocoon/jars/cocoon-2.1.3.jar +cocoon/jars/cocoon-2.1.4.jar +cocoon/jars/cocoon-2.1.5.1-deprecated.jar +cocoon/jars/cocoon-2.1.5.1.jar +cocoon/jars/cocoon-2.1.6.jar +cocoon/jars/cocoon-2.1.7.jar +cocoon/jars/cocoon-2.1.8.jar +cocoon/jars/cocoon-2.1.9.jar +cocoon/jars/cocoon-ajax-2.1.8.jar +cocoon/jars/cocoon-ajax-2.1.9.jar +cocoon/jars/cocoon-apples-2.1.3.jar +cocoon/jars/cocoon-apples-2.1.4.jar +cocoon/jars/cocoon-apples-2.1.5.1.jar +cocoon/jars/cocoon-apples-2.1.6.jar +cocoon/jars/cocoon-apples-2.1.7.jar +cocoon/jars/cocoon-apples-2.1.8.jar +cocoon/jars/cocoon-apples-2.1.9.jar +cocoon/jars/cocoon-asciiart-2.1.3.jar +cocoon/jars/cocoon-asciiart-2.1.4.jar +cocoon/jars/cocoon-asciiart-2.1.5.1.jar +cocoon/jars/cocoon-asciiart-2.1.6.jar +cocoon/jars/cocoon-asciiart-2.1.7.jar +cocoon/jars/cocoon-asciiart-2.1.8.jar +cocoon/jars/cocoon-asciiart-2.1.9.jar +cocoon/jars/cocoon-authentication-fw-2.1.3.jar +cocoon/jars/cocoon-authentication-fw-2.1.4.jar +cocoon/jars/cocoon-authentication-fw-2.1.5.1.jar +cocoon/jars/cocoon-authentication-fw-2.1.6.jar +cocoon/jars/cocoon-authentication-fw-2.1.7.jar +cocoon/jars/cocoon-authentication-fw-2.1.8.jar +cocoon/jars/cocoon-authentication-fw-2.1.9.jar +cocoon/jars/cocoon-axis-2.1.3.jar +cocoon/jars/cocoon-axis-2.1.4.jar +cocoon/jars/cocoon-axis-2.1.5.1.jar +cocoon/jars/cocoon-axis-2.1.6.jar +cocoon/jars/cocoon-axis-2.1.7.jar +cocoon/jars/cocoon-axis-2.1.8.jar +cocoon/jars/cocoon-axis-2.1.9.jar +cocoon/jars/cocoon-batik-2.1.3.jar +cocoon/jars/cocoon-batik-2.1.4.jar +cocoon/jars/cocoon-batik-2.1.5.1.jar +cocoon/jars/cocoon-batik-2.1.6.jar +cocoon/jars/cocoon-batik-2.1.7.jar +cocoon/jars/cocoon-batik-2.1.8.jar +cocoon/jars/cocoon-batik-2.1.9.jar +cocoon/jars/cocoon-bsf-2.1.3.jar +cocoon/jars/cocoon-bsf-2.1.4.jar +cocoon/jars/cocoon-bsf-2.1.5.1.jar +cocoon/jars/cocoon-bsf-2.1.6.jar +cocoon/jars/cocoon-bsf-2.1.7.jar +cocoon/jars/cocoon-bsf-2.1.8.jar +cocoon/jars/cocoon-bsf-2.1.9.jar +cocoon/jars/cocoon-captcha-2.1.8.jar +cocoon/jars/cocoon-captcha-2.1.9.jar +cocoon/jars/cocoon-chaperon-2.1.3.jar +cocoon/jars/cocoon-chaperon-2.1.4.jar +cocoon/jars/cocoon-chaperon-2.1.5.1.jar +cocoon/jars/cocoon-chaperon-2.1.6.jar +cocoon/jars/cocoon-chaperon-2.1.7.jar +cocoon/jars/cocoon-chaperon-2.1.8.jar +cocoon/jars/cocoon-chaperon-2.1.9.jar +cocoon/jars/cocoon-cron-2.1.3.jar +cocoon/jars/cocoon-cron-2.1.4.jar +cocoon/jars/cocoon-cron-2.1.5.1.jar +cocoon/jars/cocoon-cron-2.1.6.jar +cocoon/jars/cocoon-cron-2.1.7.jar +cocoon/jars/cocoon-cron-2.1.8.jar +cocoon/jars/cocoon-cron-2.1.9.jar +cocoon/jars/cocoon-databases-2.1.3.jar +cocoon/jars/cocoon-databases-2.1.4.jar +cocoon/jars/cocoon-databases-2.1.5.1.jar +cocoon/jars/cocoon-databases-2.1.6.jar +cocoon/jars/cocoon-databases-2.1.7.jar +cocoon/jars/cocoon-deli-2.1.6.jar +cocoon/jars/cocoon-databases-2.1.8.jar +cocoon/jars/cocoon-databases-2.1.9.jar +cocoon/jars/cocoon-deli-2.1.3.jar +cocoon/jars/cocoon-deli-2.1.4.jar +cocoon/jars/cocoon-deli-2.1.5.1.jar +cocoon/jars/cocoon-deli-2.1.7.jar +cocoon/jars/cocoon-deli-2.1.8.jar +cocoon/jars/cocoon-deli-2.1.9.jar +cocoon/jars/cocoon-deprecated-2.1.3.jar +cocoon/jars/cocoon-deprecated-2.1.4.jar +cocoon/jars/cocoon-deprecated-2.1.6.jar +cocoon/jars/cocoon-deprecated-2.1.5.1.jar +cocoon/jars/cocoon-deprecated-2.1.7.jar +cocoon/jars/cocoon-deprecated-2.1.8.jar +cocoon/jars/cocoon-deprecated-2.1.9.jar +cocoon/jars/cocoon-eventcache-2.1.3.jar +cocoon/jars/cocoon-eventcache-2.1.4.jar +cocoon/jars/cocoon-eventcache-2.1.5.1.jar +cocoon/jars/cocoon-eventcache-2.1.6.jar +cocoon/jars/cocoon-eventcache-2.1.7.jar +cocoon/jars/cocoon-eventcache-2.1.8.jar +cocoon/jars/cocoon-eventcache-2.1.9.jar +cocoon/jars/cocoon-faces-2.1.6.jar +cocoon/jars/cocoon-faces-2.1.7.jar +cocoon/jars/cocoon-faces-2.1.8.jar +cocoon/jars/cocoon-faces-2.1.9.jar +cocoon/jars/cocoon-fop-2.1.3.jar +cocoon/jars/cocoon-fop-2.1.4.jar +cocoon/jars/cocoon-fop-2.1.5.1.jar +cocoon/jars/cocoon-fop-2.1.6.jar +cocoon/jars/cocoon-fop-2.1.7.jar +cocoon/jars/cocoon-fop-2.1.8.jar +cocoon/jars/cocoon-fop-2.1.9.jar +cocoon/jars/cocoon-forms-2.1.6.jar +cocoon/jars/cocoon-forms-2.1.5.1.jar +cocoon/jars/cocoon-forms-2.1.7.jar +cocoon/jars/cocoon-forms-2.1.8.jar +cocoon/jars/cocoon-forms-2.1.9.jar +cocoon/jars/cocoon-hsqldb-2.1.3.jar +cocoon/jars/cocoon-hsqldb-2.1.4.jar +cocoon/jars/cocoon-hsqldb-2.1.5.1.jar +cocoon/jars/cocoon-hsqldb-2.1.6.jar +cocoon/jars/cocoon-hsqldb-2.1.7.jar +cocoon/jars/cocoon-hsqldb-2.1.8.jar +cocoon/jars/cocoon-hsqldb-2.1.9.jar +cocoon/jars/cocoon-html-2.1.3.jar +cocoon/jars/cocoon-html-2.1.4.jar +cocoon/jars/cocoon-html-2.1.5.1.jar +cocoon/jars/cocoon-html-2.1.6.jar +cocoon/jars/cocoon-html-2.1.7.jar +cocoon/jars/cocoon-html-2.1.8.jar +cocoon/jars/cocoon-html-2.1.9.jar +cocoon/jars/cocoon-imageop-2.1.9.jar +cocoon/jars/cocoon-itext-2.1.3.jar +cocoon/jars/cocoon-itext-2.1.4.jar +cocoon/jars/cocoon-itext-2.1.5.1.jar +cocoon/jars/cocoon-itext-2.1.6.jar +cocoon/jars/cocoon-itext-2.1.7.jar +cocoon/jars/cocoon-itext-2.1.8.jar +cocoon/jars/cocoon-itext-2.1.9.jar +cocoon/jars/cocoon-javaflow-2.1.5.1.jar +cocoon/jars/cocoon-javaflow-2.1.6.jar +cocoon/jars/cocoon-javaflow-2.1.7.jar +cocoon/jars/cocoon-javaflow-2.1.8.jar +cocoon/jars/cocoon-javaflow-2.1.9.jar +cocoon/jars/cocoon-jcr-2.1.8.jar +cocoon/jars/cocoon-jcr-2.1.9.jar +cocoon/jars/cocoon-jfor-2.1.3.jar +cocoon/jars/cocoon-jfor-2.1.4.jar +cocoon/jars/cocoon-jfor-2.1.5.1.jar +cocoon/jars/cocoon-jfor-2.1.6.jar +cocoon/jars/cocoon-jfor-2.1.7.jar +cocoon/jars/cocoon-jfor-2.1.8.jar +cocoon/jars/cocoon-jfor-2.1.9.jar +cocoon/jars/cocoon-jms-2.1.4.jar +cocoon/jars/cocoon-jms-2.1.5.1.jar +cocoon/jars/cocoon-jms-2.1.6.jar +cocoon/jars/cocoon-jms-2.1.7.jar +cocoon/jars/cocoon-jms-2.1.8.jar +cocoon/jars/cocoon-jms-2.1.9.jar +cocoon/jars/cocoon-jsp-2.1.3.jar +cocoon/jars/cocoon-jsp-2.1.4.jar +cocoon/jars/cocoon-jsp-2.1.5.1.jar +cocoon/jars/cocoon-jsp-2.1.6.jar +cocoon/jars/cocoon-jsp-2.1.7.jar +cocoon/jars/cocoon-jsp-2.1.8.jar +cocoon/jars/cocoon-jsp-2.1.9.jar +cocoon/jars/cocoon-jxforms-2.1.3.jar +cocoon/jars/cocoon-jxforms-2.1.4.jar +cocoon/jars/cocoon-linkrewriter-2.1.3.jar +cocoon/jars/cocoon-linkrewriter-2.1.4.jar +cocoon/jars/cocoon-linkrewriter-2.1.5.1.jar +cocoon/jars/cocoon-linkrewriter-2.1.6.jar +cocoon/jars/cocoon-linkrewriter-2.1.7.jar +cocoon/jars/cocoon-linkrewriter-2.1.8.jar +cocoon/jars/cocoon-linkrewriter-2.1.9.jar +cocoon/jars/cocoon-linotype-2.1.3.jar +cocoon/jars/cocoon-linotype-2.1.4.jar +cocoon/jars/cocoon-linotype-2.1.5.1.jar +cocoon/jars/cocoon-linotype-2.1.6.jar +cocoon/jars/cocoon-linotype-2.1.7.jar +cocoon/jars/cocoon-linotype-2.1.8.jar +cocoon/jars/cocoon-linotype-2.1.9.jar +cocoon/jars/cocoon-lucene-2.1.3.jar +cocoon/jars/cocoon-lucene-2.1.4.jar +cocoon/jars/cocoon-lucene-2.1.5.1.jar +cocoon/jars/cocoon-mail-2.1.4.jar +cocoon/jars/cocoon-lucene-2.1.6.jar +cocoon/jars/cocoon-lucene-2.1.7.jar +cocoon/jars/cocoon-lucene-2.1.8.jar +cocoon/jars/cocoon-lucene-2.1.9.jar +cocoon/jars/cocoon-mail-2.1.3.jar +cocoon/jars/cocoon-mail-2.1.5.1.jar +cocoon/jars/cocoon-mail-2.1.6.jar +cocoon/jars/cocoon-mail-2.1.7.jar +cocoon/jars/cocoon-mail-2.1.8.jar +cocoon/jars/cocoon-mail-2.1.9.jar +cocoon/jars/cocoon-midi-2.1.3.jar +cocoon/jars/cocoon-midi-2.1.4.jar +cocoon/jars/cocoon-midi-2.1.5.1.jar +cocoon/jars/cocoon-midi-2.1.6.jar +cocoon/jars/cocoon-midi-2.1.7.jar +cocoon/jars/cocoon-midi-2.1.8.jar +cocoon/jars/cocoon-midi-2.1.9.jar +cocoon/jars/cocoon-naming-2.1.3.jar +cocoon/jars/cocoon-naming-2.1.4.jar +cocoon/jars/cocoon-naming-2.1.5.1.jar +cocoon/jars/cocoon-naming-2.1.6.jar +cocoon/jars/cocoon-naming-2.1.7.jar +cocoon/jars/cocoon-naming-2.1.8.jar +cocoon/jars/cocoon-naming-2.1.9.jar +cocoon/jars/cocoon-ojb-2.1.4.jar +cocoon/jars/cocoon-ojb-2.1.5.1.jar +cocoon/jars/cocoon-ojb-2.1.6.jar +cocoon/jars/cocoon-ojb-2.1.7.jar +cocoon/jars/cocoon-ojb-2.1.8.jar +cocoon/jars/cocoon-ojb-2.1.9.jar +cocoon/jars/cocoon-paranoid-2.1.4.jar +cocoon/jars/cocoon-paranoid-2.1.5.1.jar +cocoon/jars/cocoon-paranoid-2.1.6.jar +cocoon/jars/cocoon-paranoid-2.1.7.jar +cocoon/jars/cocoon-paranoid-2.1.8.jar +cocoon/jars/cocoon-paranoid-2.1.9.jar +cocoon/jars/cocoon-petstore-2.1.3.jar +cocoon/jars/cocoon-petstore-2.1.4.jar +cocoon/jars/cocoon-petstore-2.1.5.1.jar +cocoon/jars/cocoon-portal-2.1.6.jar +cocoon/jars/cocoon-petstore-2.1.6.jar +cocoon/jars/cocoon-petstore-2.1.7.jar +cocoon/jars/cocoon-petstore-2.1.8.jar +cocoon/jars/cocoon-petstore-2.1.9.jar +cocoon/jars/cocoon-php-2.1.3.jar +cocoon/jars/cocoon-php-2.1.4.jar +cocoon/jars/cocoon-php-2.1.5.1.jar +cocoon/jars/cocoon-poi-2.1.3.jar +cocoon/jars/cocoon-poi-2.1.4.jar +cocoon/jars/cocoon-poi-2.1.5.1.jar +cocoon/jars/cocoon-poi-2.1.6.jar +cocoon/jars/cocoon-poi-2.1.7.jar +cocoon/jars/cocoon-poi-2.1.8.jar +cocoon/jars/cocoon-poi-2.1.9.jar +cocoon/jars/cocoon-portal-2.1.3.jar +cocoon/jars/cocoon-portal-2.1.4.jar +cocoon/jars/cocoon-portal-2.1.5.1.jar +cocoon/jars/cocoon-portal-2.1.7.jar +cocoon/jars/cocoon-portal-2.1.8.jar +cocoon/jars/cocoon-portal-2.1.9.jar +cocoon/jars/cocoon-portal-fw-2.1.3.jar +cocoon/jars/cocoon-portal-fw-2.1.4.jar +cocoon/jars/cocoon-portal-fw-2.1.5.1.jar +cocoon/jars/cocoon-precept-2.1.3.jar +cocoon/jars/cocoon-precept-2.1.4.jar +cocoon/jars/cocoon-profiler-2.1.3.jar +cocoon/jars/cocoon-profiler-2.1.4.jar +cocoon/jars/cocoon-profiler-2.1.5.1.jar +cocoon/jars/cocoon-profiler-2.1.6.jar +cocoon/jars/cocoon-profiler-2.1.7.jar +cocoon/jars/cocoon-profiler-2.1.8.jar +cocoon/jars/cocoon-profiler-2.1.9.jar +cocoon/jars/cocoon-proxy-2.1.3.jar +cocoon/jars/cocoon-proxy-2.1.4.jar +cocoon/jars/cocoon-proxy-2.1.5.1.jar +cocoon/jars/cocoon-proxy-2.1.6.jar +cocoon/jars/cocoon-proxy-2.1.7.jar +cocoon/jars/cocoon-proxy-2.1.8.jar +cocoon/jars/cocoon-proxy-2.1.9.jar +cocoon/jars/cocoon-python-2.1.3.jar +cocoon/jars/cocoon-python-2.1.4.jar +cocoon/jars/cocoon-python-2.1.5.1.jar +cocoon/jars/cocoon-python-2.1.6.jar +cocoon/jars/cocoon-python-2.1.7.jar +cocoon/jars/cocoon-python-2.1.8.jar +cocoon/jars/cocoon-python-2.1.9.jar +cocoon/jars/cocoon-qdox-2.1.3.jar +cocoon/jars/cocoon-qdox-2.1.4.jar +cocoon/jars/cocoon-qdox-2.1.5.1.jar +cocoon/jars/cocoon-qdox-2.1.6.jar +cocoon/jars/cocoon-qdox-2.1.7.jar +cocoon/jars/cocoon-qdox-2.1.8.jar +cocoon/jars/cocoon-qdox-2.1.9.jar +cocoon/jars/cocoon-querybean-2.1.7.jar +cocoon/jars/cocoon-querybean-2.1.8.jar +cocoon/jars/cocoon-querybean-2.1.9.jar +cocoon/jars/cocoon-repository-2.1.3.jar +cocoon/jars/cocoon-repository-2.1.4.jar +cocoon/jars/cocoon-repository-2.1.5.1.jar +cocoon/jars/cocoon-repository-2.1.6.jar +cocoon/jars/cocoon-repository-2.1.7.jar +cocoon/jars/cocoon-repository-2.1.8.jar +cocoon/jars/cocoon-repository-2.1.9.jar +cocoon/jars/cocoon-scratchpad-2.1.3.jar +cocoon/jars/cocoon-scratchpad-2.1.4.jar +cocoon/jars/cocoon-scratchpad-2.1.5.1.jar +cocoon/jars/cocoon-scratchpad-2.1.6.jar +cocoon/jars/cocoon-serializers-2.1.9.jar +cocoon/jars/cocoon-serializers-2.1.5.1.jar +cocoon/jars/cocoon-serializers-2.1.6.jar +cocoon/jars/cocoon-serializers-2.1.7.jar +cocoon/jars/cocoon-serializers-2.1.8.jar +cocoon/jars/cocoon-session-fw-2.1.3.jar +cocoon/jars/cocoon-session-fw-2.1.4.jar +cocoon/jars/cocoon-session-fw-2.1.5.1.jar +cocoon/jars/cocoon-session-fw-2.1.6.jar +cocoon/jars/cocoon-session-fw-2.1.7.jar +cocoon/jars/cocoon-session-fw-2.1.8.jar +cocoon/jars/cocoon-session-fw-2.1.9.jar +cocoon/jars/cocoon-slide-2.1.3.jar +cocoon/jars/cocoon-slide-2.1.4.jar +cocoon/jars/cocoon-slide-2.1.5.1.jar +cocoon/jars/cocoon-slide-2.1.6.jar +cocoon/jars/cocoon-slide-2.1.7.jar +cocoon/jars/cocoon-slide-2.1.8.jar +cocoon/jars/cocoon-slide-2.1.9.jar +cocoon/jars/cocoon-slop-2.1.3.jar +cocoon/jars/cocoon-slop-2.1.4.jar +cocoon/jars/cocoon-slop-2.1.5.1.jar +cocoon/jars/cocoon-slop-2.1.6.jar +cocoon/jars/cocoon-slop-2.1.7.jar +cocoon/jars/cocoon-slop-2.1.8.jar +cocoon/jars/cocoon-slop-2.1.9.jar +cocoon/jars/cocoon-snapshot.version +cocoon/jars/cocoon-stx-2.1.3.jar +cocoon/jars/cocoon-stx-2.1.4.jar +cocoon/jars/cocoon-stx-2.1.5.1.jar +cocoon/jars/cocoon-stx-2.1.6.jar +cocoon/jars/cocoon-stx-2.1.7.jar +cocoon/jars/cocoon-stx-2.1.8.jar +cocoon/jars/cocoon-stx-2.1.9.jar +cocoon/jars/cocoon-swf-2.1.3.jar +cocoon/jars/cocoon-swf-2.1.4.jar +cocoon/jars/cocoon-swf-2.1.5.1.jar +cocoon/jars/cocoon-taglib-2.1.3.jar +cocoon/jars/cocoon-taglib-2.1.4.jar +cocoon/jars/cocoon-taglib-2.1.5.1.jar +cocoon/jars/cocoon-testcase-2.1.3.jar +cocoon/jars/cocoon-taglib-2.1.6.jar +cocoon/jars/cocoon-taglib-2.1.7.jar +cocoon/jars/cocoon-taglib-2.1.8.jar +cocoon/jars/cocoon-taglib-2.1.9.jar +cocoon/jars/cocoon-template-2.1.9.jar +cocoon/jars/cocoon-woody-2.1.3.jar +cocoon/jars/cocoon-testcase-2.1.4.jar +cocoon/jars/cocoon-testcase-2.1.6.jar +cocoon/jars/cocoon-testcase-2.1.7.jar +cocoon/jars/cocoon-testcase-2.1.9.jar +cocoon/jars/cocoon-tour-2.1.5.1.jar +cocoon/jars/cocoon-tour-2.1.6.jar +cocoon/jars/cocoon-tour-2.1.7.jar +cocoon/jars/cocoon-tour-2.1.8.jar +cocoon/jars/cocoon-tour-2.1.9.jar +cocoon/jars/cocoon-validation-2.1.8.jar +cocoon/jars/cocoon-validation-2.1.9.jar +cocoon/jars/cocoon-velocity-2.1.3.jar +cocoon/jars/cocoon-velocity-2.1.4.jar +cocoon/jars/cocoon-velocity-2.1.5.1.jar +cocoon/jars/cocoon-velocity-2.1.6.jar +cocoon/jars/cocoon-velocity-2.1.7.jar +cocoon/jars/cocoon-velocity-2.1.8.jar +cocoon/jars/cocoon-velocity-2.1.9.jar +cocoon/jars/cocoon-web3-2.1.3.jar +cocoon/jars/cocoon-web3-2.1.4.jar +cocoon/jars/cocoon-web3-2.1.5.1.jar +cocoon/jars/cocoon-web3-2.1.6.jar +cocoon/jars/cocoon-web3-2.1.7.jar +cocoon/jars/cocoon-web3-2.1.8.jar +cocoon/jars/cocoon-web3-2.1.9.jar +cocoon/jars/cocoon-webdav-2.1.3.jar +cocoon/jars/cocoon-webdav-2.1.4.jar +cocoon/jars/cocoon-webdav-2.1.6.jar +cocoon/jars/cocoon-webdav-2.1.5.1.jar +cocoon/jars/cocoon-webdav-2.1.7.jar +cocoon/jars/cocoon-webdav-2.1.8.jar +cocoon/jars/cocoon-webdav-2.1.9.jar +cocoon/jars/cocoon-woody-2.1.4.jar +cocoon/jars/cocoon-xmldb-2.1.3.jar +cocoon/jars/cocoon-xmldb-2.1.4.jar +cocoon/jars/cocoon-xmldb-2.1.5.1.jar +cocoon/jars/cocoon-xmldb-2.1.6.jar +cocoon/jars/cocoon-xmldb-2.1.7.jar +cocoon/jars/cocoon-xmldb-2.1.8.jar +cocoon/jars/cocoon-xmldb-2.1.9.jar +cocoon/jars/cocoon-xsltal-2.1.8.jar +cocoon/jars/cocoon-xsltal-2.1.9.jar +cocoon/jars/cocoon-xsp-2.1.5.1.jar +cocoon/jars/cocoon-xsp-2.1.6.jar +cocoon/jars/cocoon-xsp-2.1.7.jar +cocoon/jars/cocoon-xsp-2.1.8.jar +cocoon/jars/cocoon-xsp-2.1.9.jar +cocoon/wars/cocoon-2.1.8.war +cocoon/wars/cocoon-war-2.1.3.war +cocoon/wars/cocoon-war-2.1.4.war +cocoon/wars/cocoon-war-2.1.6.war +cocoon/wars/cocoon-war-2.1.7.war +commons-attributes/jars/commons-attributes-2.1-javadoc.jar +commons-attributes/jars/commons-attributes-api-2.1.jar +commons-attributes/jars/commons-attributes-api-2.2.jar +commons-attributes/jars/commons-attributes-compiler-2.1.jar +commons-attributes/jars/commons-attributes-compiler-2.2.jar +commons-attributes/plugins/commons-attributes-plugin-2.1.jar +commons-attributes/plugins/commons-attributes-plugin-2.2.jar +commons-attributes/poms/commons-attributes-api-2.2.pom +commons-attributes/poms/commons-attributes-compiler-2.2.pom +commons-beanutils/jars/commons-beanutils-1.0-dev.20020812.082103.jar +commons-beanutils/jars/commons-beanutils-1.0-dev.20020913.114846.jar +commons-beanutils/jars/commons-beanutils-1.0.jar +commons-beanutils/jars/commons-beanutils-1.3.jar +commons-beanutils/jars/commons-beanutils-1.4-dev.20020812.084325.jar +commons-beanutils/jars/commons-beanutils-1.4-dev.jar +commons-beanutils/jars/commons-beanutils-1.4.1.jar +commons-beanutils/jars/commons-beanutils-1.4.jar +commons-beanutils/jars/commons-beanutils-1.5-javadoc.jar +commons-beanutils/jars/commons-beanutils-1.5.jar +commons-beanutils/jars/commons-beanutils-1.6-dev.20021128.082114.jar +commons-beanutils/jars/commons-beanutils-1.6-javadoc.jar +commons-beanutils/jars/commons-beanutils-1.6.1-javadoc.jar +commons-beanutils/jars/commons-beanutils-1.6.1.jar +commons-beanutils/jars/commons-beanutils-1.6.jar +commons-beanutils/jars/commons-beanutils-1.7-dev.jar +commons-beanutils/jars/commons-beanutils-1.7.0-javadoc.jar +commons-beanutils/jars/commons-beanutils-1.7.0.jar +commons-beanutils/jars/commons-beanutils-20020520.jar +commons-beanutils/jars/commons-beanutils-20030211.134440.jar +commons-beanutils/jars/commons-beanutils-bean-collections-1.7.0.jar +commons-beanutils/jars/commons-beanutils-core-1.7.0.jar +commons-beanutils/jars/commons-beanutils-dev.jar +commons-beanutils/jars/commons-beanutils-1.8.0-BETA-javadoc.jar +commons-beanutils/jars/commons-beanutils-snapshot-version +commons-beanutils/jars/commons-beanutils-1.8.0-BETA.jar +commons-beanutils/jars/commons-beanutils-1.8.0-BETA-sources.jar +commons-beanutils/jars/commons-beanutils-core-1.8.0-BETA.jar +commons-beanutils/jars/commons-beanutils-bean-collections-1.8.0-BETA.jar +commons-beanutils/poms/commons-beanutils-1.4.1.pom +commons-beanutils/poms/commons-beanutils-1.4.pom +commons-beanutils/poms/commons-beanutils-1.5.pom +commons-beanutils/poms/commons-beanutils-1.6.1.pom +commons-beanutils/poms/commons-beanutils-1.6.pom +commons-beanutils/poms/commons-beanutils-1.8.0-BETA.pom +commons-betwixt/jars/commons-betwixt-0.5-javadoc.jar +commons-betwixt/jars/commons-betwixt-0.5.jar +commons-betwixt/jars/commons-betwixt-0.6-javadoc.jar +commons-betwixt/jars/commons-betwixt-1.0-alpha-1-javadoc.jar +commons-betwixt/jars/commons-betwixt-0.6.jar +commons-betwixt/jars/commons-betwixt-0.7-javadoc.jar +commons-betwixt/jars/commons-betwixt-0.7.jar +commons-betwixt/jars/commons-betwixt-1.0-beta-1.20020910.124754.jar +commons-betwixt/jars/commons-betwixt-1.0-alpha-1.jar +commons-betwixt/jars/commons-betwixt-0.8.jar.sha +commons-betwixt/jars/commons-betwixt-0.8.jar +commons-betwixt/jars/commons-betwixt-1.0-beta-1.jar +commons-betwixt/jars/commons-betwixt-1.0-beta-1.20020912.014405.jar +commons-betwixt/jars/commons-betwixt-1.0-beta-1.20020920.020057.jar +commons-betwixt/jars/commons-betwixt-1.0-beta-1.20030111.103454.jar +commons-betwixt/jars/commons-betwixt-1.0-dev.20020712.083337.jar +commons-betwixt/jars/commons-betwixt-1.0-dev.20020719.010630.jar +commons-betwixt/jars/commons-betwixt-1.0-dev.jar +commons-betwixt/jars/commons-betwixt-20030211.133854.jar +commons-betwixt/jars/commons-betwixt-snapshot-version +commons-betwixt/poms/commons-betwixt-0.8.pom +commons-betwixt/poms/commons-betwixt-0.6.pom +commons-betwixt/poms/commons-betwixt-0.7.pom +commons-chain/jars/commons-chain-1.0-javadoc.jar +commons-chain/jars/commons-chain-1.0.jar +commons-chain/jars/commons-chain-1.1.jar +commons-chain/poms/commons-chain-1.0.pom +commons-chain/poms/commons-chain-1.1.pom +commons-cli/jars/commons-cli-1.0-beta-1.jar +commons-cli/jars/commons-cli-1.0-beta-2-dev.20021004.111657.jar +commons-cli/jars/commons-cli-1.0-beta-2-dev.jar +commons-cli/jars/commons-cli-1.0-beta-2.jar +commons-cli/jars/commons-cli-1.0-dev.jar +commons-cli/jars/commons-cli-1.0-dev.20020710.025055.jar +commons-cli/jars/commons-cli-1.0-dev.20020727.104720.jar +commons-cli/jars/commons-cli-1.0-javadoc.jar +commons-cli/jars/commons-cli-1.0.jar +commons-cli/jars/commons-cli-1.1-javadoc.jar +commons-cli/jars/commons-cli-1.0.jar.sha +commons-cli/jars/commons-cli-1.1-sources.jar +commons-cli/jars/commons-cli-1.1.jar +commons-cli/poms/commons-cli-1.0.pom +commons-cli/poms/commons-cli-1.1.pom +commons-codec/jars/commons-codec-1.0-dev.jar +commons-codec/jars/commons-codec-1.1-javadoc.jar +commons-codec/jars/commons-codec-1.1.jar +commons-codec/jars/commons-codec-1.2-javadoc.jar +commons-codec/jars/commons-codec-1.2.jar +commons-codec/jars/commons-codec-1.3-javadoc.jar +commons-codec/jars/commons-codec-1.3.jar +commons-codec/jars/commons-codec-20041127.091804.jar +commons-codec/jars/commons-codec-snapshot-version +commons-codec/poms/commons-codec-1.1.pom +commons-codec/poms/commons-codec-1.2.pom +commons-codec/poms/commons-codec-1.3.pom +commons-codec/poms/commons-codec-20041127.091804.pom +commons-codec/poms/commons-codec-snapshot-version +commons-collections/jars/commons-collections-1.0-javadoc.jar +commons-collections/jars/commons-collections-1.0.jar +commons-collections/jars/commons-collections-2.0-javadoc.jar +commons-collections/jars/commons-collections-2.0.20020914.015953.jar +commons-collections/jars/commons-collections-3.1.jar +commons-collections/jars/commons-collections-snapshot-version +commons-collections/jars/commons-collections-2.0.20020914.020746.jar +commons-collections/jars/commons-collections-2.0.20020914.020858.jar +commons-collections/jars/commons-collections-2.0.jar +commons-collections/jars/commons-collections-2.1-dev.jar +commons-collections/jars/commons-collections-2.1-javadoc.jar +commons-collections/jars/commons-collections-2.1.jar +commons-collections/jars/commons-collections-2.1.1-javadoc.jar +commons-collections/jars/commons-collections-2.1.1.jar +commons-collections/jars/commons-collections-20030418.083655.jar +commons-collections/jars/commons-collections-20031027.000000.jar +commons-collections/jars/commons-collections-3.0-dev.jar +commons-collections/jars/commons-collections-20040102.233541.jar +commons-collections/jars/commons-collections-20040616.jar +commons-collections/jars/commons-collections-3.0-javadoc.jar +commons-collections/jars/commons-collections-3.0.jar +commons-collections/jars/commons-collections-3.1-javadoc.jar +commons-collections/jars/commons-collections-3.2.jar +commons-collections/jars/commons-collections-testframework-20031027.000000.jar +commons-collections/jars/commons-collections-testframework-20040102.233541.jar +commons-collections/jars/commons-collections-testframework-3.1.jar +commons-collections/jars/commons-collections-testframework-3.2.jar +commons-collections/poms/commons-collections-2.1.pom +commons-collections/poms/commons-collections-3.0.pom +commons-collections/poms/commons-collections-3.2.pom +commons-configuration/jars/commons-configuration-1.0-dev-2.20021231.045254.jar +commons-configuration/jars/commons-configuration-1.0-dev-3.20030603.101200.jar +commons-configuration/jars/commons-configuration-1.0-dev-3.20030607.194155.jar +commons-configuration/jars/commons-configuration-1.4-javadoc.jar +commons-configuration/jars/commons-configuration-1.0-dev.jar +commons-configuration/jars/commons-configuration-1.0-javadoc.jar +commons-configuration/jars/commons-configuration-1.0-rc1.jar +commons-configuration/jars/commons-configuration-1.0-rc2.jar +commons-configuration/jars/commons-configuration-1.0.jar +commons-configuration/jars/commons-configuration-1.1-javadoc.jar +commons-configuration/jars/commons-configuration-1.1.jar +commons-configuration/jars/commons-configuration-1.2.jar +commons-configuration/jars/commons-configuration-20030311.152757.jar +commons-configuration/jars/commons-configuration-20030620.073343.jar +commons-configuration/jars/commons-configuration-20030706.202021.jar +commons-configuration/jars/commons-configuration-20041012.002623.jar +commons-configuration/jars/commons-configuration-20041012.002804.jar +commons-configuration/jars/commons-configuration-snapshot-version +commons-configuration/jars/commons-configuration-1.4-sources.jar +commons-configuration/jars/commons-configuration-1.4.jar +commons-configuration/poms/commons-configuration-20041012.002623.pom +commons-configuration/poms/commons-configuration-1.0-rc1.pom +commons-configuration/poms/commons-configuration-1.0.pom +commons-configuration/poms/commons-configuration-1.1.pom +commons-configuration/poms/commons-configuration-1.2.pom +commons-configuration/poms/commons-configuration-20041012.002804.pom +commons-configuration/poms/commons-configuration-snapshot-version +commons-configuration/poms/commons-configuration-1.4.pom +commons-daemon/jars/commons-daemon-1.0-dev.20021002.084851.jar +commons-dbcp/jars/commons-dbcp-1.0-dev-20020806.jar +commons-dbcp/jars/commons-dbcp-1.0-dev.jar +commons-dbcp/jars/commons-dbcp-1.0-javadoc.jar +commons-dbcp/jars/commons-dbcp-1.0.jar +commons-dbcp/jars/commons-dbcp-1.1-RC1.jar +commons-dbcp/jars/commons-dbcp-1.1-RC2.jar +commons-dbcp/jars/commons-dbcp-1.1-dev.20021231.054941.jar +commons-dbcp/jars/commons-dbcp-1.1-dev.20021231.055112.jar +commons-dbcp/jars/commons-dbcp-1.1-javadoc.jar +commons-dbcp/jars/commons-dbcp-1.1.jar +commons-dbcp/jars/commons-dbcp-1.2-javadoc.jar +commons-dbcp/jars/commons-dbcp-1.2.1-javadoc.jar +commons-dbcp/jars/commons-dbcp-1.2.1.jar +commons-dbcp/jars/commons-dbcp-1.2.jar +commons-dbcp/jars/commons-dbcp-20030818.201141.jar +commons-dbcp/jars/commons-dbcp-20030821.193421.jar +commons-dbcp/jars/commons-dbcp-20030825.184428.jar +commons-dbcp/jars/commons-dbcp-snapshot-version +commons-dbcp/jars/commons-dbcp-1.2.2.jar +commons-dbcp/poms/commons-dbcp-1.0.pom +commons-dbcp/poms/commons-dbcp-1.1.pom +commons-dbcp/poms/commons-dbcp-1.2.1.pom +commons-dbcp/poms/commons-dbcp-1.2.pom +commons-dbcp/poms/commons-dbcp-1.2.2.pom +commons-dbutils/jars/commons-dbutils-1.0-javadoc.jar +commons-dbutils/jars/commons-dbutils-1.0.jar +commons-dbutils/jars/commons-dbutils-1.1.jar +commons-dbutils/jars/commons-dbutils-1.1-sources.jar +commons-dbutils/poms/commons-dbutils-1.0.pom +commons-dbutils/poms/commons-dbutils-1.1.pom +commons-digester/jars/commons-digester-1.0-dev.20020731.104901.jar +commons-digester/jars/commons-digester-1.2.jar +commons-digester/jars/commons-digester-1.3.jar +commons-digester/jars/commons-digester-1.4-javadoc.jar +commons-digester/jars/commons-digester-1.4.1-javadoc.jar +commons-digester/jars/commons-digester-1.4.1.jar +commons-digester/jars/commons-digester-1.5-javadoc.jar +commons-digester/jars/commons-digester-1.5.jar +commons-digester/jars/commons-digester-1.6-javadoc.jar +commons-digester/jars/commons-digester-1.6.jar +commons-digester/jars/commons-digester-1.7-javadoc.jar +commons-digester/jars/commons-digester-1.7.jar +commons-digester/jars/commons-digester-1.8.jar +commons-digester/jars/commons-digester-1.8-javadoc.jar +commons-digester/jars/commons-digester-1.8-sources.jar +commons-digester/poms/commons-digester-1.3.pom +commons-digester/poms/commons-digester-1.4.1.pom +commons-digester/poms/commons-digester-1.5.pom +commons-digester/poms/commons-digester-1.7.pom +commons-digester/poms/commons-digester-1.8.pom +commons-digester/distributions/commons-digester-1.8-src.zip +commons-digester/distributions/commons-digester-1.8-src.tar.gz +commons-digester/distributions/commons-digester-1.8.tar.gz +commons-digester/distributions/commons-digester-1.8.zip +commons-discovery/jars/commons-discovery-0.1-javadoc.jar +commons-discovery/jars/commons-discovery-0.1.jar +commons-discovery/jars/commons-discovery-0.2-javadoc.jar +commons-discovery/jars/commons-discovery-0.2-dev.jar +commons-discovery/jars/commons-discovery-0.2.jar +commons-discovery/jars/commons-discovery-1.0-dev.20021010.101254.jar +commons-discovery/jars/commons-discovery-20030211.213356.jar +commons-discovery/jars/commons-discovery-20040218.194635.jar +commons-discovery/jars/commons-discovery-snapshot-version +commons-discovery/jars/commons-discovery-0.4.jar +commons-discovery/poms/commons-discovery-0.1.pom +commons-discovery/poms/commons-discovery-0.2.pom +commons-discovery/poms/commons-discovery-0.4.pom +commons-el/jars/commons-el-1.0-javadoc.jar +commons-el/jars/commons-el-1.0.jar +commons-el/poms/commons-el-1.0.pom +commons-email/distributions/commons-email-1.0-src.tar.gz +commons-email/distributions/commons-email-1.0-src.zip +commons-email/distributions/commons-email-1.0.tar.gz +commons-email/distributions/commons-email-1.0.zip +commons-email/jars/commons-email-0.1-dev.jar +commons-email/jars/commons-email-1.0-javadoc.jar +commons-email/jars/commons-email-1.0.jar +commons-email/jars/commons-email-20030310.165926.jar +commons-email/jars/commons-email-snapshot-version +commons-email/poms/commons-email-1.0.pom +commons-fileupload/jars/commons-fileupload-1.0-beta-1-javadoc.jar +commons-fileupload/jars/commons-fileupload-1.0-beta-1.jar +commons-fileupload/jars/commons-fileupload-1.0-dev.jar +commons-fileupload/jars/commons-fileupload-1.0-javadoc.jar +commons-fileupload/jars/commons-fileupload-1.0-rc1-javadoc.jar +commons-fileupload/jars/commons-fileupload-1.0-rc1.jar +commons-fileupload/jars/commons-fileupload-1.0.jar +commons-fileupload/jars/commons-fileupload-1.1.1.jar +commons-fileupload/jars/commons-fileupload-1.1.jar +commons-fileupload/poms/commons-fileupload-1.0.pom +commons-fileupload/poms/commons-fileupload-1.1.1.pom +commons-fileupload/poms/commons-fileupload-1.1.pom +ecs/jars/ecs-1.4.1.jar +ecs/jars/ecs-1.4.2.jar +commons-grant/jars/commons-grant-1.0-b1.jar +commons-grant/jars/commons-grant-1.0-beta-2.jar +commons-grant/jars/commons-grant-1.0-beta-3.jar +commons-grant/jars/commons-grant-1.0-beta-4.jar +commons-grant/jars/commons-grant-1.0-beta-5.jar +commons-graph/jars/commons-graph-0.8.1.jar +commons-graph/jars/commons-graph-0.8.jar +commons-http/jars/commons-http-1.1.jar +commons-httpclient/jars/commons-httpclient-1.0.jar +commons-httpclient/jars/commons-httpclient-2.0-alpha1-javadoc.jar +commons-httpclient/jars/commons-httpclient-2.0-alpha2-javadoc.jar +commons-httpclient/jars/commons-httpclient-2.0.jar +commons-httpclient/jars/commons-httpclient-3.0.jar +commons-httpclient/jars/commons-httpclient-2.0-alpha2.20020903.070259.jar +commons-httpclient/jars/commons-httpclient-2.0-alpha2.20021115.044352.jar +commons-httpclient/jars/commons-httpclient-2.0-alpha2.jar +commons-httpclient/jars/commons-httpclient-2.0-alpha3-javadoc.jar +commons-httpclient/jars/commons-httpclient-2.0-alpha3.jar +commons-httpclient/jars/commons-httpclient-2.0-beta1-javadoc.jar +commons-httpclient/jars/commons-httpclient-2.0-beta1.jar +commons-httpclient/jars/commons-httpclient-2.0-beta2-javadoc.jar +commons-httpclient/jars/commons-httpclient-2.0-beta2.jar +commons-httpclient/jars/commons-httpclient-2.0-dev.20020705.071400.jar +commons-httpclient/jars/commons-httpclient-2.0-dev.jar +commons-httpclient/jars/commons-httpclient-2.0-javadoc.jar +commons-httpclient/jars/commons-httpclient-2.0-rc1-javadoc.jar +commons-httpclient/jars/commons-httpclient-2.0-rc1.jar +commons-httpclient/jars/commons-httpclient-2.0-rc2-javadoc.jar +commons-httpclient/jars/commons-httpclient-2.0-rc2.jar +commons-httpclient/jars/commons-httpclient-2.0-rc3-javadoc.jar +commons-httpclient/jars/commons-httpclient-2.0-rc3.jar +commons-httpclient/jars/commons-httpclient-2.0.1-javadoc.jar +commons-httpclient/jars/commons-httpclient-2.0.1.jar +commons-httpclient/jars/commons-httpclient-2.0.2-javadoc.jar +commons-httpclient/jars/commons-httpclient-2.0.2.jar +commons-httpclient/jars/commons-httpclient-2.0alpha1-20020606.jar +commons-httpclient/jars/commons-httpclient-2.0alpha1-20020829.jar +commons-httpclient/jars/commons-httpclient-2.0alpha1.jar +commons-httpclient/jars/commons-httpclient-20020423.jar +commons-httpclient/jars/commons-httpclient-3.0-alpha1-javadoc.jar +commons-httpclient/jars/commons-httpclient-3.0-beta1.jar +commons-httpclient/jars/commons-httpclient-3.1.jar +commons-httpclient/jars/commons-httpclient-3.0-alpha1.jar +commons-httpclient/jars/commons-httpclient-3.0-alpha2-javadoc.jar +commons-httpclient/jars/commons-httpclient-3.0-alpha2.jar +commons-httpclient/jars/commons-httpclient-3.0-beta1-javadoc.jar +commons-httpclient/jars/commons-httpclient-3.0-rc1-javadoc.jar +commons-httpclient/jars/commons-httpclient-3.0-rc1.jar +commons-httpclient/jars/commons-httpclient-3.0-rc2-javadoc.jar +commons-httpclient/jars/commons-httpclient-3.0-rc2.jar +commons-httpclient/jars/commons-httpclient-3.0-rc3-javadoc.jar +commons-httpclient/jars/commons-httpclient-3.0-rc3.jar +commons-httpclient/jars/commons-httpclient-3.0-rc4-javadoc.jar +commons-httpclient/jars/commons-httpclient-3.0-rc4.jar +commons-httpclient/jars/commons-httpclient-3.0.1.jar +commons-httpclient/jars/commons-httpclient-3.1-alpha1.jar +commons-httpclient/jars/commons-httpclient-3.1-beta1.jar +commons-httpclient/jars/commons-httpclient-3.1-rc1.jar +commons-httpclient/poms/commons-httpclient-3.0alpha2.pom +commons-httpclient/poms/commons-httpclient-2.0.2.pom +commons-httpclient/poms/commons-httpclient-3.0.1.pom +commons-httpclient/poms/commons-httpclient-3.0.pom +commons-httpclient/poms/commons-httpclient-3.1-alpha1.pom +commons-httpclient/poms/commons-httpclient-3.0beta1.pom +commons-httpclient/poms/commons-httpclient-3.0rc1.pom +commons-httpclient/poms/commons-httpclient-3.0rc2.pom +commons-httpclient/poms/commons-httpclient-3.0rc3.pom +commons-httpclient/poms/commons-httpclient-3.0rc4.pom +commons-httpclient/poms/commons-httpclient-3.1-beta1.pom +commons-httpclient/poms/commons-httpclient-3.1-rc1.pom +commons-httpclient/poms/commons-httpclient-3.1.pom +commons-i18n/distributions/commons-i18n-0.3-src.tar.gz +commons-i18n/distributions/commons-i18n-0.3-src.zip +commons-i18n/distributions/commons-i18n-0.3.tar.gz +commons-i18n/distributions/commons-i18n-0.3.zip +commons-i18n/distributions/commons-i18n-0.4-src.tar.gz +commons-i18n/distributions/commons-i18n-0.4-src.zip +commons-i18n/distributions/commons-i18n-0.4.tar.gz +commons-i18n/distributions/commons-i18n-0.4.zip +commons-i18n/distributions/commons-i18n-0.5-src.tar.gz +commons-i18n/distributions/commons-i18n-0.5-src.zip +commons-i18n/distributions/commons-i18n-0.5.tar.gz +commons-i18n/distributions/commons-i18n-0.5.zip +commons-i18n/jars/commons-i18n-0.4.jar +commons-i18n/jars/commons-i18n-0.5.jar +commons-i18n/poms/commons-i18n-0.3.pom +commons-i18n/poms/commons-i18n-0.4.pom +commons-i18n/poms/commons-i18n-0.5.pom +commons-io/jars/commons-io-0.1.jar +commons-io/jars/commons-io-0.2-dev.20020614.122300.jar +commons-io/jars/commons-io-0.2-dev.20020717.100545.jar +commons-io/jars/commons-io-1.0-javadoc.jar +commons-io/jars/commons-io-1.0.jar +commons-io/jars/commons-io-1.3.jar +commons-io/jars/commons-io-1.1-javadoc.jar +commons-io/jars/commons-io-1.1.jar +commons-io/jars/commons-io-1.2-javadoc.jar +commons-io/jars/commons-io-1.2.jar +commons-io/jars/commons-io-20030203.000550.jar +commons-io/jars/commons-io-1.3-javadoc.jar +commons-io/jars/commons-io-1.3-sources.jar +commons-io/jars/commons-io-1.3.1-javadoc.jar +commons-io/jars/commons-io-1.3.1.jar +commons-io/jars/commons-io-1.3.1-sources.jar +commons-io/poms/commons-io-1.0.pom +commons-io/poms/commons-io-1.1.pom +commons-io/poms/commons-io-1.2.pom +commons-io/poms/commons-io-1.3.pom +commons-io/poms/commons-io-1.3.1.pom +commons-jdbc2pool/jars/commons-jdbc2pool-1.0-dev.jar +commons-jelly/distributions/KEYS +commons-jelly/distributions/commons-jelly-1.0-beta-3-src.tar.gz +commons-jelly/distributions/commons-jelly-1.0-beta-3-src.zip +commons-jelly/distributions/commons-jelly-1.0-beta-3.tar.gz +commons-jelly/distributions/commons-jelly-1.0-beta-3.zip +commons-jelly/distributions/commons-jelly-1.0-beta-4-src.tar.gz +commons-jelly/distributions/commons-jelly-1.0-beta-4-src.zip +commons-jelly/distributions/commons-jelly-1.0-beta-4.tar.gz +commons-jelly/distributions/commons-jelly-1.0-beta-4.zip +commons-jelly/distributions/commons-jelly-1.0-dev-src.tar.gz +commons-jelly/distributions/commons-jelly-1.0-dev-src.zip +commons-jelly/distributions/commons-jelly-1.0-dev.tar.gz +commons-jelly/distributions/commons-jelly-1.0-dev.zip +commons-jelly/jars/commons-jelly-1.0-RC1-javadoc.jar +commons-jelly/jars/commons-jelly-1.0-RC1.jar +commons-jelly/jars/commons-jelly-1.0-beta-1.jar +commons-jelly/jars/commons-jelly-1.0-beta-2.jar +commons-jelly/jars/commons-jelly-1.0-dev.20020714.020704.jar +commons-jelly/jars/commons-jelly-1.0-beta-3.20020819.043231.jar +commons-jelly/jars/commons-jelly-1.0-beta-3.20020819.043406.jar +commons-jelly/jars/commons-jelly-1.0-beta-3.20020820.043616.jar +commons-jelly/jars/commons-jelly-1.0-beta-3.20020828.023547.jar +commons-jelly/jars/commons-jelly-1.0-beta-3.20020828.032644.jar +commons-jelly/jars/commons-jelly-1.0-beta-3.20020904.063114.jar +commons-jelly/jars/commons-jelly-1.0-beta-3.20020910.061420.jar +commons-jelly/jars/commons-jelly-1.0-beta-3.20020911.045717.jar +commons-jelly/jars/commons-jelly-1.0-beta-3.jar +commons-jelly/jars/commons-jelly-1.0-beta-3.20020913.010946.jar +commons-jelly/jars/commons-jelly-1.0-beta-3.20020913.120853.jar +commons-jelly/jars/commons-jelly-1.0-beta-4-javadoc.jar +commons-jelly/jars/commons-jelly-1.0-beta-4.20020923.123659.jar +commons-jelly/jars/commons-jelly-1.0-beta-4.20020924.123511.jar +commons-jelly/jars/commons-jelly-1.0-beta-4.20021002.050543.jar +commons-jelly/jars/commons-jelly-1.0-beta-4.20021002.113628.jar +commons-jelly/jars/commons-jelly-1.0-beta-4.20021005.025546.jar +commons-jelly/jars/commons-jelly-1.0-beta-4.20021005.070650.jar +commons-jelly/jars/commons-jelly-1.0-beta-4.20021008.094131.jar +commons-jelly/jars/commons-jelly-1.0-beta-4.20021008.112820.jar +commons-jelly/jars/commons-jelly-1.0-beta-4.20021012.035615.jar +commons-jelly/jars/commons-jelly-1.0-beta-4.jar +commons-jelly/jars/commons-jelly-1.0-beta-4.20021017.053011.jar +commons-jelly/jars/commons-jelly-1.0-beta-4.20021023.094006.jar +commons-jelly/jars/commons-jelly-1.0-beta-4.20021023.153932.jar +commons-jelly/jars/commons-jelly-1.0-beta-4.20021105.013628.jar +commons-jelly/jars/commons-jelly-1.0-beta-4.20021112.084337.jar +commons-jelly/jars/commons-jelly-1.0-beta-4.20021113.125954.jar +commons-jelly/jars/commons-jelly-1.0-beta-4.20021113.192421.jar +commons-jelly/jars/commons-jelly-1.0-beta-4.20021120.034859.jar +commons-jelly/jars/commons-jelly-1.0-javadoc.jar +commons-jelly/jars/commons-jelly-1.0-beta-4.20021210.123241.jar +commons-jelly/jars/commons-jelly-1.0-beta-4.20021222.042553.jar +commons-jelly/jars/commons-jelly-1.0-beta-4.20021231.013337.jar +commons-jelly/jars/commons-jelly-1.0-beta-4.20021231.034645.jar +commons-jelly/jars/commons-jelly-20030211.141339.jar +commons-jelly/jars/commons-jelly-1.0-beta-4.20030104.110205.jar +commons-jelly/jars/commons-jelly-1.0-dev.20020711.024953.jar +commons-jelly/jars/commons-jelly-1.0-dev.20020713.015328.jar +commons-jelly/jars/commons-jelly-1.0-dev.20020713.020804.jar +commons-jelly/jars/commons-jelly-1.0.jar +commons-jelly/jars/commons-jelly-1.0-dev.20020715.041648.jar +commons-jelly/jars/commons-jelly-1.0-dev.20020715.044906.jar +commons-jelly/jars/commons-jelly-1.0-dev.20020715.045302.jar +commons-jelly/jars/commons-jelly-1.0-dev.20020715.100851.jar +commons-jelly/jars/commons-jelly-1.0-dev.20020715.112252.jar +commons-jelly/jars/commons-jelly-1.0-dev.20020716.055015.jar +commons-jelly/jars/commons-jelly-1.0-dev.20020716.064746.jar +commons-jelly/jars/commons-jelly-1.0-dev.20020716.065225.jar +commons-jelly/jars/commons-jelly-1.0-dev.20020719.074608.jar +commons-jelly/jars/commons-jelly-1.0-dev.20020719.082922.jar +commons-jelly/jars/commons-jelly-1.0-dev.20020720.080105.jar +commons-jelly/jars/commons-jelly-1.0-dev.20020731.041103.jar +commons-jelly/jars/commons-jelly-1.0-dev.20020731.122236.jar +commons-jelly/jars/commons-jelly-1.0-dev.20020811.014845.jar +commons-jelly/jars/commons-jelly-1.0-dev.20021021.132700.jar +commons-jelly/jars/commons-jelly-20030303.054314.jar +commons-jelly/jars/commons-jelly-20030310.073407.jar +commons-jelly/jars/commons-jelly-snapshot-version +commons-jelly/jars/commons-jelly-20030303.180550.jar +commons-jelly/jars/commons-jelly-20030305.075341.jar +commons-jelly/jars/commons-jelly-20030307.121112.jar +commons-jelly/jars/commons-jelly-20030307.135732.jar +commons-jelly/jars/commons-jelly-20030308.101032.jar +commons-jelly/jars/commons-jelly-20030320.080622.jar +commons-jelly/jars/commons-jelly-20030320.080836.jar +commons-jelly/jars/commons-jelly-20030320.165458.jar +commons-jelly/jars/commons-jelly-20030522.212428.jar +commons-jelly/jars/commons-jelly-20030609.133047.jar +commons-jelly/jars/commons-jelly-20030711.034327.jar +commons-jelly/jars/commons-jelly-avalon-20030211.143621.jar +commons-jelly/jars/commons-jelly-20030724.033229.jar +commons-jelly/jars/commons-jelly-20030902.160215.jar +commons-jelly/jars/commons-jelly-20040902.064518.jar +commons-jelly/jars/commons-jelly-20040902.070806.jar +commons-jelly/jars/commons-jelly-avalon-snapshot-version +commons-jelly/jars/commons-jelly-tags-ant-1.0.jar +commons-jelly/jars/commons-jelly-tags-ant-1.1.jar +commons-jelly/jars/commons-jelly-tags-ant-20030211.142045.jar +commons-jelly/jars/commons-jelly-tags-ant-20040902.000000.jar +commons-jelly/jars/commons-jelly-tags-bean-1.0.jar +commons-jelly/jars/commons-jelly-tags-ant-20030310.080026.jar +commons-jelly/jars/commons-jelly-tags-ant-20030625.025346.jar +commons-jelly/jars/commons-jelly-tags-ant-20030625.025706.jar +commons-jelly/jars/commons-jelly-tags-ant-20030625.032346.jar +commons-jelly/jars/commons-jelly-tags-dynabean-snapshot-version +commons-jelly/jars/commons-jelly-tags-ant-20040902.071105.jar +commons-jelly/jars/commons-jelly-tags-ant-snapshot-version +commons-jelly/jars/commons-jelly-tags-antlr-1.0.jar +commons-jelly/jars/commons-jelly-tags-antlr-20030211.143720.jar +commons-jelly/jars/commons-jelly-tags-antlr-20040902.071159.jar +commons-jelly/jars/commons-jelly-tags-antlr-snapshot-version +commons-jelly/jars/commons-jelly-tags-avalon-1.0.jar +commons-jelly/jars/commons-jelly-tags-avalon-20040902.071300.jar +commons-jelly/jars/commons-jelly-tags-avalon-snapshot-version +commons-jelly/jars/commons-jelly-tags-bean-20030211.144357.jar +commons-jelly/jars/commons-jelly-tags-betwixt-1.0.jar +commons-jelly/jars/commons-jelly-tags-bean-20030320.165723.jar +commons-jelly/jars/commons-jelly-tags-bean-20040902.071526.jar +commons-jelly/jars/commons-jelly-tags-bean-snapshot-version +commons-jelly/jars/commons-jelly-tags-beanshell-1.0.jar +commons-jelly/jars/commons-jelly-tags-beanshell-20030211.141835.jar +commons-jelly/jars/commons-jelly-tags-beanshell-20040902.071629.jar +commons-jelly/jars/commons-jelly-tags-beanshell-snapshot-version +commons-jelly/jars/commons-jelly-tags-betwixt-1.0-beta-1.20030104.095958.jar +commons-jelly/jars/commons-jelly-tags-betwixt-20030211.144504.jar +commons-jelly/jars/commons-jelly-tags-betwixt-20040902.071752.jar +commons-jelly/jars/commons-jelly-tags-betwixt-snapshot-version +commons-jelly/jars/commons-jelly-tags-bsf-1.0.jar +commons-jelly/jars/commons-jelly-tags-bsf-20030211.142259.jar +commons-jelly/jars/commons-jelly-tags-bsf-20030305.080050.jar +commons-jelly/jars/commons-jelly-tags-fmt-1.0.jar +commons-jelly/jars/commons-jelly-tags-bsf-20040902.071900.jar +commons-jelly/jars/commons-jelly-tags-bsf-snapshot-version +commons-jelly/jars/commons-jelly-tags-define-1.0.jar +commons-jelly/jars/commons-jelly-tags-define-20030211.142932.jar +commons-jelly/jars/commons-jelly-tags-define-20040902.072141.jar +commons-jelly/jars/commons-jelly-tags-define-snapshot-version +commons-jelly/jars/commons-jelly-tags-dynabean-1.0.jar +commons-jelly/jars/commons-jelly-tags-dynabean-20030211.142601.jar +commons-jelly/jars/commons-jelly-tags-dynabean-20040902.071946.jar +commons-jelly/jars/commons-jelly-tags-email-1.0.jar +commons-jelly/jars/commons-jelly-tags-email-20030211.144034.jar +commons-jelly/jars/commons-jelly-tags-email-20040902.072224.jar +commons-jelly/jars/commons-jelly-tags-email-snapshot-version +commons-jelly/jars/commons-jelly-tags-fmt-20030211.142201.jar +commons-jelly/jars/commons-jelly-tags-html-1.0.jar +commons-jelly/jars/commons-jelly-tags-fmt-20040902.072321.jar +commons-jelly/jars/commons-jelly-tags-fmt-snapshot-version +commons-jelly/jars/commons-jelly-tags-html-1.0-beta-1.20030104.103227.jar +commons-jelly/jars/commons-jelly-tags-html-20030211.143308.jar +commons-jelly/jars/commons-jelly-tags-html-20030317.100924.jar +commons-jelly/jars/commons-jelly-tags-html-20040902.072530.jar +commons-jelly/jars/commons-jelly-tags-html-snapshot-version +commons-jelly/jars/commons-jelly-tags-http-1.0-beta-1.20030104.141847.jar +commons-jelly/jars/commons-jelly-tags-http-1.0.jar +commons-jelly/jars/commons-jelly-tags-jaxme-1.0.jar +commons-jelly/jars/commons-jelly-tags-http-20030211.143043.jar +commons-jelly/jars/commons-jelly-tags-http-20040902.072620.jar +commons-jelly/jars/commons-jelly-tags-http-snapshot-version +commons-jelly/jars/commons-jelly-tags-interaction-1.0.jar +commons-jelly/jars/commons-jelly-tags-interaction-1.1.jar +commons-jelly/jars/commons-jelly-tags-jetty-1.0.jar +commons-jelly/jars/commons-jelly-tags-interaction-20030211.143817.jar +commons-jelly/jars/commons-jelly-tags-interaction-20040902.072702.jar +commons-jelly/jars/commons-jelly-tags-interaction-snapshot-version +commons-jelly/jars/commons-jelly-tags-jaxme-20040902.072852.jar +commons-jelly/jars/commons-jelly-tags-jms-1.0.jar +commons-jelly/jars/commons-jelly-tags-jms-20030211.142459.jar +commons-jelly/jars/commons-jelly-tags-jaxme-snapshot-version +commons-jelly/jars/commons-jelly-tags-jetty-1.0-beta-1.20030104.151258.jar +commons-jelly/jars/commons-jelly-tags-jetty-20030211.144139.jar +commons-jelly/jars/commons-jelly-tags-jetty-20040902.072943.jar +commons-jelly/jars/commons-jelly-tags-jface-1.0.jar +commons-jelly/jars/commons-jelly-tags-jetty-snapshot-version +commons-jelly/jars/commons-jelly-tags-jface-20040902.073130.jar +commons-jelly/jars/commons-jelly-tags-jface-snapshot-version +commons-jelly/jars/commons-jelly-tags-jms-20040902.073216.jar +commons-jelly/jars/commons-jelly-tags-jmx-1.0.jar +commons-jelly/jars/commons-jelly-tags-jmx-20030320.165705.jar +commons-jelly/jars/commons-jelly-tags-jms-snapshot-version +commons-jelly/jars/commons-jelly-tags-jmx-20030320.165904.jar +commons-jelly/jars/commons-jelly-tags-jmx-20040902.073310.jar +commons-jelly/jars/commons-jelly-tags-jsl-1.0.jar +commons-jelly/jars/commons-jelly-tags-jsl-20030211.143151.jar +commons-jelly/jars/commons-jelly-tags-jmx-snapshot-version +commons-jelly/jars/commons-jelly-tags-jsl-20040902.072431.jar +commons-jelly/jars/commons-jelly-tags-jsl-snapshot-version +commons-jelly/jars/commons-jelly-tags-junit-1.0.jar +commons-jelly/jars/commons-jelly-tags-junit-snapshot-version +commons-jelly/jars/commons-jelly-tags-junit-20030211.141731.jar +commons-jelly/jars/commons-jelly-tags-junit-20040902.064627.jar +commons-jelly/jars/commons-jelly-tags-junit-20040902.070920.jar +commons-jelly/jars/commons-jelly-tags-log-1.0.jar +commons-jelly/jars/commons-jelly-tags-log-20030211.142821.jar +commons-jelly/jars/commons-jelly-tags-log-20040902.071410.jar +commons-jelly/jars/commons-jelly-tags-log-snapshot-version +commons-jelly/jars/commons-jelly-tags-ojb-1.0.jar +commons-jelly/jars/commons-jelly-tags-ojb-20030211.141630.jar +commons-jelly/jars/commons-jelly-tags-ojb-20040902.073352.jar +commons-jelly/jars/commons-jelly-tags-ojb-snapshot-version +commons-jelly/jars/commons-jelly-tags-quartz-1.0.jar +commons-jelly/jars/commons-jelly-tags-quartz-20030211.144716.jar +commons-jelly/jars/commons-jelly-tags-quartz-20040902.073433.jar +commons-jelly/jars/commons-jelly-tags-quartz-snapshot-version +commons-jelly/jars/commons-jelly-tags-regexp-1.0.jar +commons-jelly/jars/commons-jelly-tags-soap-20030211.142401.jar +commons-jelly/jars/commons-jelly-tags-soap-1.0.jar +commons-jelly/jars/commons-jelly-tags-soap-20040902.073516.jar +commons-jelly/jars/commons-jelly-tags-soap-snapshot-version +commons-jelly/jars/commons-jelly-tags-sql-1.0.jar +commons-jelly/jars/commons-jelly-tags-sql-20030211.144816.jar +commons-jelly/jars/commons-jelly-tags-sql-20040902.073600.jar +commons-jelly/jars/commons-jelly-tags-sql-snapshot-version +commons-jelly/jars/commons-jelly-tags-swing-1.0-beta-1.20030104.104105.jar +commons-jelly/jars/commons-jelly-tags-swing-1.0.jar +commons-jelly/jars/commons-jelly-tags-swing-20030211.143925.jar +commons-jelly/jars/commons-jelly-tags-swing-20040902.073656.jar +commons-jelly/jars/commons-jelly-tags-swing-snapshot-version +commons-jelly/jars/commons-jelly-tags-swt-1.0.jar +commons-jelly/jars/commons-jelly-tags-swt-20030211.144614.jar +commons-jelly/jars/commons-jelly-tags-swt-20030226.103913.jar +commons-jelly/jars/commons-jelly-tags-util-1.0.jar +commons-jelly/jars/commons-jelly-tags-swt-20030226.122214.jar +commons-jelly/jars/commons-jelly-tags-swt-20040902.073028.jar +commons-jelly/jars/commons-jelly-tags-swt-snapshot-version +commons-jelly/jars/commons-jelly-tags-threads-1.0.jar +commons-jelly/jars/commons-jelly-tags-threads-20030211.143515.jar +commons-jelly/jars/commons-jelly-tags-threads-20040902.073749.jar +commons-jelly/jars/commons-jelly-tags-threads-snapshot-version +commons-jelly/jars/commons-jelly-tags-util-1.1.1.jar +commons-jelly/jars/commons-jelly-tags-util-1.1.jar +commons-jelly/jars/commons-jelly-tags-util-20030211.141939.jar +commons-jelly/jars/commons-jelly-tags-util-20040902.071012.jar +commons-jelly/jars/commons-jelly-tags-util-snapshot-version +commons-jelly/jars/commons-jelly-tags-validate-1.0.jar +commons-jelly/jars/commons-jelly-tags-validate-20030211.143411.jar +commons-jelly/jars/commons-jelly-tags-validate-20030420.031608.jar +commons-jelly/jars/commons-jelly-tags-validate-20030420.041030.jar +commons-jelly/jars/commons-jelly-tags-validate-20040902.073836.jar +commons-jelly/jars/commons-jelly-tags-validate-snapshot-version +commons-jelly/jars/commons-jelly-tags-velocity-1.0.jar +commons-jelly/jars/commons-jelly-tags-velocity-20030211.144921.jar +commons-jelly/jars/commons-jelly-tags-velocity-20030303.205659.jar +commons-jelly/jars/commons-jelly-tags-velocity-20040902.073917.jar +commons-jelly/jars/commons-jelly-tags-velocity-snapshot-version +commons-jelly/jars/commons-jelly-tags-xml-1.0.jar +commons-jelly/jars/commons-jelly-tags-xml-1.1.jar +commons-jelly/jars/commons-jelly-tags-xml-20030211.142705.jar +commons-jelly/jars/commons-jelly-tags-xml-20040902.072037.jar +commons-jelly/jars/commons-jelly-tags-xml-snapshot-version +commons-jelly/jars/commons-jelly-tags-xmlunit-1.0.jar +commons-jelly/jars/commons-jelly-tags-xmlunit-20030211.144251.jar +commons-jelly/jars/commons-jelly-tags-xmlunit-20040902.072757.jar +commons-jelly/jars/commons-jelly-tags-xmlunit-snapshot-version +commons-jelly/poms/commons-jelly-1.0-RC1.pom +commons-jelly/poms/commons-jelly-1.0.pom +commons-jelly/poms/commons-jelly-20040902.064518.pom +commons-jelly/poms/commons-jelly-tags-ant-20040902.000000.pom +commons-jelly/poms/commons-jelly-20040902.070806.pom +commons-jelly/poms/commons-jelly-snapshot-version +commons-jelly/poms/commons-jelly-tags-ant-1.1.pom +commons-jelly/poms/commons-jelly-tags-ant-20040902.071105.pom +commons-jelly/poms/commons-jelly-tags-ant-snapshot-version +commons-jelly/poms/commons-jelly-tags-antlr-20040902.071159.pom +commons-jelly/poms/commons-jelly-tags-avalon-20040902.071300.pom +commons-jelly/poms/commons-jelly-tags-antlr-snapshot-version +commons-jelly/poms/commons-jelly-tags-avalon-snapshot-version +commons-jelly/poms/commons-jelly-tags-bean-20040902.071526.pom +commons-jelly/poms/commons-jelly-tags-bean-snapshot-version +commons-jelly/poms/commons-jelly-tags-beanshell-20040902.071629.pom +commons-jelly/poms/commons-jelly-tags-beanshell-snapshot-version +commons-jelly/poms/commons-jelly-tags-betwixt-20040902.071752.pom +commons-jelly/poms/commons-jelly-tags-betwixt-snapshot-version +commons-jelly/poms/commons-jelly-tags-bsf-20040902.071900.pom +commons-jelly/poms/commons-jelly-tags-define-20040902.072141.pom +commons-jelly/poms/commons-jelly-tags-bsf-snapshot-version +commons-jelly/poms/commons-jelly-tags-define-snapshot-version +commons-jelly/poms/commons-jelly-tags-dynabean-20040902.071946.pom +commons-jelly/poms/commons-jelly-tags-dynabean-snapshot-version +commons-jelly/poms/commons-jelly-tags-email-20040902.072224.pom +commons-jelly/poms/commons-jelly-tags-email-snapshot-version +commons-jelly/poms/commons-jelly-tags-fmt-20040902.072321.pom +commons-jelly/poms/commons-jelly-tags-fmt-snapshot-version +commons-jelly/poms/commons-jelly-tags-html-20040902.072530.pom +commons-jelly/poms/commons-jelly-tags-html-snapshot-version +commons-jelly/poms/commons-jelly-tags-http-20040902.072620.pom +commons-jelly/poms/commons-jelly-tags-http-snapshot-version +commons-jelly/poms/commons-jelly-tags-interaction-1.1.pom +commons-jelly/poms/commons-jelly-tags-interaction-20040902.072702.pom +commons-jelly/poms/commons-jelly-tags-interaction-snapshot-version +commons-jelly/poms/commons-jelly-tags-jaxme-20040902.072852.pom +commons-jelly/poms/commons-jelly-tags-jaxme-snapshot-version +commons-jelly/poms/commons-jelly-tags-jetty-20040902.072943.pom +commons-jelly/poms/commons-jelly-tags-jetty-snapshot-version +commons-jelly/poms/commons-jelly-tags-jface-20040902.073130.pom +commons-jelly/poms/commons-jelly-tags-jface-snapshot-version +commons-jelly/poms/commons-jelly-tags-jms-20040902.073216.pom +commons-jelly/poms/commons-jelly-tags-jms-snapshot-version +commons-jelly/poms/commons-jelly-tags-jmx-20040902.073310.pom +commons-jelly/poms/commons-jelly-tags-jmx-snapshot-version +commons-jelly/poms/commons-jelly-tags-jsl-20040902.072431.pom +commons-jelly/poms/commons-jelly-tags-xml-1.1.pom +commons-jelly/poms/commons-jelly-tags-jsl-snapshot-version +commons-jelly/poms/commons-jelly-tags-junit-20040902.064627.pom +commons-jelly/poms/commons-jelly-tags-junit-20040902.070920.pom +commons-jelly/poms/commons-jelly-tags-junit-snapshot-version +commons-jelly/poms/commons-jelly-tags-log-20040902.071410.pom +commons-jelly/poms/commons-jelly-tags-log-snapshot-version +commons-jelly/poms/commons-jelly-tags-ojb-20040902.073352.pom +commons-jelly/poms/commons-jelly-tags-ojb-snapshot-version +commons-jelly/poms/commons-jelly-tags-quartz-20040902.073433.pom +commons-jelly/poms/commons-jelly-tags-quartz-snapshot-version +commons-jelly/poms/commons-jelly-tags-soap-20040902.073516.pom +commons-jelly/poms/commons-jelly-tags-soap-snapshot-version +commons-jelly/poms/commons-jelly-tags-sql-20040902.073600.pom +commons-jelly/poms/commons-jelly-tags-sql-snapshot-version +commons-jelly/poms/commons-jelly-tags-swing-20040902.073656.pom +commons-jelly/poms/commons-jelly-tags-swing-snapshot-version +commons-jelly/poms/commons-jelly-tags-swt-20040902.073028.pom +commons-jelly/poms/commons-jelly-tags-swt-snapshot-version +commons-jelly/poms/commons-jelly-tags-threads-20040902.073749.pom +commons-jelly/poms/commons-jelly-tags-threads-snapshot-version +commons-jelly/poms/commons-jelly-tags-util-20040902.064720.pom +commons-jelly/poms/commons-jelly-tags-util-20040902.071012.pom +commons-jelly/poms/commons-jelly-tags-util-snapshot-version +commons-jelly/poms/commons-jelly-tags-validate-20040902.073836.pom +commons-jelly/poms/commons-jelly-tags-validate-snapshot-version +commons-jelly/poms/commons-jelly-tags-velocity-20040902.073917.pom +commons-jelly/poms/commons-jelly-tags-velocity-snapshot-version +commons-jelly/poms/commons-jelly-tags-xml-20040902.072037.pom +commons-jelly/poms/commons-jelly-tags-xml-snapshot-version +commons-jelly/poms/commons-jelly-tags-xmlunit-20040902.072757.pom +commons-jelly/poms/commons-jelly-tags-xmlunit-snapshot-version +commons-jexl/distributions/KEYS +commons-jexl/distributions/commons-jexl-1.0-RC1-src.tar.gz +commons-jexl/distributions/commons-jexl-1.0-RC1-src.zip +commons-jexl/distributions/commons-jexl-1.0-RC1.tar.gz +commons-jexl/distributions/commons-jexl-1.0-RC1.zip +commons-jexl/distributions/commons-jexl-1.0-src.tar.gz +commons-jexl/distributions/commons-jexl-1.0-src.zip +commons-jexl/distributions/commons-jexl-1.0.tar.gz +commons-jexl/distributions/commons-jexl-1.0.zip +commons-jexl/jars/commons-jexl-1.0-RC1.jar +commons-jexl/jars/commons-jexl-1.0-beta-1.jar +commons-jexl/jars/commons-jexl-1.0-beta-2.jar +commons-jexl/jars/commons-jexl-1.0-dev.20020731.122830.jar +commons-jexl/jars/commons-jexl-1.0-dev.jar +commons-jexl/jars/commons-jexl-1.0-javadoc.jar +commons-jexl/jars/commons-jexl-1.0.jar +commons-jexl/jars/commons-jexl-20030307.151331.jar +commons-jexl/jars/commons-jexl-20040901.055348.jar +commons-jexl/jars/commons-jexl-snapshot-version +commons-jexl/poms/commons-jexl-1.0-RC1.pom +commons-jexl/poms/commons-jexl-20040901.055348.pom +commons-jexl/poms/commons-jexl-snapshot-version +commons-jux/jars/commons-jux-20030306.065700.jar +commons-jux/jars/commons-jux-snapshot-version +commons-jxpath/jars/commons-jxpath-0.1-dev.jar +commons-jxpath/jars/commons-jxpath-1.0-javadoc.jar +commons-jxpath/jars/commons-jxpath-1.0.jar +commons-jxpath/jars/commons-jxpath-1.1-javadoc.jar +commons-jxpath/jars/commons-jxpath-1.1.jar +commons-jxpath/jars/commons-jxpath-1.2.jar +commons-jxpath/poms/commons-jxpath-1.0.pom +commons-jxpath/poms/commons-jxpath-1.1.pom +commons-jxpath/poms/commons-jxpath-1.2.pom +commons-lang/distributions/commons-lang-2.0.zip +commons-lang/jars/commons-lang-0.1-dev.jar +commons-lang/jars/commons-lang-1.0-b1.1.jar +commons-lang/jars/commons-lang-1.0-b1.jar +commons-lang/jars/commons-lang-2.3-javadoc.jar +commons-lang/jars/commons-lang-1.0-dev.20020910.034641.jar +commons-lang/jars/commons-lang-1.0-dev.jar +commons-lang/jars/commons-lang-1.0-javadoc.jar +commons-lang/jars/commons-lang-1.0.1-javadoc.jar +commons-lang/jars/commons-lang-1.0.1.jar +commons-lang/jars/commons-lang-1.0.jar +commons-lang/jars/commons-lang-1.1-dev.20021217.062015.jar +commons-lang/jars/commons-lang-2.0-dev.20030203.000129.jar +commons-lang/jars/commons-lang-2.0-javadoc.jar +commons-lang/jars/commons-lang-2.0.jar +commons-lang/jars/commons-lang-2.1-javadoc.jar +commons-lang/jars/commons-lang-2.1.jar +commons-lang/jars/commons-lang-snapshot-version +commons-lang/jars/commons-lang-2.3.jar +commons-lang/jars/commons-lang-2.3-sources.jar +commons-lang/poms/commons-lang-1.0.1.pom +commons-lang/poms/commons-lang-1.0.pom +commons-lang/poms/commons-lang-2.0.pom +commons-lang/poms/commons-lang-2.1.pom +commons-lang/poms/commons-lang-2.3.pom +commons-latka/jars/commons-latka-1.0-alpha1-javadoc.jar +commons-latka/jars/commons-latka-1.0-dev.20021208.082252.jar +commons-latka/jars/commons-latka-1.0-dev.20021208.125541.jar +commons-latka/jars/commons-latka-1.0-dev.20021208.130300.jar +commons-latka/jars/commons-latka-1.0-dev.20021217.141322.jar +commons-latka/jars/commons-latka-1.0-dev.20030107.163533.jar +commons-launcher/jars/commons-launcher-0.9-javadoc.jar +commons-launcher/jars/commons-launcher-1.1-javadoc.jar +commons-logging/jars/commons-logging-1.0-javadoc.jar +commons-logging/jars/commons-logging-1.0.1-javadoc.jar +commons-logging/jars/commons-logging-1.0.1.jar +commons-logging/jars/commons-logging-1.0.2-javadoc.jar +commons-logging/jars/commons-logging-1.0.2.jar +commons-logging/jars/commons-logging-1.0.3-javadoc.jar +commons-logging/jars/commons-logging-1.0.3.jar +commons-logging/jars/commons-logging-1.0.4-javadoc.jar +commons-logging/jars/commons-logging-1.0.4.jar +commons-logging/jars/commons-logging-1.0.jar +commons-logging/jars/commons-logging-1.1-dev.jar +commons-logging/jars/commons-logging-1.1.jar +commons-logging/jars/commons-logging-adapters-1.1.jar +commons-logging/jars/commons-logging-api-1.0.3.jar +commons-logging/jars/commons-logging-api-1.0.4.jar +commons-logging/jars/commons-logging-api-1.1.jar +commons-logging/jars/commons-logging-api-snapshot-version +commons-logging/jars/commons-logging-snapshot-version +commons-logging/poms/commons-logging-1.0.1.pom +commons-logging/poms/commons-logging-1.0.2.pom +commons-logging/poms/commons-logging-1.0.3.pom +commons-logging/poms/commons-logging-1.0.4.pom +commons-logging/poms/commons-logging-1.1.pom +commons-logging/poms/commons-logging-api-1.1.pom +commons-math/distributions/commons-math-20040118.003950-src.tar.gz +commons-math/distributions/commons-math-20040118.003950-src.zip +commons-math/distributions/commons-math-20040118.003950.tar.gz +commons-math/distributions/commons-math-20040118.003950.zip +commons-math/jars/commons-math-1.0-javadoc.jar +commons-math/jars/commons-math-1.0.jar +commons-math/jars/commons-math-1.1.jar +commons-math/jars/commons-math-20040118.003354.jar +commons-math/jars/commons-math-20040218.045431.jar +commons-math/jars/commons-math-snapshot-version +commons-math/poms/commons-math-1.0.pom +commons-math/poms/commons-math-1.1.pom +commons-messenger/jars/commons-messenger-1.0-dev-10.jar +commons-messenger/jars/commons-messenger-1.0-dev-11.jar +commons-messenger/jars/commons-messenger-1.0-dev-12.jar +commons-messenger/jars/commons-messenger-1.0-dev-13.jar +commons-messenger/jars/commons-messenger-1.0-dev-14.jar +commons-messenger/jars/commons-messenger-1.0-dev-2.jar +commons-messenger/jars/commons-messenger-1.0-dev-4.jar +commons-messenger/jars/commons-messenger-1.0-dev-5.jar +commons-messenger/jars/commons-messenger-1.0-dev-6.jar +commons-messenger/jars/commons-messenger-1.0-dev-8.jar +commons-messenger/jars/commons-messenger-1.0-dev.20020708.025623.jar +commons-messenger/jars/commons-messenger-1.0-dev.20020708.042042.jar +commons-messenger/jars/commons-messenger-1.0-dev.20020906.115547.jar +commons-messenger/jars/commons-messenger-1.0-dev.jar +commons-modeler/jars/commons-modeler-1.0-javadoc.jar +commons-modeler/jars/commons-modeler-1.1-dev.jar +commons-modeler/jars/commons-modeler-1.1-javadoc.jar +commons-modeler/jars/commons-modeler-1.1.jar +commons-modeler/jars/commons-modeler-2.0.1.jar +commons-modeler/jars/commons-modeler-1.1M1.jar +commons-modeler/jars/commons-modeler-2.0.jar +commons-modeler/jars/commons-modeler-2.0.1-javadoc.jar +commons-modeler/jars/commons-modeler-2.0.1-sources.jar +commons-modeler/poms/commons-modeler-1.1.pom +commons-modeler/poms/commons-modeler-2.0.pom +commons-modeler/poms/commons-modeler-2.0.1.pom +commons-naming/jars/commons-naming-core-20031116.223527.jar +commons-naming/jars/commons-naming-factory-20031116.223742.jar +commons-naming/jars/commons-naming-core-snapshot-version +commons-naming/jars/commons-naming-factory-20031201.015542.jar +commons-naming/jars/commons-naming-factory-snapshot-version +commons-net/jars/commons-net-1.0.0-javadoc.jar +commons-net/jars/commons-net-1.0.0.jar +commons-net/jars/commons-net-1.1.0-javadoc.jar +commons-net/jars/commons-net-1.1.0.jar +commons-net/jars/commons-net-1.2.0-javadoc.jar +commons-net/jars/commons-net-1.2.1-javadoc.jar +commons-net/jars/commons-net-1.2.1.jar +commons-net/jars/commons-net-1.2.2-javadoc.jar +commons-net/jars/commons-net-1.3.0-javadoc.jar +commons-net/jars/commons-net-1.3.0.jar +commons-net/jars/commons-net-1.4.0-javadoc.jar +commons-net/jars/commons-net-1.4.0.jar +commons-net/jars/commons-net-1.4.1-javadoc.jar +commons-net/jars/commons-net-1.4.1.jar +commons-net/jars/commons-net-20030211.160026.jar +commons-net/jars/commons-net-20030623.125255.jar +commons-net/jars/commons-net-20030805.205232.jar +commons-net/jars/commons-net-snapshot-version +commons-net/poms/commons-net-1.0.0.pom +commons-net/poms/commons-net-1.1.0.pom +commons-net/poms/commons-net-1.2.1.pom +commons-net/poms/commons-net-1.3.0.pom +commons-net/poms/commons-net-1.4.0.pom +commons-net/poms/commons-net-1.4.1.pom +commons-pool/jars/commons-pool-1.0-javadoc.jar +commons-pool/jars/commons-pool-1.0.1-javadoc.jar +commons-pool/jars/commons-pool-1.0.1.jar +commons-pool/jars/commons-pool-1.0.jar +commons-pool/jars/commons-pool-1.1-RC1.jar +commons-pool/jars/commons-pool-1.1-RC2.jar +commons-pool/jars/commons-pool-1.1-dev.jar +commons-pool/jars/commons-pool-1.1-javadoc.jar +commons-pool/jars/commons-pool-1.1.jar +commons-pool/jars/commons-pool-1.2-javadoc.jar +commons-pool/jars/commons-pool-1.2.jar +commons-pool/jars/commons-pool-1.3.jar +commons-pool/jars/commons-pool-20020501.jar +commons-pool/jars/commons-pool-20030623.172700.jar +commons-pool/jars/commons-pool-20030818.195203.jar +commons-pool/jars/commons-pool-20030821.192746.jar +commons-pool/jars/commons-pool-20030825.183949.jar +commons-pool/jars/commons-pool-snapshot-version +commons-pool/poms/commons-pool-1.0.1.pom +commons-pool/poms/commons-pool-1.1.pom +commons-pool/poms/commons-pool-1.2.pom +commons-pool/poms/commons-pool-1.3.pom +commons-primitives/jars/commons-primitives-1.0-javadoc.jar +commons-primitives/poms/commons-primitives.xml +commons-scxml/distributions/commons-scxml-0.5-src.tar.gz +commons-scxml/distributions/commons-scxml-0.5-src.zip +commons-scxml/distributions/commons-scxml-0.5.tar.gz +commons-scxml/distributions/commons-scxml-0.5.zip +commons-scxml/distributions/commons-scxml-0.6-src.zip +commons-scxml/distributions/commons-scxml-0.6-src.tar.gz +commons-scxml/distributions/commons-scxml-0.6.tar.gz +commons-scxml/distributions/commons-scxml-0.6.zip +commons-scxml/jars/commons-scxml-0.5.jar +commons-scxml/jars/commons-scxml-0.6.jar +commons-scxml/poms/commons-scxml-0.5.pom +commons-scxml/poms/commons-scxml-0.6.pom +commons-sql/jars/commons-sql-1.0-dev.jar +commons-sql/jars/commons-sql-20040118.000852.jar +commons-sql/jars/commons-sql-snapshot-version +commons-threadpool/jars/commons-threadpool-1.0-dev.20021010.081157.jar +commons-threadpool/jars/commons-threadpool-20030513.073905.jar +commons-threadpool/jars/commons-threadpool-snapshot-version +commons-transaction/jars/commons-transaction-1.0-javadoc.jar +commons-transaction/jars/commons-transaction-1.0.1-javadoc.jar +commons-transaction/jars/commons-transaction-1.1-javadoc.jar +commons-transaction/jars/commons-transaction-1.1.jar +commons-transaction/jars/commons-transaction-1.2.jar +commons-transaction/poms/commons-transaction-1.1.pom +commons-transaction/poms/commons-transaction-1.2.pom +commons-util/jars/commons-util-1.0-rc2-dev.20020814.103359.jar +commons-util/jars/commons-util-1.0-rc2-dev.20021217.063141.jar +commons-util/jars/commons-util-1.0-rc2-dev.jar +commons-util/jars/commons-utils-snapshot-version +commons-validator/distributions/commons-validator-1.1.3-src.tar.gz.MD5 +commons-validator/distributions/commons-validator-1.1.3-src.tar.gz +commons-validator/distributions/commons-validator-1.1.3-src.zip.MD5 +commons-validator/distributions/commons-validator-1.1.3-src.zip +commons-validator/distributions/commons-validator-1.1.3.tar.gz.MD5 +commons-validator/distributions/commons-validator-1.1.3.tar.gz +commons-validator/distributions/commons-validator-1.1.3.zip.MD5 +commons-validator/distributions/commons-validator-1.1.3.zip +commons-validator/jars/commons-validator-1.0-javadoc.jar +commons-validator/jars/commons-validator-1.0.1-javadoc.jar +commons-validator/jars/commons-validator-1.0.1.jar +commons-validator/jars/commons-validator-1.0.2-javadoc.jar +commons-validator/jars/commons-validator-1.3.1.jar +commons-validator/jars/commons-validator-1.0.2.jar +commons-validator/jars/commons-validator-1.0.jar +commons-validator/jars/commons-validator-1.1.3-javadoc.jar +commons-validator/jars/commons-validator-1.1.3-src.tar.gz +commons-validator/jars/commons-validator-1.1.3-src.tar.gz.MD5 +commons-validator/jars/commons-validator-1.1.3-src.zip +commons-validator/jars/commons-validator-1.1.3-src.zip.MD5 +commons-validator/jars/commons-validator-1.1.3.jar +commons-validator/jars/commons-validator-1.1.3.tar.gz +commons-validator/jars/commons-validator-1.1.3.tar.gz.MD5 +commons-validator/jars/commons-validator-1.1.3.zip +commons-validator/jars/commons-validator-1.1.3.zip.MD5 +commons-validator/jars/commons-validator-1.1.4-javadoc.jar +commons-validator/jars/commons-validator-1.1.4.jar +commons-validator/jars/commons-validator-1.2.0-javadoc.jar +commons-validator/jars/commons-validator-1.2.0.jar +commons-validator/jars/commons-validator-1.3.0.jar +commons-validator/jars/struts-help.html +commons-validator/jars/commons-validator-1.3.1-sources.jar +commons-validator/poms/commons-validator-1.0.1.pom +commons-validator/poms/commons-validator-1.0.2.pom +commons-validator/poms/commons-validator-1.0.pom +commons-validator/poms/commons-validator-1.2.0.pom +commons-validator/poms/commons-validator-1.3.1.pom +commons-validator/poms/commons-validator-1.3.0.pom +commons-vfs/jars/commons-vfs-1.0.jar +commons-vfs/poms/commons-vfs-1.0.pom +commons-xo/jars/commons-xo-0.8.jar +commons-xo/jars/commons-xo-1.0-20020507.jar +cornerstone-connection/jars/cornerstone-connection-api-1.0.jar +cornerstone-connection/jars/cornerstone-connection-api-2.1.jar +cornerstone-connection/jars/cornerstone-connection-impl-1.0.jar +cornerstone-connection/jars/cornerstone-connection-impl-2.1.jar +cornerstone-connection/poms/cornerstone-connection-api-2.1.pom +cornerstone-connection/poms/cornerstone-connection-impl-2.1.pom +cornerstone-datasources/jars/cornerstone-datasources-api-1.0.jar +cornerstone-datasources/jars/cornerstone-datasources-api-2.1.jar +cornerstone-datasources/jars/cornerstone-datasources-impl-1.0.jar +cornerstone-datasources/jars/cornerstone-datasources-impl-2.1.jar +cornerstone-datasources/poms/cornerstone-datasources-api-2.1.pom +cornerstone-datasources/poms/cornerstone-datasources-impl-2.1.pom +cornerstone-scheduler/jars/cornerstone-scheduler-api-1.0.jar +cornerstone-scheduler/jars/cornerstone-scheduler-api-2.1.jar +cornerstone-scheduler/jars/cornerstone-scheduler-impl-1.0.jar +cornerstone-scheduler/jars/cornerstone-scheduler-impl-2.1.jar +cornerstone-scheduler/poms/cornerstone-scheduler-api-2.1.pom +cornerstone-scheduler/poms/cornerstone-scheduler-impl-2.1.pom +cornerstone-sockets/jars/cornerstone-sockets-api-1.0.jar +cornerstone-sockets/jars/cornerstone-sockets-api-2.1.jar +cornerstone-sockets/jars/cornerstone-sockets-impl-1.0.jar +cornerstone-sockets/jars/cornerstone-sockets-impl-2.1.jar +cornerstone-sockets/poms/cornerstone-sockets-api-2.1.pom +cornerstone-sockets/poms/cornerstone-sockets-impl-2.1.pom +cornerstone-store/jars/cornerstone-store-api-1.0.jar +cornerstone-store/jars/cornerstone-store-api-2.1.jar +cornerstone-store/jars/cornerstone-store-impl-1.0.jar +cornerstone-store/jars/cornerstone-store-impl-1.1.jar +cornerstone-store/jars/cornerstone-store-impl-2.1.jar +cornerstone-store/poms/cornerstone-store-api-2.1.pom +cornerstone-store/poms/cornerstone-store-impl-2.1.pom +cornerstone-threads/jars/cornerstone-threads-api-1.0.jar +cornerstone-threads/jars/cornerstone-threads-api-2.1.jar +cornerstone-threads/jars/cornerstone-threads-impl-1.0.jar +cornerstone-threads/jars/cornerstone-threads-impl-2.1.jar +cornerstone-threads/jars/cornerstone-threads-tutorial-1.0.jar +cornerstone-threads/jars/cornerstone-threads-tutorial-2.1.jar +cornerstone-threads/poms/cornerstone-threads-api-2.1.pom +cornerstone-threads/poms/cornerstone-threads-impl-2.1.pom +cornerstone-threads/poms/cornerstone-threads-tutorial-2.1.pom +crimson/jars/crimson-1.1.3.jar +directory/distributions/apacheds-0.9-src.tar.gz +directory/distributions/apacheds-0.9-src.zip +directory/distributions/apacheds-0.9.2-src.tar.gz +directory/distributions/apacheds-0.9.2-src.zip +directory/distributions/apacheds-0.9.tar.gz +directory/distributions/apacheds-0.9.zip +directory/jars/apacheds-core-0.9.1.jar +directory/jars/apacheds-core-0.9.2.jar +directory/jars/apacheds-core-0.9.3.jar +directory/jars/apacheds-core-0.9.jar +directory/jars/apacheds-main-0.9.1.jar +directory/jars/apacheds-main-0.9.2.jar +directory/jars/apacheds-main-0.9.3.jar +directory/jars/apacheds-main-0.9.jar +directory/jars/apacheds-shared-0.9.1.jar +directory/jars/apacheds-shared-0.9.2.jar +directory/jars/apacheds-shared-0.9.3.jar +directory/jars/apacheds-shared-0.9.jar +directory/jars/ldap-common-20031205.013436.jar +directory/plugins/maven-directory-plugin-0.9.1.jar +directory/plugins/maven-directory-plugin-0.9.2.jar +directory/plugins/maven-directory-plugin-0.9.3.jar +directory/plugins/maven-directory-plugin-0.9.jar +directory/poms/apacheds-0.9.pom +directory/poms/apacheds-core-0.9.2.pom +directory/poms/apacheds-core-0.9.3.pom +directory/poms/apacheds-core-0.9.pom +directory/poms/apacheds-main-0.9.2.pom +directory/poms/apacheds-main-0.9.3.pom +directory/poms/apacheds-main-0.9.pom +directory/poms/apacheds-shared-0.9.2.pom +directory/poms/apacheds-shared-0.9.3.pom +directory/poms/maven-directory-plugin-0.9.2.pom +directory/poms/apacheds-shared-0.9.pom +directory/poms/maven-directory-plugin-0.9.3.pom +directory/poms/maven-directory-plugin-0.9.pom +directory-asn1/jars/asn1-ber-0.3.2.jar +directory-asn1/jars/asn1-ber-0.3.3.jar +directory-asn1/jars/asn1-ber-0.3.jar +directory-asn1/jars/asn1-codec-0.3.2.jar +directory-asn1/jars/asn1-codec-0.3.3.jar +directory-asn1/jars/asn1-codec-0.3.jar +directory-asn1/jars/asn1-der-0.3.2.jar +directory-asn1/jars/asn1-der-0.3.3.jar +directory-asn1/jars/asn1-der-0.3.jar +directory-asn1/jars/asn1-new-ber-0.3.3.jar +directory-asn1/jars/stub-compiler-0.3.2.jar +directory-asn1/jars/stub-compiler-0.3.jar +directory-asn1/poms/asn1-0.3.3.pom +directory-asn1/poms/asn1-ber-0.3.2.pom +directory-asn1/poms/asn1-ber-0.3.3.pom +directory-asn1/poms/asn1-ber-0.3.pom +directory-asn1/poms/asn1-codec-0.3.2.pom +directory-asn1/poms/asn1-codec-0.3.3.pom +directory-asn1/poms/asn1-codec-0.3.pom +directory-asn1/poms/asn1-der-0.3.2.pom +directory-asn1/poms/asn1-der-0.3.3.pom +directory-asn1/poms/asn1-der-0.3.pom +directory-asn1/poms/asn1-new-ber-0.3.3.pom +directory-asn1/poms/stub-compiler-0.3.2.pom +directory-asn1/poms/stub-compiler-0.3.pom +directory-clients/jars/ldap-clients-0.9.jar +directory-clients/poms/ldap-clients-0.9-SNAPSHOT.pom +directory-clients/poms/ldap-clients-0.9.1-SNAPSHOT.pom +directory-clients/poms/ldap-clients-0.9.pom +directory-naming/jars/naming-config-0.8.jar +directory-naming/jars/naming-core-0.8.jar +directory-naming/jars/naming-factory-0.8.jar +directory-naming/jars/naming-java-0.8.jar +directory-naming/jars/naming-management-0.8.jar +directory-naming/jars/naming-resources-0.8.jar +directory-naming/poms/naming-config-0.8.pom +directory-naming/poms/naming-core-0.8.pom +directory-naming/poms/naming-core-0.9-dev.pom +directory-naming/poms/naming-factory-0.8.pom +directory-naming/poms/naming-java-0.8.pom +directory-naming/poms/naming-management-0.8.pom +directory-naming/poms/naming-resources-0.8.pom +directory-network/jars/mina-0.7.1.jar +directory-network/jars/mina-0.7.2.jar +directory-network/jars/mina-0.7.3.jar +directory-network/jars/mina-0.7.4.jar +directory-network/jars/mina-0.7.jar +directory-network/jars/mina-0.8.0.jar +directory-network/jars/mina-0.8.1.jar +directory-network/jars/mina-0.8.2.jar +directory-network/jars/mina-0.9.0.jar +directory-network/poms/mina-0.7.1.pom +directory-network/poms/mina-0.7.2.pom +directory-network/poms/mina-0.7.3.pom +directory-network/poms/mina-0.7.4.pom +directory-network/poms/mina-0.7.pom +directory-network/poms/mina-0.8.0.pom +directory-network/poms/mina-0.8.1.pom +directory-network/poms/mina-0.8.2.pom +directory-network/poms/mina-0.9.0.pom +directory-network/KEYS +directory-protocols/jars/kerberos-protocol-0.4.jar +directory-protocols/jars/ldap-protocol-0.9.jar +directory-protocols/poms/kerberos-protocol-0.4.pom +directory-protocols/poms/ldap-protocol-0.9.pom +directory-shared/jars/apache-ldapber-provider-0.9.2.jar +directory-shared/jars/apache-ldapber-provider-0.9.3.jar +directory-shared/jars/apache-ldapber-provider-0.9.jar +directory-shared/jars/apache-new-ldapber-provider-0.9.3.jar +directory-shared/jars/kerberos-common-0.4.jar +directory-shared/jars/kerberos-common-0.5.jar +directory-shared/jars/ldap-common-0.9.2.jar +directory-shared/jars/ldap-common-0.9.3.jar +directory-shared/jars/ldap-common-0.9.jar +directory-shared/jars/ldap-snacc-provider-0.9.2.jar +directory-shared/jars/ldap-snacc-provider-0.9.3.jar +directory-shared/jars/ldap-snacc-provider-0.9.jar +directory-shared/poms/apache-ldapber-provider-0.9.2.pom +directory-shared/poms/apache-ldapber-provider-0.9.3.pom +directory-shared/poms/apache-ldapber-provider-0.9.pom +directory-shared/poms/apache-new-ldapber-provider-0.9.3.pom +directory-shared/poms/kerberos-common-0.4.pom +directory-shared/poms/kerberos-common-0.5.pom +directory-shared/poms/ldap-common-0.9.2.pom +directory-shared/poms/ldap-common-0.9.3.pom +directory-shared/poms/ldap-common-0.9.pom +directory-shared/poms/ldap-snacc-provider-0.9.2.pom +directory-shared/poms/ldap-snacc-provider-0.9.3.pom +directory-shared/poms/ldap-snacc-provider-0.9.pom +excalibur/jars/excalibur-collections-1.0.jar +excalibur/jars/excalibur-configuration-1.0.jar +excalibur/jars/excalibur-event-2.0.jar +excalibur/jars/excalibur-extension-1.0.jar +excalibur/jars/excalibur-i18n-1.0.jar +excalibur/jars/excalibur-instrument-0.3.jar +excalibur/jars/excalibur-testcase-1.0.jar +excalibur/jars/excalibur-thread-1.1.jar +excalibur/jars/excalibur-threadcontext-1.0.jar +excalibur/jars/excalibur-util-concurrent-1.3.1.jar +excalibur-altrmi/jars/excalibur-altrmi-client-impl-0.7.jar +excalibur-altrmi/jars/excalibur-altrmi-client-interfaces-0.7.jar +excalibur-altrmi/jars/excalibur-altrmi-common-0.7.jar +excalibur-altrmi/jars/excalibur-altrmi-generator-0.7.jar +excalibur-altrmi/jars/excalibur-altrmi-server-impl-0.7.jar +excalibur-altrmi/jars/excalibur-altrmi-server-interfaces-0.7.jar +excalibur-cli/jars/excalibur-cli-1.0.jar +excalibur-collections/jars/excalibur-collections-1.0.jar +excalibur-collections/jars/excalibur-collections-20020820.jar +excalibur-component/jars/excalibur-component-1.0.jar +excalibur-component/jars/excalibur-component-1.1.jar +excalibur-component/jars/excalibur-component-1.2.jar +excalibur-component/jars/excalibur-component-2.1.jar +excalibur-component/jars/excalibur-component-20020916.jar +excalibur-component/jars/excalibur-testcase-2.1.jar +excalibur-component/poms/excalibur-component-2.1.pom +excalibur-component/poms/excalibur-testcase-2.1.pom +excalibur-component-examples/jars/excalibur-component-examples-2.1.jar +excalibur-component-examples/poms/excalibur-component-examples-2.1.pom +excalibur-component-tests/jars/excalibur-component-tests-2.1.jar +excalibur-component-tests/poms/excalibur-component-tests-2.1.pom +excalibur-concurrent/jars/excalibur-concurrent-1.0.jar +excalibur-concurrent/jars/excalibur-concurrent-20020820.jar +excalibur-configuration/distributions/excalibur-configuration-1.1-RC1-src.tar.gz +excalibur-configuration/distributions/excalibur-configuration-1.1-RC1-src.zip +excalibur-configuration/distributions/excalibur-configuration-1.1-RC1.tar.gz +excalibur-configuration/distributions/excalibur-configuration-1.1-RC1.zip +excalibur-configuration/distributions/excalibur-configuration-1.1-src.tar.gz +excalibur-configuration/distributions/excalibur-configuration-1.1-src.zip +excalibur-configuration/distributions/excalibur-configuration-1.1.tar.gz +excalibur-configuration/distributions/excalibur-configuration-1.1.zip +excalibur-configuration/jars/excalibur-configuration-1.0.jar +excalibur-configuration/jars/excalibur-configuration-1.1-RC1.jar +excalibur-configuration/jars/excalibur-configuration-1.1-dev.jar +excalibur-configuration/jars/excalibur-configuration-1.1.jar +excalibur-configuration/jars/excalibur-configuration-1.2.jar +excalibur-containerkit/jars/excalibur-containerkit-1.0.jar +excalibur-datasource/jars/excalibur-datasource-1.1.1.jar +excalibur-datasource/jars/excalibur-datasource-1.2.0.jar +excalibur-datasource/jars/excalibur-datasource-cluster-1.1.1a.jar +excalibur-datasource/jars/excalibur-datasource-2.1.jar +excalibur-datasource/jars/excalibur-datasource-ids-1.1.1a.jar +excalibur-datasource/jars/excalibur-datasource-vm14-20021121.jar +excalibur-datasource/poms/excalibur-datasource-2.1.pom +fop/jars/fop-0.20.3.jar +fop/jars/fop-0.20.4.jar +fop/jars/fop-0.20.5-rc3-alpha.jar +fop/jars/fop-0.20.5.jar +fop/jars/fop-0.20.5rc2.jar +fop/jars/fop-0.93-jdk15.jar +fop/jars/fop-0.93-jdk14.jar +excalibur-event/distributions/excalibur-event-1.0.3.zip +excalibur-event/jars/excalibur-event-1.0.3.jar +excalibur-event/jars/excalibur-event-1.0a.jar +excalibur-event/jars/excalibur-event-20030217.000000.jar +excalibur-event/jars/excalibur-event-api-1.0.4-dev.jar +excalibur-event/jars/excalibur-event-api-2.1.jar +excalibur-event/jars/excalibur-event-impl-1.0.4-dev.jar +excalibur-event/jars/excalibur-event-impl-2.1.jar +excalibur-event/jars/excalibur-event-snapshot-version +excalibur-event/poms/excalibur-event-api-2.1.pom +excalibur-event/poms/excalibur-event-impl-2.1.pom +excalibur-extension/jars/excalibur-extension-1.0.jar +excalibur-fortress/jars/excalibur-fortress-1.0.jar +excalibur-fortress/jars/excalibur-fortress-bean-1.2.jar +excalibur-fortress/jars/excalibur-fortress-cli-1.2.jar +excalibur-fortress/jars/excalibur-fortress-complete-1.0.jar +excalibur-fortress/jars/excalibur-fortress-container-api-1.2.jar +excalibur-fortress/jars/excalibur-fortress-container-impl-1.2.jar +excalibur-fortress/jars/excalibur-fortress-container-test-1.2.jar +excalibur-fortress/jars/excalibur-fortress-examples-1.2.jar +excalibur-fortress/jars/excalibur-fortress-meta-1.2.jar +excalibur-fortress/jars/excalibur-fortress-migration-1.2.jar +excalibur-fortress/jars/excalibur-fortress-servlet-1.2.jar +excalibur-fortress/jars/excalibur-fortress-testcase-1.2.jar +excalibur-fortress/jars/excalibur-fortress-tools-1.0.jar +excalibur-fortress/poms/excalibur-fortress-bean-1.2.pom +excalibur-fortress/poms/excalibur-fortress-cli-1.2.pom +excalibur-fortress/poms/excalibur-fortress-container-api-1.2.pom +excalibur-fortress/poms/excalibur-fortress-container-impl-1.2.pom +excalibur-fortress/poms/excalibur-fortress-meta-1.2.pom +excalibur-fortress/poms/excalibur-fortress-container-test-1.2.pom +excalibur-fortress/poms/excalibur-fortress-examples-1.2.pom +excalibur-fortress/poms/excalibur-fortress-migration-1.2.pom +excalibur-fortress/poms/excalibur-fortress-platform-1.2.pom +excalibur-fortress/poms/excalibur-fortress-servlet-1.2.pom +excalibur-fortress/poms/excalibur-fortress-testcase-1.2.pom +excalibur-i18n/distributions/excalibur-i18n-1.1-RC1-src.tar.gz +excalibur-i18n/distributions/excalibur-i18n-1.1-RC1-src.zip +excalibur-i18n/distributions/excalibur-i18n-1.1-RC1.tar.gz +excalibur-i18n/distributions/excalibur-i18n-1.1-RC1.zip +excalibur-i18n/distributions/excalibur-i18n-1.1-src.tar.gz +excalibur-i18n/distributions/excalibur-i18n-1.1-src.zip +excalibur-i18n/distributions/excalibur-i18n-1.1-tar.gz +excalibur-i18n/distributions/excalibur-i18n-1.1.zip +excalibur-i18n/jars/excalibur-i18n-1.0.jar +excalibur-i18n/jars/excalibur-i18n-1.1-RC1.jar +excalibur-i18n/jars/excalibur-i18n-1.1.jar +excalibur-instrument/jars/excalibur-instrument-0.1.jar +excalibur-instrument/jars/excalibur-instrument-1.0.jar +excalibur-instrument/jars/excalibur-instrument-20021108.jar +excalibur-instrument/jars/excalibur-instrument-api-2.1.jar +excalibur-instrument/jars/excalibur-instrument-client-2.1.jar +excalibur-instrument/jars/excalibur-instrument-mgr-api-2.1.jar +excalibur-instrument/jars/excalibur-instrument-mgr-http-2.1.jar +excalibur-instrument/jars/excalibur-instrument-mgr-impl-2.1.jar +excalibur-instrument/poms/excalibur-instrument-api-2.1.pom +excalibur-instrument/poms/excalibur-instrument-client-2.1.pom +excalibur-instrument/poms/excalibur-instrument-mgr-api-2.1.pom +excalibur-instrument/poms/excalibur-instrument-mgr-http-2.1.pom +excalibur-instrument/poms/excalibur-instrument-mgr-impl-2.1.pom +excalibur-instrument-manager/jars/excalibur-instrument-manager-0.1.jar +excalibur-instrument-manager/jars/excalibur-instrument-manager-1.0.jar +excalibur-instrument-manager/jars/excalibur-instrument-manager-20021108.jar +excalibur-instrument-manager-interfaces/jars/excalibur-instrument-manager-interfaces-0.1.jar +excalibur-instrument-manager-interfaces/jars/excalibur-instrument-manager-interfaces-1.0.jar +excalibur-instrument-manager-interfaces/jars/excalibur-instrument-manager-interfaces-20021108.jar +excalibur-io/jars/excalibur-io-1.1.jar +excalibur-lifecycle/jars/excalibur-lifecycle-1.0.jar +excalibur-lifecycle/jars/excalibur-lifecycle-api-1.0.jar +excalibur-lifecycle/jars/excalibur-lifecycle-api-1.1.0.jar +excalibur-lifecycle/jars/excalibur-lifecycle-api-1.1.jar +excalibur-lifecycle/jars/excalibur-lifecycle-api-2.1.jar +excalibur-lifecycle/jars/excalibur-lifecycle-impl-1.0.jar +excalibur-lifecycle/jars/excalibur-lifecycle-impl-1.1.0.jar +excalibur-lifecycle/jars/excalibur-lifecycle-impl-1.1.jar +excalibur-lifecycle/jars/excalibur-lifecycle-impl-2.1.jar +excalibur-lifecycle/poms/excalibur-lifecycle-api-2.1.pom +excalibur-lifecycle/poms/excalibur-lifecycle-impl-2.1.pom +excalibur-logger/jars/excalibur-logger-1.0.1.jar +excalibur-logger/jars/excalibur-logger-1.0.jar +excalibur-logger/jars/excalibur-logger-1.1.jar +excalibur-logger/jars/excalibur-logger-2.1.jar +excalibur-logger/jars/excalibur-logger-20020820.jar +excalibur-logger/poms/excalibur-logger-2.1.pom +excalibur-monitor/jars/excalibur-monitor-1.0.jar +excalibur-monitor/jars/excalibur-monitor-2.1.jar +excalibur-monitor/jars/excalibur-monitor-20020820.jar +excalibur-monitor/poms/excalibur-monitor-2.1.pom +excalibur-mpool/jars/excalibur-mpool-1.0.jar +excalibur-naming/jars/excalibur-naming-1.0.jar +excalibur-pool/jars/excalibur-pool-1.0.jar +excalibur-pool/jars/excalibur-pool-1.2.jar +excalibur-pool/jars/excalibur-pool-20020820.jar +excalibur-pool/jars/excalibur-pool-api-2.0.0.jar +excalibur-pool/jars/excalibur-pool-instrumented-2.0.0.jar +excalibur-pool/jars/excalibur-pool-api-2.0.jar +excalibur-pool/jars/excalibur-pool-api-2.1.jar +excalibur-pool/jars/excalibur-pool-impl-2.0.0.jar +excalibur-pool/jars/excalibur-pool-impl-2.0.jar +excalibur-pool/jars/excalibur-pool-impl-2.1.jar +excalibur-pool/jars/excalibur-pool-instrumented-2.0.jar +excalibur-pool/jars/excalibur-pool-instrumented-2.1.jar +excalibur-pool/poms/excalibur-pool-api-2.1.pom +excalibur-pool/poms/excalibur-pool-impl-2.1.pom +excalibur-pool/poms/excalibur-pool-instrumented-2.1.pom +excalibur-sourceresolve/jars/excalibur-sourceresolve-1.0.1.jar +excalibur-sourceresolve/jars/excalibur-sourceresolve-1.0.jar +excalibur-sourceresolve/jars/excalibur-sourceresolve-1.1.jar +excalibur-sourceresolve/jars/excalibur-sourceresolve-2.0.jar +excalibur-sourceresolve/jars/excalibur-sourceresolve-2.1.jar +excalibur-sourceresolve/jars/excalibur-sourceresolve-20020820.jar +excalibur-sourceresolve/poms/excalibur-sourceresolve-2.1.pom +excalibur-store/jars/excalibur-store-1.0.jar +excalibur-store/jars/excalibur-store-2.1.jar +excalibur-store/jars/excalibur-store-20020820.jar +excalibur-store/poms/excalibur-store-2.1.pom +excalibur-thread/distributions/excalibur-thread-1.1.1.zip +excalibur-thread/jars/excalibur-thread-1.0.jar +excalibur-thread/jars/excalibur-thread-1.1.1.jar +excalibur-thread/jars/excalibur-thread-api-2.0.0.jar +excalibur-thread/jars/excalibur-thread-instrumented-2.0.0.jar +excalibur-thread/jars/excalibur-thread-api-2.0.jar +excalibur-thread/jars/excalibur-thread-api-2.1.jar +excalibur-thread/jars/excalibur-thread-impl-2.0.0.jar +excalibur-thread/jars/excalibur-thread-impl-2.0.jar +excalibur-thread/jars/excalibur-thread-impl-2.1.jar +excalibur-thread/jars/excalibur-thread-instrumented-2.0.jar +excalibur-thread/jars/excalibur-thread-instrumented-2.1.jar +excalibur-thread/poms/excalibur-thread-api-2.1.pom +excalibur-thread/poms/excalibur-thread-impl-2.1.pom +excalibur-thread/poms/excalibur-thread-instrumented-2.1.pom +fulcrum/jars/fulcrum-1.0.jar +fulcrum/jars/fulcrum-3.0-b1.jar +fulcrum/jars/fulcrum-3.0-b2-dev.jar +fulcrum/jars/fulcrum-crypto-1.0.5.jar +fulcrum/jars/fulcrum-bsf-1.0.2.jar +fulcrum/jars/fulcrum-cache-1.0.5.jar +fulcrum/jars/fulcrum-factory-1.0.3.jar +fulcrum/jars/fulcrum-dvsl-1.0.5.jar +fulcrum/jars/fulcrum-osworkflow-1.0.1.jar +fulcrum/jars/fulcrum-localization-1.0.5.jar +fulcrum/jars/fulcrum-mimetype-1.0.4.jar +fulcrum/jars/fulcrum-naming-1.0.2.jar +fulcrum/jars/fulcrum-security-api-1.0.7.jar +fulcrum/jars/fulcrum-pool-1.0.3.jar +fulcrum/jars/fulcrum-quartz-1.0.jar +fulcrum/jars/fulcrum-security-adapter-opensymphony-1.0.7.jar +fulcrum/jars/fulcrum-security-adapter-turbine-1.0.7.jar +fulcrum/jars/fulcrum-security-hibernate-1.0.7.jar +fulcrum/jars/fulcrum-security-memory-1.0.7.jar +fulcrum/jars/fulcrum-security-nt-1.0.7.jar +fulcrum/jars/fulcrum-testcontainer-1.0.4.jar +fulcrum/jars/fulcrum-upload-1.0.3.jar +fulcrum/jars/fulcrum-xmlrpc-1.0.5.jar +fulcrum/jars/fulcrum-xslt-1.0.3.jar +fulcrum/jars/fulcrum-yaafi-1.0.3.jar +excalibur-util/jars/excalibur-util-1.0.jar +excalibur-xmlutil/jars/excalibur-xmlutil-1.0.jar +excalibur-xmlutil/jars/excalibur-xmlutil-2.1.jar +excalibur-xmlutil/jars/excalibur-xmlutil-20020820.jar +excalibur-xmlutil/poms/excalibur-xmlutil-2.1.pom +geronimo/cars/activemq-1.0.car +geronimo/cars/activemq-broker-1.0.car +geronimo/cars/client-1.0.car +geronimo/cars/client-corba-1.0.car +geronimo/cars/client-security-1.0.car +geronimo/cars/javamail-1.0.car +geronimo/cars/client-system-1.0.car +geronimo/cars/daytrader-derby-jetty-1.0.car +geronimo/cars/daytrader-derby-tomcat-1.0.car +geronimo/cars/daytrader-derby-jetty-streamer-client-1.0.car +geronimo/cars/directory-1.0.car +geronimo/cars/daytrader-derby-tomcat-streamer-client-1.0.car +geronimo/cars/geronimo-gbean-deployer-1.0.car +geronimo/cars/hot-deployer-1.0.car +geronimo/cars/j2ee-system-experimental-1.0.car +geronimo/cars/j2ee-corba-1.0.car +geronimo/cars/j2ee-deployer-1.0.car +geronimo/cars/j2ee-security-1.0.car +geronimo/cars/j2ee-server-1.0.car +geronimo/cars/j2ee-system-1.0.car +geronimo/cars/jetty-1.0.car +geronimo/cars/jetty-deployer-1.0.car +geronimo/cars/jmxdebug-jetty-1.0.car +geronimo/cars/jmxdebug-tomcat-1.0.car +geronimo/cars/jsp-examples-jetty-1.0.car +geronimo/cars/tomcat-1.0.car +geronimo/cars/tomcat-deployer-1.0.car +geronimo/cars/jsp-examples-tomcat-1.0.car +geronimo/cars/ldap-demo-jetty-1.0.car +geronimo/cars/ldap-demo-tomcat-1.0.car +geronimo/cars/ldap-realm-1.0.car +geronimo/cars/rmi-naming-1.0.car +geronimo/cars/online-deployer-1.0.car +geronimo/cars/remote-deploy-jetty-1.0.car +geronimo/cars/remote-deploy-tomcat-1.0.car +geronimo/cars/servlets-examples-jetty-1.0.car +geronimo/cars/servlets-examples-tomcat-1.0.car +geronimo/cars/shutdown-1.0.car +geronimo/cars/system-database-1.0.car +geronimo/cars/uddi-jetty-1.0.car +geronimo/cars/uddi-tomcat-1.0.car +geronimo/cars/webconsole-jetty-1.0.car +geronimo/cars/webconsole-tomcat-1.0.car +geronimo/cars/welcome-jetty-1.0.car +geronimo/cars/welcome-tomcat-1.0.car +geronimo/distributions/geronimo-installer-1.0.jar.MD5 +geronimo/distributions/geronimo-installer-1.0.jar +geronimo/distributions/geronimo-installer-1.0.jar.SHA +geronimo/distributions/geronimo-jetty-j2ee-1.0.tar.gz +geronimo/distributions/geronimo-jetty-j2ee-1.0.zip +geronimo/distributions/geronimo-tomcat-j2ee-1.0.tar.gz +geronimo/distributions/geronimo-tomcat-j2ee-1.0.zip +geronimo/ears/daytrader-ear-1.0.ear +geronimo/ears/daytrader-ear-1.1.ear +geronimo/ears/geronimo-console-1.0.ear +geronimo/ejbs/daytrader-ejb-1.0.jar +geronimo/jars/daytrader-core-1.0.jar +geronimo/jars/daytrader-streamer-1.0.jar +geronimo/jars/daytrader-wsappclient-1.0.jar +geronimo/jars/geronimo-activation-1.0-M4.jar +geronimo/jars/geronimo-1.0-M5.jar +geronimo/jars/geronimo-activation-1.0-M5.jar +geronimo/jars/geronimo-activation-1.0.jar +geronimo/jars/geronimo-activation-1.1.jar +geronimo/jars/geronimo-assembly-1.0-M3.jar +geronimo/jars/geronimo-assembly-1.0-M4.jar +geronimo/jars/geronimo-assembly-plugin-1.0-M4.jar +geronimo/jars/geronimo-assembly-plugin-1.0-M5.jar +geronimo/jars/geronimo-axis-1.0-M2.jar +geronimo/jars/geronimo-axis-1.0-M3.jar +geronimo/jars/geronimo-axis-1.0-M4.jar +geronimo/jars/geronimo-axis-1.0-M5.jar +geronimo/jars/geronimo-axis-1.0.jar +geronimo/jars/geronimo-axis-1.1.jar +geronimo/jars/geronimo-axis-builder-1.0-M4.jar +geronimo/jars/geronimo-axis-builder-1.0-M5.jar +geronimo/jars/geronimo-axis-builder-1.0.jar +geronimo/jars/geronimo-axis-builder-1.1.jar +geronimo/jars/geronimo-client-1.0-M3.jar +geronimo/jars/geronimo-client-1.0-M4.jar +geronimo/jars/geronimo-client-1.0-M5.jar +geronimo/jars/geronimo-client-1.0.jar +geronimo/jars/geronimo-client-1.1.jar +geronimo/jars/geronimo-client-builder-1.0-M3.jar +geronimo/jars/geronimo-client-builder-1.0-M4.jar +geronimo/jars/geronimo-client-builder-1.0-M5.jar +geronimo/jars/geronimo-client-builder-1.0.jar +geronimo/jars/geronimo-client-builder-1.1.jar +geronimo/jars/geronimo-clustering-1.0-M1.jar +geronimo/jars/geronimo-clustering-1.0-M2.jar +geronimo/jars/geronimo-clustering-1.0-M3.jar +geronimo/jars/geronimo-clustering-1.0-M4.jar +geronimo/jars/geronimo-clustering-1.0-M5.jar +geronimo/jars/geronimo-common-1.0-M1.jar +geronimo/jars/geronimo-common-1.0-M2.jar +geronimo/jars/geronimo-common-1.0-M3.jar +geronimo/jars/geronimo-common-1.0-M4.jar +geronimo/jars/geronimo-common-1.0-M5.jar +geronimo/jars/geronimo-common-1.0.jar +geronimo/jars/geronimo-common-1.1.jar +geronimo/jars/geronimo-connector-1.0-M1.jar +geronimo/jars/geronimo-connector-1.0-M2.jar +geronimo/jars/geronimo-connector-1.0-M3.jar +geronimo/jars/geronimo-connector-1.0-M4.jar +geronimo/jars/geronimo-connector-1.0-M5.jar +geronimo/jars/geronimo-connector-1.0.jar +geronimo/jars/geronimo-connector-1.1.jar +geronimo/jars/geronimo-connector-builder-1.0-M3.jar +geronimo/jars/geronimo-connector-builder-1.0-M4.jar +geronimo/jars/geronimo-connector-builder-1.0-M5.jar +geronimo/jars/geronimo-connector-builder-1.0.jar +geronimo/jars/geronimo-connector-builder-1.1.jar +geronimo/jars/geronimo-console-1.0-M5.jar +geronimo/jars/geronimo-console-core-1.0-M5.jar +geronimo/jars/geronimo-console-core-1.0.jar +geronimo/jars/geronimo-console-core-1.1.jar +geronimo/jars/geronimo-converter-1.0.jar +geronimo/jars/geronimo-console-framework-1.0-M5.jar +geronimo/jars/geronimo-console-standard-1.0-M5.jar +geronimo/jars/geronimo-console-web-1.0-M2.jar +geronimo/jars/geronimo-console-web-1.0-M3.jar +geronimo/jars/geronimo-console-web-1.0-M4.jar +geronimo/jars/geronimo-console-web-1.0-M5.jar +geronimo/jars/geronimo-core-1.0-M1.jar +geronimo/jars/geronimo-console-web-1.0.jar +geronimo/jars/geronimo-console-web-1.1.jar +geronimo/jars/geronimo-converter-1.1.jar +geronimo/jars/geronimo-core-1.0-M2.jar +geronimo/jars/geronimo-core-1.0-M3.jar +geronimo/jars/geronimo-core-1.0-M4.jar +geronimo/jars/geronimo-core-1.0-M5.jar +geronimo/jars/geronimo-core-1.0.jar +geronimo/jars/geronimo-core-1.1.jar +geronimo/jars/geronimo-daytrader-derby-db-1.0.jar +geronimo/jars/geronimo-derby-1.0.jar +geronimo/jars/geronimo-daytrader-derby-db-1.1.jar +geronimo/jars/geronimo-demo-1.0-M2.jar +geronimo/jars/geronimo-deploy-config-1.0-M4.jar +geronimo/jars/geronimo-deploy-config-1.0-M5.jar +geronimo/jars/geronimo-deploy-config-1.0.jar +geronimo/jars/geronimo-installer-support-1.1.jar +geronimo/jars/geronimo-deploy-config-1.1.jar +geronimo/jars/geronimo-deploy-jsr88-1.0-M4.jar +geronimo/jars/geronimo-deploy-jsr88-1.0-M5.jar +geronimo/jars/geronimo-deploy-jsr88-1.0.jar +geronimo/jars/geronimo-deploy-jsr88-1.1.jar +geronimo/jars/geronimo-derby-1.1.jar +geronimo/jars/geronimo-deploy-tool-1.0-M4.jar +geronimo/jars/geronimo-deploy-tool-1.0-M5.jar +geronimo/jars/geronimo-deploy-tool-1.0.jar +geronimo/jars/geronimo-deploy-tool-1.1.jar +geronimo/jars/geronimo-deployment-1.0-M1.jar +geronimo/jars/geronimo-deployment-1.0-M2.jar +geronimo/jars/geronimo-deployment-1.0-M3.jar +geronimo/jars/geronimo-deployment-1.0-M4.jar +geronimo/jars/geronimo-deployment-1.0-M5.jar +geronimo/jars/geronimo-deployment-1.0.jar +geronimo/jars/geronimo-deployment-1.1.jar +geronimo/jars/geronimo-derby-1.0-M3.jar +geronimo/jars/geronimo-j2ee-1.0.jar +geronimo/jars/geronimo-derby-1.0-M4.jar +geronimo/jars/geronimo-derby-1.0-M5.jar +geronimo/jars/geronimo-derby-connector-1.0-M3.jar +geronimo/jars/geronimo-derby-connector-1.0-M4.jar +geronimo/jars/geronimo-directory-1.0-M5.jar +geronimo/jars/geronimo-directory-1.0.jar +geronimo/jars/geronimo-directory-1.1.jar +geronimo/jars/geronimo-hot-deploy-1.0.jar +geronimo/jars/geronimo-hot-deploy-1.1.jar +geronimo/jars/geronimo-installer-processing-1.1.jar +geronimo/jars/geronimo-interop-1.0-M4.jar +geronimo/jars/geronimo-interop-1.0-M5.jar +geronimo/jars/geronimo-j2ee-1.0-M1.jar +geronimo/jars/geronimo-j2ee-1.0-M2.jar +geronimo/jars/geronimo-j2ee-1.0-M3.jar +geronimo/jars/geronimo-j2ee-1.0-M4.jar +geronimo/jars/geronimo-j2ee-1.0-M5.jar +geronimo/jars/geronimo-j2ee-builder-1.0-M3.jar +geronimo/jars/geronimo-j2ee-1.1.jar +geronimo/jars/geronimo-j2ee-builder-1.0-M4.jar +geronimo/jars/geronimo-j2ee-builder-1.0-M5.jar +geronimo/jars/geronimo-j2ee-builder-1.0.jar +geronimo/jars/geronimo-j2ee-schema-1.1.jar +geronimo/jars/geronimo-j2ee-builder-1.1.jar +geronimo/jars/geronimo-j2ee-schema-1.0-M2.jar +geronimo/jars/geronimo-j2ee-schema-1.0-M3.jar +geronimo/jars/geronimo-j2ee-schema-1.0-M4.jar +geronimo/jars/geronimo-j2ee-schema-1.0-M5.jar +geronimo/jars/geronimo-j2ee-schema-1.0.jar +geronimo/jars/geronimo-javamail-transport-1.0.jar +geronimo/jars/geronimo-javamail-transport-1.1.jar +geronimo/jars/geronimo-jetty-1.0-M1.jar +geronimo/jars/geronimo-jetty-1.0-M2.jar +geronimo/jars/geronimo-jetty-1.0-M3.jar +geronimo/jars/geronimo-jetty-1.0-M4.jar +geronimo/jars/geronimo-jetty-1.0-M5.jar +geronimo/jars/geronimo-jetty-1.0.jar +geronimo/jars/geronimo-jetty-1.1.jar +geronimo/jars/geronimo-jetty-builder-1.0-M3.jar +geronimo/jars/geronimo-jetty-builder-1.0-M4.jar +geronimo/jars/geronimo-jetty-builder-1.0-M5.jar +geronimo/jars/geronimo-kernel-1.0.jar +geronimo/jars/geronimo-jetty-builder-1.0.jar +geronimo/jars/geronimo-jetty-builder-1.1.jar +geronimo/jars/geronimo-jmxdebug-1.0-M2.jar +geronimo/jars/geronimo-jmxremoting-1.0-M2.jar +geronimo/jars/geronimo-jmxremoting-1.0-M3.jar +geronimo/jars/geronimo-jmxremoting-1.0-M4.jar +geronimo/jars/geronimo-jmxremoting-1.0-M5.jar +geronimo/jars/geronimo-jmxremoting-1.0.jar +geronimo/jars/geronimo-jmxremoting-1.1.jar +geronimo/jars/geronimo-kernel-1.0-M1.jar +geronimo/jars/geronimo-kernel-1.0-M2.jar +geronimo/jars/geronimo-kernel-1.0-M3.jar +geronimo/jars/geronimo-kernel-1.0-M4.jar +geronimo/jars/geronimo-kernel-1.0-M5.jar +geronimo/jars/geronimo-kernel-1.1.jar +geronimo/jars/geronimo-mail-1.0-M3.jar +geronimo/jars/geronimo-mail-1.0-M4.jar +geronimo/jars/geronimo-mail-1.0-M5.jar +geronimo/jars/geronimo-mail-1.0.jar +geronimo/jars/geronimo-mail-1.1.jar +geronimo/jars/geronimo-management-1.0-M5.jar +geronimo/jars/geronimo-management-1.0.jar +geronimo/jars/geronimo-management-1.1.jar +geronimo/jars/geronimo-naming-1.0-M1.jar +geronimo/jars/geronimo-naming-1.0-M2.jar +geronimo/jars/geronimo-naming-1.0-M3.jar +geronimo/jars/geronimo-naming-1.0-M4.jar +geronimo/jars/geronimo-naming-1.0-M5.jar +geronimo/jars/geronimo-naming-1.0.jar +geronimo/jars/geronimo-naming-1.1.jar +geronimo/jars/geronimo-naming-builder-1.0-M3.jar +geronimo/jars/geronimo-naming-builder-1.0-M4.jar +geronimo/jars/geronimo-naming-builder-1.0-M5.jar +geronimo/jars/geronimo-network-1.0-M1.jar +geronimo/jars/geronimo-naming-builder-1.0.jar +geronimo/jars/geronimo-naming-builder-1.1.jar +geronimo/jars/geronimo-network-1.0-M2.jar +geronimo/jars/geronimo-network-1.0-M3.jar +geronimo/jars/geronimo-packaging-plugin-1.0-M5.jar +geronimo/jars/geronimo-scripts-1.0.jar +geronimo/jars/geronimo-remote-deploy-lib-1.0.jar +geronimo/jars/geronimo-remote-deploy-lib-1.1.jar +geronimo/jars/geronimo-remoting-1.0-M1.jar +geronimo/jars/geronimo-remoting-1.0-M2.jar +geronimo/jars/geronimo-remoting-1.0-M3.jar +geronimo/jars/geronimo-spring-1.0-M3.jar +geronimo/jars/geronimo-scripts-1.1.jar +geronimo/jars/geronimo-security-1.0-M1.jar +geronimo/jars/geronimo-security-1.0-M2.jar +geronimo/jars/geronimo-security-1.0-M3.jar +geronimo/jars/geronimo-security-1.0-M4.jar +geronimo/jars/geronimo-security-1.0-M5.jar +geronimo/jars/geronimo-security-1.0.jar +geronimo/jars/geronimo-security-1.1.jar +geronimo/jars/geronimo-security-builder-1.0-M3.jar +geronimo/jars/geronimo-security-builder-1.0-M4.jar +geronimo/jars/geronimo-security-builder-1.0-M5.jar +geronimo/jars/geronimo-security-builder-1.0.jar +geronimo/jars/geronimo-security-builder-1.1.jar +geronimo/jars/geronimo-service-builder-1.0-M4.jar +geronimo/jars/geronimo-service-builder-1.0-M5.jar +geronimo/jars/geronimo-service-builder-1.0.jar +geronimo/jars/geronimo-service-builder-1.1.jar +geronimo/jars/geronimo-servicemix-1.0-M4.jar +geronimo/jars/geronimo-servicemix-1.0-M5.jar +geronimo/jars/geronimo-servicemix-builder-1.0-M4.jar +geronimo/jars/geronimo-servicemix-builder-1.0-M5.jar +geronimo/jars/geronimo-spring-1.0-M2.jar +geronimo/jars/geronimo-spring-1.0-M4.jar +geronimo/jars/geronimo-spring-1.0-M5.jar +geronimo/jars/geronimo-spring-builder-1.0-M4.jar +geronimo/jars/geronimo-spring-builder-1.0-M5.jar +geronimo/jars/geronimo-system-1.0-M1.jar +geronimo/jars/geronimo-system-1.0-M2.jar +geronimo/jars/geronimo-system-1.0-M3.jar +geronimo/jars/geronimo-system-1.0-M4.jar +geronimo/jars/geronimo-system-1.0-M5.jar +geronimo/jars/geronimo-system-1.0.jar +geronimo/jars/geronimo-system-1.1.jar +geronimo/jars/geronimo-test-ddbean-1.0-M4.jar +geronimo/jars/geronimo-test-ddbean-1.0-M5.jar +geronimo/jars/geronimo-test-ddbean-1.0.jar +geronimo/jars/geronimo-test-ddbean-1.1.jar +geronimo/jars/geronimo-timer-1.0-M2.jar +geronimo/jars/geronimo-timer-1.0-M3.jar +geronimo/jars/geronimo-timer-1.0-M4.jar +geronimo/jars/geronimo-timer-1.0-M5.jar +geronimo/jars/geronimo-timer-1.0.jar +geronimo/jars/geronimo-timer-1.1.jar +geronimo/jars/geronimo-tomcat-1.0-M3.jar +geronimo/jars/geronimo-tomcat-1.0-M4.jar +geronimo/jars/geronimo-tomcat-1.0-M5.jar +geronimo/jars/geronimo-tomcat-1.0.jar +geronimo/jars/geronimo-tomcat-1.1.jar +geronimo/jars/geronimo-transaction-1.0-M2.jar +geronimo/jars/geronimo-tomcat-builder-1.0-M4.jar +geronimo/jars/geronimo-tomcat-builder-1.0-M5.jar +geronimo/jars/geronimo-tomcat-builder-1.0.jar +geronimo/jars/geronimo-tomcat-builder-1.1.jar +geronimo/jars/geronimo-transaction-1.0-M1.jar +geronimo/jars/geronimo-util-1.0.jar +geronimo/jars/geronimo-transaction-1.0-M3.jar +geronimo/jars/geronimo-transaction-1.0-M4.jar +geronimo/jars/geronimo-transaction-1.0-M5.jar +geronimo/jars/geronimo-transaction-1.0.jar +geronimo/jars/geronimo-transaction-1.1.jar +geronimo/jars/geronimo-uddi-db-1.0.jar +geronimo/jars/geronimo-uddi-db-1.1.jar +geronimo/jars/geronimo-uddi-server-1.0-M4.jar +geronimo/jars/geronimo-uddi-server-1.0-M5.jar +geronimo/jars/geronimo-upgrade-1.1.jar +geronimo/jars/geronimo-util-1.0-M5.jar +geronimo/jars/geronimo-web-builder-1.0-M4.jar +geronimo/jars/geronimo-util-1.1.jar +geronimo/jars/geronimo-web-builder-1.0-M5.jar +geronimo/jars/geronimo-web-builder-1.0.jar +geronimo/jars/geronimo-web-builder-1.1.jar +geronimo/jars/geronimo-webservices-1.0-M4.jar +geronimo/jars/geronimo-webservices-1.0-M5.jar +geronimo/jars/geronimo-webservices-1.0.jar +geronimo/jars/geronimo-webservices-1.1.jar +geronimo/jars/geronimo-welcome-1.0-M5.jar +geronimo/jars/geronimo-xmlbeans-plugin-1.0-M2.jar +geronimo/plugins/geronimo-assembly-plugin-1.0.2.jar +geronimo/plugins/geronimo-dependency-plugin-1.0.0.jar +geronimo/plugins/geronimo-deployment-plugin-1.0-M1.jar +geronimo/plugins/geronimo-deployment-plugin-1.0-M3.jar +geronimo/plugins/geronimo-deployment-plugin-1.0-M4.jar +geronimo/plugins/geronimo-deployment-plugin-1.0-M5.jar +geronimo/plugins/geronimo-deployment-plugin-1.0.0.jar +geronimo/plugins/geronimo-izpack-plugin-1.0.jar +geronimo/plugins/geronimo-packaging-plugin-1.0.1.jar +geronimo/plugins/geronimo-xmlbeans-plugin-1.0-M1.jar +geronimo/plugins/geronimo-xmlbeans-plugin-1.0-M3.jar +geronimo/plugins/geronimo-xmlbeans-plugin-1.0-M4.jar +geronimo/plugins/geronimo-xpom-plugin-1.0-M3.jar +geronimo/plugins/geronimo-xpom-plugin-1.0-M4.jar +geronimo/plugins/xmlbeans-maven-plugin-2.0.0-beta1.jar +geronimo/poms/activemq-1.0.pom +geronimo/poms/activemq-broker-1.0.pom +geronimo/poms/client-1.0.pom +geronimo/poms/client-corba-1.0.pom +geronimo/poms/client-security-1.0.pom +geronimo/poms/client-system-1.0.pom +geronimo/poms/client-system-1.1.pom +geronimo/poms/daytrader-core-1.0.pom +geronimo/poms/daytrader-derby-jetty-1.0.pom +geronimo/poms/daytrader-derby-tomcat-1.0.pom +geronimo/poms/daytrader-ear-1.0.pom +geronimo/poms/daytrader-ear-1.1.pom +geronimo/poms/daytrader-ejb-1.0.pom +geronimo/poms/directory-1.0.pom +geronimo/poms/daytrader-streamer-1.0.pom +geronimo/poms/daytrader-web-1.0.pom +geronimo/poms/daytrader-wsappclient-1.0.pom +geronimo/poms/ge-activemq-rar-1.1.pom +geronimo/poms/geronimo-1.0-M5.pom +geronimo/poms/geronimo-activation-1.0-M4.pom +geronimo/poms/geronimo-activation-1.0-M5.pom +geronimo/poms/geronimo-activation-1.0.pom +geronimo/poms/geronimo-activation-1.1.pom +geronimo/poms/geronimo-axis-1.0.pom +geronimo/poms/geronimo-axis-builder-1.0-M4.pom +geronimo/poms/geronimo-assembly-1.0-M3.pom +geronimo/poms/geronimo-assembly-1.0-M4.pom +geronimo/poms/geronimo-assembly-plugin-1.0-M4.pom +geronimo/poms/geronimo-assembly-plugin-1.0-M5.pom +geronimo/poms/geronimo-assembly-plugin-1.0.2.pom +geronimo/poms/j2ee-corba-1.0.pom +geronimo/poms/geronimo-assembly-plugin-1.1.0-12.pom +geronimo/poms/geronimo-axis-1.0-M2.pom +geronimo/poms/geronimo-axis-1.0-M3.pom +geronimo/poms/geronimo-axis-1.0-M4.pom +geronimo/poms/geronimo-axis-1.0-M5.pom +geronimo/poms/geronimo-axis-1.1.pom +geronimo/poms/geronimo-axis-builder-1.0-M5.pom +geronimo/poms/geronimo-axis-builder-1.0.pom +geronimo/poms/geronimo-client-1.1.pom +geronimo/poms/geronimo-axis-builder-1.1.pom +geronimo/poms/geronimo-client-1.0-M3.pom +geronimo/poms/geronimo-client-1.0-M4.pom +geronimo/poms/geronimo-client-1.0-M5.pom +geronimo/poms/geronimo-client-1.0.pom +geronimo/poms/geronimo-client-builder-1.0-M3.pom +geronimo/poms/geronimo-client-builder-1.0-M4.pom +geronimo/poms/geronimo-client-builder-1.0-M5.pom +geronimo/poms/geronimo-client-builder-1.0.pom +geronimo/poms/geronimo-client-builder-1.1.pom +geronimo/poms/geronimo-common-1.0-M4.pom +geronimo/poms/geronimo-common-1.0-M5.pom +geronimo/poms/geronimo-clustering-1.0-M2.pom +geronimo/poms/geronimo-clustering-1.0-M3.pom +geronimo/poms/geronimo-clustering-1.0-M4.pom +geronimo/poms/geronimo-clustering-1.0-M5.pom +geronimo/poms/geronimo-common-1.0-M2.pom +geronimo/poms/geronimo-common-1.0-M3.pom +geronimo/poms/geronimo-common-1.0.pom +geronimo/poms/geronimo-common-1.1.pom +geronimo/poms/geronimo-connector-1.0-M2.pom +geronimo/poms/geronimo-connector-1.0-M3.pom +geronimo/poms/geronimo-connector-1.0-M4.pom +geronimo/poms/geronimo-connector-1.0-M5.pom +geronimo/poms/geronimo-connector-1.0.pom +geronimo/poms/geronimo-connector-1.1.pom +geronimo/poms/geronimo-connector-builder-1.0-M3.pom +geronimo/poms/geronimo-connector-builder-1.0-M4.pom +geronimo/poms/geronimo-connector-builder-1.0-M5.pom +geronimo/poms/geronimo-connector-builder-1.0.pom +geronimo/poms/geronimo-connector-builder-1.1.pom +geronimo/poms/geronimo-console-1.0-M5.pom +geronimo/poms/geronimo-console-1.0.pom +geronimo/poms/geronimo-console-1.1.pom +geronimo/poms/geronimo-console-core-1.0-M5.pom +geronimo/poms/geronimo-console-core-1.0.pom +geronimo/poms/geronimo-console-core-1.1.pom +geronimo/poms/geronimo-console-framework-1.0-M5.pom +geronimo/poms/geronimo-console-framework-1.0.pom +geronimo/poms/geronimo-deployment-1.1.pom +geronimo/poms/jetty-1.0.pom +geronimo/poms/geronimo-console-framework-1.1.pom +geronimo/poms/geronimo-console-standard-1.0-M5.pom +geronimo/poms/geronimo-console-standard-1.0.pom +geronimo/poms/geronimo-core-1.0.pom +geronimo/poms/geronimo-console-standard-1.1.pom +geronimo/poms/geronimo-console-web-1.0-M2.pom +geronimo/poms/geronimo-console-web-1.0-M3.pom +geronimo/poms/geronimo-console-web-1.0-M4.pom +geronimo/poms/geronimo-console-web-1.0-M5.pom +geronimo/poms/tomcat-1.0.pom +geronimo/poms/geronimo-console-web-1.0.pom +geronimo/poms/geronimo-console-web-1.1.pom +geronimo/poms/geronimo-converter-1.0.pom +geronimo/poms/geronimo-converter-1.1.pom +geronimo/poms/geronimo-core-1.0-M2.pom +geronimo/poms/geronimo-core-1.0-M3.pom +geronimo/poms/geronimo-core-1.0-M4.pom +geronimo/poms/geronimo-core-1.0-M5.pom +geronimo/poms/geronimo-core-1.1.pom +geronimo/poms/geronimo-demo-1.0.pom +geronimo/poms/geronimo-daytrader-derby-db-1.0.pom +geronimo/poms/geronimo-daytrader-derby-db-1.1.pom +geronimo/poms/geronimo-demo-1.0-M2.pom +geronimo/poms/geronimo-demo-1.0-M3.pom +geronimo/poms/geronimo-demo-1.0-M4.pom +geronimo/poms/geronimo-demo-1.1.pom +geronimo/poms/geronimo-demo-1.0-M5.pom +geronimo/poms/geronimo-dependency-plugin-1.0.0.pom +geronimo/poms/geronimo-dependency-plugin-1.1.0-3.pom +geronimo/poms/geronimo-deploy-config-1.0-M4.pom +geronimo/poms/geronimo-deploy-config-1.0-M5.pom +geronimo/poms/geronimo-deploy-config-1.0.pom +geronimo/poms/geronimo-deploy-config-1.1.pom +geronimo/poms/geronimo-deploy-jsr88-1.0-M4.pom +geronimo/poms/geronimo-deploy-jsr88-1.0-M5.pom +geronimo/poms/geronimo-deploy-jsr88-1.0.pom +geronimo/poms/geronimo-deploy-jsr88-1.1.pom +geronimo/poms/j2ee-server-1.0.pom +geronimo/poms/geronimo-deploy-tool-1.0-M4.pom +geronimo/poms/geronimo-deploy-tool-1.0-M5.pom +geronimo/poms/geronimo-deploy-tool-1.0.pom +geronimo/poms/geronimo-deploy-tool-1.1.pom +geronimo/poms/geronimo-deployment-1.0-M2.pom +geronimo/poms/geronimo-deployment-1.0-M3.pom +geronimo/poms/geronimo-deployment-1.0-M4.pom +geronimo/poms/geronimo-deployment-1.0-M5.pom +geronimo/poms/geronimo-deployment-1.0.pom +geronimo/poms/geronimo-deployment-plugin-1.0-M2.pom +geronimo/poms/geronimo-deployment-plugin-1.0-M4.pom +geronimo/poms/geronimo-deployment-plugin-1.0-M5.pom +geronimo/poms/geronimo-deployment-plugin-1.0.0.pom +geronimo/poms/geronimo-derby-1.0-M3.pom +geronimo/poms/geronimo-deployment-plugin-1.1.0-3.pom +geronimo/poms/geronimo-derby-1.0-M4.pom +geronimo/poms/geronimo-derby-1.0-M5.pom +geronimo/poms/geronimo-derby-1.0.pom +geronimo/poms/geronimo-derby-1.1.pom +geronimo/poms/geronimo-derby-connector-1.0-M3.pom +geronimo/poms/geronimo-derby-connector-1.0-M4.pom +geronimo/poms/geronimo-directory-1.0-M5.pom +geronimo/poms/geronimo-directory-1.0.pom +geronimo/poms/geronimo-directory-1.1.pom +geronimo/poms/geronimo-gbean-deployer-1.0.pom +geronimo/poms/geronimo-gbean-deployer-1.1.pom +geronimo/poms/geronimo-hot-deploy-1.0.pom +geronimo/poms/geronimo-hot-deploy-1.1.pom +geronimo/poms/geronimo-installer-processing-1.1.pom +geronimo/poms/geronimo-installer-support-1.1.pom +geronimo/poms/geronimo-jetty-1.0-M3.pom +geronimo/poms/j2ee-system-1.0.pom +geronimo/poms/geronimo-interop-1.0-M4.pom +geronimo/poms/geronimo-interop-1.0-M5.pom +geronimo/poms/geronimo-izpack-plugin-1.0.pom +geronimo/poms/geronimo-izpack-plugin-1.1.pom +geronimo/poms/geronimo-j2ee-1.0-M2.pom +geronimo/poms/geronimo-j2ee-1.0-M3.pom +geronimo/poms/geronimo-j2ee-1.0-M4.pom +geronimo/poms/geronimo-j2ee-1.0-M5.pom +geronimo/poms/geronimo-j2ee-1.0.pom +geronimo/poms/geronimo-j2ee-1.1.pom +geronimo/poms/geronimo-j2ee-builder-1.0-M3.pom +geronimo/poms/geronimo-j2ee-builder-1.0-M4.pom +geronimo/poms/geronimo-j2ee-builder-1.0-M5.pom +geronimo/poms/geronimo-j2ee-builder-1.0.pom +geronimo/poms/geronimo-j2ee-builder-1.1.pom +geronimo/poms/j2ee-system-1.1.pom +geronimo/poms/geronimo-j2ee-schema-1.0-M2.pom +geronimo/poms/geronimo-j2ee-schema-1.0-M3.pom +geronimo/poms/geronimo-j2ee-schema-1.0-M4.pom +geronimo/poms/geronimo-j2ee-schema-1.0-M5.pom +geronimo/poms/geronimo-j2ee-schema-1.0.pom +geronimo/poms/geronimo-j2ee-schema-1.1.pom +geronimo/poms/geronimo-javamail-transport-1.0.pom +geronimo/poms/geronimo-javamail-transport-1.1.pom +geronimo/poms/geronimo-jetty-1.0-M2.pom +geronimo/poms/geronimo-jetty-1.0-M4.pom +geronimo/poms/geronimo-jetty-1.0-M5.pom +geronimo/poms/geronimo-jetty-1.0.pom +geronimo/poms/geronimo-jetty-1.1.pom +geronimo/poms/geronimo-jetty-builder-1.0-M3.pom +geronimo/poms/geronimo-jetty-builder-1.0-M4.pom +geronimo/poms/javamail-1.0.pom +geronimo/poms/geronimo-jetty-builder-1.0-M5.pom +geronimo/poms/geronimo-jetty-builder-1.0.pom +geronimo/poms/geronimo-jetty-builder-1.1.pom +geronimo/poms/geronimo-jmxdebug-1.0-M2.pom +geronimo/poms/geronimo-jmxdebug-1.0.pom +geronimo/poms/geronimo-jmxdebug-1.0-M3.pom +geronimo/poms/geronimo-jmxdebug-1.0-M4.pom +geronimo/poms/geronimo-jmxdebug-1.0-M5.pom +geronimo/poms/geronimo-jmxremoting-1.0-M2.pom +geronimo/poms/geronimo-jmxremoting-1.0-M3.pom +geronimo/poms/geronimo-jmxremoting-1.0-M4.pom +geronimo/poms/geronimo-jmxremoting-1.0-M5.pom +geronimo/poms/geronimo-kernel-1.0-M5.pom +geronimo/poms/geronimo-jmxremoting-1.0.pom +geronimo/poms/geronimo-jmxremoting-1.1.pom +geronimo/poms/geronimo-kernel-1.0-M2.pom +geronimo/poms/geronimo-kernel-1.0-M3.pom +geronimo/poms/geronimo-kernel-1.0-M4.pom +geronimo/poms/geronimo-kernel-1.0.pom +geronimo/poms/geronimo-kernel-1.1.pom +geronimo/poms/geronimo-ldap-demo-1.0.pom +geronimo/poms/geronimo-ldap-demo-1.1.pom +geronimo/poms/geronimo-mail-1.0-M3.pom +geronimo/poms/geronimo-mail-1.0-M4.pom +geronimo/poms/geronimo-mail-1.0-M5.pom +geronimo/poms/geronimo-mail-1.0.pom +geronimo/poms/geronimo-mail-1.1.pom +geronimo/poms/geronimo-naming-1.0.pom +geronimo/poms/geronimo-management-1.0-M5.pom +geronimo/poms/geronimo-management-1.0.pom +geronimo/poms/geronimo-management-1.1.pom +geronimo/poms/geronimo-naming-1.1.pom +geronimo/poms/geronimo-naming-1.0-M2.pom +geronimo/poms/geronimo-naming-1.0-M3.pom +geronimo/poms/geronimo-naming-1.0-M4.pom +geronimo/poms/geronimo-naming-1.0-M5.pom +geronimo/poms/geronimo-naming-builder-1.0-M3.pom +geronimo/poms/geronimo-naming-builder-1.0-M4.pom +geronimo/poms/geronimo-naming-builder-1.0-M5.pom +geronimo/poms/geronimo-naming-builder-1.0.pom +geronimo/poms/geronimo-naming-builder-1.1.pom +geronimo/poms/geronimo-network-1.0-M2.pom +geronimo/poms/geronimo-network-1.0-M3.pom +geronimo/poms/geronimo-packaging-plugin-0.1.1.pom +geronimo/poms/geronimo-packaging-plugin-0.1.pom +geronimo/poms/geronimo-packaging-plugin-1.0-M5.pom +geronimo/poms/geronimo-packaging-plugin-1.0.1.pom +geronimo/poms/geronimo-packaging-plugin-1.1.0-10.pom +geronimo/poms/geronimo-remote-deploy-1.0.pom +geronimo/poms/geronimo-remote-deploy-1.1.pom +geronimo/poms/geronimo-remote-deploy-lib-1.0.pom +geronimo/poms/geronimo-remote-deploy-lib-1.1.pom +geronimo/poms/geronimo-remoting-1.0-M2.pom +geronimo/poms/geronimo-remoting-1.0-M3.pom +geronimo/poms/geronimo-scripts-1.0.pom +geronimo/poms/geronimo-scripts-1.1.pom +geronimo/poms/geronimo-security-1.0-M2.pom +geronimo/poms/geronimo-security-1.0-M3.pom +geronimo/poms/geronimo-security-1.0-M4.pom +geronimo/poms/geronimo-security-1.0-M5.pom +geronimo/poms/geronimo-security-1.0.pom +geronimo/poms/geronimo-security-1.1.pom +geronimo/poms/geronimo-system-1.0.pom +geronimo/poms/geronimo-security-builder-1.0-M3.pom +geronimo/poms/geronimo-security-builder-1.0-M4.pom +geronimo/poms/geronimo-security-builder-1.0-M5.pom +geronimo/poms/geronimo-security-builder-1.0.pom +geronimo/poms/geronimo-security-builder-1.1.pom +geronimo/poms/geronimo-service-builder-1.0-M4.pom +geronimo/poms/geronimo-service-builder-1.0-M5.pom +geronimo/poms/geronimo-service-builder-1.0.pom +geronimo/poms/geronimo-service-builder-1.1.pom +geronimo/poms/geronimo-servicemix-1.0-M4.pom +geronimo/poms/geronimo-servicemix-1.0-M5.pom +geronimo/poms/geronimo-servicemix-builder-1.0-M4.pom +geronimo/poms/geronimo-servicemix-builder-1.0-M5.pom +geronimo/poms/geronimo-spring-1.0-M2.pom +geronimo/poms/geronimo-test-ddbean-1.0-M5.pom +geronimo/poms/ldap-realm-1.0.pom +geronimo/poms/geronimo-spring-1.0-M3.pom +geronimo/poms/geronimo-spring-1.0-M4.pom +geronimo/poms/geronimo-spring-1.0-M5.pom +geronimo/poms/geronimo-spring-builder-1.0-M4.pom +geronimo/poms/geronimo-spring-builder-1.0-M5.pom +geronimo/poms/geronimo-system-1.0-M2.pom +geronimo/poms/geronimo-system-1.0-M3.pom +geronimo/poms/geronimo-system-1.0-M4.pom +geronimo/poms/geronimo-system-1.0-M5.pom +geronimo/poms/geronimo-system-1.1.pom +geronimo/poms/geronimo-test-ddbean-1.0-M4.pom +geronimo/poms/geronimo-timer-1.0-M4.pom +geronimo/poms/magicGball-1.0.pom +geronimo/poms/geronimo-test-ddbean-1.0.pom +geronimo/poms/geronimo-test-ddbean-1.1.pom +geronimo/poms/geronimo-timer-1.0-M2.pom +geronimo/poms/geronimo-timer-1.0-M3.pom +geronimo/poms/geronimo-tomcat-builder-1.0-M4.pom +geronimo/poms/geronimo-timer-1.0-M5.pom +geronimo/poms/geronimo-timer-1.0.pom +geronimo/poms/geronimo-timer-1.1.pom +geronimo/poms/geronimo-tomcat-1.0-M3.pom +geronimo/poms/geronimo-tomcat-1.0-M4.pom +geronimo/poms/geronimo-tomcat-1.0-M5.pom +geronimo/poms/geronimo-tomcat-1.0.pom +geronimo/poms/geronimo-tomcat-1.1.pom +geronimo/poms/geronimo-tomcat-builder-1.0-M5.pom +geronimo/poms/geronimo-uddi-db-1.0.pom +geronimo/poms/geronimo-tomcat-builder-1.0.pom +geronimo/poms/geronimo-tomcat-builder-1.1.pom +geronimo/poms/geronimo-transaction-1.0-M2.pom +geronimo/poms/geronimo-transaction-1.0-M3.pom +geronimo/poms/geronimo-transaction-1.0-M4.pom +geronimo/poms/geronimo-transaction-1.0-M5.pom +geronimo/poms/geronimo-transaction-1.0.pom +geronimo/poms/geronimo-transaction-1.1.pom +geronimo/poms/geronimo-uddi-db-1.1.pom +geronimo/poms/geronimo-uddi-server-1.0-M4.pom +geronimo/poms/geronimo-uddi-server-1.0-M5.pom +geronimo/poms/geronimo-uddi-server-1.0.pom +geronimo/poms/geronimo-uddi-server-1.1.pom +geronimo/poms/geronimo-upgrade-1.1.pom +geronimo/poms/geronimo-util-1.0-M5.pom +geronimo/poms/geronimo-util-1.0.pom +geronimo/poms/geronimo-util-1.1.pom +geronimo/poms/geronimo-web-builder-1.0-M4.pom +geronimo/poms/geronimo-web-builder-1.0-M5.pom +geronimo/poms/geronimo-web-builder-1.0.pom +geronimo/poms/geronimo-web-builder-1.1.pom +geronimo/poms/rmi-naming-1.0.pom +geronimo/poms/geronimo-webservices-1.0-M4.pom +geronimo/poms/geronimo-webservices-1.0-M5.pom +geronimo/poms/geronimo-webservices-1.0.pom +geronimo/poms/geronimo-webservices-1.1.pom +geronimo/poms/geronimo-welcome-1.0-M5.pom +geronimo/poms/geronimo-welcome-1.0.pom +geronimo/poms/geronimo-welcome-1.1.pom +geronimo/poms/geronimo-xmlbeans-plugin-1.0-20040908.pom +geronimo/poms/geronimo-xmlbeans-plugin-1.0-46009.pom +geronimo/poms/geronimo-xmlbeans-plugin-1.0-M2.pom +geronimo/poms/geronimo-xmlbeans-plugin-1.0-M3.pom +geronimo/poms/geronimo-xmlbeans-plugin-1.0-M4.pom +geronimo/poms/geronimo-xpom-plugin-1.0-M4.pom +geronimo/poms/hot-deployer-1.0.pom +geronimo/poms/j2ee-deployer-1.0.pom +geronimo/poms/j2ee-security-1.0.pom +geronimo/poms/j2ee-system-experimental-1.0.pom +geronimo/poms/jetty-deployer-1.0.pom +geronimo/poms/jmxdebug-jetty-1.0.pom +geronimo/poms/jmxdebug-tomcat-1.0.pom +geronimo/poms/jsp-examples-jetty-1.0.pom +geronimo/poms/jsp-examples-tomcat-1.0.pom +geronimo/poms/ldap-demo-jetty-1.0.pom +geronimo/poms/ldap-demo-tomcat-1.0.pom +geronimo/poms/magicGball-1.1.pom +geronimo/poms/maven-metadata-mavenOneRepository.xml +geronimo/poms/online-deployer-1.0.pom +geronimo/poms/online-deployer-1.1.pom +geronimo/poms/remote-deploy-jetty-1.0.pom +geronimo/poms/servlets-examples-jetty-1.0.pom +geronimo/poms/remote-deploy-tomcat-1.0.pom +geronimo/poms/servlets-examples-tomcat-1.0.pom +geronimo/poms/shutdown-1.0.pom +geronimo/poms/shutdown-1.1.pom +geronimo/poms/system-database-1.0.pom +geronimo/poms/tomcat-deployer-1.0.pom +geronimo/poms/uddi-jetty-1.0.pom +geronimo/poms/uddi-tomcat-1.0.pom +geronimo/poms/upgrade-cli-1.1.pom +geronimo/poms/webconsole-jetty-1.0.pom +geronimo/poms/webconsole-tomcat-1.0.pom +geronimo/poms/welcome-jetty-1.0.pom +geronimo/poms/welcome-tomcat-1.0.pom +geronimo/poms/xmlbeans-maven-plugin-2.0.0-beta1.pom +geronimo/rars/geronimo-derby-connector-1.0-M3.rar +geronimo/rars/geronimo-derby-connector-1.0-M4.rar +geronimo/wars/daytrader-web-1.0.war +geronimo/wars/geronimo-console-framework-1.0.war +geronimo/wars/geronimo-servlet-examples-tomcat-5.5.12.war +geronimo/wars/geronimo-console-standard-1.0.war +geronimo/wars/geronimo-console-web-1.0-M1.war +geronimo/wars/geronimo-demo-1.0-M3.war +geronimo/wars/geronimo-demo-1.0-M4.war +geronimo/wars/geronimo-demo-1.0-M5.war +geronimo/wars/geronimo-demo-1.0.war +geronimo/wars/geronimo-jmxdebug-1.0-M1.war +geronimo/wars/geronimo-jmxdebug-1.0-M3.war +geronimo/wars/geronimo-jmxdebug-1.0-M4.war +geronimo/wars/geronimo-jmxdebug-1.0-M5.war +geronimo/wars/geronimo-jmxdebug-1.0.war +geronimo/wars/geronimo-jsp-examples-tomcat-5.5.12.war +geronimo/wars/geronimo-ldap-demo-1.0.war +geronimo/wars/geronimo-remote-deploy-1.0.war +geronimo/wars/geronimo-uddi-server-1.0.war +geronimo/wars/geronimo-welcome-1.0.war +geronimo/wars/magicGball-1.0.war +geronimo/KEYS +geronimo-spec/jars/geronimo-spec-activation-1.0.2-rc1.jar +geronimo-spec/jars/geronimo-spec-activation-1.0.2-rc2.jar +geronimo-spec/jars/geronimo-spec-activation-1.0.2-rc3.jar +geronimo-spec/jars/geronimo-spec-activation-1.0.2-rc4.jar +geronimo-spec/jars/geronimo-spec-corba-2.3-rc4.jar +geronimo-spec/jars/geronimo-spec-ejb-1.0-M1.jar +geronimo-spec/jars/geronimo-spec-ejb-2.1-rc1.jar +geronimo-spec/jars/geronimo-spec-ejb-2.1-rc2.jar +geronimo-spec/jars/geronimo-spec-ejb-2.1-rc3.jar +geronimo-spec/jars/geronimo-spec-ejb-2.1-rc4.jar +geronimo-spec/jars/geronimo-spec-ejb-DEV.jar +geronimo-spec/jars/geronimo-spec-j2ee-1.0-M1.jar +geronimo-spec/jars/geronimo-spec-j2ee-connector-1.0-M1.jar +geronimo-spec/jars/geronimo-spec-j2ee-1.4-rc1.jar +geronimo-spec/jars/geronimo-spec-j2ee-1.4-rc2.jar +geronimo-spec/jars/geronimo-spec-j2ee-1.4-rc3.jar +geronimo-spec/jars/geronimo-spec-j2ee-1.4-rc4.jar +geronimo-spec/jars/geronimo-spec-jaxr-1.0-rc1.jar +geronimo-spec/jars/geronimo-spec-j2ee-connector-1.5-rc1.jar +geronimo-spec/jars/geronimo-spec-j2ee-connector-1.5-rc2.jar +geronimo-spec/jars/geronimo-spec-j2ee-connector-1.5-rc3.jar +geronimo-spec/jars/geronimo-spec-j2ee-connector-1.5-rc4.jar +geronimo-spec/jars/geronimo-spec-j2ee-deployment-1.0-M1.jar +geronimo-spec/jars/geronimo-spec-j2ee-deployment-1.1-rc1.jar +geronimo-spec/jars/geronimo-spec-j2ee-deployment-1.1-rc2.jar +geronimo-spec/jars/geronimo-spec-j2ee-deployment-1.1-rc3.jar +geronimo-spec/jars/geronimo-spec-jaxr-1.0-rc2.jar +geronimo-spec/jars/geronimo-spec-j2ee-deployment-1.1-rc4.jar +geronimo-spec/jars/geronimo-spec-j2ee-jacc-1.0-M1.jar +geronimo-spec/jars/geronimo-spec-j2ee-jacc-1.0-rc1.jar +geronimo-spec/jars/geronimo-spec-j2ee-jacc-1.0-rc2.jar +geronimo-spec/jars/geronimo-spec-j2ee-jacc-1.0-rc3.jar +geronimo-spec/jars/geronimo-spec-j2ee-jacc-1.0-rc4.jar +geronimo-spec/jars/geronimo-spec-j2ee-management-1.0-M1.jar +geronimo-spec/jars/geronimo-spec-javamail-1.3.1-rc5.jar +geronimo-spec/jars/geronimo-spec-j2ee-management-1.0-rc1.jar +geronimo-spec/jars/geronimo-spec-jaxr-1.0-rc3.jar +geronimo-spec/jars/geronimo-spec-j2ee-management-1.0-rc2.jar +geronimo-spec/jars/geronimo-spec-j2ee-management-1.0-rc3.jar +geronimo-spec/jars/geronimo-spec-j2ee-management-1.0-rc4.jar +geronimo-spec/jars/geronimo-spec-j2eeschema-1.0-M1.jar +geronimo-spec/jars/geronimo-spec-javamail-1.3.1-rc1.jar +geronimo-spec/jars/geronimo-spec-javamail-1.3.1-rc2.jar +geronimo-spec/jars/geronimo-spec-javamail-1.3.1-rc3.jar +geronimo-spec/jars/geronimo-spec-javamail-1.3.1-rc4.jar +geronimo-spec/jars/geronimo-spec-jaxr-1.0-rc4.jar +geronimo-spec/jars/geronimo-spec-jaxrpc-1.1-rc4.jar +geronimo-spec/jars/geronimo-spec-jms-1.0-M1.jar +geronimo-spec/jars/geronimo-spec-jms-1.1-rc1.jar +geronimo-spec/jars/geronimo-spec-jms-1.1-rc2.jar +geronimo-spec/jars/geronimo-spec-jms-1.1-rc3.jar +geronimo-spec/jars/geronimo-spec-jms-1.1-rc4.jar +geronimo-spec/jars/geronimo-spec-jms-DEV.jar +geronimo-spec/jars/geronimo-spec-jsp-1.0-M1.jar +geronimo-spec/jars/geronimo-spec-jsp-2.0-rc1.jar +geronimo-spec/jars/geronimo-spec-jsp-2.0-rc2.jar +geronimo-spec/jars/geronimo-spec-jsp-2.0-rc3.jar +geronimo-spec/jars/geronimo-spec-jsp-2.0-rc4.jar +geronimo-spec/jars/geronimo-spec-jta-1.0-M1.jar +geronimo-spec/jars/geronimo-spec-jta-1.0.1B-rc1.jar +geronimo-spec/jars/geronimo-spec-jta-1.0.1B-rc2.jar +geronimo-spec/jars/geronimo-spec-jta-1.0.1B-rc3.jar +geronimo-spec/jars/geronimo-spec-jta-1.0.1B-rc4.jar +geronimo-spec/jars/geronimo-spec-jta-DEV.jar +geronimo-spec/jars/geronimo-spec-qname-1.1-rc4.jar +geronimo-spec/jars/geronimo-spec-saaj-1.1-rc4.jar +geronimo-spec/jars/geronimo-spec-servlet-1.0-M1.jar +geronimo-spec/jars/geronimo-spec-servlet-2.4-rc1.jar +geronimo-spec/jars/geronimo-spec-servlet-2.4-rc2.jar +geronimo-spec/jars/geronimo-spec-servlet-2.4-rc3.jar +geronimo-spec/jars/geronimo-spec-servlet-2.4-rc4.jar +geronimo-spec/poms/geronimo-spec-j2ee-connector-1.5-rc1.pom +geronimo-spec/poms/geronimo-spec-activation-1.0.2-rc1.pom +geronimo-spec/poms/geronimo-spec-activation-1.0.2-rc2.pom +geronimo-spec/poms/geronimo-spec-activation-1.0.2-rc3.pom +geronimo-spec/poms/geronimo-spec-activation-1.0.2-rc4.pom +geronimo-spec/poms/geronimo-spec-corba-2.3-rc4.pom +geronimo-spec/poms/geronimo-spec-ejb-2.1-rc1.pom +geronimo-spec/poms/geronimo-spec-ejb-2.1-rc2.pom +geronimo-spec/poms/geronimo-spec-ejb-2.1-rc3.pom +geronimo-spec/poms/geronimo-spec-ejb-2.1-rc4.pom +geronimo-spec/poms/geronimo-spec-j2ee-1.4-rc1.pom +geronimo-spec/poms/geronimo-spec-j2ee-1.4-rc2.pom +geronimo-spec/poms/geronimo-spec-j2ee-1.4-rc3.pom +geronimo-spec/poms/geronimo-spec-j2ee-1.4-rc4.pom +geronimo-spec/poms/geronimo-spec-saaj-1.1-rc4.pom +geronimo-spec/poms/geronimo-spec-j2ee-connector-1.5-rc2.pom +geronimo-spec/poms/geronimo-spec-j2ee-connector-1.5-rc3.pom +geronimo-spec/poms/geronimo-spec-j2ee-connector-1.5-rc4.pom +geronimo-spec/poms/geronimo-spec-j2ee-deployment-1.1-rc1.pom +geronimo-spec/poms/geronimo-spec-j2ee-deployment-1.1-rc2.pom +geronimo-spec/poms/geronimo-spec-j2ee-deployment-1.1-rc3.pom +geronimo-spec/poms/geronimo-spec-j2ee-deployment-1.1-rc4.pom +geronimo-spec/poms/geronimo-spec-j2ee-jacc-1.0-rc1.pom +geronimo-spec/poms/geronimo-spec-j2ee-jacc-1.0-rc2.pom +geronimo-spec/poms/geronimo-spec-j2ee-jacc-1.0-rc3.pom +geronimo-spec/poms/geronimo-spec-j2ee-jacc-1.0-rc4.pom +geronimo-spec/poms/geronimo-spec-j2ee-management-1.0-rc1.pom +geronimo-spec/poms/geronimo-spec-j2ee-management-1.0-rc2.pom +geronimo-spec/poms/geronimo-spec-j2ee-management-1.0-rc3.pom +geronimo-spec/poms/geronimo-spec-j2ee-management-1.0-rc4.pom +geronimo-spec/poms/geronimo-spec-javamail-1.3.1-rc1.pom +geronimo-spec/poms/geronimo-spec-javamail-1.3.1-rc2.pom +geronimo-spec/poms/geronimo-spec-javamail-1.3.1-rc3.pom +geronimo-spec/poms/geronimo-spec-javamail-1.3.1-rc4.pom +geronimo-spec/poms/geronimo-spec-javamail-1.3.1-rc5.pom +geronimo-spec/poms/geronimo-spec-jaxr-1.0-rc1.pom +geronimo-spec/poms/geronimo-spec-jaxr-1.0-rc2.pom +geronimo-spec/poms/geronimo-spec-jaxr-1.0-rc3.pom +geronimo-spec/poms/geronimo-spec-jaxr-1.0-rc4.pom +geronimo-spec/poms/geronimo-spec-jaxrpc-1.1-rc4.pom +geronimo-spec/poms/geronimo-spec-jms-1.1-rc1.pom +geronimo-spec/poms/geronimo-spec-jms-1.1-rc2.pom +geronimo-spec/poms/geronimo-spec-jms-1.1-rc3.pom +geronimo-spec/poms/geronimo-spec-jms-1.1-rc4.pom +geronimo-spec/poms/geronimo-spec-jsp-2.0-rc1.pom +geronimo-spec/poms/geronimo-spec-jsp-2.0-rc2.pom +geronimo-spec/poms/geronimo-spec-jsp-2.0-rc3.pom +geronimo-spec/poms/geronimo-spec-jsp-2.0-rc4.pom +geronimo-spec/poms/geronimo-spec-jta-1.0.1B-rc1.pom +geronimo-spec/poms/geronimo-spec-jta-1.0.1B-rc2.pom +geronimo-spec/poms/geronimo-spec-jta-1.0.1B-rc3.pom +geronimo-spec/poms/geronimo-spec-jta-1.0.1B-rc4.pom +geronimo-spec/poms/geronimo-spec-qname-1.1-rc4.pom +geronimo-spec/poms/geronimo-spec-servlet-2.4-rc1.pom +geronimo-spec/poms/geronimo-spec-servlet-2.4-rc2.pom +geronimo-spec/poms/geronimo-spec-servlet-2.4-rc3.pom +geronimo-spec/poms/geronimo-spec-servlet-2.4-rc4.pom +hivemind/jars/hivemind-1.0-beta-1.jar +hivemind/jars/hivemind-1.0-beta-2.jar +hivemind/jars/hivemind-1.0-beta-3-snapshot.jar +hivemind/jars/hivemind-1.0-rc-1.jar +hivemind/jars/hivemind-1.0-rc-2.jar +hivemind/jars/hivemind-1.0.jar +hivemind/jars/hivemind-1.1.1.jar +hivemind/jars/hivemind-1.1-alpha-1.jar +hivemind/jars/hivemind-1.1-alpha-2.jar +hivemind/jars/hivemind-1.1-alpha-3.jar +hivemind/jars/hivemind-1.1-beta-1.jar +hivemind/jars/hivemind-1.1-beta-2.jar +hivemind/jars/hivemind-1.1-beta-3.jar +hivemind/jars/hivemind-1.1-rc-1.jar +hivemind/jars/hivemind-1.1.jar +hivemind/jars/hivemind-jmx-1.1-beta-1.jar +hivemind/jars/hivemind-jmx-1.1-beta-2.jar +hivemind/jars/hivemind-jmx-1.1-beta-3.jar +hivemind/jars/hivemind-jmx-1.1-rc-1.jar +hivemind/jars/hivemind-jmx-1.1.1.jar +hivemind/jars/hivemind-jmx-1.1.jar +hivemind/jars/hivemind-lib-1.0-beta-3-snapshot.jar +hivemind/jars/hivemind-lib-1.0-beta-1.jar +hivemind/jars/hivemind-lib-1.0-beta-2.jar +hivemind/jars/hivemind-lib-1.0-rc-1.jar +hivemind/jars/hivemind-lib-1.0-rc-2.jar +hivemind/jars/hivemind-lib-1.0.jar +hivemind/jars/hivemind-lib-1.1-alpha-1.jar +hivemind/jars/hivemind-lib-1.1-alpha-2.jar +hivemind/jars/hivemind-lib-1.1-alpha-3.jar +hivemind/jars/hivemind-lib-1.1-beta-1.jar +hivemind/jars/hivemind-lib-1.1-beta-2.jar +hivemind/jars/hivemind-lib-1.1-beta-3.jar +hivemind/jars/hivemind-lib-1.1.1.jar +hivemind/jars/hivemind-lib-1.1-rc-1.jar +hivemind/jars/hivemind-lib-1.1.jar +httpcomponents-httpcore/jars/jakarta-httpcore-4.0-alpha3.jar +httpcomponents-httpcore/jars/jakarta-httpcore-4.0-alpha2.jar +httpcomponents-httpcore/jars/jakarta-httpcore-nio-4.0-alpha3.jar +httpcomponents-httpcore/jars/jakarta-httpcore-4.0-alpha4.jar +httpcomponents-httpcore/jars/jakarta-httpcore-niossl-4.0-alpha4.jar +httpcomponents-httpcore/jars/jakarta-httpcore-nio-4.0-alpha4.jar +httpcomponents-httpcore/jars/httpcore-4.0-alpha5.jar +httpcomponents-httpcore/jars/httpcore-nio-4.0-alpha5.jar +httpcomponents-httpcore/jars/httpcore-niossl-4.0-alpha5.jar +jakarta-regexp/jars/jakarta-regexp-1.4.jar +james/bars/james-server-3.0a.bar +james/blocks/james-server-3.0a.block +james/configs/james-server-3.0a.config +james/jars/james-3.0a1.jar +james/jars/mailet-1.0.jar +james/jars/mailet-3.0.jar +james/jars/mailet-api-1.0.jar +james/jars/mailet-api-3.0.jar +james/xmls/block.xml +james/xmls/config.xml +javax.jdo/jars/jdo2-api-2.0-beta.jar +javax.jdo/jars/jdo2-api-2.0-rc1.jar +javax.jdo/jars/jdo2-api-2.0.jar +javax.jdo/poms/jdo2-api-2.0-beta.pom +javax.jdo/poms/jdo2-api-2.0-rc1.pom +javax.jdo/poms/jdo2-api-2.0.pom +jaxme/jars/jaxme-0.2.jar +jaxme/jars/jaxme-0.3.1.jar +jaxme/jars/jaxme-0.3.jar +jaxme/jars/jaxme-api-0.2.jar +jaxme/jars/jaxme-api-0.3.1.jar +jaxme/jars/jaxme-api-0.3.jar +jaxme/jars/jaxme2-0.4beta.jar +jaxme/jars/jaxme-js-0.2.jar +jaxme/jars/jaxme-js-0.3.1.jar +jaxme/jars/jaxme-js-0.3.jar +jaxme/jars/jaxme-pm-0.2.jar +jaxme/jars/jaxme-pm-0.3.1.jar +jaxme/jars/jaxme-pm-0.3.jar +jaxme/jars/jaxme-rt-0.2.jar +jaxme/jars/jaxme-rt-0.3.1.jar +jaxme/jars/jaxme-rt-0.3.jar +jaxme/jars/jaxme-xs-0.2.jar +jaxme/jars/jaxme-xs-0.3.1.jar +jaxme/jars/jaxme-xs-0.3.jar +jaxme/jars/jaxme2-0.4-src.zip +jaxme/jars/jaxme2-0.4.jar +jaxme/jars/jaxme2-0.4beta-src.zip +jaxme/jars/jaxme2-0.5.1-sources.jar +jaxme/jars/jaxme2-0.5.1.jar +jaxme/jars/jaxme2-0.5.jar +jaxme/jars/jaxme2-0.5beta.jar +jaxme/jars/jaxme2-src.zip +jaxme/jars/jaxme2-rt-0.4.jar +jaxme/jars/jaxme2-rt-0.4beta.jar +jaxme/jars/jaxme2-rt-0.5.1-sources.jar +jaxme/jars/jaxme2-rt-0.5.1.jar +jaxme/jars/jaxme2-rt-0.5.jar +jaxme/jars/jaxme2-rt-0.5beta.jar +jaxme/jars/jaxme2-src-0.5.zip +jaxme/jars/jaxme2-src-0.5beta.zip +jaxme/jars/jaxmeapi-0.4-src.zip +jaxme/jars/jaxmeapi-0.5.1.jar +jaxme/jars/jaxmejs-0.4.jar +jaxme/jars/jaxmeapi-0.4.jar +jaxme/jars/jaxmeapi-0.4beta-src.zip +jaxme/jars/jaxmeapi-0.4beta.jar +jaxme/jars/jaxmeapi-0.5.1-sources.jar +jaxme/jars/jaxmeapi-0.5.jar +jaxme/jars/jaxmeapi-0.5beta.jar +jaxme/jars/jaxmeapi-src-0.5.zip +jaxme/jars/jaxmeapi-src-0.5beta.zip +jaxme/jars/jaxmejs-0.4-src.zip +jaxme/jars/jaxmejs-0.4beta-src.zip +jaxme/jars/jaxmejs-0.4beta.jar +jaxme/jars/jaxmejs-0.5.1-sources.jar +jaxme/jars/jaxmejs-0.5.1.jar +jaxme/jars/jaxmejs-0.5.jar +jaxme/jars/jaxmejs-0.5beta.jar +jaxme/jars/jaxmejs-src-0.5.zip +jaxme/jars/jaxmejs-src-0.5beta.zip +jaxme/jars/jaxmepm-0.4-src.zip +jaxme/jars/jaxmepm-0.4.jar +jaxme/jars/jaxmepm-0.4beta-src.zip +jaxme/jars/jaxmepm-0.4beta.jar +jaxme/jars/jaxmepm-0.5.1-sources.jar +jaxme/jars/jaxmepm-0.5.1.jar +jaxme/jars/jaxmepm-0.5.jar +jaxme/jars/jaxmepm-0.5beta.jar +jaxme/jars/jaxmepm-src-0.5.zip +jaxme/jars/jaxmepm-src-0.5beta.zip +jaxme/jars/jaxmexs-0.4-src.zip +jaxme/jars/jaxmexs-0.4.jar +jaxme/jars/jaxmexs-0.5.jar +jaxme/jars/jaxmexs-0.4beta-src.zip +jaxme/jars/jaxmexs-0.4beta.jar +jaxme/jars/jaxmexs-0.5.1-sources.jar +jaxme/jars/jaxmexs-0.5.1.jar +jaxme/jars/jaxmexs-0.5beta.jar +jaxme/jars/jaxmexs-src-0.5.zip +jaxme/jars/jaxmexs-src-0.5beta.zip +jcs/jars/jcs-1.0-dev.20020801.123921.jar +jcs/jars/jcs-1.0-dev.20020801.125151.jar +jcs/jars/jcs-1.0-dev.jar +jcs/jars/jcs-20030822.182132.jar +jcs/jars/jcs-snapshot-version +jcs/jars/jcs-1.3.jar +jcs/poms/jcs-1.3.pom +jcs-javagroups/jars/jcs-javagroups-alpha-0.20020813.013703.jar +jspapi/jars/jsp-api-2.0-20040521.jar +jstl/jars/jstl-1.0.1.jar +jstl/jars/jstl-1.0.2.jar +jstl/jars/jstl-1.0.3.jar +jstl/jars/jstl-1.0.4.jar +jstl/jars/jstl-1.0.5.jar +jstl/jars/jstl-1.0.6.jar +jstl/jars/jstl-1.0.jar +jstl/jars/jstl-1.1.0.jar +jstl/jars/jstl-1.1.1.jar +jstl/jars/jstl-1.1.2.jar +jstl/README +log4j/jars/log4j-1.1.3.jar +log4j/jars/log4j-1.2.11.jar +log4j/jars/log4j-1.2.14.jar +log4j/jars/log4j-1.2.12.jar +log4j/jars/log4j-1.2.13.jar +log4j/jars/log4j-1.2.4.jar +log4j/jars/log4j-1.2.5.jar +log4j/jars/log4j-1.2.6.jar +log4j/jars/log4j-1.2.7.jar +log4j/jars/log4j-1.2.8.jar +log4j/jars/log4j-1.2.9.jar +log4j/jars/log4j-1.2.15.jar +log4j/java-sources/log4j-1.2.13-sources.jar +log4j/java-sources/log4j-1.2.14-sources.jar +log4j/java-sources/log4j-1.2.15-sources.jar +log4j/poms/log4j-1.2.12.pom +log4j/poms/log4j-1.2.13.pom +log4j/poms/log4j-1.2.14.pom +log4j/poms/log4j-1.2.15.pom +logkit/distributions/LogKit-1.2-bin.zip +logkit/jars/logkit-1.0.1.jar +logkit/jars/logkit-1.2.2.jar.asc.txt +logkit/jars/logkit-1.2.2.jar +logkit/jars/logkit-1.2.jar +logkit/jars/logkit-20020529.jar +lucene/jars/lucene-1.2.jar +lucene/jars/lucene-1.3-rc1.jar +lucene/jars/lucene-1.4.1.jar +lucene/jars/lucene-1.4.2.jar +lucene/jars/lucene-1.4.3.jar +magicGball/jars/magicGball-0.01234-alpha0.jar +magicGball/poms/magicGball-0.01234-alpha0.pom +maven/jars/commons-jelly-1.0.1-20060717.jar +maven/jars/maven-1.0.1.jar +maven/jars/maven-1.0-rc3.jar +maven/jars/maven-1.0-rc4.jar +maven/jars/maven-1.1-beta-1.jar +maven/jars/maven-1.0.2.jar +maven/jars/maven-1.0.jar +maven/jars/maven-1.1-beta-2.jar +maven/jars/maven-1.1-beta-3.jar +maven/jars/maven-1.1-RC1.jar +maven/jars/maven-jar-plugin-1.5.jar +maven/jars/maven-java-plugin-1.5.jar +maven/jars/maven-jelly-tags-1.0.1.jar +maven/jars/velocity-1.5-20060721.044818.jar +maven/jars/maven-jelly-tags-1.0.jar +maven/jars/maven-model-3.0.0.jar +maven/jars/maven-1.1.jar +maven/jars/maven-model-3.0.1.jar +maven/jars/maven-model-3.0.2.jar +maven/jars/wagon-file-1.0-alpha-3.jar +maven/jars/wagon-http-1.0-alpha-3.jar +maven/jars/wagon-provider-api-1.0-alpha-3.jar +maven/java-sources/maven-1.1-beta-3-sources.jar +maven/java-sources/maven-ant-plugin-1.10-sources.jar +maven/java-sources/maven-ear-plugin-1.9-sources.jar +maven/java-sources/maven-linkcheck-plugin-1.4-sources.jar +maven/java-sources/maven-modello-plugin-1.0-sources.jar +maven/java-sources/maven-pdf-plugin-2.5-sources.jar +maven/java-sources/maven-pmd-plugin-1.9-sources.jar +maven/java-sources/maven-site-plugin-1.7.2-sources.jar +maven/java-sources/maven-announcement-plugin-1.4.1-sources.jar +maven/java-sources/maven-developer-activity-plugin-1.6.1-sources.jar +maven/java-sources/maven-file-activity-plugin-1.6.1-sources.jar +maven/java-sources/maven-model-3.0.2-sources.jar +maven/java-sources/maven-plugin-plugin-1.7.1-sources.jar +maven/java-sources/maven-1.1-RC1-sources.jar +maven/java-sources/maven-idea-plugin-1.7-sources.jar +maven/java-sources/maven-jalopy-plugin-1.5.1-sources.jar +maven/java-sources/maven-jar-plugin-1.8.1-sources.jar +maven/java-sources/maven-javadoc-plugin-1.9-sources.jar +maven/java-sources/maven-multichanges-plugin-1.3-sources.jar +maven/java-sources/maven-1.1-sources.jar +maven/javadoc.jars/maven-1.1-beta-3.javadoc.jar +maven/javadoc.jars/maven-modello-plugin-1.0.javadoc.jar +maven/javadoc.jars/maven-announcement-plugin-1.4.1.javadoc.jar +maven/javadoc.jars/maven-model-3.0.2.javadoc.jar +maven/javadoc.jars/maven-plugin-plugin-1.7.1.javadoc.jar +maven/javadoc.jars/maven-jalopy-plugin-1.5.1.javadoc.jar +maven/javadoc.jars/maven-jar-plugin-1.8.1.javadoc.jar +maven/javadoc.jars/maven-javadoc-plugin-1.9.javadoc.jar +maven/javadoc.jars/maven-multichanges-plugin-1.3.javadoc.jar +maven/javadoc.jars/maven-1.1-RC1.javadoc.jar +maven/javadoc.jars/maven-1.1.javadoc.jar +maven/plugins/maven-abbot-plugin-1.0.jar +maven/plugins/maven-abbot-plugin-1.1.jar +maven/plugins/maven-announcement-plugin-1.1.jar +maven/plugins/maven-announcement-plugin-1.2.jar +maven/plugins/maven-announcement-plugin-1.3.jar +maven/plugins/maven-changelog-plugin-1.9.1.jar +maven/plugins/maven-announcement-plugin-1.4.jar +maven/plugins/maven-ant-plugin-1.10.jar +maven/plugins/maven-ant-plugin-1.7.jar +maven/plugins/maven-ant-plugin-1.8.1.jar +maven/plugins/maven-ant-plugin-1.8.jar +maven/plugins/maven-ant-plugin-1.9.jar +maven/plugins/maven-antlr-plugin-1.2.1.jar +maven/plugins/maven-antlr-plugin-1.2.2.jar +maven/plugins/maven-antlr-plugin-1.2.jar +maven/plugins/maven-appserver-plugin-2.0.jar +maven/plugins/maven-artifact-plugin-1.2.jar +maven/plugins/maven-artifact-plugin-1.3.jar +maven/plugins/maven-artifact-plugin-1.4.1.jar +maven/plugins/maven-artifact-plugin-1.4.jar +maven/plugins/maven-artifact-plugin-1.5.1.jar +maven/plugins/maven-artifact-plugin-1.5.2.jar +maven/plugins/maven-caller-plugin-1.1.jar +maven/plugins/maven-artifact-plugin-1.5.jar +maven/plugins/maven-artifact-plugin-1.6.jar +maven/plugins/maven-artifact-plugin-1.7.jar +maven/plugins/maven-castor-plugin-1.2.jar +maven/plugins/maven-artifact-plugin-1.8.jar +maven/plugins/maven-ashkelon-plugin-1.2.jar +maven/plugins/maven-aspectj-plugin-3.0.jar +maven/plugins/maven-aspectj-plugin-3.1.1.jar +maven/plugins/maven-aspectj-plugin-3.1.jar +maven/plugins/maven-aspectj-plugin-3.2.jar +maven/plugins/maven-aspectj-plugin-4.0.jar +maven/plugins/maven-aspectwerkz-plugin-1.2.jar +maven/plugins/maven-clean-plugin-1.2.jar +maven/plugins/maven-changelog-plugin-1.5.jar +maven/plugins/maven-changelog-plugin-1.6.jar +maven/plugins/maven-changelog-plugin-1.7.1.jar +maven/plugins/maven-changelog-plugin-1.7.2.jar +maven/plugins/maven-changelog-plugin-1.7.jar +maven/plugins/maven-changelog-plugin-1.8.1.jar +maven/plugins/maven-changelog-plugin-1.8.2.jar +maven/plugins/maven-changelog-plugin-1.8.jar +maven/plugins/maven-changelog-plugin-1.9.jar +maven/plugins/maven-changes-plugin-1.4.jar +maven/plugins/maven-changes-plugin-1.5.1.jar +maven/plugins/maven-changes-plugin-1.5.jar +maven/plugins/maven-clean-plugin-1.3.jar +maven/plugins/maven-changes-plugin-1.6.jar +maven/plugins/maven-checkstyle-plugin-2.4.1.jar +maven/plugins/maven-checkstyle-plugin-2.4.jar +maven/plugins/maven-checkstyle-plugin-2.5.jar +maven/plugins/maven-checkstyle-plugin-3.0.1.jar +maven/plugins/maven-checkstyle-plugin-3.0.jar +maven/plugins/maven-clean-plugin-1.4.jar +maven/plugins/maven-clover-plugin-1.10.jar +maven/plugins/maven-clover-plugin-1.11.jar +maven/plugins/maven-clover-plugin-1.5.jar +maven/plugins/maven-clover-plugin-1.6.jar +maven/plugins/maven-clover-plugin-1.7.jar +maven/plugins/maven-clover-plugin-1.8.jar +maven/plugins/maven-clover-plugin-1.9.1.jar +maven/plugins/maven-clover-plugin-1.9.jar +maven/plugins/maven-console-plugin-1.1.jar +maven/plugins/maven-console-plugin-1.2.jar +maven/plugins/maven-cruisecontrol-plugin-1.2.jar +maven/plugins/maven-cruisecontrol-plugin-1.3.jar +maven/plugins/maven-cruisecontrol-plugin-1.4.jar +maven/plugins/maven-cruisecontrol-plugin-1.5.jar +maven/plugins/maven-cruisecontrol-plugin-1.6.jar +maven/plugins/maven-cruisecontrol-plugin-1.7.jar +maven/plugins/maven-cruisecontrol-plugin-1.8.jar +maven/plugins/maven-dashboard-plugin-1.3.jar +maven/plugins/maven-developer-activity-plugin-1.5.1.jar +maven/plugins/maven-dashboard-plugin-1.4.jar +maven/plugins/maven-dashboard-plugin-1.5.jar +maven/plugins/maven-dashboard-plugin-1.6.jar +maven/plugins/maven-dashboard-plugin-1.7.jar +maven/plugins/maven-dashboard-plugin-1.8.jar +maven/plugins/maven-dashboard-plugin-1.9.jar +maven/plugins/maven-deploy-plugin-1.3.jar +maven/plugins/maven-developer-activity-plugin-1.5.2.jar +maven/plugins/maven-dist-plugin-1.5.jar +maven/plugins/maven-developer-activity-plugin-1.5.jar +maven/plugins/maven-developer-activity-plugin-1.6.jar +maven/plugins/maven-dist-plugin-1.6.1.jar +maven/plugins/maven-dist-plugin-1.6.jar +maven/plugins/maven-dist-plugin-1.7.jar +maven/plugins/maven-docbook-plugin-1.2.jar +maven/plugins/maven-ear-plugin-1.5.jar +maven/plugins/maven-ear-plugin-1.6.1.jar +maven/plugins/maven-ear-plugin-1.6.jar +maven/plugins/maven-ear-plugin-1.7.jar +maven/plugins/maven-ear-plugin-1.8.jar +maven/plugins/maven-ear-plugin-1.9.jar +maven/plugins/maven-eclipse-plugin-1.10.jar +maven/plugins/maven-eclipse-plugin-1.11.jar +maven/plugins/maven-eclipse-plugin-1.7.jar +maven/plugins/maven-eclipse-plugin-1.8.jar +maven/plugins/maven-eclipse-plugin-1.9.jar +maven/plugins/maven-ejb-plugin-1.4.jar +maven/plugins/maven-ejb-plugin-1.5.jar +maven/plugins/maven-ejb-plugin-1.6.jar +maven/plugins/maven-ejb-plugin-1.7.1.jar +maven/plugins/maven-ejb-plugin-1.7.2.jar +maven/plugins/maven-ejb-plugin-1.7.jar +maven/plugins/maven-faq-plugin-1.3.jar +maven/plugins/maven-faq-plugin-1.4.jar +maven/plugins/maven-faq-plugin-1.5.jar +maven/plugins/maven-faq-plugin-1.6.1.jar +maven/plugins/maven-file-activity-plugin-1.5.1.jar +maven/plugins/maven-faq-plugin-1.6.jar +maven/plugins/maven-file-activity-plugin-1.5.2.jar +maven/plugins/maven-genapp-plugin-2.3.jar +maven/plugins/maven-gump-plugin-1.3.jar +maven/plugins/maven-file-activity-plugin-1.5.jar +maven/plugins/maven-file-activity-plugin-1.6.jar +maven/plugins/maven-genapp-plugin-2.2.jar +maven/plugins/maven-gump-plugin-1.4.jar +maven/plugins/maven-gump-plugin-2.0.1.jar +maven/plugins/maven-gump-plugin-2.0.jar +maven/plugins/maven-hibernate-plugin-1.1.jar +maven/plugins/maven-hibernate-plugin-1.2.jar +maven/plugins/maven-hibernate-plugin-1.3.jar +maven/plugins/maven-html2xdoc-plugin-1.3.1.jar +maven/plugins/maven-idea-plugin-1.4.jar +maven/plugins/maven-html2xdoc-plugin-1.3.jar +maven/plugins/maven-html2xdoc-plugin-1.4.jar +maven/plugins/maven-idea-plugin-1.5.jar +maven/plugins/maven-idea-plugin-1.6.jar +maven/plugins/maven-jar-plugin-1.7.jar +maven/plugins/maven-j2ee-plugin-1.5.1.jar +maven/plugins/maven-j2ee-plugin-1.5.jar +maven/plugins/maven-jalopy-plugin-1.2.jar +maven/plugins/maven-jalopy-plugin-1.3.1.jar +maven/plugins/maven-jalopy-plugin-1.3.jar +maven/plugins/maven-jalopy-plugin-1.4.jar +maven/plugins/maven-jalopy-plugin-1.5.jar +maven/plugins/maven-jar-plugin-1.5.jar +maven/plugins/maven-jar-plugin-1.6.1.jar +maven/plugins/maven-jar-plugin-1.6.jar +maven/plugins/maven-jar-plugin-1.8.jar +maven/plugins/maven-java-plugin-1.4.jar +maven/plugins/maven-java-plugin-1.5.jar +maven/plugins/maven-java-plugin-1.6.jar +maven/plugins/maven-javacc-plugin-1.1.jar +maven/plugins/maven-jbuilder-plugin-1.5.jar +maven/plugins/maven-javacc-plugin-1.2.jar +maven/plugins/maven-javadoc-plugin-1.5.jar +maven/plugins/maven-javadoc-plugin-1.6.1.jar +maven/plugins/maven-javadoc-plugin-1.6.jar +maven/plugins/maven-javadoc-plugin-1.7.jar +maven/plugins/maven-javadoc-plugin-1.8.jar +maven/plugins/maven-jboss-plugin-1.5.jar +maven/plugins/maven-jcoverage-plugin-1.0.4.jar +maven/plugins/maven-jcoverage-plugin-1.0.5.jar +maven/plugins/maven-jcoverage-plugin-1.0.6.jar +maven/plugins/maven-jcoverage-plugin-1.0.7.jar +maven/plugins/maven-jcoverage-plugin-1.0.8.jar +maven/plugins/maven-jcoverage-plugin-1.0.9.jar +maven/plugins/maven-jdee-plugin-1.1.jar +maven/plugins/maven-jdepend-plugin-1.5.1.jar +maven/plugins/maven-jdepend-plugin-1.5.jar +maven/plugins/maven-jdepend-plugin-1.6.1.jar +maven/plugins/maven-jdepend-plugin-1.6.jar +maven/plugins/maven-jdeveloper-plugin-1.4.jar +maven/plugins/maven-jdiff-plugin-1.3.jar +maven/plugins/maven-jdiff-plugin-1.4.jar +maven/plugins/maven-jdiff-plugin-1.5.jar +maven/plugins/maven-jellydoc-plugin-1.3.1.jar +maven/plugins/maven-jellydoc-plugin-1.3.jar +maven/plugins/maven-jetty-plugin-1.1.jar +maven/plugins/maven-jira-plugin-1.1.1.jar +maven/plugins/maven-jira-plugin-1.1.2.jar +maven/plugins/maven-jira-plugin-1.1.jar +maven/plugins/maven-jira-plugin-1.2.jar +maven/plugins/maven-jira-plugin-1.3.jar +maven/plugins/maven-jnlp-plugin-1.3.jar +maven/plugins/maven-jnlp-plugin-1.4.1.jar +maven/plugins/maven-jnlp-plugin-1.4.jar +maven/plugins/maven-junit-doclet-plugin-1.2.jar +maven/plugins/maven-junit-report-plugin-1.5.1.jar +maven/plugins/maven-junit-report-plugin-1.5.jar +maven/plugins/maven-jxr-plugin-1.4.1.jar +maven/plugins/maven-jxr-plugin-1.4.2.jar +maven/plugins/maven-jxr-plugin-1.4.3.jar +maven/plugins/maven-jxr-plugin-1.4.jar +maven/plugins/maven-jxr-plugin-1.5.jar +maven/plugins/maven-latex-plugin-1.2.jar +maven/plugins/maven-latka-plugin-1.4.jar +maven/plugins/maven-latex-plugin-1.4.1.jar +maven/plugins/maven-latka-plugin-1.4.1.jar +maven/plugins/maven-license-plugin-1.2.jar +maven/plugins/maven-linkcheck-plugin-1.3.1.jar +maven/plugins/maven-linkcheck-plugin-1.4.jar +maven/plugins/maven-linkcheck-plugin-1.3.2.jar +maven/plugins/maven-linkcheck-plugin-1.3.3.jar +maven/plugins/maven-linkcheck-plugin-1.3.4.jar +maven/plugins/maven-linkcheck-plugin-1.3.jar +maven/plugins/maven-multichanges-plugin-1.1.jar +maven/plugins/maven-multichanges-plugin-1.2.jar +maven/plugins/maven-multiproject-plugin-1.3.1.jar +maven/plugins/maven-multiproject-plugin-1.3.jar +maven/plugins/maven-multiproject-plugin-1.4.1.jar +maven/plugins/maven-multiproject-plugin-1.4.jar +maven/plugins/maven-multiproject-plugin-1.5.jar +maven/plugins/maven-native-plugin-1.1.jar +maven/plugins/maven-native-plugin-1.2.jar +maven/plugins/maven-nsis-plugin-1.1.jar +maven/plugins/maven-nsis-plugin-2.0.jar +maven/plugins/maven-pdf-plugin-2.1.jar +maven/plugins/maven-pdf-plugin-2.2.1.jar +maven/plugins/maven-pdf-plugin-2.2.jar +maven/plugins/maven-pdf-plugin-2.3.jar +maven/plugins/maven-pdf-plugin-2.4.jar +maven/plugins/maven-pdf-plugin-2.5.jar +maven/plugins/maven-plugin-plugin-1.4.jar +maven/plugins/maven-plugin-plugin-1.5.1.jar +maven/plugins/maven-plugin-plugin-1.5.2.jar +maven/plugins/maven-plugin-plugin-1.5.jar +maven/plugins/maven-plugin-plugin-1.6.jar +maven/plugins/maven-plugin-plugin-1.7.jar +maven/plugins/maven-pmd-plugin-1.4.jar +maven/plugins/maven-pmd-plugin-1.5.jar +maven/plugins/maven-pmd-plugin-1.6.jar +maven/plugins/maven-pmd-plugin-1.7.jar +maven/plugins/maven-pmd-plugin-1.8.jar +maven/plugins/maven-pmd-plugin-1.9.jar +maven/plugins/maven-pom-plugin-1.4.1.jar +maven/plugins/maven-pom-plugin-1.4.jar +maven/plugins/maven-pom-plugin-1.5.jar +maven/plugins/maven-rar-plugin-1.0.jar +maven/plugins/maven-rar-plugin-1.1.jar +maven/plugins/maven-release-plugin-1.3.jar +maven/plugins/maven-release-plugin-1.4.1.jar +maven/plugins/maven-release-plugin-1.4.jar +maven/plugins/maven-repository-plugin-1.2.jar +maven/plugins/maven-scm-plugin-1.3.jar +maven/plugins/maven-scm-plugin-1.4.1.jar +maven/plugins/maven-scm-plugin-1.4.jar +maven/plugins/maven-scm-plugin-1.5-beta-2.jar +maven/plugins/maven-site-plugin-1.6.jar +maven/plugins/maven-site-plugin-1.7.jar +maven/plugins/maven-scm-plugin-1.5-beta-3.jar +maven/plugins/maven-scm-plugin-1.5.jar +maven/plugins/maven-scm-plugin-1.6.jar +maven/plugins/maven-shell-plugin-1.1.jar +maven/plugins/maven-simian-plugin-1.4.jar +maven/plugins/maven-simian-plugin-1.5.jar +maven/plugins/maven-simian-plugin-1.6.jar +maven/plugins/maven-site-plugin-1.5.1.jar +maven/plugins/maven-site-plugin-1.5.2.jar +maven/plugins/maven-site-plugin-1.5.jar +maven/plugins/maven-site-plugin-1.6.1.jar +maven/plugins/maven-source-plugin-1.0.jar +maven/plugins/maven-struts-plugin-1.3.jar +maven/plugins/maven-tasklist-plugin-2.3.jar +maven/plugins/maven-tasklist-plugin-2.4.jar +maven/plugins/maven-xdoc-plugin-1.9.2.jar +maven/plugins/maven-test-plugin-1.6.1.jar +maven/plugins/maven-test-plugin-1.6.2.jar +maven/plugins/maven-test-plugin-1.6.jar +maven/plugins/maven-test-plugin-1.7.jar +maven/plugins/maven-test-plugin-1.8.jar +maven/plugins/maven-tjdo-plugin-1.0.0.jar +maven/plugins/maven-uberjar-plugin-1.2.jar +maven/plugins/maven-vdoclet-plugin-1.2.jar +maven/plugins/maven-war-plugin-1.6.1.jar +maven/plugins/maven-war-plugin-1.6.2.jar +maven/plugins/maven-war-plugin-1.6.jar +maven/plugins/maven-webserver-plugin-2.0.jar +maven/plugins/maven-wizard-plugin-1.1.jar +maven/plugins/maven-xdoc-plugin-1.10.jar +maven/plugins/maven-xdoc-plugin-1.7.1.jar +maven/plugins/maven-xdoc-plugin-1.7.2.jar +maven/plugins/maven-xdoc-plugin-1.7.jar +maven/plugins/maven-xdoc-plugin-1.8.jar +maven/plugins/maven-xdoc-plugin-1.9.1.jar +maven/plugins/maven-changes-plugin-1.7.jar +maven/plugins/maven-xdoc-plugin-1.9.jar +maven/plugins/maven-genapp-plugin-2.3.1.jar +maven/plugins/maven-pom-plugin-1.5.1.jar +maven/plugins/maven-clover-plugin-1.11.1.jar +maven/plugins/maven-java-plugin-1.6.1.jar +maven/plugins/maven-jira-plugin-1.3.1.jar +maven/plugins/maven-simian-plugin-1.6.1.jar +maven/plugins/maven-clover-plugin-1.11.2.jar +maven/plugins/maven-jdiff-plugin-1.5.1.jar +maven/plugins/maven-pdf-plugin-2.5.1.jar +maven/plugins/maven-pmd-plugin-1.10.jar +maven/plugins/maven-scm-plugin-1.6.1.jar +maven/plugins/maven-site-plugin-1.7.1.jar +maven/plugins/maven-modello-plugin-1.0.jar +maven/plugins/maven-site-plugin-1.7.2.jar +maven/plugins/maven-announcement-plugin-1.4.1.jar +maven/plugins/maven-developer-activity-plugin-1.6.1.jar +maven/plugins/maven-file-activity-plugin-1.6.1.jar +maven/plugins/maven-plugin-plugin-1.7.1.jar +maven/plugins/maven-idea-plugin-1.7.jar +maven/plugins/maven-jalopy-plugin-1.5.1.jar +maven/plugins/maven-jar-plugin-1.8.1.jar +maven/plugins/maven-javadoc-plugin-1.9.jar +maven/plugins/maven-multichanges-plugin-1.3.jar +maven/plugins/maven-artifact-plugin-1.9.jar +maven/plugins/maven-changelog-plugin-1.9.2.jar +maven/plugins/maven-dist-plugin-1.7.1.jar +maven/plugins/maven-eclipse-plugin-1.12.jar +maven/plugins/maven-ejb-plugin-1.7.3.jar +maven/plugins/maven-linkcheck-plugin-1.4.1.jar +maven/plugins/maven-multiproject-plugin-1.5.1.jar +maven/plugins/maven-test-plugin-1.8.1.jar +maven/plugins/maven-war-plugin-1.6.3.jar +maven/plugins/maven-xdoc-plugin-1.10.1.jar +maven/plugins/maven-nsis-plugin-2.1.jar +maven/plugins/maven-artifact-plugin-1.9.1.jar +maven/plugins/maven-test-plugin-1.8.2.jar +maven/poms/commons-jelly-1.0.1-20060717.pom +maven/poms/maven-1.0.1.pom +maven/poms/maven-1.0-rc4.pom +maven/poms/maven-1.0.2.pom +maven/poms/maven-1.0.pom +maven/poms/maven-1.1-beta-3.pom +maven/poms/maven-abbot-plugin-1.0.pom +maven/poms/maven-abbot-plugin-1.1.pom +maven/poms/maven-announcement-plugin-1.2.pom +maven/poms/maven-announcement-plugin-1.3.pom +maven/poms/maven-1.1-RC1.pom +maven/poms/maven-announcement-plugin-1.4.pom +maven/poms/maven-ant-plugin-1.10.pom +maven/poms/maven-ant-plugin-1.8.1.pom +maven/poms/maven-ant-plugin-1.8.pom +maven/poms/maven-ant-plugin-1.9.pom +maven/poms/maven-antlr-plugin-1.2.1.pom +maven/poms/maven-model-3.0.0.pom +maven/poms/maven-antlr-plugin-1.2.2.pom +maven/poms/maven-artifact-plugin-1.3.pom +maven/poms/maven-artifact-plugin-1.4.1.pom +maven/poms/maven-artifact-plugin-1.4.pom +maven/poms/maven-artifact-plugin-1.5.1.pom +maven/poms/maven-artifact-plugin-1.5.2.pom +maven/poms/maven-artifact-plugin-1.5.pom +maven/poms/maven-artifact-plugin-1.6.pom +maven/poms/maven-model-3.0.1.pom +maven/poms/maven-artifact-plugin-1.7.pom +maven/poms/maven-artifact-plugin-1.8.pom +maven/poms/maven-aspectj-plugin-3.1.1.pom +maven/poms/maven-aspectj-plugin-3.2.pom +maven/poms/maven-aspectj-plugin-4.0.pom +maven/poms/maven-changelog-plugin-1.6.pom +maven/poms/maven-changelog-plugin-1.7.1.pom +maven/poms/maven-clean-plugin-1.4.pom +maven/poms/maven-changelog-plugin-1.7.2.pom +maven/poms/maven-changelog-plugin-1.7.pom +maven/poms/maven-changelog-plugin-1.8.1.pom +maven/poms/maven-changelog-plugin-1.9.pom +maven/poms/maven-changelog-plugin-1.8.2.pom +maven/poms/maven-changelog-plugin-1.8.pom +maven/poms/maven-changelog-plugin-1.9.1.pom +maven/poms/maven-changes-plugin-1.5.1.pom +maven/poms/maven-changes-plugin-1.5.pom +maven/poms/maven-changes-plugin-1.6.pom +maven/poms/maven-checkstyle-plugin-2.5.pom +maven/poms/maven-checkstyle-plugin-3.0.1.pom +maven/poms/maven-checkstyle-plugin-3.0.pom +maven/poms/maven-dashboard-plugin-1.5.pom +maven/poms/maven-clover-plugin-1.10.pom +maven/poms/maven-clover-plugin-1.11.pom +maven/poms/maven-clover-plugin-1.6.pom +maven/poms/maven-clover-plugin-1.7.pom +maven/poms/maven-clover-plugin-1.8.pom +maven/poms/maven-clover-plugin-1.9.1.pom +maven/poms/maven-clover-plugin-1.9.pom +maven/poms/maven-dist-plugin-1.6.1.pom +maven/poms/maven-console-plugin-1.2.pom +maven/poms/maven-cruisecontrol-plugin-1.4.pom +maven/poms/maven-cruisecontrol-plugin-1.5.pom +maven/poms/maven-cruisecontrol-plugin-1.6.pom +maven/poms/maven-cruisecontrol-plugin-1.7.pom +maven/poms/maven-cruisecontrol-plugin-1.8.pom +maven/poms/maven-dashboard-plugin-1.4.pom +maven/poms/maven-developer-activity-plugin-1.5.1.pom +maven/poms/maven-dashboard-plugin-1.6.pom +maven/poms/maven-dashboard-plugin-1.7.pom +maven/poms/maven-dashboard-plugin-1.8.pom +maven/poms/maven-dashboard-plugin-1.9.pom +maven/poms/maven-developer-activity-plugin-1.5.2.pom +maven/poms/maven-developer-activity-plugin-1.6.pom +maven/poms/maven-dist-plugin-1.6.pom +maven/poms/maven-dist-plugin-1.7.pom +maven/poms/maven-ear-plugin-1.6.1.pom +maven/poms/maven-ear-plugin-1.6.pom +maven/poms/maven-ear-plugin-1.7.pom +maven/poms/maven-ear-plugin-1.8.pom +maven/poms/maven-ear-plugin-1.9.pom +maven/poms/maven-ejb-plugin-1.5.pom +maven/poms/maven-eclipse-plugin-1.10.pom +maven/poms/maven-eclipse-plugin-1.11.pom +maven/poms/maven-eclipse-plugin-1.8.pom +maven/poms/maven-eclipse-plugin-1.9.pom +maven/poms/maven-ejb-plugin-1.6.pom +maven/poms/maven-ejb-plugin-1.7.1.pom +maven/poms/maven-ejb-plugin-1.7.2.pom +maven/poms/maven-ejb-plugin-1.7.pom +maven/poms/maven-faq-plugin-1.4.pom +maven/poms/maven-faq-plugin-1.5.pom +maven/poms/maven-faq-plugin-1.6.1.pom +maven/poms/maven-file-activity-plugin-1.5.1.pom +maven/poms/maven-faq-plugin-1.6.pom +maven/poms/maven-file-activity-plugin-1.5.2.pom +maven/poms/maven-file-activity-plugin-1.6.pom +maven/poms/maven-genapp-plugin-2.3.pom +maven/poms/maven-gump-plugin-1.4.pom +maven/poms/maven-gump-plugin-2.0.1.pom +maven/poms/maven-gump-plugin-2.0.pom +maven/poms/maven-hibernate-plugin-1.2.pom +maven/poms/maven-hibernate-plugin-1.3.pom +maven/poms/maven-html2xdoc-plugin-1.3.1.pom +maven/poms/maven-html2xdoc-plugin-1.4.pom +maven/poms/maven-idea-plugin-1.5.pom +maven/poms/maven-idea-plugin-1.6.pom +maven/poms/maven-j2ee-plugin-1.5.1.pom +maven/poms/maven-jalopy-plugin-1.3.1.pom +maven/poms/maven-jalopy-plugin-1.3.pom +maven/poms/maven-jalopy-plugin-1.4.pom +maven/poms/maven-jalopy-plugin-1.5.pom +maven/poms/maven-jar-plugin-1.6.1.pom +maven/poms/maven-jar-plugin-1.6.pom +maven/poms/maven-jar-plugin-1.7.pom +maven/poms/maven-jar-plugin-1.8.pom +maven/poms/maven-java-plugin-1.5.pom +maven/poms/maven-java-plugin-1.6.pom +maven/poms/maven-javacc-plugin-1.2.pom +maven/poms/maven-model-3.0.2.pom +maven/poms/maven-javadoc-plugin-1.6.1.pom +maven/poms/maven-javadoc-plugin-1.6.pom +maven/poms/maven-javadoc-plugin-1.7.pom +maven/poms/maven-javadoc-plugin-1.8.pom +maven/poms/maven-jcoverage-plugin-1.0.5.pom +maven/poms/maven-jcoverage-plugin-1.0.6.pom +maven/poms/maven-jcoverage-plugin-1.0.7.pom +maven/poms/maven-jelly-tags-1.0.1.pom +maven/poms/maven-jcoverage-plugin-1.0.8.pom +maven/poms/maven-jcoverage-plugin-1.0.9.pom +maven/poms/maven-jdepend-plugin-1.5.1.pom +maven/poms/maven-jdepend-plugin-1.6.1.pom +maven/poms/maven-jdepend-plugin-1.6.pom +maven/poms/maven-jdiff-plugin-1.5.pom +maven/poms/maven-jira-plugin-1.2-20051203.221911.pom +maven/poms/maven-jellydoc-plugin-1.3.1.pom +maven/poms/maven-jira-plugin-1.1.1.pom +maven/poms/maven-jira-plugin-1.1.2.pom +maven/poms/maven-jira-plugin-1.2.pom +maven/poms/maven-jira-plugin-1.3.pom +maven/poms/maven-jira-plugin-snapshot-version +maven/poms/maven-jnlp-plugin-1.4.1.pom +maven/poms/maven-jnlp-plugin-1.4.pom +maven/poms/maven-junit-report-plugin-1.5.1.pom +maven/poms/maven-jxr-plugin-1.4.1.pom +maven/poms/maven-jxr-plugin-1.4.2.pom +maven/poms/maven-jxr-plugin-1.4.3.pom +maven/poms/maven-jxr-plugin-1.5.pom +maven/poms/maven-latex-plugin-1.4.1.pom +maven/poms/maven-latka-plugin-1.4.1.pom +maven/poms/maven-linkcheck-plugin-1.3.2.pom +maven/poms/maven-linkcheck-plugin-1.3.3.pom +maven/poms/maven-native-plugin-1.2.pom +maven/poms/maven-linkcheck-plugin-1.3.4.pom +maven/poms/maven-linkcheck-plugin-1.4.pom +maven/poms/maven-multichanges-plugin-1.2.pom +maven/poms/maven-multiproject-plugin-1.3.1.pom +maven/poms/maven-multiproject-plugin-1.4.1.pom +maven/poms/maven-multiproject-plugin-1.4.pom +maven/poms/maven-multiproject-plugin-1.5.pom +maven/poms/maven-nsis-plugin-2.0.pom +maven/poms/maven-pdf-plugin-2.2.1.pom +maven/poms/maven-pdf-plugin-2.5.pom +maven/poms/maven-pdf-plugin-2.2.pom +maven/poms/maven-pdf-plugin-2.3.pom +maven/poms/maven-pdf-plugin-2.4.pom +maven/poms/maven-plugin-plugin-1.5.1.pom +maven/poms/maven-plugin-plugin-1.5.2.pom +maven/poms/maven-plugin-plugin-1.5.pom +maven/poms/maven-plugin-plugin-1.6.pom +maven/poms/maven-plugin-plugin-1.7.pom +maven/poms/maven-pmd-plugin-1.5.pom +maven/poms/maven-pmd-plugin-1.6.pom +maven/poms/maven-pmd-plugin-1.7.pom +maven/poms/maven-pmd-plugin-1.8.pom +maven/poms/maven-pmd-plugin-1.9.pom +maven/poms/maven-pom-plugin-1.5.pom +maven/poms/maven-rar-plugin-1.1.pom +maven/poms/maven-release-plugin-1.4.1.pom +maven/poms/maven-scm-plugin-1.4.1.pom +maven/poms/maven-scm-plugin-1.5-beta-2.pom +maven/poms/maven-scm-plugin-1.5-beta-3.pom +maven/poms/maven-scm-plugin-1.5.pom +maven/poms/maven-scm-plugin-1.6.pom +maven/poms/maven-simian-plugin-1.5.pom +maven/poms/maven-simian-plugin-1.6.pom +maven/poms/maven-site-plugin-1.5.1.pom +maven/poms/maven-site-plugin-1.5.2.pom +maven/poms/maven-site-plugin-1.6.1.pom +maven/poms/maven-site-plugin-1.6.pom +maven/poms/maven-site-plugin-1.7.pom +maven/poms/maven-source-plugin-1.0.pom +maven/poms/maven-tasklist-plugin-2.4.pom +maven/poms/maven-test-plugin-1.6.2.pom +maven/poms/maven-test-plugin-1.7.pom +maven/poms/maven-test-plugin-1.8.pom +maven/poms/maven-war-plugin-1.6.1.pom +maven/poms/maven-war-plugin-1.6.2.pom +maven/poms/maven-xdoc-plugin-1.10.pom +maven/poms/maven-xdoc-plugin-1.7.2.pom +maven/poms/maven-xdoc-plugin-1.8.pom +maven/poms/maven-xdoc-plugin-1.9.1.pom +maven/poms/maven-xdoc-plugin-1.9.2.pom +maven/poms/maven-xdoc-plugin-1.9.pom +maven/poms/velocity-1.5-20060721.044818.pom +maven/poms/maven-changes-plugin-1.7.pom +maven/poms/maven-genapp-plugin-2.3.1.pom +maven/poms/maven-pom-plugin-1.5.1.pom +maven/poms/maven-clover-plugin-1.11.1.pom +maven/poms/maven-java-plugin-1.6.1.pom +maven/poms/maven-jira-plugin-1.3.1.pom +maven/poms/maven-simian-plugin-1.6.1.pom +maven/poms/maven-clover-plugin-1.11.2.pom +maven/poms/maven-jdiff-plugin-1.5.1.pom +maven/poms/maven-pdf-plugin-2.5.1.pom +maven/poms/maven-pmd-plugin-1.10.pom +maven/poms/maven-scm-plugin-1.6.1.pom +maven/poms/maven-site-plugin-1.7.1.pom +maven/poms/maven-modello-plugin-1.0.pom +maven/poms/maven-site-plugin-1.7.2.pom +maven/poms/maven-announcement-plugin-1.4.1.pom +maven/poms/maven-developer-activity-plugin-1.6.1.pom +maven/poms/maven-file-activity-plugin-1.6.1.pom +maven/poms/maven-plugin-plugin-1.7.1.pom +maven/poms/maven-idea-plugin-1.7.pom +maven/poms/maven-jalopy-plugin-1.5.1.pom +maven/poms/maven-jar-plugin-1.8.1.pom +maven/poms/maven-javadoc-plugin-1.9.pom +maven/poms/maven-multichanges-plugin-1.3.pom +maven/poms/maven-artifact-plugin-1.9.pom +maven/poms/maven-changelog-plugin-1.9.2.pom +maven/poms/maven-dist-plugin-1.7.1.pom +maven/poms/maven-eclipse-plugin-1.12.pom +maven/poms/maven-ejb-plugin-1.7.3.pom +maven/poms/maven-linkcheck-plugin-1.4.1.pom +maven/poms/maven-multiproject-plugin-1.5.1.pom +maven/poms/maven-test-plugin-1.8.1.pom +maven/poms/maven-war-plugin-1.6.3.pom +maven/poms/maven-xdoc-plugin-1.10.1.pom +maven/poms/maven-nsis-plugin-2.1.pom +maven/poms/maven-artifact-plugin-1.9.1.pom +maven/poms/maven-1.1.pom +maven/poms/maven-test-plugin-1.8.2.pom +maven-new/jars/maven-fetch-20030525.145948.jar +maven-new/jars/maven-fetch-snapshot-version +maven-plugins/jars/maven-aptdoc-plugin-20030413.030249.jar +maven-plugins/jars/maven-aptdoc-plugin-snapshot-version +maven-plugins/jars/maven-dbunit-plugin-20030413.024213.jar +maven-plugins/jars/maven-dbunit-plugin-snapshot-version +maven-plugins/plugins/maven-dbunit-plugin-1.0.jar +maven-plugins/plugins/maven-dbunit-plugin-20030814.080708.jar +merlin/jars/merlin-api-3.3.0.jar +merlin/jars/merlin-cli-3.3.0.jar +merlin/jars/merlin-impl-3.3.0.jar +merlin/jars/merlin-unit-3.3.0.jar +merlin/plugins/merlin-plugin-3.3.0.jar +merlin-developer/jars/merlin-developer-core-snapshot-version +merlin-developer/jars/merlin-developer-core-0.1.jar +merlin-developer/jars/merlin-developer-core-20040423.083017.jar +merlin-tutorial/jars/locator-impl-1.0.jar +merlin-tutorial/jars/locator-api-1.0.jar +merlin-tutorial/jars/publisher-api-1.0.jar +merlin-tutorial/jars/publisher-impl-1.0.jar +muse/jars/2.0.0-M1/KEYS +muse/jars/2.0.0-M1/muse-core-2.0.0-M1.jar +muse/jars/2.0.0-M1/muse-platform-axis2-2.0.0-M1.jar +muse/jars/2.0.0-M1/muse-tools-2.0.0-M1.jar +muse/jars/2.0.0-M1/muse-util-2.0.0-M1.jar +muse/jars/2.0.0-M1/muse-util-xml-2.0.0-M1.jar +muse/jars/2.0.0-M1/muse-util-qname-2.0.0-M1.jar +muse/jars/2.0.0-M1/muse-util-xstream-2.0.0-M1.jar +muse/jars/2.0.0-M1/muse-wsa-soap-2.0.0-M1.jar +muse/jars/2.0.0-M1/muse-wsdm-muws-adv-api-2.0.0-M1.jar +muse/jars/2.0.0-M1/muse-wsdm-muws-adv-impl-2.0.0-M1.jar +muse/jars/2.0.0-M1/muse-wsdm-muws-api-2.0.0-M1.jar +muse/jars/2.0.0-M1/muse-wsrf-impl-2.0.0-M1.jar +muse/jars/2.0.0-M1/muse-wsdm-muws-impl-2.0.0-M1.jar +muse/jars/2.0.0-M1/muse-wsdm-wef-api-2.0.0-M1.jar +muse/jars/2.0.0-M1/muse-wsdm-wef-impl-2.0.0-M1.jar +muse/jars/2.0.0-M1/muse-wsn-api-2.0.0-M1.jar +muse/jars/2.0.0-M1/muse-wsn-impl-2.0.0-M1.jar +muse/jars/2.0.0-M1/muse-wsrf-api-2.0.0-M1.jar +muse/jars/2.0.0-M1/muse-wsx-api-2.0.0-M1.jar +muse/jars/2.0.0-M1/muse-wsx-impl-2.0.0-M1.jar +muse/jars/advertiser-xbeans-src-1.0.jar +muse/jars/advertiser-xbeans-1.0.jar +muse/jars/wsdm-xbeans-1.0.jar +muse/jars/muse-1.0.jar +muse/jars/wsdm-xbeans-src-1.0.jar +myfaces/jars/myfaces-1.0.9/myfaces-impl-1.0.9.jar +myfaces/jars/myfaces-1.0.9/myfaces-1.0.9.jar +myfaces/jars/myfaces-1.0.9/myfaces-extensions-1.0.9.jar +myfaces/jars/myfaces-1.0.9/myfaces-jsf-api-1.0.9.jar +myfaces/jars/myfaces-1.0.9/myfaces-wap-1.0.9.jar +myfaces/jars/myfaces-1.0.9/myfaces-xdoclet-1.0.9.jar +myfaces/jars/myfaces-1.1.0/myfaces-impl.jar +myfaces/jars/myfaces-1.1.0/myfaces-all.jar +myfaces/jars/myfaces-1.1.0/myfaces-api.jar +myfaces/jars/myfaces-1.1.0/tomahawk.jar +myfaces/jars/myfaces-1.0.9.jar +myfaces/jars/myfaces-extensions-1.0.9.jar +myfaces/jars/myfaces-all-1.1.0.jar +myfaces/jars/myfaces-all-1.1.1.jar +myfaces/jars/myfaces-api-1.1.0.jar +myfaces/jars/myfaces-api-1.1.1.jar +myfaces/jars/myfaces-impl-1.0.9.jar +myfaces/jars/myfaces-impl-1.1.0.jar +myfaces/jars/myfaces-impl-1.1.1.jar +myfaces/jars/myfaces-jsf-api-1.0.8-beta.jar +myfaces/jars/myfaces-jsf-api-1.0.9.jar +myfaces/jars/myfaces-wap-1.0.9.jar +myfaces/jars/myfaces-xdoclet-1.0.9.jar +myfaces/jars/tomahawk-1.1.0.jar +myfaces/jars/tomahawk-1.1.1.jar +myfaces/poms/myfaces.pom +nekohtml/jars/nekohtml-0.6.5.jar +nekohtml/jars/nekohtml-0.7.1.jar +nekohtml/jars/nekohtml-0.7.4.jar +nekohtml/jars/nekohtml-0.7.6.jar +nekohtml/jars/nekohtml-0.7.7.jar +nekohtml/jars/nekohtml-0.8.1.jar +nekohtml/jars/nekohtmlSamples-0.7.1.jar +nekohtml/jars/nekohtmlSamples-0.7.7.jar +nekohtml/jars/nekohtmlSamples-0.8.1.jar +nekohtml/jars/nekohtmlXni-0.7.1.jar +nekohtml/jars/nekohtmlXni-0.7.6.jar +nekohtml/jars/nekohtmlXni-0.7.7.jar +nekohtml/jars/nekohtmlXni-0.8.1.jar +ojb/jars/db-ojb-1.0.0-tools.jar +ojb/jars/db-ojb-1.0.0.jar +ojb/jars/db-ojb-1.0.1.jar +ojb/jars/db-ojb-1.0.2.jar +ojb/jars/db-ojb-1.0.3.jar +ojb/jars/db-ojb-1.0.4.jar.MD5 +ojb/jars/db-ojb-1.0.4.jar +ojb/jars/db-ojb-1.0.rc5-tools.jar +ojb/jars/ojb-0.9.jar +ojb/jars/db-ojb-1.0.rc5.jar +ojb/jars/db-ojb-1.0.rc7.jar +ojb/jars/ojb-0.5.200.jar +ojb/jars/ojb-0.7.343.jar +ojb/jars/ojb-0.8.375.jar +ojb/jars/ojb-0.9.1.jar +ojb/jars/ojb-0.9.2.jar +ojb/jars/ojb-0.9.4.jar +ojb/jars/ojb-0.9.5.jar +ojb/jars/ojb-0.9.6-dev.jar +ojb/jars/ojb-0.9.6.jar +ojb/jars/ojb-1.0-dev-james-1.jar +ojb/jars/ojb-1.0.rc2.jar +ojb/jars/ojb-1.0.rc3.jar +ojb/jars/ojb-1.0.rc4.jar +ojb/jars/xdoclet-ojb-module-1.2.1.jar +ojb/jars/xdoclet-ojb-module-1.2.3.jar +ojb/jars/xdoclet-ojb-module-1.2.3.jar.MD5 +ojb/poms/db-ojb-1.0.4.pom.MD5 +ojb/poms/db-ojb-1.0.4.pom +ojb/poms/ojb-1.0.rc2.pom +org/apache/geronimo/specs/geronimo-activation_1.0.2_spec/1.0/geronimo-activation_1.0.2_spec-1.0.jar +org/apache/geronimo/specs/geronimo-activation_1.0.2_spec/1.0/geronimo-activation_1.0.2_spec-1.0.pom +org/apache/geronimo/specs/geronimo-activation_1.0.2_spec/maven-metadata.xml +org/apache/geronimo/specs/geronimo-corba_3.0_spec/1.0/geronimo-corba_3.0_spec-1.0.jar +org/apache/geronimo/specs/geronimo-corba_3.0_spec/1.0/geronimo-corba_3.0_spec-1.0.pom +org/apache/geronimo/specs/geronimo-corba_3.0_spec/maven-metadata.xml +org/apache/geronimo/specs/geronimo-ejb_2.1_spec/1.0/geronimo-ejb_2.1_spec-1.0.jar +org/apache/geronimo/specs/geronimo-ejb_2.1_spec/1.0/geronimo-ejb_2.1_spec-1.0.pom +org/apache/geronimo/specs/geronimo-ejb_2.1_spec/maven-metadata.xml +org/apache/geronimo/specs/geronimo-j2ee-connector_1.5_spec/1.0/geronimo-j2ee-connector_1.5_spec-1.0.jar +org/apache/geronimo/specs/geronimo-j2ee-connector_1.5_spec/1.0/geronimo-j2ee-connector_1.5_spec-1.0.pom +org/apache/geronimo/specs/geronimo-j2ee-connector_1.5_spec/maven-metadata.xml +org/apache/geronimo/specs/geronimo-j2ee-deployment_1.1_spec/1.0/geronimo-j2ee-deployment_1.1_spec-1.0.jar +org/apache/geronimo/specs/geronimo-j2ee-deployment_1.1_spec/1.0/geronimo-j2ee-deployment_1.1_spec-1.0.pom +org/apache/geronimo/specs/geronimo-j2ee-deployment_1.1_spec/maven-metadata.xml +org/apache/geronimo/specs/geronimo-j2ee-jacc_1.0_spec/1.0/geronimo-j2ee-jacc_1.0_spec-1.0.jar +org/apache/geronimo/specs/geronimo-j2ee-jacc_1.0_spec/1.0/geronimo-j2ee-jacc_1.0_spec-1.0.pom +org/apache/geronimo/specs/geronimo-j2ee-jacc_1.0_spec/maven-metadata.xml +org/apache/geronimo/specs/geronimo-j2ee-management_1.0_spec/1.0/geronimo-j2ee-management_1.0_spec-1.0.jar +org/apache/geronimo/specs/geronimo-j2ee-management_1.0_spec/1.0/geronimo-j2ee-management_1.0_spec-1.0.pom +org/apache/geronimo/specs/geronimo-j2ee-management_1.0_spec/maven-metadata.xml +org/apache/geronimo/specs/geronimo-jaxr_1.0_spec/1.0/geronimo-jaxr_1.0_spec-1.0.jar +org/apache/geronimo/specs/geronimo-jaxr_1.0_spec/1.0/geronimo-jaxr_1.0_spec-1.0.pom +org/apache/geronimo/specs/geronimo-jaxr_1.0_spec/maven-metadata.xml +org/apache/geronimo/specs/geronimo-jaxrpc_1.1_spec/1.0/geronimo-jaxrpc_1.1_spec-1.0.jar +org/apache/geronimo/specs/geronimo-jaxrpc_1.1_spec/1.0/geronimo-jaxrpc_1.1_spec-1.0.pom +org/apache/geronimo/specs/geronimo-jaxrpc_1.1_spec/maven-metadata.xml +org/apache/geronimo/specs/geronimo-jms_1.1_spec/1.0/geronimo-jms_1.1_spec-1.0.jar +org/apache/geronimo/specs/geronimo-jms_1.1_spec/1.0/geronimo-jms_1.1_spec-1.0.pom +org/apache/geronimo/specs/geronimo-jms_1.1_spec/maven-metadata.xml +org/apache/geronimo/specs/geronimo-jsp_2.0_spec/1.0/geronimo-jsp_2.0_spec-1.0.jar +org/apache/geronimo/specs/geronimo-jsp_2.0_spec/1.0/geronimo-jsp_2.0_spec-1.0.pom +org/apache/geronimo/specs/geronimo-jsp_2.0_spec/maven-metadata.xml +org/apache/geronimo/specs/geronimo-jta_1.0.1B_spec/1.0/geronimo-jta_1.0.1B_spec-1.0.jar +org/apache/geronimo/specs/geronimo-jta_1.0.1B_spec/1.0/geronimo-jta_1.0.1B_spec-1.0.pom +org/apache/geronimo/specs/geronimo-jta_1.0.1B_spec/maven-metadata.xml +org/apache/geronimo/specs/geronimo-qname_1.1_spec/1.0/geronimo-qname_1.1_spec-1.0.jar +org/apache/geronimo/specs/geronimo-qname_1.1_spec/1.0/geronimo-qname_1.1_spec-1.0.pom +org/apache/geronimo/specs/geronimo-qname_1.1_spec/maven-metadata.xml +org/apache/geronimo/specs/geronimo-saaj_1.1_spec/1.0/geronimo-saaj_1.1_spec-1.0.jar +org/apache/geronimo/specs/geronimo-saaj_1.1_spec/1.0/geronimo-saaj_1.1_spec-1.0.pom +org/apache/geronimo/specs/geronimo-saaj_1.1_spec/maven-metadata.xml +org/apache/geronimo/specs/geronimo-servlet_2.4_spec/1.0/geronimo-servlet_2.4_spec-1.0.jar +org/apache/geronimo/specs/geronimo-servlet_2.4_spec/1.0/geronimo-servlet_2.4_spec-1.0.pom +org/apache/geronimo/specs/geronimo-servlet_2.4_spec/maven-metadata.xml +org.apache.axis/jars/axis-1.4.jar +org.apache.axis/jars/axis-1.4.jar.sha +org.apache.axis/jars/axis-ant-1.4.jar +org.apache.axis/jars/axis-ant-1.4.jar.sha +org.apache.axis/jars/axis-jaxrpc-1.4.jar +org.apache.axis/jars/axis-jaxrpc-1.4.jar.sha +org.apache.axis/jars/axis-saaj-1.4.jar +org.apache.axis/jars/axis-saaj-1.4.jar.sha +org.apache.bcel/jars/bcel-5.2.jar +org.apache.beehive/jars/beehive-controls-1.0.1.jar +org.apache.beehive/jars/beehive-ejb-control-1.0.1.jar +org.apache.beehive/jars/beehive-jdbc-control-1.0.1.jar +org.apache.beehive/jars/beehive-jms-control-1.0.1.jar +org.apache.beehive/jars/beehive-netui-compiler-1.0.1.jar +org.apache.beehive/jars/beehive-netui-core-1.0.1.jar +org.apache.beehive/jars/beehive-netui-tags-1.0.1.jar +org.apache.beehive/poms/beehive-control-ejb-1.0.1.pom +org.apache.beehive/poms/beehive-control-jdbc-1.0.1.pom +org.apache.beehive/poms/beehive-control-jms-1.0.1.pom +org.apache.beehive/poms/beehive-controls-1.0.1.pom +org.apache.beehive/poms/beehive-netui-compiler-1.0.1.pom +org.apache.beehive/poms/beehive-netui-core-1.0.1.pom +org.apache.beehive/poms/beehive-netui-tags-1.0.1.pom +org.apache.derby/jars/derby-10.1.1.0.jar +org.apache.derby/jars/derbyLocale_de_DE-10.1.1.0.jar +org.apache.derby/jars/derby-10.1.2.1.jar +org.apache.derby/jars/derby-10.1.3.1.jar +org.apache.derby/jars/derbyclient-10.1.1.0.jar +org.apache.derby/jars/derbyLocale_de_DE-10.1.2.1.jar +org.apache.derby/jars/derbyLocale_de_DE-10.1.3.1.jar +org.apache.derby/jars/derbyLocale_es-10.1.1.0.jar +org.apache.derby/jars/derbyLocale_es-10.1.2.1.jar +org.apache.derby/jars/derbyLocale_es-10.1.3.1.jar +org.apache.derby/jars/derbyLocale_fr-10.1.1.0.jar +org.apache.derby/jars/derbyLocale_fr-10.1.2.1.jar +org.apache.derby/jars/derbyLocale_fr-10.1.3.1.jar +org.apache.derby/jars/derbyLocale_it-10.1.1.0.jar +org.apache.derby/jars/derbyLocale_it-10.1.2.1.jar +org.apache.derby/jars/derbyLocale_it-10.1.3.1.jar +org.apache.derby/jars/derbyLocale_ja_JP-10.1.1.0.jar +org.apache.derby/jars/derbyLocale_ja_JP-10.1.2.1.jar +org.apache.derby/jars/derbyLocale_ja_JP-10.1.3.1.jar +org.apache.derby/jars/derbyLocale_ko_KR-10.1.1.0.jar +org.apache.derby/jars/derbyLocale_ko_KR-10.1.2.1.jar +org.apache.derby/jars/derbyLocale_ko_KR-10.1.3.1.jar +org.apache.derby/jars/derbyLocale_pt_BR-10.1.1.0.jar +org.apache.derby/jars/derbyLocale_pt_BR-10.1.2.1.jar +org.apache.derby/jars/derbyLocale_pt_BR-10.1.3.1.jar +org.apache.derby/jars/derbyLocale_zh_CN-10.1.1.0.jar +org.apache.derby/jars/derbyLocale_zh_CN-10.1.2.1.jar +org.apache.derby/jars/derbyLocale_zh_CN-10.1.3.1.jar +org.apache.derby/jars/derbyLocale_zh_TW-10.1.1.0.jar +org.apache.derby/jars/derbyLocale_zh_TW-10.1.2.1.jar +org.apache.derby/jars/derbyLocale_zh_TW-10.1.3.1.jar +org.apache.derby/jars/derbyclient-10.1.2.1.jar +org.apache.derby/jars/derbyclient-10.1.3.1.jar +org.apache.derby/jars/derbynet-10.1.1.0.jar +org.apache.derby/jars/derbynet-10.1.2.1.jar +org.apache.derby/jars/derbynet-10.1.3.1.jar +org.apache.derby/jars/derbytools-10.1.1.0.jar +org.apache.derby/jars/derbytools-10.1.2.1.jar +org.apache.derby/jars/derbytools-10.1.3.1.jar +org.apache.derby/jars/derby-10.2.2.0.jar +org.apache.derby/jars/derbyLocale_de_DE-10.2.2.0.jar +org.apache.derby/jars/derbyLocale_es-10.2.2.0.jar +org.apache.derby/jars/derbyLocale_fr-10.2.2.0.jar +org.apache.derby/jars/derbyLocale_it-10.2.2.0.jar +org.apache.derby/jars/derbyLocale_ja_JP-10.2.2.0.jar +org.apache.derby/jars/derbyLocale_ko_KR-10.2.2.0.jar +org.apache.derby/jars/derbyLocale_pt_BR-10.2.2.0.jar +org.apache.derby/jars/derbyLocale_zh_CN-10.2.2.0.jar +org.apache.derby/jars/derbyLocale_zh_TW-10.2.2.0.jar +org.apache.derby/jars/derbyclient-10.2.2.0.jar +org.apache.derby/jars/derbynet-10.2.2.0.jar +org.apache.derby/jars/derbytools-10.2.2.0.jar +org.apache.derby/jars/derbyclient-10.3.1.4.jar +org.apache.derby/jars/derbyLocale_cs-10.3.1.4.jar +org.apache.derby/jars/derbyLocale_de_DE-10.3.1.4.jar +org.apache.derby/jars/derbyLocale_es-10.3.1.4.jar +org.apache.derby/jars/derbyLocale_fr-10.3.1.4.jar +org.apache.derby/jars/derbyLocale_hu-10.3.1.4.jar +org.apache.derby/jars/derbyLocale_it-10.3.1.4.jar +org.apache.derby/jars/derbyLocale_ja_JP-10.3.1.4.jar +org.apache.derby/jars/derbyLocale_ko_KR-10.3.1.4.jar +org.apache.derby/jars/derbyLocale_pl-10.3.1.4.jar +org.apache.derby/jars/derbyLocale_pt_BR-10.3.1.4.jar +org.apache.derby/jars/derbyLocale_ru-10.3.1.4.jar +org.apache.derby/jars/derbyLocale_zh_CN-10.3.1.4.jar +org.apache.derby/jars/derbyLocale_zh_TW-10.3.1.4.jar +org.apache.derby/jars/derby-10.3.1.4.jar +org.apache.derby/jars/derbynet-10.3.1.4.jar +org.apache.derby/jars/derbytools-10.3.1.4.jar +org.apache.derby/poms/derby-10.1.1.0.pom +org.apache.derby/poms/derbyLocale_de_DE-10.1.1.0.pom +org.apache.derby/poms/derby-10.1.2.1.pom +org.apache.derby/poms/derby-10.1.3.1.pom +org.apache.derby/poms/derbyLocale_de_DE-10.1.2.1.pom +org.apache.derby/poms/derbyLocale_de_DE-10.1.3.1.pom +org.apache.derby/poms/derbyLocale_es-10.1.1.0.pom +org.apache.derby/poms/derbyLocale_es-10.1.2.1.pom +org.apache.derby/poms/derbyLocale_es-10.1.3.1.pom +org.apache.derby/poms/derbyLocale_fr-10.1.1.0.pom +org.apache.derby/poms/derbynet-10.1.1.0.pom +org.apache.derby/poms/derbyLocale_fr-10.1.2.1.pom +org.apache.derby/poms/derbyLocale_fr-10.1.3.1.pom +org.apache.derby/poms/derbyLocale_it-10.1.1.0.pom +org.apache.derby/poms/derbyLocale_it-10.1.2.1.pom +org.apache.derby/poms/derbyLocale_it-10.1.3.1.pom +org.apache.derby/poms/derbyLocale_ja_JP-10.1.1.0.pom +org.apache.derby/poms/derbyLocale_ja_JP-10.1.2.1.pom +org.apache.derby/poms/derbyLocale_ja_JP-10.1.3.1.pom +org.apache.derby/poms/derbyLocale_ko_KR-10.1.1.0.pom +org.apache.derby/poms/derbyLocale_ko_KR-10.1.2.1.pom +org.apache.derby/poms/derbyLocale_ko_KR-10.1.3.1.pom +org.apache.derby/poms/derbyLocale_pt_BR-10.1.1.0.pom +org.apache.derby/poms/derbyLocale_pt_BR-10.1.2.1.pom +org.apache.derby/poms/derbyLocale_pt_BR-10.1.3.1.pom +org.apache.derby/poms/derbyLocale_zh_CN-10.1.1.0.pom +org.apache.derby/poms/derbyLocale_zh_CN-10.1.2.1.pom +org.apache.derby/poms/derbyLocale_zh_CN-10.1.3.1.pom +org.apache.derby/poms/derbyLocale_zh_TW-10.1.1.0.pom +org.apache.derby/poms/derbyLocale_zh_TW-10.1.2.1.pom +org.apache.derby/poms/derbyLocale_zh_TW-10.1.3.1.pom +org.apache.derby/poms/derbyclient-10.1.1.0.pom +org.apache.derby/poms/derbytools-10.1.2.1.pom +org.apache.derby/poms/derbyclient-10.1.2.1.pom +org.apache.derby/poms/derbyclient-10.1.3.1.pom +org.apache.derby/poms/derbynet-10.1.2.1.pom +org.apache.derby/poms/derbynet-10.1.3.1.pom +org.apache.derby/poms/derbytools-10.1.1.0.pom +org.apache.derby/poms/derbytools-10.1.3.1.pom +org.apache.derby/poms/derbywar-10.1.1.0.pom +org.apache.derby/poms/derbywar-10.1.2.1.pom +org.apache.derby/poms/derbywar-10.1.3.1.pom +org.apache.derby/poms/derby-10.2.2.0.pom +org.apache.derby/poms/derbyLocale_de_DE-10.2.2.0.pom +org.apache.derby/poms/derbyLocale_es-10.2.2.0.pom +org.apache.derby/poms/derbyLocale_fr-10.2.2.0.pom +org.apache.derby/poms/derbyLocale_it-10.2.2.0.pom +org.apache.derby/poms/derbyLocale_ja_JP-10.2.2.0.pom +org.apache.derby/poms/derbyLocale_ko_KR-10.2.2.0.pom +org.apache.derby/poms/derbyLocale_pt_BR-10.2.2.0.pom +org.apache.derby/poms/derbyLocale_zh_CN-10.2.2.0.pom +org.apache.derby/poms/derbyLocale_zh_TW-10.2.2.0.pom +org.apache.derby/poms/derbyclient-10.2.2.0.pom +org.apache.derby/poms/derbynet-10.2.2.0.pom +org.apache.derby/poms/derbytools-10.2.2.0.pom +org.apache.derby/poms/derbywar-10.2.2.0.pom +org.apache.derby/poms/derbyclient-10.3.1.4.pom +org.apache.derby/poms/derbyLocale_cs-10.3.1.4.pom +org.apache.derby/poms/derbyLocale_de_DE-10.3.1.4.pom +org.apache.derby/poms/derbyLocale_es-10.3.1.4.pom +org.apache.derby/poms/derbyLocale_fr-10.3.1.4.pom +org.apache.derby/poms/derbyLocale_hu-10.3.1.4.pom +org.apache.derby/poms/derbyLocale_it-10.3.1.4.pom +org.apache.derby/poms/derbyLocale_ja_JP-10.3.1.4.pom +org.apache.derby/poms/derby-10.3.1.4.pom +org.apache.derby/poms/derbyLocale_ko_KR-10.3.1.4.pom +org.apache.derby/poms/derbyLocale_pl-10.3.1.4.pom +org.apache.derby/poms/derbyLocale_pt_BR-10.3.1.4.pom +org.apache.derby/poms/derbyLocale_ru-10.3.1.4.pom +org.apache.derby/poms/derbyLocale_zh_CN-10.3.1.4.pom +org.apache.derby/poms/derbyLocale_zh_TW-10.3.1.4.pom +org.apache.derby/poms/derbynet-10.3.1.4.pom +org.apache.derby/poms/derbytools-10.3.1.4.pom +org.apache.derby/poms/derbywar-10.3.1.4.pom +org.apache.derby/wars/derbywar-10.1.1.0.war +org.apache.derby/wars/derbywar-10.1.2.1.war +org.apache.derby/wars/derbywar-10.1.3.1.war +org.apache.derby/wars/derbywar-10.2.2.0.war +org.apache.derby/wars/derbywar-10.3.1.4.war +org.apache.geronimo/jars/daytrader-core-1.0.jar +org.apache.geronimo/jars/daytrader-streamer-1.0.jar +org.apache.geronimo/jars/daytrader-wsappclient-1.0.jar +org.apache.geronimo/jars/geronimo-activation-1.0.jar +org.apache.geronimo/jars/geronimo-axis-1.0.jar +org.apache.geronimo/jars/geronimo-axis-builder-1.0.jar +org.apache.geronimo/jars/geronimo-client-1.0.jar +org.apache.geronimo/jars/geronimo-client-builder-1.0.jar +org.apache.geronimo/jars/geronimo-common-1.0.jar +org.apache.geronimo/jars/geronimo-connector-1.0.jar +org.apache.geronimo/jars/geronimo-connector-builder-1.0.jar +org.apache.geronimo/jars/geronimo-console-core-1.0.jar +org.apache.geronimo/jars/geronimo-console-web-1.0.jar +org.apache.geronimo/jars/geronimo-converter-1.0.jar +org.apache.geronimo/jars/geronimo-core-1.0.jar +org.apache.geronimo/jars/geronimo-daytrader-derby-db-1.0.jar +org.apache.geronimo/jars/geronimo-deploy-config-1.0.jar +org.apache.geronimo/jars/geronimo-deploy-jsr88-1.0.jar +org.apache.geronimo/jars/geronimo-deploy-tool-1.0.jar +org.apache.geronimo/jars/geronimo-deployment-1.0.jar +org.apache.geronimo/jars/geronimo-derby-1.0.jar +org.apache.geronimo/jars/geronimo-directory-1.0.jar +org.apache.geronimo/jars/geronimo-hot-deploy-1.0.jar +org.apache.geronimo/jars/geronimo-j2ee-1.0.jar +org.apache.geronimo/jars/geronimo-j2ee-builder-1.0.jar +org.apache.geronimo/jars/geronimo-j2ee-schema-1.0.jar +org.apache.geronimo/jars/geronimo-javamail-transport-1.0.jar +org.apache.geronimo/jars/geronimo-jetty-1.0.jar +org.apache.geronimo/jars/geronimo-jetty-builder-1.0.jar +org.apache.geronimo/jars/geronimo-jmxremoting-1.0.jar +org.apache.geronimo/jars/geronimo-kernel-1.0.jar +org.apache.geronimo/jars/geronimo-mail-1.0.jar +org.apache.geronimo/jars/geronimo-management-1.0.jar +org.apache.geronimo/jars/geronimo-naming-1.0.jar +org.apache.geronimo/jars/geronimo-naming-builder-1.0.jar +org.apache.geronimo/jars/geronimo-remote-deploy-lib-1.0.jar +org.apache.geronimo/jars/geronimo-scripts-1.0.jar +org.apache.geronimo/jars/geronimo-security-1.0.jar +org.apache.geronimo/jars/geronimo-security-builder-1.0.jar +org.apache.geronimo/jars/geronimo-service-builder-1.0.jar +org.apache.geronimo/jars/geronimo-system-1.0.jar +org.apache.geronimo/jars/geronimo-test-ddbean-1.0.jar +org.apache.geronimo/jars/geronimo-timer-1.0.jar +org.apache.geronimo/jars/geronimo-tomcat-1.0.jar +org.apache.geronimo/jars/geronimo-tomcat-builder-1.0.jar +org.apache.geronimo/jars/geronimo-transaction-1.0.jar +org.apache.geronimo/jars/geronimo-uddi-db-1.0.jar +org.apache.geronimo/jars/geronimo-util-1.0.jar +org.apache.geronimo/jars/geronimo-web-builder-1.0.jar +org.apache.geronimo/jars/geronimo-webservices-1.0.jar +org.apache.geronimo.specs/jars/geronimo-activation_1.0.2_spec-1.0.jar +org.apache.geronimo.specs/jars/geronimo-activation_1.0.2_spec-1.0.jar.sha +org.apache.geronimo.specs/jars/geronimo-activation_1.0.2_spec-1.1.jar +org.apache.geronimo.specs/jars/geronimo-commonj_1.1_spec-1.0.jar +org.apache.geronimo.specs/jars/geronimo-corba_2.3_spec-1.0.jar +org.apache.geronimo.specs/jars/geronimo-j2ee-connector_1.5_spec-1.0.1.jar +org.apache.geronimo.specs/jars/geronimo-corba_2.3_spec-1.0.jar.sha +org.apache.geronimo.specs/jars/geronimo-corba_2.3_spec-1.1.jar +org.apache.geronimo.specs/jars/geronimo-corba_3.0_spec-1.1.jar +org.apache.geronimo.specs/jars/geronimo-ejb_2.1_spec-1.0.1.jar +org.apache.geronimo.specs/jars/geronimo-ejb_2.1_spec-1.0.jar +org.apache.geronimo.specs/jars/geronimo-ejb_2.1_spec-1.0.jar.sha +org.apache.geronimo.specs/jars/geronimo-j2ee_1.4_spec-1.0.jar.sha +org.apache.geronimo.specs/jars/geronimo-j2ee-connector_1.5_spec-1.0.jar +org.apache.geronimo.specs/jars/geronimo-j2ee-connector_1.5_spec-1.0.jar.sha +org.apache.geronimo.specs/jars/geronimo-j2ee-deployment_1.1_spec-1.0.1.jar +org.apache.geronimo.specs/jars/geronimo-j2ee_1.4_spec-1.1.jar +org.apache.geronimo.specs/jars/geronimo-j2ee-deployment_1.1_spec-1.0.jar +org.apache.geronimo.specs/jars/geronimo-j2ee-deployment_1.1_spec-1.0.jar.sha +org.apache.geronimo.specs/jars/geronimo-j2ee-jacc_1.0_spec-1.0.1.jar +org.apache.geronimo.specs/jars/geronimo-j2ee-jacc_1.0_spec-1.0.jar +org.apache.geronimo.specs/jars/geronimo-j2ee-jacc_1.0_spec-1.0.jar.sha +org.apache.geronimo.specs/jars/geronimo-j2ee-management_1.0_spec-1.0.1.jar +org.apache.geronimo.specs/jars/geronimo-j2ee-management_1.0_spec-1.0.jar +org.apache.geronimo.specs/jars/geronimo-j2ee-management_1.0_spec-1.0.jar.sha +org.apache.geronimo.specs/jars/geronimo-j2ee_1.4_spec-1.0.jar +org.apache.geronimo.specs/jars/geronimo-javamail_1.3.1_spec-1.0.jar +org.apache.geronimo.specs/jars/geronimo-javamail_1.3.1_spec-1.0.jar.sha +org.apache.geronimo.specs/jars/geronimo-javamail_1.3.1_spec-1.1.jar +org.apache.geronimo.specs/jars/geronimo-jaxr_1.0_spec-1.0.1.jar +org.apache.geronimo.specs/jars/geronimo-jaxr_1.0_spec-1.0.jar +org.apache.geronimo.specs/jars/geronimo-jms_1.1_spec-1.0.jar +org.apache.geronimo.specs/jars/geronimo-jaxr_1.0_spec-1.0.jar.sha +org.apache.geronimo.specs/jars/geronimo-jaxrpc_1.1_spec-1.0.1.jar +org.apache.geronimo.specs/jars/geronimo-jaxrpc_1.1_spec-1.0.jar +org.apache.geronimo.specs/jars/geronimo-jaxrpc_1.1_spec-1.0.jar.sha +org.apache.geronimo.specs/jars/geronimo-jms_1.1_spec-1.0.1.jar +org.apache.geronimo.specs/jars/geronimo-jms_1.1_spec-1.0.jar.sha +org.apache.geronimo.specs/jars/geronimo-jsp_2.0_spec-1.0.1.jar +org.apache.geronimo.specs/jars/geronimo-jsp_2.0_spec-1.0.jar +org.apache.geronimo.specs/jars/geronimo-jsp_2.0_spec-1.0.jar.sha +org.apache.geronimo.specs/jars/geronimo-jta_1.0.1B_spec-1.0.1.jar +org.apache.geronimo.specs/jars/geronimo-jta_1.0.1B_spec-1.0.jar +org.apache.geronimo.specs/jars/geronimo-jta_1.0.1B_spec-1.0.jar.sha +org.apache.geronimo.specs/jars/geronimo-qname_1.1_spec-1.0.1.jar +org.apache.geronimo.specs/jars/geronimo-qname_1.1_spec-1.0.jar +org.apache.geronimo.specs/jars/geronimo-qname_1.1_spec-1.0.jar.sha +org.apache.geronimo.specs/jars/geronimo-saaj_1.1_spec-1.0.1.jar +org.apache.geronimo.specs/jars/geronimo-saaj_1.1_spec-1.0.jar +org.apache.geronimo.specs/jars/geronimo-saaj_1.1_spec-1.0.jar.sha +org.apache.geronimo.specs/jars/geronimo-servlet_2.4_spec-1.0.1.jar +org.apache.geronimo.specs/jars/geronimo-servlet_2.4_spec-1.0.jar +org.apache.geronimo.specs/jars/geronimo-servlet_2.4_spec-1.0.jar.sha +org.apache.geronimo.specs/jars/geronimo-annotation_1.0_spec-1.1.jar +org.apache.jackrabbit/jars/jackrabbit-core-1.0.1.jar +org.apache.jackrabbit/jars/jackrabbit-core-1.0.jar +org.apache.jackrabbit/jars/jackrabbit-index-filters-1.0.1.jar +org.apache.jackrabbit/jars/jackrabbit-core-1.1.jar +org.apache.jackrabbit/jars/jackrabbit-index-filters-1.0.jar +org.apache.jackrabbit/jars/jackrabbit-jcr-client-1.0.1.jar +org.apache.jackrabbit/jars/jackrabbit-jcr-client-1.0.jar +org.apache.jackrabbit/jars/jackrabbit-jcr-commons-1.0.1.jar +org.apache.jackrabbit/jars/jackrabbit-jcr-commons-1.0.jar +org.apache.jackrabbit/jars/jackrabbit-jcr-rmi-1.0.1.jar +org.apache.jackrabbit/jars/jackrabbit-jcr-rmi-1.0.jar +org.apache.jackrabbit/jars/jackrabbit-jcr-server-1.0.1.jar +org.apache.jackrabbit/jars/jackrabbit-jcr-server-1.0.jar +org.apache.jackrabbit/jars/jackrabbit-jcr-webdav-1.0.1.jar +org.apache.jackrabbit/jars/jackrabbit-jcr-webdav-1.0.jar +org.apache.jackrabbit/jars/jackrabbit-jcr-webdav-1.1.jar +org.apache.jackrabbit/jars/jackrabbit-jcr-server-1.1.jar +org.apache.jackrabbit/jars/jackrabbit-core-1.1.1.jar +org.apache.jackrabbit/jars/jackrabbit-jcr-rmi-1.1.jar +org.apache.jackrabbit/jars/jackrabbit-jcr-commons-1.1.jar +org.apache.jackrabbit/jars/jackrabbit-jcr-client-1.1.jar +org.apache.jackrabbit/jars/jackrabbit-index-filters-1.1.jar +org.apache.jackrabbit/jars/jackrabbit-jca-1.1.1.jar +org.apache.jackrabbit/jars/jackrabbit-jcr-commons-1.1.1.jar +org.apache.jackrabbit/jars/jackrabbit-jcr-rmi-1.1.1.jar +org.apache.jackrabbit/jars/jackrabbit-index-filters-1.1.1.jar +org.apache.jackrabbit/jars/jackrabbit-jcr-webdav-1.1.1.jar +org.apache.jackrabbit/jars/jackrabbit-jcr-client-1.1.1.jar +org.apache.jackrabbit/jars/jackrabbit-jcr-server-1.1.1.jar +org.apache.jackrabbit/java-sources/jackrabbit-core-1.0-sources.jar +org.apache.jackrabbit/java-sources/jackrabbit-core-1.0.1-sources.jar +org.apache.jackrabbit/java-sources/jackrabbit-index-filters-1.0-sources.jar +org.apache.jackrabbit/java-sources/jackrabbit-jcr-client-1.0.1-sources.jar +org.apache.jackrabbit/java-sources/jackrabbit-index-filters-1.0.1-sources.jar +org.apache.jackrabbit/java-sources/jackrabbit-jca-1.0-sources.jar +org.apache.jackrabbit/java-sources/jackrabbit-jca-1.0.1-sources.jar +org.apache.jackrabbit/java-sources/jackrabbit-jcr-client-1.0-sources.jar +org.apache.jackrabbit/java-sources/jackrabbit-jcr-commons-1.0-sources.jar +org.apache.jackrabbit/java-sources/jackrabbit-jcr-commons-1.0.1-sources.jar +org.apache.jackrabbit/java-sources/jackrabbit-jcr-rmi-1.0-sources.jar +org.apache.jackrabbit/java-sources/jackrabbit-jcr-rmi-1.0.1-sources.jar +org.apache.jackrabbit/java-sources/jackrabbit-core-1.1-sources.jar +org.apache.jackrabbit/java-sources/jackrabbit-jcr-server-1.0-sources.jar +org.apache.jackrabbit/java-sources/jackrabbit-jcr-server-1.0.1-sources.jar +org.apache.jackrabbit/java-sources/jackrabbit-jcr-webdav-1.0-sources.jar +org.apache.jackrabbit/java-sources/jackrabbit-jcr-webdav-1.0.1-sources.jar +org.apache.jackrabbit/java-sources/jackrabbit-server-1.0-sources.jar +org.apache.jackrabbit/java-sources/jackrabbit-server-1.0.1-sources.jar +org.apache.jackrabbit/java-sources/jackrabbit-server-1.1-sources.jar +org.apache.jackrabbit/java-sources/jackrabbit-jcr-webdav-1.1-sources.jar +org.apache.jackrabbit/java-sources/jackrabbit-jcr-server-1.1-sources.jar +org.apache.jackrabbit/java-sources/jackrabbit-jcr-rmi-1.1-sources.jar +org.apache.jackrabbit/java-sources/jackrabbit-jcr-commons-1.1-sources.jar +org.apache.jackrabbit/java-sources/jackrabbit-jcr-client-1.1-sources.jar +org.apache.jackrabbit/java-sources/jackrabbit-jca-1.1-sources.jar +org.apache.jackrabbit/java-sources/jackrabbit-index-filters-1.1-sources.jar +org.apache.jackrabbit/java-sources/jackrabbit-server-1.1.1-sources.jar +org.apache.jackrabbit/java-sources/jackrabbit-core-1.1.1-sources.jar +org.apache.jackrabbit/java-sources/jackrabbit-jcr-rmi-1.1.1-sources.jar +org.apache.jackrabbit/java-sources/jackrabbit-index-filters-1.1.1-sources.jar +org.apache.jackrabbit/java-sources/jackrabbit-jca-1.1.1-sources.jar +org.apache.jackrabbit/java-sources/jackrabbit-jcr-webdav-1.1.1-sources.jar +org.apache.jackrabbit/java-sources/jackrabbit-jcr-client-1.1.1-sources.jar +org.apache.jackrabbit/java-sources/jackrabbit-jcr-server-1.1.1-sources.jar +org.apache.jackrabbit/poms/jackrabbit-core-1.0.1.pom +org.apache.jackrabbit/poms/jackrabbit-core-1.0.pom +org.apache.jackrabbit/poms/jackrabbit-index-filters-1.0.1.pom +org.apache.jackrabbit/poms/jackrabbit-core-1.1.pom +org.apache.jackrabbit/poms/jackrabbit-index-filters-1.0.pom +org.apache.jackrabbit/poms/jackrabbit-server-1.1.pom +org.apache.jackrabbit/poms/jackrabbit-jca-1.0.1.pom +org.apache.jackrabbit/poms/jackrabbit-jca-1.0.pom +org.apache.jackrabbit/poms/jackrabbit-jcr-client-1.0.1.pom +org.apache.jackrabbit/poms/jackrabbit-jcr-client-1.0.pom +org.apache.jackrabbit/poms/jackrabbit-jcr-commons-1.0.1.pom +org.apache.jackrabbit/poms/jackrabbit-jcr-commons-1.0.pom +org.apache.jackrabbit/poms/jackrabbit-jcr-rmi-1.0.1.pom +org.apache.jackrabbit/poms/jackrabbit-jcr-rmi-1.0.pom +org.apache.jackrabbit/poms/jackrabbit-jcr-server-1.0.1.pom +org.apache.jackrabbit/poms/jackrabbit-jcr-server-1.0.pom +org.apache.jackrabbit/poms/jackrabbit-jcr-webdav-1.0.1.pom +org.apache.jackrabbit/poms/jackrabbit-jcr-webdav-1.0.pom +org.apache.jackrabbit/poms/jackrabbit-server-1.0.1.pom +org.apache.jackrabbit/poms/jackrabbit-server-1.0.pom +org.apache.jackrabbit/poms/jackrabbit-jcr-webdav-1.1.pom +org.apache.jackrabbit/poms/jackrabbit-jcr-server-1.1.pom +org.apache.jackrabbit/poms/jackrabbit-jcr-rmi-1.1.pom +org.apache.jackrabbit/poms/jackrabbit-jcr-commons-1.1.pom +org.apache.jackrabbit/poms/jackrabbit-jcr-client-1.1.pom +org.apache.jackrabbit/poms/jackrabbit-jca-1.1.pom +org.apache.jackrabbit/poms/jackrabbit-index-filters-1.1.pom +org.apache.jackrabbit/poms/jackrabbit-core-1.1.1.pom +org.apache.jackrabbit/poms/jackrabbit-jcr-commons-1.1.1.pom +org.apache.jackrabbit/poms/jackrabbit-jcr-rmi-1.1.1.pom +org.apache.jackrabbit/poms/jackrabbit-index-filters-1.1.1.pom +org.apache.jackrabbit/poms/jackrabbit-jca-1.1.1.pom +org.apache.jackrabbit/poms/jackrabbit-jcr-webdav-1.1.1.pom +org.apache.jackrabbit/poms/jackrabbit-jcr-client-1.1.1.pom +org.apache.jackrabbit/poms/jackrabbit-jcr-server-1.1.1.pom +org.apache.jackrabbit/poms/jackrabbit-server-1.1.1.pom +org.apache.jackrabbit/rars/jackrabbit-jca-1.0.1.rar +org.apache.jackrabbit/rars/jackrabbit-jca-1.0.rar +org.apache.jackrabbit/rars/jackrabbit-jca-1.1.rar +org.apache.jackrabbit/rars/jackrabbit-jca-1.1.1.rar +org.apache.jackrabbit/wars/jackrabbit-server-1.0.1.war +org.apache.jackrabbit/wars/jackrabbit-server-1.0.war +org.apache.jackrabbit/wars/jackrabbit-server-1.1.war +org.apache.jackrabbit/wars/jackrabbit-server-1.1.1.war +org.apache.jdo/jars/jdo2-core-2.0-beta.jar +org.apache.jdo/jars/jdo2-core-2.0-rc1.jar +org.apache.jdo/jars/jdo2-core-2.0.jar +org.apache.jdo/jars/jdo2-enhancer-2.0-beta.jar +org.apache.jdo/jars/jdo2-enhancer-2.0-rc1.jar +org.apache.jdo/jars/jdo2-enhancer-2.0.jar +org.apache.jdo/jars/jdo2-tck-2.0-rc1.jar +org.apache.jdo/poms/jdo2-core-2.0-beta.pom +org.apache.jdo/poms/jdo2-core-2.0-rc1.pom +org.apache.jdo/poms/jdo2-core-2.0.pom +org.apache.jdo/poms/jdo2-enhancer-2.0-beta.pom +org.apache.jdo/poms/jdo2-enhancer-2.0-rc1.pom +org.apache.jdo/poms/jdo2-enhancer-2.0.pom +org.apache.jdo/poms/jdo2-tck-2.0-rc1.pom +org.apache.maven/jars/maven-artifact-ant-2.0-alpha-1-dep.jar +org.apache.maven/jars/maven-artifact-ant-2.0-alpha-2-dep.jar +org.apache.maven/jars/maven-artifact-ant-2.0-alpha-3-dep.jar +org.apache.maven/jars/maven-artifact-ant-2.0-beta-1-dep.jar +org.apache.maven/jars/maven-artifact-ant-2.0-beta-2-dep.jar +org.apache.maven/jars/maven-model-v3-2.0.jar +org.apache.maven/poms/maven-model-v3-2.0.pom +org.apache.pluto/jars/pluto-1.0.1-rc4.jar +org.apache.pluto/jars/pluto-deploy-1.0.1-rc4.jar +org.apache.pluto/jars/pluto-1.0.1.jar +org.apache.pluto/jars/pluto-deploy-1.0.1.jar +org.apache.pluto/jars/pluto-descriptors-1.0.1-rc4.jar +org.apache.pluto/jars/pluto-descriptors-1.0.1.jar +org.apache.pluto/jars/pluto-portal-1.0.1-rc4.jar +org.apache.pluto/jars/pluto-portal-1.0.1.jar +org.apache.portals.bridges/jars/portals-bridges-common-1.0.jar +org.apache.portals.bridges/jars/portals-bridges-frameworks-1.0.jar +org.apache.portals.bridges/jars/portals-bridges-jsf-1.0.jar +org.apache.portals.bridges/jars/portals-bridges-perl-1.0.jar +org.apache.portals.bridges/jars/portals-bridges-php-1.0.jar +org.apache.portals.bridges/jars/portals-bridges-portletfilter-1.0.jar +org.apache.portals.bridges/jars/portals-bridges-struts-1.2.4-1.0.jar +org.apache.portals.bridges/jars/portals-bridges-struts-1.2.7-1.0.jar +org.apache.portals.bridges/jars/portals-bridges-velocity-1.0.jar +org.apache.portals.jetspeed-2/jars/content-server-2.1-dev.jar +org.apache.portals.jetspeed-2/jars/content-server-2.0.jar +org.apache.portals.jetspeed-2/jars/jetspeed-api-2.1-dev.jar +org.apache.portals.jetspeed-2/jars/jetspeed-2.1-dev.jar +org.apache.portals.jetspeed-2/jars/jetspeed-api-2.0.1.jar +org.apache.portals.jetspeed-2/jars/jetspeed-api-2.0.jar +org.apache.portals.jetspeed-2/jars/jetspeed-capability-2.1-dev.jar +org.apache.portals.jetspeed-2/jars/jetspeed-capability-2.0.jar +org.apache.portals.jetspeed-2/jars/jetspeed-cm-2.1-dev.jar +org.apache.portals.jetspeed-2/jars/jetspeed-cm-2.0.jar +org.apache.portals.jetspeed-2/jars/jetspeed-commons-2.1-dev.jar +org.apache.portals.jetspeed-2/jars/jetspeed-commons-2.0.jar +org.apache.portals.jetspeed-2/jars/jetspeed-sso-2.0.jar +org.apache.portals.jetspeed-2/jars/jetspeed-statistics-2.1-dev.jar +org.apache.portals.jetspeed-2/jars/jetspeed-components-2.0.jar +org.apache.portals.jetspeed-2/jars/jetspeed-components-2.1-dev.jar +org.apache.portals.jetspeed-2/jars/jetspeed-deploy-tools-2.0.jar +org.apache.portals.jetspeed-2/jars/jetspeed-deploy-tools-2.1-dev.jar +org.apache.portals.jetspeed-2/jars/jetspeed-file-cache-2.0.jar +org.apache.portals.jetspeed-2/jars/jetspeed-file-cache-2.1-dev.jar +org.apache.portals.jetspeed-2/jars/jetspeed-header-resource-2.0.jar +org.apache.portals.jetspeed-2/jars/jetspeed-header-resource-2.1-dev.jar +org.apache.portals.jetspeed-2/jars/jetspeed-id-generator-2.0.jar +org.apache.portals.jetspeed-2/jars/jetspeed-id-generator-2.1-dev.jar +org.apache.portals.jetspeed-2/jars/jetspeed-importer-2.1-dev.jar +org.apache.portals.jetspeed-2/jars/jetspeed-layout-portlets-2.1-dev.jar +org.apache.portals.jetspeed-2/jars/jetspeed-locator-2.0.jar +org.apache.portals.jetspeed-2/jars/jetspeed-locator-2.1-dev.jar +org.apache.portals.jetspeed-2/jars/jetspeed-page-manager-2.0.jar +org.apache.portals.jetspeed-2/jars/jetspeed-page-manager-2.1-dev.jar +org.apache.portals.jetspeed-2/jars/jetspeed-portal-2.0.jar +org.apache.portals.jetspeed-2/jars/jetspeed-portal-2.1-dev.jar +org.apache.portals.jetspeed-2/jars/jetspeed-portal-site-2.0.jar +org.apache.portals.jetspeed-2/jars/jetspeed-portal-site-2.1-dev.jar +org.apache.portals.jetspeed-2/jars/jetspeed-portlet-factory-2.0.jar +org.apache.portals.jetspeed-2/jars/jetspeed-portlet-factory-2.1-dev.jar +org.apache.portals.jetspeed-2/jars/jetspeed-prefs-2.0.jar +org.apache.portals.jetspeed-2/jars/jetspeed-prefs-2.1-dev.jar +org.apache.portals.jetspeed-2/jars/jetspeed-profiler-2.0.jar +org.apache.portals.jetspeed-2/jars/jetspeed-profiler-2.1-dev.jar +org.apache.portals.jetspeed-2/jars/jetspeed-rdbms-2.0.jar +org.apache.portals.jetspeed-2/jars/jetspeed-rdbms-2.1-dev.jar +org.apache.portals.jetspeed-2/jars/jetspeed-registry-2.0.jar +org.apache.portals.jetspeed-2/jars/jetspeed-registry-2.1-dev.jar +org.apache.portals.jetspeed-2/jars/jetspeed-rewriter-2.0.jar +org.apache.portals.jetspeed-2/jars/jetspeed-rewriter-2.1-dev.jar +org.apache.portals.jetspeed-2/jars/jetspeed-rss-2.1-dev.jar +org.apache.portals.jetspeed-2/jars/jetspeed-search-2.0.jar +org.apache.portals.jetspeed-2/jars/jetspeed-search-2.1-dev.jar +org.apache.portals.jetspeed-2/jars/jetspeed-security-2.0.jar +org.apache.portals.jetspeed-2/jars/jetspeed-security-2.1-dev.jar +org.apache.portals.jetspeed-2/jars/jetspeed-security-schema-2.0.jar +org.apache.portals.jetspeed-2/jars/portlet-api-1.0.jar +org.apache.portals.jetspeed-2/jars/jetspeed-security-schema-2.1-dev.jar +org.apache.portals.jetspeed-2/jars/jetspeed-serializer-2.1-dev.jar +org.apache.portals.jetspeed-2/jars/jetspeed-sso-2.1-dev.jar +org.apache.portals.jetspeed-2/jars/jetspeed-statistics-2.0.jar +org.apache.portals.jetspeed-2/jars/jetspeed-web-content-2.0.jar +org.apache.portals.jetspeed-2/jars/jetspeed-web-content-2.1-dev.jar +org.apache.portals.jetspeed-2/jars/jetspeed-webapp-logging-2.1-dev.jar +org.apache.portals.jetspeed-2/jars/jetspeed2-taglib-treecontrol-2.0.jar +org.apache.portals.jetspeed-2/jars/jetspeed2-taglib-treecontrol-2.1-dev.jar +org.apache.portals.jetspeed-2/jars/portals-gems-2.0.jar +org.apache.portals.jetspeed-2/jars/portals-gems-2.1-dev.jar +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/META-INF/MANIFEST.MF +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/org/apache/jetspeed/dbutil/HSQLServerThread.class +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/org/apache/jetspeed/dbutil/HSQLServer.class +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/org/apache/jetspeed/dbutil/ScriptUtil.class +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/apacheds/apacheds-server.xml +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/apacheds/j2-apacheds.ldif +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/conf/jboss/jboss-login-config.xml +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/conf/jboss/jetspeed-ds.xml +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/conf/jboss/jetspeed-mysql-ds.xml +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/conf/jboss/jetspeed-oracle-ds.xml +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/conf/tomcat/jetspeed-tomcat-5.5.xml +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/conf/tomcat/jetspeed-tomcat-5.xml +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/db-ojb/OJB-logging.properties +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/db-ojb/OJB.properties +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/db-ojb/repository.dtd +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/db-ojb/repository.xml +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/db-ojb/repository_database.xml +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/db-ojb/repository_internal.xml +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/schema/phase3ojb-schema.xml +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/schema/phase1-schema.xml +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/schema/phase2-schema.xml +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/schema/prefs-schema.xml +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/schema/registry-schema.xml +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/schema/security-schema.xml +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/schema/velocity.log +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/schema/velocity.log.1 +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/sql/derby/schema/phase3ojb-schema.sql +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/sql/derby/schema/phase1-schema.sql +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/sql/derby/schema/phase2-schema.sql +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/sql/derby/schema/prefs-schema.sql +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/sql/derby/schema/registry-schema.sql +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/sql/derby/schema/security-schema.sql +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/sql/hsql/portal-drop.sql +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/sql/hsql/drop.sql +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/sql/hsql/registry-drop.sql +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/sql/hsql/prefs-drop.sql +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/sql/hsql/populate-userinfo-for-default-psml.sql +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/sql/hsql/security-drop.sql +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/sql/mssql/schema/phase2-schema.sql +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/sql/mssql/schema/security-schema.sql +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/sql/mssql/drop.sql +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/sql/mssql/populate-userinfo-for-default-psml.sql +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/sql/mysql/drop.sql +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/sql/mysql/populate-entities-for-default-psml.sql +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/sql/mysql/populate-userinfo-for-default-psml.sql +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/sql/oracle/drop.sql +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/sql/oracle/populate-userinfo-for-default-psml.sql +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/sql/xml/README.txt +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/sql/xml/populate-db-default.xml +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/sql/drop.sql +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/sql/populate-db-default.sql +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/sql/populate-userinfo-for-default-psml.sql +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/webapp/ajax/portlet_definitions.ajax +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/webapp/ajax/portlet_apps.ajax +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/webapp/ajax/portlet_entities.ajax +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/webapp/ajax/portlet_entity.ajax +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/webapp/decorations/images/customize.gif +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/webapp/decorations/images/close.gif +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/webapp/decorations/images/icon_error_sml.gif +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/webapp/decorations/images/edit.gif +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/webapp/decorations/images/help.gif +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/webapp/decorations/images/icon_arrowfolderclosed1_sml.gif +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/webapp/decorations/images/icon_arrowdoc_sml.gif +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/webapp/decorations/images/leftnavbg.gif +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/webapp/decorations/images/info.gif +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/webapp/decorations/images/icon_arrowfolderopen2_sml.gif +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/webapp/decorations/images/icon_info_sml.gif +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/webapp/decorations/images/icon_success_sml.gif +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/webapp/decorations/images/icon_warning_sml.gif +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/webapp/decorations/images/info1.gif +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/webapp/decorations/images/maximized.gif +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/webapp/decorations/images/minimized.gif +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/webapp/decorations/images/nw_maj_rond.gif +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/webapp/decorations/images/print.gif +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/webapp/decorations/images/restore.gif +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/webapp/decorations/images/sw_med_rond.gif +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/webapp/decorations/images/view.gif +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/webapp/decorations/layout/css/PLT.C.3-Messages.css +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/webapp/decorations/layout/css/PLT.C.1-Links.css +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/webapp/decorations/layout/css/PLT.C.2-Fonts.css +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/webapp/decorations/layout/css/PLT.C.4-Sections.css +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/webapp/decorations/layout/css/PLT.C.5-Forms.css +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/webapp/decorations/layout/css/PLT.C.6-Menus-Arrow.css +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/webapp/decorations/layout/css/PLT.C.6-Menus.css +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/webapp/decorations/layout/css/PLT.C.All.css +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/webapp/decorations/layout/css/data-scroller.css +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/webapp/decorations/layout/css/database-browser.css +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/webapp/decorations/layout/css/html-tables.css +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/webapp/decorations/layout/css/portal-standard.css +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/webapp/decorations/layout/css/standard-columns.css +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/webapp/decorations/layout/css/tree-component.css +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/webapp/decorations/layout/images/movePortletDown.gif +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev/plugin-resources/webapp/decorations/layout/images/close.gif +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.1-dev.jar +org.apache.portals.jetspeed-2/plugins/maven-jetspeed2-plugin-2.0.jar +org.apache.portals.jetspeed-2/wars/demo-2.1-dev.war +org.apache.portals.jetspeed-2/wars/demo-2.0.war +org.apache.portals.jetspeed-2/wars/j2-admin-2.1-dev.war +org.apache.portals.jetspeed-2/wars/j2-admin-2.0.war +org.apache.portals.jetspeed-2/wars/jetspeed-2.1-dev.war +org.apache.portals.jetspeed-2/wars/jetspeed-2.0.war +org.apache.portals.jetspeed-2/wars/jetspeed-layouts-2.1-dev.war +org.apache.portals.jetspeed-2/wars/jetspeed-layouts-2.0.war +org.apache.portals.jetspeed-2/wars/portals-gems-2.1-dev.war +org.apache.portals.jetspeed-2/wars/portals-gems-2.0.war +org.apache.portals.jetspeed-2/wars/rss-2.1-dev.war +org.apache.portals.jetspeed-2/wars/rss-2.0.war +org.apache.ws.commons/jars/XmlSchema-1.0.1.jar +org.apache.ws.commons/jars/XmlSchema-1.0.2.jar +org.apache.ws.commons/jars/XmlSchema-1.0.3.jar +org.apache.ws.commons/jars/XmlSchema-1.2.jar +org.apache.ws.commons/jars/XmlSchema-1.0.jar +org.apache.ws.commons/poms/XmlSchema-1.0.1.pom +org.apache.ws.commons/poms/XmlSchema-1.0.2.pom +org.apache.ws.commons/poms/XmlSchema-1.0.3.pom +org.apache.ws.commons/poms/XmlSchema-SNAPSHOT.pom +org.apache.ws.commons/poms/maven-metadata.xml +org.apache.xbean/jars/xbean-classpath-2.3.jar +org.apache.xbean/jars/xbean-classpath-2.4.jar +org.apache.xbean/jars/xbean-finder-2.4.jar +org.apache.xbean/jars/xbean-jaxb-2.4.jar +org.apache.xbean/jars/xbean-kernel-2.3.jar +org.apache.xbean/jars/xbean-kernel-2.4.jar +org.apache.xbean/jars/xbean-osgi-2.3.jar +org.apache.xbean/jars/xbean-osgi-2.4.jar +org.apache.xbean/jars/xbean-reflect-2.3.jar +org.apache.xbean/jars/xbean-reflect-2.4.jar +org.apache.xbean/jars/xbean-server-2.3.jar +org.apache.xbean/jars/xbean-server-2.4.jar +org.apache.xbean/jars/xbean-spring-2.3.jar +org.apache.xbean/jars/xbean-spring-2.4.jar +org.apache.xbean/jars/xbean-spring-common-2.4.jar +org.apache.xbean/jars/xbean-tiger-2.4.jar +org.apache.xbean/jars/xbean-spring-itests-124-2.4.jar +org.apache.xbean/jars/xbean-spring-itests-125-2.4.jar +org.apache.xbean/jars/xbean-spring-itests-126-2.4.jar +org.apache.xbean/jars/xbean-spring-itests-127-2.4.jar +org.apache.xbean/jars/xbean-spring-itests-128-2.4.jar +org.apache.xbean/jars/xbean-spring-itests-20m5-2.4.jar +org.apache.xbean/jars/xbean-spring-itests-core-2.4.jar +org.apache.xbean/jars/xbean-spring-v1-2.4.jar +org.apache.xbean/jars/xbean-spring-v2-2.4.jar +org.apache.xbean/jars/xbean-telnet-2.3.jar +org.apache.xbean/jars/xbean-telnet-2.4.jar +org.apache.xbean/jars/xbean-tiger-2.3.jar +org.apache.xbean/maven-plugins/maven-xbean-plugin-2.3.jar +org.apache.xbean/poms/xbean-2.3.pom +org.apache.xbean/poms/maven-metadata-mavenOneRepository.xml +org.apache.xbean/poms/maven-metadata.xml +org.apache.xbean/poms/maven-xbean-plugin-2.3.pom +org.apache.xbean/poms/xbean-classpath-2.3.pom +org.apache.xbean/poms/xbean-kernel-2.3.pom +org.apache.xbean/poms/xbean-osgi-2.3.pom +org.apache.xbean/poms/xbean-reflect-2.3.pom +org.apache.xbean/poms/xbean-server-2.3.pom +org.apache.xbean/poms/xbean-spring-2.3.pom +org.apache.xbean/poms/xbean-telnet-2.3.pom +org.apache.xbean/poms/xbean-tiger-2.3.pom +org.apache.xbean/KEYS +oro/jars/oro-2.0.6.jar +oro/jars/oro-2.0.7.jar +oro/jars/oro-2.0.8.jar +pluto-container/jars/pluto-0.46.jar +poi/jars/poi-1.8.0-dev-20020919.jar +poi/jars/poi-2.0-final-20040126.jar +poi/jars/poi-2.5-final-20040302.jar +poi/jars/poi-2.5.1-final-20040804.jar +poi/jars/poi-3.0-alpha2-sources.jar +poi/jars/poi-3.0-alpha3-sources.jar +poi/jars/poi-3.0-alpha2.jar +poi/jars/poi-contrib-2.0-final-20040126.jar +poi/jars/poi-contrib-2.5-final-20040302.jar +poi/jars/poi-contrib-2.5.1-final-20040804.jar +poi/jars/poi-scratchpad-2.0-final-20040126.jar +poi/jars/poi-3.0-alpha3.jar +poi/jars/poi-scratchpad-2.5-final-20040302.jar +poi/jars/poi-scratchpad-2.5.1-final-20040804.jar +poi/jars/poi-3.0-FINAL.jar +poi/jars/poi-3.0-FINAL-sources.jar +poi/poms/poi-1.8.0-dev-20020919.pom +poi/poms/poi-2.0-final-20040126.pom +poi/poms/poi-2.5-final-20040302.pom +poi/poms/poi-2.5.1-final-20040804.pom +poi/poms/poi-3.0-alpha2.pom +poi/poms/poi-3.0-alpha3.pom +poi/poms/poi-contrib-2.0-final-20040126.pom +poi/poms/poi-contrib-2.5-final-20040302.pom +poi/poms/poi-contrib-2.5.1-final-20040804.pom +poi/poms/poi-scratchpad-2.0-final-20040126.pom +poi/poms/poi-scratchpad-2.5-final-20040302.pom +poi/poms/poi-scratchpad-2.5.1-final-20040804.pom +poi/poms/poi-3.0-FINAL.pom +poi/poms/poi-3.0-FINAL.pom.bak +poi/poms/poi-3.0.1-FINAL.pom +poi/poms/poi-scratchpad-3.0.1-FINAL.pom +poi/poms/poi-contrib-3.0.1-FINAL.pom +pubscribe/jars/submgr-xbeans-1.0.jar +pubscribe/jars/pubscribe-1.0.jar +pubscribe/jars/pubscribe-1.1.jar +pubscribe/jars/submgr-xbeans-src-1.0.jar +pubscribe/jars/wse-xbeans-1.0.jar +pubscribe/jars/wse-xbeans-src-1.0.jar +pubscribe/jars/wsn-xbeans-1.0.jar +pubscribe/jars/wsn-xbeans-src-1.0.jar +sandesha/Sandesha-1.0-RC1.jar +servletapi/jars/servlet-api-2.4-20040521.jar +servletapi/jars/jsp-api-2.4-20040521.jar +slide/jars/catalinawrapper-2.1M1.jar +slide/jars/ant-webdav-2.1M1.jar +slide/jars/catalinawrapper-2.0.jar +slide/jars/jdk14logger-2.0.jar +slide/jars/jaas-2.1M1.jar +slide/jars/jdk14logger-2.1M1.jar +slide/jars/kernel-2.0.jar +slide/jars/kernel-2.1M1.jar +slide/jars/log4jlogger-2.0.jar +slide/jars/log4jlogger-2.1M1.jar +slide/jars/roles-2.0.jar +slide/jars/roles-2.1M1.jar +slide/jars/slide-kernel-2.1.jar +slide/jars/stores-2.1M1.jar +slide/jars/stores-2.0.jar +slide/jars/slide-stores-2.1.jar +slide/jars/slide-webdavlib-2.1.jar +slide/jars/slide-webdavservlet-2.1.jar +slide/jars/webdavlib-2.0beta1.jar +slide/jars/webdavlib-2.0.jar +slide/jars/webdavlib-2.1M1.jar +slide/jars/webdavlib-2.2-20050624.203112.jar +slide/jars/webdavservlet-2.0.jar +slide/jars/webdavservlet-2.1M1.jar +slide/jars/webdavservlet-2.2-20050624.203112.jar +stratum/distributions/stratum-1.0-src.tar.gz +stratum/distributions/stratum-1.0-src.zip +stratum/distributions/stratum-1.0.tar.gz +stratum/distributions/stratum-1.0.zip +stratum/jars/stratum-1.0-b5.jar +stratum/jars/stratum-1.0.jar +stratum/poms/stratum-1.0-b5.pom +stratum/poms/stratum-1.0.pom +struts/jars/struts-1.0.2.jar +struts/jars/struts-1.1-b2-20021124.jar +struts/jars/struts-1.1-b3.jar +struts/jars/struts-1.1-beta-2.jar +struts/jars/struts-1.1-rc2.jar +struts/jars/struts-1.1.jar +struts/jars/struts-1.2.2.jar +struts/jars/struts-1.2.4.jar +struts/jars/struts-1.2.7.jar +struts/jars/struts-1.2.8.jar +struts/jars/struts-1.2.9.jar +struts/jars/struts-el-1.1.jar +struts/jars/struts-el-1.2.4.jar +struts/jars/struts-el-1.2.7.jar +struts/jars/struts-el-1.2.8.jar +struts/jars/struts-el-1.2.9.jar +struts/jars/struts-legacy-1.1.jar +struts/jars/struts-scripting-1.0.1.jar +struts/poms/struts-1.2.4.pom +struts/poms/struts-1.2.7.pom +struts/poms/struts-1.2.8-el.pom +struts/poms/struts-1.2.8.pom +struts/poms/struts-1.2.9.pom +struts/poms/struts-el-1.2.6.pom +struts/poms/struts-scripting-1.0.1.pom +struts/poms/struts-el-1.2.9.pom +struts/tlds/struts-bean-1.1-rc1.tld +struts/tlds/struts-bean-1.1-rc2.tld +struts/tlds/struts-bean-1.2.2.tld +struts/tlds/struts-bean-1.2.4.tld +struts/tlds/struts-bean-1.2.7.tld +struts/tlds/struts-bean-1.2.8.tld +struts/tlds/struts-bean-el-1.2.2.tld +struts/tlds/struts-bean-el-1.2.4.tld +struts/tlds/struts-bean-el-1.2.7.tld +struts/tlds/struts-bean-el-1.2.8.tld +struts/tlds/struts-html-1.1-rc1.tld +struts/tlds/struts-html-1.1-rc2.tld +struts/tlds/struts-html-1.2.2.tld +struts/tlds/struts-html-1.2.4.tld +struts/tlds/struts-html-1.2.7.tld +struts/tlds/struts-html-1.2.8.tld +struts/tlds/struts-html-el-1.2.2.tld +struts/tlds/struts-html-el-1.2.4.tld +struts/tlds/struts-html-el-1.2.7.tld +struts/tlds/struts-html-el-1.2.8.tld +struts/tlds/struts-logic-1.1-rc1.tld +struts/tlds/struts-logic-1.1-rc2.tld +struts/tlds/struts-logic-1.2.2.tld +struts/tlds/struts-logic-1.2.4.tld +struts/tlds/struts-logic-1.2.7.tld +struts/tlds/struts-logic-1.2.8.tld +struts/tlds/struts-logic-el-1.2.2.tld +struts/tlds/struts-logic-el-1.2.4.tld +struts/tlds/struts-logic-el-1.2.7.tld +struts/tlds/struts-logic-el-1.2.8.tld +struts/tlds/struts-nested-1.1-rc1.tld +struts/tlds/struts-nested-1.1-rc2.tld +struts/tlds/struts-nested-1.2.2.tld +struts/tlds/struts-nested-1.2.4.tld +struts/tlds/struts-nested-1.2.7.tld +struts/tlds/struts-nested-1.2.8.tld +struts/tlds/struts-template-1.1-rc1.tld +struts/tlds/struts-tiles-1.1-rc1.tld +struts/tlds/struts-tiles-1.1-rc2.tld +struts/tlds/struts-tiles-1.2.2.tld +struts/tlds/struts-tiles-1.2.4.tld +struts/tlds/struts-tiles-1.2.7.tld +struts/tlds/struts-tiles-1.2.8.tld +struts/tlds/struts-tiles-el-1.2.2.tld +struts/tlds/struts-tiles-el-1.2.4.tld +struts/tlds/struts-tiles-el-1.2.7.tld +struts/tlds/struts-tiles-el-1.2.8.tld +taglibs/jars/application-1.0.1.jar +taglibs/jars/benchmark-1.0.jar +taglibs/jars/datetime-1.0.1.jar +taglibs/jars/dbtags-1.0.0.jar +taglibs/jars/log-1.0.jar +taglibs/jars/mailer-1.1.jar +taglibs/jars/page-1.0.1.jar +taglibs/jars/random-1.0.1.jar +taglibs/jars/random-1.0.2.jar +taglibs/jars/regexp-1.0.1.jar +taglibs/jars/request-1.0.1.jar +taglibs/jars/response-1.0.1.jar +taglibs/jars/session-1.0.1.jar +taglibs/jars/standard-1.0.1.jar +taglibs/jars/standard-1.0.2.jar +taglibs/jars/standard-1.0.3.jar +taglibs/jars/standard-1.0.4.jar +taglibs/jars/standard-1.0.5.jar +taglibs/jars/standard-1.0.6.jar +taglibs/jars/standard-1.0.jar +taglibs/jars/standard-1.1.0.jar +taglibs/jars/standard-1.1.1.jar +taglibs/jars/string-1.0.jar +taglibs/jars/standard-1.1.2.jar +taglibs/jars/string-1.0.1.jar +taglibs/jars/string-1.1.0.jar +taglibs/jars/xsl-1.0.1.jar +taglibs/tlds/permittedTaglibs-1.1.0.tld +taglibs/tlds/application-1.0.1.tld +taglibs/tlds/benchmark-1.0.tld +taglibs/tlds/c-1.0.1.tld +taglibs/tlds/c-1.0.2.tld +taglibs/tlds/c-1.0.3.tld +taglibs/tlds/c-1.0.4.tld +taglibs/tlds/c-1.0.5.tld +taglibs/tlds/c-1.0.6.tld +taglibs/tlds/c-1.0.tld +taglibs/tlds/c-1.1.0.tld +taglibs/tlds/c-1.1.1.tld +taglibs/tlds/c-1.1.2.tld +taglibs/tlds/c-rt-1.0.1.tld +taglibs/tlds/c-rt-1.0.2.tld +taglibs/tlds/c-rt-1.0.3.tld +taglibs/tlds/c-rt-1.0.4.tld +taglibs/tlds/c-rt-1.0.5.tld +taglibs/tlds/c-rt-1.0.6.tld +taglibs/tlds/c-rt-1.0.tld +taglibs/tlds/fmt-1.0.tld +taglibs/tlds/datetime-1.0.1.tld +taglibs/tlds/dbtags-1.0.0.tld +taglibs/tlds/fmt-1.0.1.tld +taglibs/tlds/fmt-1.0.2.tld +taglibs/tlds/fmt-1.0.3.tld +taglibs/tlds/fmt-1.0.4.tld +taglibs/tlds/fmt-1.0.5.tld +taglibs/tlds/fmt-1.0.6.tld +taglibs/tlds/fmt-1.1.0.tld +taglibs/tlds/fmt-1.1.1.tld +taglibs/tlds/fmt-1.1.2.tld +taglibs/tlds/fmt-rt-1.0.1.tld +taglibs/tlds/fmt-rt-1.0.2.tld +taglibs/tlds/fmt-rt-1.0.3.tld +taglibs/tlds/fmt-rt-1.0.4.tld +taglibs/tlds/fmt-rt-1.0.5.tld +taglibs/tlds/fmt-rt-1.0.6.tld +taglibs/tlds/fmt-rt-1.0.tld +taglibs/tlds/fn-1.1.0.tld +taglibs/tlds/fn-1.1.1.tld +taglibs/tlds/log-1.0.tld +taglibs/tlds/mailer-1.1.tld +taglibs/tlds/page-1.0.1.tld +taglibs/tlds/sql-rt-1.0.1.tld +taglibs/tlds/permittedTaglibs-1.1.1.tld +taglibs/tlds/random-1.0.1.tld +taglibs/tlds/random-1.0.2.tld +taglibs/tlds/regexp-1.0.1.tld +taglibs/tlds/request-1.0.1.tld +taglibs/tlds/response-1.0.1.tld +taglibs/tlds/scriptfree-1.1.0.tld +taglibs/tlds/scriptfree-1.1.1.tld +taglibs/tlds/session-1.0.1.tld +taglibs/tlds/sql-1.0.1.tld +taglibs/tlds/sql-1.0.2.tld +taglibs/tlds/sql-1.0.3.tld +taglibs/tlds/sql-1.0.4.tld +taglibs/tlds/sql-1.0.5.tld +taglibs/tlds/sql-1.0.6.tld +taglibs/tlds/sql-1.0.tld +taglibs/tlds/sql-1.1.0.tld +taglibs/tlds/sql-1.1.1.tld +taglibs/tlds/sql-1.1.2.tld +taglibs/tlds/sql-rt-1.0.2.tld +taglibs/tlds/sql-rt-1.0.3.tld +taglibs/tlds/sql-rt-1.0.4.tld +taglibs/tlds/sql-rt-1.0.5.tld +taglibs/tlds/sql-rt-1.0.6.tld +taglibs/tlds/sql-rt-1.0.tld +taglibs/tlds/string-1.0.1.tld +taglibs/tlds/string-1.0.tld +taglibs/tlds/string-1.1.0.tld +taglibs/tlds/x-1.0.1.tld +taglibs/tlds/x-1.0.2.tld +taglibs/tlds/x-1.0.3.tld +taglibs/tlds/x-1.0.4.tld +taglibs/tlds/x-1.0.5.tld +taglibs/tlds/x-1.0.6.tld +taglibs/tlds/x-1.0.tld +taglibs/tlds/x-1.1.0.tld +taglibs/tlds/x-1.1.1.tld +taglibs/tlds/x-1.1.2.tld +taglibs/tlds/x-rt-1.0.1.tld +taglibs/tlds/x-rt-1.0.2.tld +taglibs/tlds/x-rt-1.0.3.tld +taglibs/tlds/x-rt-1.0.4.tld +taglibs/tlds/x-rt-1.0.5.tld +taglibs/tlds/x-rt-1.0.6.tld +taglibs/tlds/x-rt-1.0.tld +taglibs/tlds/xsl-1.0.1.tld +taglibs/wars/application-examples-1.0.1.war +taglibs/wars/application-doc-1.0.1.war +taglibs/wars/benchmark-examples-1.0.war +taglibs/wars/benchmark-doc-1.0.war +taglibs/wars/datetime-examples-1.0.1.war +taglibs/wars/datetime-doc-1.0.1.war +taglibs/wars/dbtags-examples-1.0.0.war +taglibs/wars/dbtags-doc-1.0.0.war +taglibs/wars/log-examples-1.0.war +taglibs/wars/log-doc-1.0.war +taglibs/wars/mailer-examples-1.1.war +taglibs/wars/mailer-doc-1.1.war +taglibs/wars/page-doc-1.0.1.war +taglibs/wars/page-examples-1.0.1.war +taglibs/wars/random-doc-1.0.1.war +taglibs/wars/random-doc-1.0.2.war +taglibs/wars/random-examples-1.0.1.war +taglibs/wars/random-examples-1.0.2.war +taglibs/wars/regexp-doc-1.0.1.war +taglibs/wars/regexp-examples-1.0.1.war +taglibs/wars/request-doc-1.0.1.war +taglibs/wars/request-examples-1.0.1.war +taglibs/wars/response-doc-1.0.1.war +taglibs/wars/response-examples-1.0.1.war +taglibs/wars/session-doc-1.0.1.war +taglibs/wars/session-examples-1.0.1.war +taglibs/wars/standard-doc-1.0.1.war +taglibs/wars/standard-doc-1.0.3.war +taglibs/wars/standard-doc-1.0.4.war +taglibs/wars/standard-doc-1.0.5.war +taglibs/wars/standard-doc-1.0.6.war +taglibs/wars/standard-doc-1.0.war +taglibs/wars/standard-doc-1.1.0.war +taglibs/wars/standard-doc-1.1.1.war +taglibs/wars/standard-doc-1.1.2.war +taglibs/wars/standard-examples-1.0.1.war +taglibs/wars/standard-examples-1.0.3.war +taglibs/wars/standard-examples-1.0.4.war +taglibs/wars/standard-examples-1.0.5.war +taglibs/wars/standard-examples-1.0.6.war +taglibs/wars/standard-examples-1.0.war +taglibs/wars/standard-examples-1.1.0.war +taglibs/wars/standard-examples-1.1.1.war +taglibs/wars/standard-examples-1.1.2.war +taglibs/wars/string-doc-1.0.1.war +taglibs/wars/string-doc-1.0.war +taglibs/wars/string-doc-1.1.0.war +taglibs/wars/string-examples-1.0.1.war +taglibs/wars/string-examples-1.0.war +taglibs/wars/string-examples-1.1.0.war +taglibs/wars/xsl-doc-1.0.1.war +taglibs/wars/xsl-examples-1.0.1.war +tapestry/jars/net.sf.tapestry-2.2.jar +tapestry/jars/net.sf.tapestry.contrib-2.2.jar +tapestry/jars/tapestry-3.0-beta-1a.jar +tapestry/jars/tapestry-3.0-beta-2.jar +tapestry/jars/tapestry-3.0.1.jar +tapestry/jars/tapestry-3.0.2.jar +tapestry/jars/tapestry-3.0.3.jar +tapestry/jars/tapestry-3.0.jar +tapestry/jars/tapestry-3.1-alpha-1.jar +tapestry/jars/tapestry-4.0-alpha-2.jar +tapestry/jars/tapestry-4.0-alpha-3.jar +tapestry/jars/tapestry-4.0-alpha-4-snapshot.jar +tapestry/jars/tapestry-4.0-beta-1.jar +tapestry/jars/tapestry-4.0-beta-5.jar +tapestry/jars/tapestry-4.0-beta-10.jar +tapestry/jars/tapestry-4.0-beta-11.jar +tapestry/jars/tapestry-4.0-beta-12.jar +tapestry/jars/tapestry-4.0-beta-13.jar +tapestry/jars/tapestry-4.0-beta-2.jar +tapestry/jars/tapestry-4.0-beta-3.jar +tapestry/jars/tapestry-4.0-beta-4.jar +tapestry/jars/tapestry-4.0-beta-6.jar +tapestry/jars/tapestry-4.0-beta-7.jar +tapestry/jars/tapestry-4.0-beta-8.jar +tapestry/jars/tapestry-4.0-beta-9.jar +tapestry/jars/tapestry-4.0-rc-1.jar +tapestry/jars/tapestry-4.0.1.jar +tapestry/jars/tapestry-4.0-rc-2.jar +tapestry/jars/tapestry-annotations-4.0.1.jar +tapestry/jars/tapestry-4.0-rc-3.jar +tapestry/jars/tapestry-4.0.2.jar +tapestry/jars/tapestry-4.0.jar +tapestry/jars/tapestry-annotations-4.0-alpha-4-snapshot.jar +tapestry/jars/tapestry-annotations-4.0-beta-1.jar +tapestry/jars/tapestry-annotations-4.0-beta-7.jar +tapestry/jars/tapestry-annotations-4.0-beta-10.jar +tapestry/jars/tapestry-annotations-4.0-beta-11.jar +tapestry/jars/tapestry-annotations-4.0-beta-12.jar +tapestry/jars/tapestry-annotations-4.0-beta-13.jar +tapestry/jars/tapestry-annotations-4.0-beta-2.jar +tapestry/jars/tapestry-annotations-4.0-beta-3.jar +tapestry/jars/tapestry-annotations-4.0-beta-4.jar +tapestry/jars/tapestry-annotations-4.0-beta-5.jar +tapestry/jars/tapestry-annotations-4.0-beta-6.jar +tapestry/jars/tapestry-annotations-4.0-beta-8.jar +tapestry/jars/tapestry-annotations-4.0-beta-9.jar +tapestry/jars/tapestry-annotations-4.0-rc-1.jar +tapestry/jars/tapestry-annotations-4.0-rc-2.jar +tapestry/jars/tapestry-annotations-4.0-rc-3.jar +tapestry/jars/tapestry-annotations-4.0.2.jar +tapestry/jars/tapestry-annotations-4.0.jar +tapestry/jars/tapestry-contrib-3.0-beta-2.jar +tapestry/jars/tapestry-contrib-3.0.1.jar +tapestry/jars/tapestry-contrib-3.0.2.jar +tapestry/jars/tapestry-contrib-3.0.3.jar +tapestry/jars/tapestry-contrib-3.0.jar +tapestry/jars/tapestry-contrib-3.1-alpha-1.jar +tapestry/jars/tapestry-contrib-4.0-alpha-2.jar +tapestry/jars/tapestry-contrib-4.0-alpha-4-snapshot.jar +tapestry/jars/tapestry-contrib-4.0-alpha-3.jar +tapestry/jars/tapestry-contrib-4.0-beta-1.jar +tapestry/jars/tapestry-contrib-4.0-beta-10.jar +tapestry/jars/tapestry-contrib-4.0-beta-11.jar +tapestry/jars/tapestry-contrib-4.0-beta-12.jar +tapestry/jars/tapestry-contrib-4.0-beta-13.jar +tapestry/jars/tapestry-contrib-4.0-beta-2.jar +tapestry/jars/tapestry-contrib-4.0-beta-3.jar +tapestry/jars/tapestry-contrib-4.0-beta-4.jar +tapestry/jars/tapestry-contrib-4.0-beta-5.jar +tapestry/jars/tapestry-contrib-4.0-rc-2.jar +tapestry/jars/tapestry-contrib-4.0-beta-6.jar +tapestry/jars/tapestry-contrib-4.0-beta-7.jar +tapestry/jars/tapestry-contrib-4.0-beta-8.jar +tapestry/jars/tapestry-contrib-4.0-beta-9.jar +tapestry/jars/tapestry-contrib-4.0-rc-1.jar +tapestry/jars/tapestry-contrib-4.0-rc-3.jar +tapestry/jars/tapestry-contrib-4.0.1.jar +tapestry/jars/tapestry-contrib-4.0.2.jar +tapestry/jars/tapestry-contrib-4.0.jar +tapestry/jars/tapestry-portlet-4.0.1.jar +tapestry/jars/tapestry-portlet-4.0-alpha-2.jar +tapestry/jars/tapestry-portlet-4.0-alpha-3.jar +tapestry/jars/tapestry-portlet-4.0-alpha-4-snapshot.jar +tapestry/jars/tapestry-portlet-4.0-beta-1.jar +tapestry/jars/tapestry-portlet-4.0-beta-10.jar +tapestry/jars/tapestry-portlet-4.0-beta-11.jar +tapestry/jars/tapestry-portlet-4.0-beta-12.jar +tapestry/jars/tapestry-portlet-4.0-beta-13.jar +tapestry/jars/tapestry-portlet-4.0-beta-2.jar +tapestry/jars/tapestry-portlet-4.0-beta-3.jar +tapestry/jars/tapestry-portlet-4.0-beta-4.jar +tapestry/jars/tapestry-portlet-4.0-beta-5.jar +tapestry/jars/tapestry-portlet-4.0-beta-6.jar +tapestry/jars/tapestry-portlet-4.0-beta-7.jar +tapestry/jars/tapestry-portlet-4.0-beta-8.jar +tapestry/jars/tapestry-portlet-4.0-beta-9.jar +tapestry/jars/tapestry-portlet-4.0-rc-1.jar +tapestry/jars/tapestry-portlet-4.0-rc-2.jar +tapestry/jars/tapestry-portlet-4.0-rc-3.jar +tapestry/jars/tapestry-portlet-4.0.2.jar +tapestry/jars/tapestry-portlet-4.0.jar +tapestry/jars/vlibbeans-4.0-beta-4.jar +tapestry/jars/vlibbeans-4.0-beta-5.jar +tapestry/poms/tapestry-4.0-beta-8.pom +tapestry/poms/tapestry-4.0.1.pom +tapestry/poms/tapestry-annotations-4.0.1.pom +tapestry/poms/tapestry-4.0.2.pom +tapestry/poms/tapestry-annotations-4.0.2.pom +tapestry/poms/tapestry-contrib-4.0.1.pom +tapestry/poms/tapestry-contrib-4.0.2.pom +tapestry/poms/tapestry-portlet-4.0.1.pom +tapestry/poms/tapestry-portlet-4.0.2.pom +tapestry/tlds/tapestry-3.0.1.tld +tomcat/jars/bootstrap-4.0.6.jar +tomcat/jars/bootstrap-5.0.28.jar +tomcat/jars/bootstrap-5.5.12.jar +tomcat/jars/catalina-5.5.15.jar +tomcat/jars/catalina-4.0.4.jar +tomcat/jars/catalina-4.0.6.jar +tomcat/jars/catalina-5.0.28.jar +tomcat/jars/catalina-5.5.12.jar +tomcat/jars/catalina-admin-5.0.28.jar +tomcat/jars/catalina-ant-5.0.28.jar +tomcat/jars/catalina-ant-5.5.12.jar +tomcat/jars/catalina-ant-5.5.15.jar +tomcat/jars/catalina-ant-jmx-5.5.12.jar +tomcat/jars/catalina-balancer-5.0.28.jar +tomcat/jars/catalina-balancer-5.5.12.jar +tomcat/jars/catalina-cluster-5.0.28.jar +tomcat/jars/catalina-cluster-5.5.12.jar +tomcat/jars/catalina-cluster-5.5.15.jar +tomcat/jars/catalina-host-manager-5.5.12.jar +tomcat/jars/warp-4.0.6.jar +tomcat/jars/catalina-i18n-es-5.0.28.jar +tomcat/jars/catalina-i18n-fr-5.0.28.jar +tomcat/jars/catalina-i18n-ja-5.0.28.jar +tomcat/jars/catalina-manager-5.0.28.jar +tomcat/jars/catalina-manager-5.5.12.jar +tomcat/jars/catalina-optional-5.0.28.jar +tomcat/jars/catalina-optional-5.5.12.jar +tomcat/jars/catalina-optional-5.5.15.jar +tomcat/jars/catalina-root-5.0.28.jar +tomcat/jars/catalina-root-5.5.12.jar +tomcat/jars/catalina-storeconfig-5.5.12.jar +tomcat/jars/catalina-storeconfig-5.5.15.jar +tomcat/jars/commons-logging-4.0.6.jar +tomcat/jars/container_util-3.3.2.jar +tomcat/jars/core_util-3.3.2.jar +tomcat/jars/etomcat-3.3.2.jar +tomcat/jars/jasper-compiler-4.0.4.jar +tomcat/jars/facade22-3.3.2.jar +tomcat/jars/jasper-3.2.4.jar +tomcat/jars/jasper-3.3.2.jar +tomcat/jars/jasper-compiler-4.0.6.jar +tomcat/jars/jasper-compiler-5.0.28.jar +tomcat/jars/jasper-compiler-5.5.12.jar +tomcat/jars/jasper-compiler-5.5.15.jar +tomcat/jars/jasper-compiler-jdt-5.5.12.jar +tomcat/jars/jasper-compiler-jdt-5.5.15.jar +tomcat/jars/jasper-runtime-3.3.2.jar +tomcat/jars/jasper-runtime-4.0.4.jar +tomcat/jars/jasper-runtime-5.5.15.jar +tomcat/jars/jkconfig-5.0.28.jar +tomcat/jars/jasper-runtime-4.0.6.jar +tomcat/jars/jasper-runtime-5.0.28.jar +tomcat/jars/jasper-runtime-5.5.12.jar +tomcat/jars/jkshm-5.0.28.jar +tomcat/jars/jsp-api-5.5.12.jar +tomcat/jars/jsp-api-5.5.15.jar +tomcat/jars/naming-common-4.0.6.jar +tomcat/jars/naming-common-5.0.28.jar +tomcat/jars/naming-factory-4.0.6.jar +tomcat/jars/naming-factory-5.0.28.jar +tomcat/jars/naming-factory-5.5.12.jar +tomcat/jars/naming-factory-5.5.15.jar +tomcat/jars/naming-factory-dbcp-5.5.12.jar +tomcat/jars/naming-factory-dbcp-5.5.15.jar +tomcat/jars/naming-java-5.0.28.jar +tomcat/jars/naming-resources-4.0.6.jar +tomcat/jars/servlet-4.0.6.jar +tomcat/jars/naming-resources-5.0.28.jar +tomcat/jars/naming-resources-5.5.12.jar +tomcat/jars/naming-resources-5.5.15.jar +tomcat/jars/servlet-api-5.5.12.jar +tomcat/jars/servlet-api-5.5.15.jar +tomcat/jars/servlets-common-4.0.6.jar +tomcat/jars/servlets-common-5.0.28.jar +tomcat/jars/servlets-default-4.0.6.jar +tomcat/jars/servlets-default-5.0.28.jar +tomcat/jars/servlets-default-5.5.12.jar +tomcat/jars/servlets-default-5.5.15.jar +tomcat/jars/servlets-invoker-4.0.6.jar +tomcat/jars/servlets-invoker-5.0.28.jar +tomcat/jars/servlets-invoker-5.5.12.jar +tomcat/jars/servlets-invoker-5.5.15.jar +tomcat/jars/servlets-manager-4.0.6.jar +tomcat/jars/servlets-webdav-4.0.6.jar +tomcat/jars/servlets-webdav-5.0.28.jar +tomcat/jars/servlets-webdav-5.5.12.jar +tomcat/jars/servlets-webdav-5.5.15.jar +tomcat/jars/stop-tomcat-3.3.2.jar +tomcat/jars/tomcat-3.2.3.jar +tomcat/jars/tomcat-3.3.2.jar +tomcat/jars/tomcat-ajp-4.0.6.jar +tomcat/jars/tomcat-ajp-5.5.12.jar +tomcat/jars/tomcat-ajp-5.5.15.jar +tomcat/jars/tomcat-ant-3.3.2.jar +tomcat/jars/tomcat-apr-5.5.12.jar +tomcat/jars/tomcat-apr-5.5.15.jar +tomcat/jars/tomcat-coyote-3.3.2.jar +tomcat/jars/tomcat-coyote-4.0.4.jar +tomcat/jars/tomcat-coyote-4.0.6.jar +tomcat/jars/tomcat-coyote-5.0.28.jar +tomcat/jars/tomcat-coyote-5.5.12.jar +tomcat/jars/tomcat-coyote-5.5.15.jar +tomcat/jars/tomcat-http-5.5.12.jar +tomcat/jars/tomcat-http-5.5.15.jar +tomcat/jars/tomcat-http11-3.3.2.jar +tomcat/jars/tomcat-http11-4.0.6.jar +tomcat/jars/tomcat-http11-5.0.28.jar +tomcat/jars/tomcat-i18n-en-5.5.12.jar +tomcat/jars/tomcat-i18n-es-5.5.12.jar +tomcat/jars/tomcat-i18n-fr-5.5.12.jar +tomcat/jars/tomcat-i18n-ja-5.5.12.jar +tomcat/jars/tomcat-jk-5.0.28.jar +tomcat/jars/tomcat-jk2-3.3.2.jar +tomcat/jars/tomcat-jk2-5.0.28.jar +tomcat/jars/tomcat-jni-5.0.28.jar +tomcat/jars/tomcat-juli-5.5.12.jar +tomcat/jars/tomcat-naming-1.0.jar +tomcat/jars/tomcat-util-3.3.2.jar +tomcat/jars/tomcat-util-4.0.6.jar +tomcat/jars/tomcat-util-5.0.28.jar +tomcat/jars/tomcat-util-5.5.12.jar +tomcat/jars/tomcat-util-5.5.15.jar +tomcat/jars/tomcat33-coyote-3.3.2.jar +tomcat/jars/tomcat33-resource-3.3.2.jar +tomcat/jars/bootstrap-4.1.36.jar +tomcat/jars/tomcat_core-3.3.2.jar +tomcat/jars/tomcat_modules-3.3.2.jar +tomcat/jars/webserver-3.2.4.jar +tomcat/jars/catalina-4.1.36.jar +tomcat/jars/catalina-ant-4.1.36.jar +tomcat/jars/jasper-compiler-4.1.36.jar +tomcat/jars/jasper-runtime-4.1.36.jar +tomcat/jars/naming-common-4.1.36.jar +tomcat/jars/naming-factory-4.1.36.jar +tomcat/jars/naming-resources-4.1.36.jar +tomcat/jars/servlet-4.1.36.jar +tomcat/jars/servlets-cgi-4.1.36.jar +tomcat/jars/servlets-common-4.1.36.jar +tomcat/jars/servlets-default-4.1.36.jar +tomcat/jars/servlets-invoker-4.1.36.jar +tomcat/jars/servlets-manager-4.1.36.jar +tomcat/jars/servlets-ssi-4.1.36.jar +tomcat/jars/servlets-webdav-4.1.36.jar +tomcat/jars/tomcat4-coyote-4.1.36.jar +tomcat/jars/tomcat-coyote-4.1.36.jar +tomcat/jars/tomcat-http11-4.1.36.jar +tomcat/jars/tomcat-jk2-4.1.36.jar +tomcat/jars/tomcat-jk-4.1.36.jar +tomcat/jars/tomcat-jni-4.1.36.jar +tomcat/jars/tomcat-util-4.1.36.jar +tomcat/poms/catalina-5.5.15.pom +tomcat/poms/catalina-ant-5.5.15.pom +tomcat/poms/catalina-cluster-5.5.15.pom +tomcat/poms/catalina-optional-5.5.15.pom +tomcat/poms/catalina-storeconfig-5.5.15.pom +tomcat/poms/jasper-compiler-5.5.15.pom +tomcat/poms/jasper-compiler-jdt-5.5.15.pom +tomcat/poms/jasper-runtime-5.5.15.pom +tomcat/poms/jsp-api-5.5.15.pom +tomcat/poms/naming-factory-5.5.15.pom +tomcat/poms/naming-factory-dbcp-5.5.15.pom +tomcat/poms/naming-resources-5.5.15.pom +tomcat/poms/servlet-api-5.5.15.pom +tomcat/poms/servlets-default-5.5.15.pom +tomcat/poms/servlets-invoker-5.5.15.pom +tomcat/poms/servlets-webdav-5.5.15.pom +tomcat/poms/tomcat-ajp-5.5.15.pom +tomcat/poms/tomcat-apr-5.5.15.pom +tomcat/poms/tomcat-coyote-5.5.15.pom +tomcat/poms/tomcat-http-5.5.15.pom +tomcat/poms/tomcat-parent-5.5.15.pom +tomcat/poms/tomcat-util-5.5.15.pom +tomcat/zips/apache-tomcat-5.5.23.zip +tomcat-util/jars/tomcat-util-dev.20021002.102355.jar +torque/jars/maven-torque-plugin-3.2-rc1.jar +torque/jars/torque-20030218.172852.jar +torque/jars/torque-20030310.174947.jar +torque/jars/torque-20030327.065722.jar +torque/jars/torque-3.0-b4.jar +torque/jars/torque-3.0-b3-dev.20020711.025538.jar +torque/jars/torque-3.0-b4-dev.20020724.014157.jar +torque/jars/torque-3.0-b4-dev.20020814.103755.jar +torque/jars/torque-3.0-rc1.jar +torque/jars/torque-3.0.1.jar +torque/jars/torque-3.0.2.jar +torque/jars/torque-3.1.1.jar +torque/jars/torque-3.0.jar +torque/jars/torque-3.1-alpha1.jar +torque/jars/torque-3.1-alpha2.jar +torque/jars/torque-3.1-beta1.jar +torque/jars/torque-3.1-dev.jar +torque/jars/torque-3.1-rc.jar +torque/jars/torque-3.1.1-rc1.jar +torque/jars/torque-3.1.1-rc2.jar +torque/jars/torque-3.1.1-rc3.jar +torque/jars/torque-3.1.jar +torque/jars/torque-3.2-rc1.jar +torque/jars/torque-gen-3.1-alpha1.jar +torque/jars/torque-3.2-rc2.jar +torque/jars/torque-3.2-rc3.jar +torque/jars/torque-3.2.jar +torque/jars/torque-gen-20030215.100807.jar +torque/jars/torque-gen-20030310.175447.jar +torque/jars/torque-gen-20030327.070220.jar +torque/jars/torque-gen-3.1-alpha2.jar +torque/jars/torque-gen-3.1-beta1.jar +torque/jars/torque-gen-3.1-dev.jar +torque/jars/torque-gen-3.1-rc.jar +torque/jars/torque-gen-3.1.1-rc1.jar +torque/jars/torque-gen-3.1.1-rc2.jar +torque/jars/torque-gen-3.1.1-rc3.jar +torque/jars/torque-gen-3.1.1.jar +torque/jars/torque-gen-3.1.jar +torque/jars/torque-gen-3.2-rc1.jar +torque/jars/torque-gen-3.2.jar +torque/jars/torque-gen-3.2-rc2.jar +torque/jars/torque-gen-3.2-rc3.jar +torque/jars/torque-gen-snapshot-version +torque/jars/torque-gen-templates-3.2-rc1.jar +torque/jars/torque-gen-templates-3.2-rc2.jar +torque/jars/torque-gen-templates-3.2-rc3.jar +torque/jars/torque-gen-templates-3.2.jar +torque/jars/torque-3.3-RC1.jar +torque/jars/torque-snapshot-version +torque/jars/torque-gen-templates-3.3-RC1.jar +torque/jars/torque-gen-3.3-RC1.jar +torque/jars/torque-3.3-RC2.jar +torque/jars/torque-gen-templates-3.3-RC2.jar +torque/jars/torque-gen-3.3-RC2.jar +torque/plugins/maven-torque-plugin-3.1.1-dev.jar +torque/plugins/maven-torque-plugin-3.1.1-rc1.jar +torque/plugins/maven-torque-plugin-3.1.1-rc2.jar +torque/plugins/maven-torque-plugin-3.1.1-rc3.jar +torque/plugins/maven-torque-plugin-3.1.1.jar +torque/plugins/maven-torque-plugin-3.2-rc1.jar +torque/plugins/maven-torque-plugin-3.2-rc2.jar +torque/plugins/maven-torque-plugin-3.2-rc3.jar +torque/plugins/maven-torque-plugin-3.2.jar +torque/plugins/maven-torque-plugin-3.3-RC1.jar +torque/plugins/maven-torque-plugin-3.3-RC2.jar +torque/poms/maven-torque-plugin-3.1.1-dev.pom +torque/poms/maven-torque-plugin-3.1.1-rc1.pom +torque/poms/maven-torque-plugin-3.1.1-rc2.pom +torque/poms/maven-torque-plugin-3.1.1-rc3.pom +torque/poms/maven-torque-plugin-3.2-rc1.pom +torque/poms/maven-torque-plugin-3.2-rc2.pom +torque/poms/maven-torque-plugin-3.2-rc3.pom +torque/poms/maven-torque-plugin-3.2.pom +torque/poms/torque-3.1.1-rc1.pom +torque/poms/torque-3.1.1-rc2.pom +torque/poms/torque-3.1.1-rc3.pom +torque/poms/torque-3.2-rc1.pom +torque/poms/torque-3.2-rc2.pom +torque/poms/torque-gen-templates-3.2-rc1.pom +torque/poms/torque-3.2-rc3.pom +torque/poms/torque-3.2.pom +torque/poms/torque-gen-3.1.1-rc1.pom +torque/poms/torque-gen-3.1.1-rc2.pom +torque/poms/torque-gen-3.1.1-rc3.pom +torque/poms/torque-gen-3.2-rc1.pom +torque/poms/torque-gen-3.2-rc2.pom +torque/poms/torque-gen-3.2-rc3.pom +torque/poms/torque-gen-3.2.pom +torque/poms/torque-3.3-RC1.pom +torque/poms/torque-gen-templates-3.2-rc2.pom +torque/poms/maven-torque-plugin-3.3-RC1.pom +torque/poms/torque-gen-templates-3.2-rc3.pom +torque/poms/torque-gen-templates-3.2.pom +torque/poms/torque-gen-templates-3.3-RC1.pom +torque/poms/torque-gen-3.3-RC1.pom +torque/poms/torque-3.3-RC2.pom +torque/poms/torque-gen-templates-3.3-RC2.pom +torque/poms/torque-gen-3.3-RC2.pom +torque/poms/maven-torque-plugin-3.3-RC2.pom +turbine/distributions/maven-turbine-plugin-1.3-src.tar.gz +turbine/distributions/maven-turbine-plugin-1.3-src.zip +turbine/distributions/maven-turbine-plugin-1.3.tar.gz +turbine/distributions/maven-turbine-plugin-1.3.zip +turbine/distributions/turbine-2.3.2-src.tar.gz +turbine/distributions/turbine-2.3.2-src.zip +turbine/distributions/turbine-2.3.2.tar.gz +turbine/distributions/turbine-2.3.2.zip +turbine/jars/turbine-2.1.jar +turbine/jars/turbine-2.2-b1.jar +turbine/jars/turbine-2.2-b2-dev.jar +turbine/jars/turbine-2.2-rc1.jar +turbine/jars/turbine-2.2.jar +turbine/jars/turbine-2.2b1.jar +turbine/jars/turbine-2.3-rc1.jar +turbine/jars/turbine-2.3.1-rc1.jar +turbine/jars/turbine-2.3.1-rc2.jar +turbine/jars/turbine-2.3.1.jar +turbine/jars/turbine-2.3.2.jar +turbine/jars/turbine-2.3.jar +turbine/jars/turbine-2.4-M1.jar +turbine/jars/turbine-3.0-alpha-1.20020912.045138.jar +turbine/jars/turbine-3.0-dev.jar +turbine/plugins/maven-turbine-plugin-20040825.211642.jar +turbine/plugins/maven-turbine-plugin-1.2-rc1.jar +turbine/plugins/maven-turbine-plugin-1.2.jar +turbine/plugins/maven-turbine-plugin-1.3.jar +turbine/plugins/maven-turbine-plugin-20040825.214656.jar +turbine/plugins/maven-turbine-plugin-snapshot-version +turbine/poms/maven-turbine-plugin-20040825.211642.pom +turbine/poms/maven-turbine-plugin-1.2-rc1.pom +turbine/poms/maven-turbine-plugin-1.3.pom +turbine/poms/maven-turbine-plugin-20040825.214656.pom +turbine/poms/maven-turbine-plugin-snapshot-version +turbine/poms/turbine-2.3.1-rc1.pom +turbine/poms/turbine-2.3.1-rc2.pom +turbine/poms/turbine-2.3.2.pom +velocity/jars/velocity-1.3-dev.jar +velocity/jars/velocity-1.3.1.jar +velocity/jars/velocity-1.3.jar +velocity/jars/velocity-1.4-dev.jar +velocity/jars/velocity-1.4-rc1.jar +velocity/jars/velocity-1.4.jar +velocity/jars/velocity-dep-1.5-beta2.jar +velocity/jars/velocity-1.5.jar +velocity/jars/velocity-dep-1.3.1.jar +velocity/jars/velocity-dep-1.4-rc1.jar +velocity/jars/velocity-dep-1.4.jar +velocity/jars/velocity-1.5-beta2.jar +velocity/jars/anakia-1.0.jar +velocity/jars/texen-1.0.jar +velocity/poms/velocity-1.5.pom.bak +velocity/poms/velocity-1.5.pom.carlos +velocity/poms/velocity-1.5.pom.md5.bak +velocity-dvsl/jars/velocity-dvsl-0.31.jar +velocity-dvsl/jars/velocity-dvsl-0.40.jar +velocity-dvsl/jars/velocity-dvsl-0.43.20020711.010949.jar +velocity-dvsl/jars/velocity-dvsl-0.43.20020716.041424.jar +velocity-dvsl/jars/velocity-dvsl-0.43.jar +velocity-dvsl/jars/velocity-dvsl-0.43.20020719.020022.jar +velocity-dvsl/jars/velocity-dvsl-0.45.jar +velocity-dvsl/jars/velocity-dvsl-0.44.20020719.122919.jar +velocity-dvsl/jars/velocity-dvsl-0.44.20020720.011619.jar +velocity-dvsl/jars/velocity-dvsl-0.44.20020720.082908.jar +velocity-tools/jars/velocity-tools-1.0.jar +velocity-tools/jars/velocity-tools-1.1.jar +velocity-tools/jars/velocity-tools-1.2.jar +velocity-tools/jars/velocity-tools-generic-1.0.jar +velocity-tools/jars/velocity-tools-generic-1.1.jar +velocity-tools/jars/velocity-tools-generic-1.2.jar +velocity-tools/jars/velocity-tools-view-1.0.jar +velocity-tools/jars/velocity-tools-view-1.1.jar +velocity-tools/jars/velocity-tools-view-1.2.jar +velocity-tools/jars/velocity-tools-1.3.jar +velocity-tools/jars/velocity-tools-generic-1.3.jar +velocity-tools/jars/velocity-tools-view-1.3.jar +ws-commons/jars/KEYS +ws-commons/jars/axiom-api-0.95.jar +ws-commons/jars/tcpmon-1.0.jar +ws-commons/jars/sign.sh +ws-commons/jars/axiom-api-1.0.jar +ws-commons/jars/axiom-dom-1.0.jar +ws-commons/jars/axiom-impl-0.95.jar +ws-commons/jars/axiom-impl-1.0.jar +ws-commons/jars/neethi-1.0.1.jar +ws-commons/jars/policy-1.0.jar +ws-commons/poms/axiom-1.0.pom +ws-commons/poms/axiom-api-1.0.pom +ws-commons/poms/axiom-impl-1.0.pom +ws-commons/poms/neethi-1.0.1.pom +ws-commons-java5/jars/ws-commons-java5-1.0-sources.jar +ws-commons-java5/jars/ws-commons-java5-1.0.1-sources.jar +ws-commons-java5/jars/ws-commons-java5-1.0.1.jar +ws-commons-java5/jars/ws-commons-java5-1.0.jar +ws-commons-java5/poms/ws-commons-java5-1.0.1.pom +ws-commons-java5/poms/ws-commons-java5-1.0.pom +ws-commons-util/jars/ws-commons-util-1.0-sources.jar +ws-commons-util/jars/ws-commons-util-1.0.1-sources.jar +ws-commons-util/jars/ws-commons-util-1.0.1.jar +ws-commons-util/jars/ws-commons-util-1.0.jar +ws-commons-util/poms/ws-commons-util-1.0.1.pom +ws-commons-util/poms/ws-commons-util-1.0.pom +ws-scout/jars/scout-0.5.jar +ws-scout/jars/scout-0.7rc1.jar +ws-scout/jars/scout-0.7rc2.pom +ws-scout/jars/scout-0.7rc2.jar +ws-scout/jars/scout-0.7rc2-sources.jar +ws-scout/KEYS +wsdl4j/jars/wsdl4j-1.0.jar +wsrf/jars/j2ee-xbeans-src-1.0.jar +wsrf/jars/j2ee-xbeans-1.0.jar +wsrf/jars/wsa-xbeans-src-1.0.jar +wsrf/jars/wsa-xbeans-1.0.jar +wsrf/jars/wsrf-xbeans-1.0.jar +wsrf/jars/wsrf-1.0.jar +wsrf/jars/wsrf-1.1.jar +wsrf/jars/wsrf-jndi-config-src-1.0.jar +wsrf/jars/wsrf-jndi-config-1.0.jar +wsrf/jars/wsrf-xbeans-src-1.0.jar +wss4j/jars/wss4j-1.5.0.jar +wss4j/jars/wss4j-1.5.1.jar +xalan/jars/xalan-2.1.0.jar +xalan/jars/xalan-2.3.1.jar +xalan/jars/xalan-2.4.0.jar +xalan/jars/xalan-2.4.1.jar +xalan/jars/xalan-2.5.0.jar +xalan/jars/xalan-2.5.1.jar +xalan/jars/xalan-2.6.0.jar +xalan/jars/xalan-2.7.0.jar +xalan/jars/xalansamples-2.4.1.jar +xalan/jars/xalansamples-2.5.1.jar +xalan/jars/xalansamples-2.6.0.jar +xalan/jars/xalanservlet-2.4.1.jar +xalan/wars/xalanservlet-2.5.1.war +xerces/jars/xerces-1.2.3.jar +xerces/jars/xerces-1.4.0.jar +xerces/jars/xerces-1.4.4.jar +xerces/jars/xerces-2.0.0.jar +xerces/jars/xerces-2.0.1.jar +xerces/jars/xerces-2.0.2.jar +xerces/jars/xerces-2.2.1.jar +xerces/jars/xerces-2.3.0.jar +xerces/jars/xerces-2.4.0.jar +xerces/jars/xercesImpl-2.0.0.jar +xerces/jars/xercesImpl-2.5.0.jar +xerces/jars/xercesImpl-2.6.0.jar +xerces/jars/xercesImpl-2.6.2.jar +xerces/jars/xercesImpl-2.7.1.jar +xerces/jars/xercesImpl-2.8.0.jar +xerces/jars/xercesImpl-2.8.0.jar.sig +xerces/jars/xercesSamples-2.5.0.jar +xerces/jars/xercesSamples-2.6.0.jar +xerces/jars/xercesSamples-2.6.2.jar +xerces/jars/xercesSamples-2.8.0.jar +xerces/jars/xercesSamples-2.8.0.jar.sig +xerces/jars/xmlParserAPIs-2.0.0.jar +xerces/jars/xmlParserAPIs-2.0.2.jar +xerces/jars/xmlParserAPIs-2.2.1.jar +xerces/jars/xmlParserAPIs-2.6.0.jar +xerces/jars/xmlParserAPIs-2.6.2.jar +xerces/java-sources/xercesImpl-2.8.0-sources.jar +xerces/poms/xercesImpl-2.8.0.pom +xercesjarv/jars/xercesjarv-20020712-DG.jar +xercesjarv/jars/xercesjarv-20020712.jar +xml-apis/jars/xml-apis-1.0.b2.jar +xml-apis/jars/.htaccess +xml-apis/jars/README.html +xml-apis/jars/xml-apis-1.0.b2.james +xml-apis/jars/xml-apis-1.3.02.jar +xml-apis/jars/xml-apis-1.3.03.jar +xml-apis/jars/xml-apis-1.3.03.jar.sig +xml-apis/poms/xml-apis-1.3.02.pom +xml-apis/poms/xml-apis-1.3.03.pom +xml-resolver/jars/xml-resolver-1.1.jar +xml-security/jars/xml-security-1.0.4.jar +xml-security/jars/xmlsec-1.0.5D2.jar +xml-security/jars/xmlsec-1.1.0.jar +xml-security/jars/xmlsec-1.1.0.jar.sig +xml-security/jars/xmlsec-1.2.1.jar +xml-security/jars/xmlsec-1.2.1.jar.sig +xml-security/jars/xmlsec-1.3.0.jar +xml-security/jars/xmlsec-1.3.0.jar.sig +xmlbeans/jars/jsr173_1.0_api.jar +xmlbeans/jars/jsr173_1.0_api_bundle.jar +xmlbeans/jars/xbean-1.0.3.jar +xmlbeans/jars/xbean-1.0.4-jdk1.3.jar +xmlbeans/jars/xbean-1.0.4.jar +xmlbeans/jars/xbean-2.0.0-beta1.jar +xmlbeans/jars/xbean-2.0.0.jar +xmlbeans/jars/xbean-2.1.0.jar +xmlbeans/jars/xbean_xpath-1.0.3.jar +xmlbeans/jars/xbean-2.2.0.jar +xmlbeans/jars/xbean_xpath-1.0.4-jdk1.3.jar +xmlbeans/jars/xbean_xpath-1.0.4.jar +xmlbeans/jars/xbean_xpath-2.0.0-beta1.jar +xmlbeans/jars/xbean_xpath-2.0.0.jar +xmlbeans/jars/xbean_xpath-2.1.0.jar +xmlbeans/jars/xbean_xpath-2.2.0.jar +xmlbeans/jars/xmlbeans-1.0.3.jar +xmlbeans/jars/xmlbeans-1.0.jar +xmlbeans/jars/xmlpublic-2.0.0-beta1.jar +xmlbeans/jars/xmlpublic-2.0.0.jar +xmlbeans/jars/xmlpublic-2.1.0.jar +xmlbeans/jars/xmlpublic-2.2.0.jar +xmlbeans/poms/xmlbeans-1.0.3.pom +xmlbeans/poms/xbean-2.2.0.pom +xmlrpc/jars/xmlrpc-1.1.jar +xmlrpc/jars/xmlrpc-1.2-a1.jar +xmlrpc/jars/xmlrpc-1.2-a2.jar +xmlrpc/jars/xmlrpc-1.2-a3-dev.20030102.111633.jar +xmlrpc/jars/xmlrpc-1.2-a3-dev.jar +xmlrpc/jars/xmlrpc-1.2-b1.jar +xmlrpc/jars/xmlrpc-2.0-applet.jar +xmlrpc/jars/xmlrpc-1.2.jar +xmlrpc/jars/xmlrpc-2.0-beta-applet.jar +xmlrpc/jars/xmlrpc-2.0-beta.jar +xmlrpc/jars/xmlrpc-2.0.1-sources.jar +xmlrpc/jars/xmlrpc-3.0a1-sources.jar +xmlrpc/jars/xmlrpc-2.0.1.jar +xmlrpc/jars/xmlrpc-2.0.jar +xmlrpc/jars/xmlrpc-3.0a1.jar +xmlrpc/jars/xmlrpc-client-3.0-sources.jar +xmlrpc/jars/xmlrpc-common-3.0.jar +xmlrpc/jars/xmlrpc-client-3.0.jar +xmlrpc/jars/xmlrpc-client-3.0b1-sources.jar +xmlrpc/jars/xmlrpc-client-3.0b1.jar +xmlrpc/jars/xmlrpc-common-3.0-sources.jar +xmlrpc/jars/xmlrpc-common-3.0b1-sources.jar +xmlrpc/jars/xmlrpc-common-3.0b1.jar +xmlrpc/jars/xmlrpc-helma-1.0.jar +xmlrpc/jars/xmlrpc-server-3.0-sources.jar +xmlrpc/jars/xmlrpc-server-3.0.jar +xmlrpc/jars/xmlrpc-server-3.0b1-sources.jar +xmlrpc/jars/xmlrpc-server-3.0b1.jar +xmlrpc/poms/xmlrpc-3.0.pom +xmlrpc/poms/xmlrpc-3.0b1.pom +xmlrpc/poms/xmlrpc-client-3.0.pom +xmlrpc/poms/xmlrpc-client-3.0b1.pom +xmlrpc/poms/xmlrpc-common-3.0.pom +xmlrpc/poms/xmlrpc-common-3.0b1.pom +xmlrpc/poms/xmlrpc-server-3.0.pom +xmlrpc/poms/xmlrpc-server-3.0b1.pom +org.apache.ws.commons.axiom/jars/axiom-api-1.2.jar +org.apache.ws.commons.axiom/jars/axiom-impl-1.2.jar +org.apache.ws.commons.axiom/jars/axiom-dom-1.2.jar +org.apache.ws.commons.axiom/jars/axiom-1.2.1.jar +org.apache.ws.commons.axiom/jars/axiom-impl-1.2.1.jar +org.apache.ws.commons.axiom/jars/axiom-dom-1.2.1.jar +org.apache.ws.commons.axiom/jars/axiom-api-1.2.1.jar +org.apache.ws.commons.axiom/jars/axiom-1.2.2.jar +org.apache.ws.commons.axiom/jars/axiom-api-1.2.2.jar +org.apache.ws.commons.axiom/jars/axiom-dom-1.2.2.jar +org.apache.ws.commons.axiom/jars/axiom-impl-1.2.2.jar +org.apache.ws.commons.axiom/jars/axiom-1.2.3.jar +org.apache.ws.commons.axiom/jars/axiom-api-1.2.3.jar +org.apache.ws.commons.axiom/jars/axiom-dom-1.2.3.jar +org.apache.ws.commons.axiom/jars/axiom-impl-1.2.3.jar +org.apache.ws.commons.axiom/jars/axiom-1.2.4.jar +org.apache.ws.commons.axiom/jars/axiom-api-1.2.4.jar +org.apache.ws.commons.axiom/jars/axiom-dom-1.2.4.jar +org.apache.ws.commons.axiom/jars/axiom-impl-1.2.4.jar +org.apache.ws.commons.axiom/jars/axiom-impl-1.2.5.jar +org.apache.ws.commons.axiom/jars/axiom-dom-1.2.5.jar +org.apache.ws.commons.axiom/jars/axiom-api-1.2.5.jar +org.apache.ws.commons.axiom/jars/axiom-1.2.5.jar +org.apache.ws.commons.schema/jars/XmlSchema-1.2.jar +org.apache.axis2/jars/axis2-adb-1.1.jar +org.apache.axis2/jars/axis2-adb-codegen-1.1.jar +org.apache.axis2/jars/axis2-codegen-1.1.jar +org.apache.axis2/jars/axis2-java2wsdl-1.1.jar +org.apache.axis2/jars/axis2-jibx-1.1.jar +org.apache.axis2/jars/axis2-kernel-1.1.jar +org.apache.axis2/jars/axis2-saaj-1.1.jar +org.apache.axis2/jars/axis2-soapmonitor-1.1.jar +org.apache.axis2/jars/axis2-spring-1.1.jar +org.apache.axis2/jars/axis2-tools-1.1.jar +org.apache.axis2/jars/axis2-xmlbeans-1.1.jar +org.apache.axis2/jars/axis2-1.1.jar +org.apache.axis2/jars/axis2-rahas-1.1.jar +org.apache.axis2/jars/axis2-secpolicy-1.1.jar +org.apache.axis2/jars/axis2-security-1.1.jar +org.apache.axis2/jars/axis2-1.1.1.jar +org.apache.axis2/jars/axis2-adb-1.1.1.jar +org.apache.axis2/jars/axis2-adb-codegen-1.1.1.jar +org.apache.axis2/jars/axis2-codegen-1.1.1.jar +org.apache.axis2/jars/axis2-java2wsdl-1.1.1.jar +org.apache.axis2/jars/axis2-jaxbri-1.1.1.jar +org.apache.axis2/jars/axis2-jibx-1.1.1.jar +org.apache.axis2/jars/axis2-kernel-1.1.1.jar +org.apache.axis2/jars/axis2-saaj-1.1.1.jar +org.apache.axis2/jars/axis2-soapmonitor-1.1.1.jar +org.apache.axis2/jars/axis2-spring-1.1.1.jar +org.apache.axis2/jars/axis2-tools-1.1.1.jar +org.apache.axis2/jars/axis2-xmlbeans-1.1.1.jar +org.apache.axis2/jars/axis2-1.2.jar +org.apache.axis2/jars/axis2-adb-1.2.jar +org.apache.axis2/jars/axis2-adb-codegen-1.2.jar +org.apache.axis2/jars/axis2-addressing-1.2.jar +org.apache.axis2/jars/axis2-codegen-1.2.jar +org.apache.axis2/jars/axis2-fastinfoset-1.2.jar +org.apache.axis2/jars/axis2-jaxws-1.2.jar +org.apache.axis2/jars/axis2-java2wsdl-1.2.jar +org.apache.axis2/jars/axis2-jaxbri-1.2.jar +org.apache.axis2/jars/axis2-jaxws-api-1.2.jar +org.apache.axis2/jars/axis2-jibx-1.2.jar +org.apache.axis2/jars/axis2-json-1.2.jar +org.apache.axis2/jars/axis2-kernel-1.2.jar +org.apache.axis2/jars/axis2-metadata-1.2.jar +org.apache.axis2/jars/axis2-mex-1.2.jar +org.apache.axis2/jars/axis2-mtompolicy-1.2.jar +org.apache.axis2/jars/axis2-ping-1.2.jar +org.apache.axis2/jars/axis2-saaj-1.2.jar +org.apache.axis2/jars/axis2-saaj-api-1.2.jar +org.apache.axis2/jars/axis2-soapmonitor-1.2.jar +org.apache.axis2/jars/axis2-spring-1.2.jar +org.apache.axis2/jars/axis2-xmlbeans-1.2.jar +org.apache.axis2/mars/addressing-1.1.mar +org.apache.axis2/mars/soapmonitor-1.1.mar +org.apache.axis2/mars/rampart-1.1.mar +org.apache.axis2/mars/rahas-1.1.mar +org.apache.axis2/mars/addressing-1.1.1.mar +org.apache.axis2/mars/soapmonitor-1.1.1.mar +org.apache.axis2/mars/addressing-1.2.mar +org.apache.axis2/mars/soapmonitor-1.2.mar +org.apache.neethi/jars/neethi-2.0.jar +org.apache.neethi/jars/neethi-2.0.1.jar +org.apache.neethi/jars/neethi-2.0.2.jar +org.apache.ws.commons.neethi/jars/neethi-1.0.1.jar +org.apache.ws.commons.neethi/jars/neethi-2.0.1.jar +org.apache.sandesha2/jars/sandesha2-1.1.jar +org.apache.sandesha2/jars/sandesha2-client-1.1.jar +org.apache.sandesha2/jars/sandesha2-policy-1.1.jar +org.apache.sandesha2/mars/sandesha2-1.1.mar +org.apache.ant/jars/ant-1.7.0.jar +org.apache.ant/jars/ant-antlr-1.7.0.jar +org.apache.ant/jars/ant-apache-bcel-1.7.0.jar +org.apache.ant/jars/ant-apache-bsf-1.7.0.jar +org.apache.ant/jars/ant-apache-log4j-1.7.0.jar +org.apache.ant/jars/ant-apache-oro-1.7.0.jar +org.apache.ant/jars/ant-apache-regexp-1.7.0.jar +org.apache.ant/jars/ant-apache-resolver-1.7.0.jar +org.apache.ant/jars/ant-commons-logging-1.7.0.jar +org.apache.ant/jars/ant-commons-net-1.7.0.jar +org.apache.ant/jars/ant-jai-1.7.0.jar +org.apache.ant/jars/ant-javamail-1.7.0.jar +org.apache.ant/jars/ant-jdepend-1.7.0.jar +org.apache.ant/jars/ant-jmf-1.7.0.jar +org.apache.ant/jars/ant-jsch-1.7.0.jar +org.apache.ant/jars/ant-junit-1.7.0.jar +org.apache.ant/jars/ant-launcher-1.7.0.jar +org.apache.ant/jars/ant-netrexx-1.7.0.jar +org.apache.ant/jars/ant-nodeps-1.7.0.jar +org.apache.ant/jars/ant-starteam-1.7.0.jar +org.apache.ant/jars/ant-stylebook-1.7.0.jar +org.apache.ant/jars/ant-swing-1.7.0.jar +org.apache.ant/jars/ant-testutil-1.7.0.jar +org.apache.ant/jars/ant-trax-1.7.0.jar +org.apache.ant/jars/ant-weblogic-1.7.0.jar +org.apache.ant/poms/ant-1.7.0.pom +org.apache.ant/poms/ant-antlr-1.7.0.pom +org.apache.ant/poms/ant-apache-bcel-1.7.0.pom +org.apache.ant/poms/ant-apache-bsf-1.7.0.pom +org.apache.ant/poms/ant-apache-log4j-1.7.0.pom +org.apache.ant/poms/ant-apache-oro-1.7.0.pom +org.apache.ant/poms/ant-apache-regexp-1.7.0.pom +org.apache.ant/poms/ant-apache-resolver-1.7.0.pom +org.apache.ant/poms/ant-commons-logging-1.7.0.pom +org.apache.ant/poms/ant-commons-net-1.7.0.pom +org.apache.ant/poms/ant-jai-1.7.0.pom +org.apache.ant/poms/ant-javamail-1.7.0.pom +org.apache.ant/poms/ant-jdepend-1.7.0.pom +org.apache.ant/poms/ant-jmf-1.7.0.pom +org.apache.ant/poms/ant-jsch-1.7.0.pom +org.apache.ant/poms/ant-junit-1.7.0.pom +org.apache.ant/poms/ant-launcher-1.7.0.pom +org.apache.ant/poms/ant-netrexx-1.7.0.pom +org.apache.ant/poms/ant-nodeps-1.7.0.pom +org.apache.ant/poms/ant-parent-1.7.0.pom +org.apache.ant/poms/ant-starteam-1.7.0.pom +org.apache.ant/poms/ant-stylebook-1.7.0.pom +org.apache.ant/poms/ant-swing-1.7.0.pom +org.apache.ant/poms/ant-trax-1.7.0.pom +org.apache.ant/poms/ant-testutil-1.7.0.pom +org.apache.ant/poms/ant-weblogic-1.7.0.pom +org.apache.activemq/tar.bz2s/apache-activemq-4.1.1.tar.bz2 +org.apache.activemq/jars/activemq-console-4.1.1.jar +org.apache.activemq/jars/activemq-core-4.1.1-tests.jar +org.apache.activemq/jars/activemq-core-4.1.1.jar +org.apache.activemq/jars/activemq-jaas-4.1.1.jar +org.apache.activemq/jars/activemq-openwire-generator-4.1.1.jar +org.apache.activemq/jars/activemq-optional-4.1.1.jar +org.apache.activemq/jars/activemq-ra-4.1.1.jar +org.apache.activemq/jars/activemq-test-atomikos-4.1.1.jar +org.apache.activemq/jars/activemq-web-4.1.1.jar +org.apache.activemq/jars/activemq-xmpp-4.1.1.jar +org.apache.activemq/jars/apache-activemq-4.1.1.jar +org.apache.activemq/java-sources/activemq-console-4.1.1-sources.jar +org.apache.activemq/java-sources/activemq-openwire-generator-4.1.1-sources.jar +org.apache.activemq/java-sources/activemq-core-4.1.1-sources.jar +org.apache.activemq/java-sources/activemq-jaas-4.1.1-sources.jar +org.apache.activemq/java-sources/activemq-optional-4.1.1-sources.jar +org.apache.activemq/java-sources/activemq-ra-4.1.1-sources.jar +org.apache.activemq/java-sources/activemq-test-atomikos-4.1.1-sources.jar +org.apache.activemq/java-sources/activemq-rar-4.1.1-sources.jar +org.apache.activemq/java-sources/activemq-web-4.1.1-sources.jar +org.apache.activemq/java-sources/activemq-web-console-4.1.1-sources.jar +org.apache.activemq/java-sources/activemq-web-demo-4.1.1-sources.jar +org.apache.activemq/java-sources/activemq-xmpp-4.1.1-sources.jar +org.apache.activemq/java-sources/apache-activemq-4.1.1-sources.jar +org.apache.activemq/poms/activemq-console-4.1.1.pom +org.apache.activemq/poms/activemq-openwire-generator-4.1.1.pom +org.apache.activemq/poms/activemq-core-4.1.1.pom +org.apache.activemq/poms/activemq-jaas-4.1.1.pom +org.apache.activemq/poms/activemq-ra-4.1.1.pom +org.apache.activemq/poms/activemq-optional-4.1.1.pom +org.apache.activemq/poms/activemq-parent-4.1.1.pom +org.apache.activemq/poms/activemq-xmpp-4.1.1.pom +org.apache.activemq/poms/activemq-rar-4.1.1.pom +org.apache.activemq/poms/activemq-test-atomikos-4.1.1.pom +org.apache.activemq/poms/activemq-web-4.1.1.pom +org.apache.activemq/poms/activemq-web-console-4.1.1.pom +org.apache.activemq/poms/activemq-web-demo-4.1.1.pom +org.apache.activemq/poms/apache-activemq-4.1.1.pom +org.apache.activemq/poms/maven-metadata.xml +org.apache.activemq/rars/activemq-rar-4.1.1.rar +org.apache.activemq/htmls/activemq-core-4.1.1-schema.html +org.apache.activemq/htmls/activemq-ra-4.1.1-schema.html +org.apache.activemq/tar.gzs/apache-activemq-4.1.1-src.tar.gz +org.apache.activemq/tar.gzs/apache-activemq-4.1.1.tar.gz +org.apache.activemq/wars/activemq-web-console-4.1.1.war +org.apache.activemq/wars/activemq-web-demo-4.1.1.war +org.apache.activemq/xsd.htmls/activemq-core-4.1.1.xsd.html +org.apache.activemq/xsd.htmls/activemq-ra-4.1.1.xsd.html +org.apache.activemq/xsds/activemq-core-4.1.1.xsd +org.apache.activemq/xsds/activemq-ra-4.1.1.xsd +org.apache.activemq/xsds/README.txt +org.apache.activemq/xsds/ReadMe.html +org.apache.activemq/xsds/HEADER.html +org.apache.activemq/zips/apache-activemq-4.1.1-src.zip +org.apache.activemq/zips/apache-activemq-4.1.1.zip +org.apache.activemq/snapshot-schema +org.apache.poi/jars/poi-3.0.1-FINAL.jar +org.apache.poi/jars/poi-scratchpad-3.0.1-FINAL.jar +org.apache.poi/jars/poi-contrib-3.0.1-FINAL.jar +org.apache.poi/poms/poi-3.0-FINAL.pom +org.apache.poi/poms/poi-3.0.1-FINAL.pom +org.apache.poi/poms/poi-scratchpad-3.0.1-FINAL.pom +org.apache.poi/poms/poi-contrib-3.0.1-FINAL.pom +org.apache.camel/poms/apache-camel-1.0.0.pom +org.apache.camel/poms/archetypes-1.0.0.pom +org.apache.camel/poms/camel-activemq-1.0.0.pom +org.apache.camel/poms/camel-example-jms-file-1.0.0.pom +org.apache.camel/poms/camel-bam-1.0.0.pom +org.apache.camel/poms/camel-book-1.0.0.pom +org.apache.camel/poms/camel-core-1.0.0.pom +org.apache.camel/poms/camel-cxf-1.0.0.pom +org.apache.camel/poms/camel-example-spring-1.0.0.pom +org.apache.camel/poms/camel-ftp-1.0.0.pom +org.apache.camel/poms/camel-jms-1.0.0.pom +org.apache.camel/poms/camel-http-1.0.0.pom +org.apache.camel/poms/camel-irc-1.0.0.pom +org.apache.camel/poms/camel-jaxb-1.0.0.pom +org.apache.camel/poms/camel-jbi-1.0.0.pom +org.apache.camel/poms/camel-josql-1.0.0.pom +org.apache.camel/poms/camel-jpa-1.0.0.pom +org.apache.camel/poms/camel-mail-1.0.0.pom +org.apache.camel/poms/camel-maven-plugin-1.0.0.pom +org.apache.camel/poms/camel-mina-1.0.0.pom +org.apache.camel/poms/camel-parent-1.0.0.pom +org.apache.camel/poms/camel-rmi-1.0.0.pom +org.apache.camel/poms/camel-quartz-1.0.0.pom +org.apache.camel/poms/camel-router-1.0.0.pom +org.apache.camel/poms/camel-saxon-1.0.0.pom +org.apache.camel/poms/camel-script-1.0.0.pom +org.apache.camel/poms/camel-spring-1.0.0.pom +org.apache.camel/poms/camel-xmpp-1.0.0.pom +org.apache.camel/poms/components-1.0.0.pom +org.apache.camel/poms/examples-1.0.0.pom +org.apache.camel/poms/maven-html-to-docbook-1.0.0.pom +org.apache.camel/poms/maven-metadata.xml +org.apache.camel/poms/maven-plugins-1.0.0.pom +org.apache.camel/poms/tooling-1.0.0.pom +org.apache.camel/poms/apache-camel-1.1.0.pom +org.apache.camel/poms/archetypes-1.1.0.pom +org.apache.camel/poms/camel-activemq-1.1.0.pom +org.apache.camel/poms/camel-bam-1.1.0.pom +org.apache.camel/poms/camel-book-1.1.0.pom +org.apache.camel/poms/camel-core-1.1.0.pom +org.apache.camel/poms/camel-cxf-1.1.0.pom +org.apache.camel/poms/camel-example-bam-1.1.0.pom +org.apache.camel/poms/camel-example-etl-1.1.0.pom +org.apache.camel/poms/camel-example-jms-file-1.1.0.pom +org.apache.camel/poms/camel-jpa-1.1.0.pom +org.apache.camel/poms/camel-example-spring-1.1.0.pom +org.apache.camel/poms/camel-ftp-1.1.0.pom +org.apache.camel/poms/camel-http-1.1.0.pom +org.apache.camel/poms/camel-irc-1.1.0.pom +org.apache.camel/poms/camel-jaxb-1.1.0.pom +org.apache.camel/poms/camel-jing-1.1.0.pom +org.apache.camel/poms/camel-jms-1.1.0.pom +org.apache.camel/poms/camel-maven-plugin-1.1.0.pom +org.apache.camel/poms/camel-josql-1.1.0.pom +org.apache.camel/poms/camel-juel-1.1.0.pom +org.apache.camel/poms/camel-mail-1.1.0.pom +org.apache.camel/poms/camel-msv-1.1.0.pom +org.apache.camel/poms/camel-mina-1.1.0.pom +org.apache.camel/poms/camel-rmi-1.1.0.pom +org.apache.camel/poms/camel-ognl-1.1.0.pom +org.apache.camel/poms/camel-parent-1.1.0.pom +org.apache.camel/poms/camel-quartz-1.1.0.pom +org.apache.camel/poms/examples-1.1.0.pom +org.apache.camel/poms/camel-router-1.1.0.pom +org.apache.camel/poms/camel-saxon-1.1.0.pom +org.apache.camel/poms/camel-script-1.1.0.pom +org.apache.camel/poms/camel-spring-1.1.0.pom +org.apache.camel/poms/camel-xmpp-1.1.0.pom +org.apache.camel/poms/components-1.1.0.pom +org.apache.camel/poms/maven-html-to-docbook-1.1.0.pom +org.apache.camel/poms/maven-plugins-1.1.0.pom +org.apache.camel/poms/tooling-1.1.0.pom +org.apache.camel/java-sources/apache-camel-1.0.0-sources.jar +org.apache.camel/java-sources/camel-activemq-1.0.0-sources.jar +org.apache.camel/java-sources/camel-bam-1.0.0-sources.jar +org.apache.camel/java-sources/camel-cxf-1.0.0-sources.jar +org.apache.camel/java-sources/camel-core-1.0.0-sources.jar +org.apache.camel/java-sources/camel-example-jms-file-1.0.0-sources.jar +org.apache.camel/java-sources/camel-ftp-1.0.0-sources.jar +org.apache.camel/java-sources/camel-example-spring-1.0.0-sources.jar +org.apache.camel/java-sources/camel-http-1.0.0-sources.jar +org.apache.camel/java-sources/camel-irc-1.0.0-sources.jar +org.apache.camel/java-sources/camel-jaxb-1.0.0-sources.jar +org.apache.camel/java-sources/camel-jbi-1.0.0-sources.jar +org.apache.camel/java-sources/camel-jms-1.0.0-sources.jar +org.apache.camel/java-sources/camel-josql-1.0.0-sources.jar +org.apache.camel/java-sources/camel-jpa-1.0.0-sources.jar +org.apache.camel/java-sources/camel-mail-1.0.0-sources.jar +org.apache.camel/java-sources/camel-maven-plugin-1.0.0-sources.jar +org.apache.camel/java-sources/camel-rmi-1.0.0-sources.jar +org.apache.camel/java-sources/camel-mina-1.0.0-sources.jar +org.apache.camel/java-sources/camel-quartz-1.0.0-sources.jar +org.apache.camel/java-sources/camel-router-1.0.0-sources.jar +org.apache.camel/java-sources/camel-saxon-1.0.0-sources.jar +org.apache.camel/java-sources/camel-script-1.0.0-sources.jar +org.apache.camel/java-sources/camel-spring-1.0.0-sources.jar +org.apache.camel/java-sources/camel-xmpp-1.0.0-sources.jar +org.apache.camel/java-sources/maven-html-to-docbook-1.0.0-sources.jar +org.apache.camel/java-sources/apache-camel-1.1.0-sources.jar +org.apache.camel/java-sources/camel-activemq-1.1.0-sources.jar +org.apache.camel/java-sources/camel-bam-1.1.0-sources.jar +org.apache.camel/java-sources/camel-core-1.1.0-sources.jar +org.apache.camel/java-sources/camel-cxf-1.1.0-sources.jar +org.apache.camel/java-sources/camel-example-bam-1.1.0-sources.jar +org.apache.camel/java-sources/camel-ftp-1.1.0-sources.jar +org.apache.camel/java-sources/camel-example-etl-1.1.0-sources.jar +org.apache.camel/java-sources/camel-example-jms-file-1.1.0-sources.jar +org.apache.camel/java-sources/camel-example-spring-1.1.0-sources.jar +org.apache.camel/java-sources/camel-http-1.1.0-sources.jar +org.apache.camel/java-sources/camel-irc-1.1.0-sources.jar +org.apache.camel/java-sources/camel-maven-plugin-1.1.0-sources.jar +org.apache.camel/java-sources/camel-jaxb-1.1.0-sources.jar +org.apache.camel/java-sources/camel-jing-1.1.0-sources.jar +org.apache.camel/java-sources/camel-jms-1.1.0-sources.jar +org.apache.camel/java-sources/camel-josql-1.1.0-sources.jar +org.apache.camel/java-sources/camel-jpa-1.1.0-sources.jar +org.apache.camel/java-sources/camel-juel-1.1.0-sources.jar +org.apache.camel/java-sources/camel-mail-1.1.0-sources.jar +org.apache.camel/java-sources/camel-mina-1.1.0-sources.jar +org.apache.camel/java-sources/camel-msv-1.1.0-sources.jar +org.apache.camel/java-sources/camel-ognl-1.1.0-sources.jar +org.apache.camel/java-sources/camel-rmi-1.1.0-sources.jar +org.apache.camel/java-sources/camel-quartz-1.1.0-sources.jar +org.apache.camel/java-sources/camel-router-1.1.0-sources.jar +org.apache.camel/java-sources/camel-saxon-1.1.0-sources.jar +org.apache.camel/java-sources/camel-script-1.1.0-sources.jar +org.apache.camel/java-sources/camel-spring-1.1.0-sources.jar +org.apache.camel/java-sources/camel-xmpp-1.1.0-sources.jar +org.apache.camel/java-sources/maven-html-to-docbook-1.1.0-sources.jar +org.apache.camel/maven-plugins/camel-maven-plugin-1.0.0.jar +org.apache.camel/maven-plugins/maven-html-to-docbook-1.0.0.jar +org.apache.camel/maven-plugins/camel-maven-plugin-1.1.0.jar +org.apache.camel/maven-plugins/maven-html-to-docbook-1.1.0.jar +org.apache.camel/jars/apache-camel-1.0.0.jar +org.apache.camel/jars/camel-activemq-1.0.0.jar +org.apache.camel/jars/camel-example-jms-file-1.0.0.jar +org.apache.camel/jars/camel-bam-1.0.0.jar +org.apache.camel/jars/camel-core-1.0.0-tests.jar +org.apache.camel/jars/camel-core-1.0.0.jar +org.apache.camel/jars/camel-cxf-1.0.0.jar +org.apache.camel/jars/camel-example-spring-1.0.0.jar +org.apache.camel/jars/camel-ftp-1.0.0.jar +org.apache.camel/jars/camel-http-1.0.0.jar +org.apache.camel/jars/camel-irc-1.0.0.jar +org.apache.camel/jars/camel-jaxb-1.0.0.jar +org.apache.camel/jars/camel-jbi-1.0.0.jar +org.apache.camel/jars/camel-jms-1.0.0.jar +org.apache.camel/jars/camel-josql-1.0.0.jar +org.apache.camel/jars/camel-jpa-1.0.0.jar +org.apache.camel/jars/camel-mail-1.0.0.jar +org.apache.camel/jars/camel-mina-1.0.0.jar +org.apache.camel/jars/camel-quartz-1.0.0.jar +org.apache.camel/jars/camel-rmi-1.0.0.jar +org.apache.camel/jars/camel-router-1.0.0.jar +org.apache.camel/jars/camel-saxon-1.0.0.jar +org.apache.camel/jars/camel-script-1.0.0.jar +org.apache.camel/jars/camel-spring-1.0.0-tests.jar +org.apache.camel/jars/camel-spring-1.0.0.jar +org.apache.camel/jars/camel-xmpp-1.0.0.jar +org.apache.camel/jars/apache-camel-1.1.0.jar +org.apache.camel/jars/camel-activemq-1.1.0.jar +org.apache.camel/jars/camel-bam-1.1.0.jar +org.apache.camel/jars/camel-core-1.1.0-tests.jar +org.apache.camel/jars/camel-core-1.1.0.jar +org.apache.camel/jars/camel-cxf-1.1.0.jar +org.apache.camel/jars/camel-example-bam-1.1.0.jar +org.apache.camel/jars/camel-example-etl-1.1.0.jar +org.apache.camel/jars/camel-example-jms-file-1.1.0.jar +org.apache.camel/jars/camel-ftp-1.1.0.jar +org.apache.camel/jars/camel-example-spring-1.1.0.jar +org.apache.camel/jars/camel-http-1.1.0.jar +org.apache.camel/jars/camel-irc-1.1.0.jar +org.apache.camel/jars/camel-jaxb-1.1.0.jar +org.apache.camel/jars/camel-jing-1.1.0.jar +org.apache.camel/jars/camel-jms-1.1.0.jar +org.apache.camel/jars/camel-josql-1.1.0.jar +org.apache.camel/jars/camel-jpa-1.1.0.jar +org.apache.camel/jars/camel-juel-1.1.0.jar +org.apache.camel/jars/camel-mail-1.1.0.jar +org.apache.camel/jars/camel-mina-1.1.0.jar +org.apache.camel/jars/camel-msv-1.1.0.jar +org.apache.camel/jars/camel-ognl-1.1.0.jar +org.apache.camel/jars/camel-quartz-1.1.0.jar +org.apache.camel/jars/camel-rmi-1.1.0.jar +org.apache.camel/jars/camel-router-1.1.0.jar +org.apache.camel/jars/camel-saxon-1.1.0.jar +org.apache.camel/jars/camel-script-1.1.0.jar +org.apache.camel/jars/camel-spring-1.1.0-tests.jar +org.apache.camel/jars/camel-spring-1.1.0.jar +org.apache.camel/jars/camel-xmpp-1.1.0.jar +org.apache.camel/tar.gzs/apache-camel-1.0.0-src.tar.gz +org.apache.camel/tar.gzs/apache-camel-1.0.0.tar.gz +org.apache.camel/tar.gzs/apache-camel-1.1.0-src.tar.gz +org.apache.camel/tar.gzs/apache-camel-1.1.0.tar.gz +org.apache.camel/xsds/camel-spring-1.0.0.xsd +org.apache.camel/xsds/camel-spring-1.1.0.xsd +org.apache.camel/zips/apache-camel-1.0.0-src.zip +org.apache.camel/zips/apache-camel-1.0.0.zip +org.apache.camel/zips/apache-camel-1.1.0-src.zip +org.apache.camel/zips/apache-camel-1.1.0.zip +org.apache.xmlbeans/jars/xmlbeans-2.3.0.jar +org.apache.xmlbeans/jars/xmlbeans-xmlpublic-2.3.0.jar +org.apache.xmlbeans/jars/xmlbeans-qname-2.3.0.jar +org.apache.xmlbeans/jars/xmlbeans-2.2.0.jar +org.apache.xmlbeans/jars/xmlbeans-xmlpublic-2.2.0.jar +org.apache.xmlbeans/jars/xmlbeans-xpath-2.3.0.jar +org.apache.xmlbeans/jars/xmlbeans-xpath-2.2.0.jar +org.apache.xmlbeans/poms/xmlbeans-2.2.0.pom +org.apache.xmlbeans/poms/xmlbeans-2.3.0.pom +org.apache.xmlbeans/poms/xmlbeans-xpath-2.3.0.pom +org.apache.xmlbeans/poms/xmlbeans-xmlpublic-2.2.0.pom +org.apache.xmlbeans/poms/xmlbeans-xmlpublic-2.3.0.pom +org.apache.xmlbeans/poms/xmlbeans-xpath-2.2.0.pom +org.apache.xmlbeans/poms/xmlbeans-qname-2.3.0.pom +org.apache.poi.DELETE/poms/poi-3.0-FINAL.pom diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/resolver-status.properties b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/resolver-status.properties new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/resolver-status.properties diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/scanner-archiva.xml b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/scanner-archiva.xml new file mode 100644 index 000000000..de6b2b62f --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/scanner-archiva.xml @@ -0,0 +1,109 @@ +<?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. + --> + +<configuration> + <version>3.0.0</version> + <repositoryScanning> + <fileTypes> + <fileType> + <id>artifacts</id> + <patterns> + <pattern>**/*.pom</pattern> + <pattern>**/*.jar</pattern> + <pattern>**/*.ear</pattern> + <pattern>**/*.war</pattern> + <pattern>**/*.car</pattern> + <pattern>**/*.sar</pattern> + <pattern>**/*.mar</pattern> + <pattern>**/*.rar</pattern> + <pattern>**/*.dtd</pattern> + <pattern>**/*.tld</pattern> + <pattern>**/*.tar.gz</pattern> + <pattern>**/*.tar.bz2</pattern> + <pattern>**/*.zip</pattern> + </patterns> + </fileType> + <fileType> + <id>indexable-content</id> + <patterns> + <pattern>**/*.txt</pattern> + <pattern>**/*.TXT</pattern> + <pattern>**/*.block</pattern> + <pattern>**/*.config</pattern> + <pattern>**/*.pom</pattern> + <pattern>**/*.xml</pattern> + <pattern>**/*.xsd</pattern> + <pattern>**/*.dtd</pattern> + <pattern>**/*.tld</pattern> + </patterns> + </fileType> + <fileType> + <id>auto-remove</id> + <patterns> + <pattern>**/*.bak</pattern> + <pattern>**/*~</pattern> + <pattern>**/*-</pattern> + </patterns> + </fileType> + <fileType> + <id>ignored</id> + <patterns> + <pattern>**/.htaccess</pattern> + <pattern>**/KEYS</pattern> + <pattern>**/*.rb</pattern> + <pattern>**/*.sh</pattern> + <pattern>**/.svn/**</pattern> + <pattern>**/.DAV/**</pattern> + </patterns> + </fileType> + </fileTypes> + <knownContentConsumers> + <knownContentConsumer>update-db-artifact</knownContentConsumer> + <knownContentConsumer>create-missing-checksums</knownContentConsumer> + <knownContentConsumer>update-db-repository-metadata</knownContentConsumer> + <knownContentConsumer>validate-checksum</knownContentConsumer> + <knownContentConsumer>validate-signature</knownContentConsumer> + <knownContentConsumer>index-content</knownContentConsumer> + <knownContentConsumer>auto-remove</knownContentConsumer> + <knownContentConsumer>auto-rename</knownContentConsumer> + </knownContentConsumers> + <invalidContentConsumers> + <invalidContentConsumer>update-db-bad-content</invalidContentConsumer> + </invalidContentConsumers> + </repositoryScanning> + + <databaseScanning> + <cronExpression>0 0 * * * ?</cronExpression> + <unprocessedConsumers> + <unprocessedConsumer>index-artifact</unprocessedConsumer> + <unprocessedConsumer>update-db-project</unprocessedConsumer> + <unprocessedConsumer>validate-repository-metadata</unprocessedConsumer> + <unprocessedConsumer>index-archive-toc</unprocessedConsumer> + <unprocessedConsumer>update-db-bytecode-stats</unprocessedConsumer> + <unprocessedConsumer>index-public-methods</unprocessedConsumer> + </unprocessedConsumers> + <cleanupConsumers> + <cleanupConsumer>not-present-remove-db-artifact</cleanupConsumer> + <cleanupConsumer>not-present-remove-db-project</cleanupConsumer> + <cleanupConsumer>not-present-remove-indexed</cleanupConsumer> + </cleanupConsumers> + </databaseScanning> + +</configuration> diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/spring-context-metadata-tools-test.xml b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/spring-context-metadata-tools-test.xml new file mode 100644 index 000000000..b320fa6a5 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/spring-context-metadata-tools-test.xml @@ -0,0 +1,32 @@ +<?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" + xsi:schemaLocation="http://www.springframework.org/schema/beans + http://www.springframework.org/schema/beans/spring-beans-3.0.xsd" + default-lazy-init="true"> + + <bean name="archivaConfiguration#mock" class="org.apache.archiva.metadata.repository.storage.maven2.conf.MockConfiguration"/> + <alias name="archivaConfiguration#mock" alias="archivaConfiguration#default"/> + <bean name="metadataTools#test" class="org.apache.archiva.repository.metadata.MetadataTools"> + <property name="configuration" ref="archivaConfiguration#mock"/> + </bean> +</beans>
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/spring-context-no-mock-conf.xml b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/spring-context-no-mock-conf.xml new file mode 100644 index 000000000..b5de647ad --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/spring-context-no-mock-conf.xml @@ -0,0 +1,34 @@ +<?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"> + + <context:annotation-config/> + <context:component-scan base-package="org.apache.archiva.metadata.repository.storage.maven2.conf,org.apache.archiva.repository.content.maven2"/> + + + +</beans>
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/spring-context-repo-request-test.xml b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/spring-context-repo-request-test.xml new file mode 100644 index 000000000..3f28158ae --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/spring-context-repo-request-test.xml @@ -0,0 +1,51 @@ +<?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"> + + <context:property-placeholder system-properties-mode="OVERRIDE"/> + <context:component-scan base-package="org.apache.archiva.repository.content.maven2" /> + <bean name="archivaConfiguration#repo-request-test" class="org.apache.archiva.configuration.DefaultArchivaConfiguration"> + <property name="registry" ref="registry#configured"/> + </bean> + + <alias name="archivaConfiguration#repo-request-test" alias="archivaConfiguration#default"/> + <alias name="archivaConfiguration#repo-request-test" alias="archivaConfiguration"/> + + <bean name="registry#configured" class="org.apache.archiva.redback.components.registry.commons.CommonsConfigurationRegistry"> + <property name="properties"> + <value> + <![CDATA[ + <configuration> + <system/> + <xml fileName="${basedir}/src/test/resources/scanner-archiva.xml" + config-name="org.apache.archiva" config-at="org.apache.archiva"/> + </configuration> + ]]> + </value> + </property> + </bean> +</beans>
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/spring-context-storage.xml b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/spring-context-storage.xml new file mode 100644 index 000000000..f88f88fc3 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/spring-context-storage.xml @@ -0,0 +1,63 @@ +<?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:annotation-config/> + <context:component-scan base-package="org.apache.archiva.policies.urlcache,org.apache.archiva.proxy,org.apache.archiva.proxy.maven,org.apache.archiva.indexer,org.apache.maven.index,org.apache.archiva.repository,org.apache.archiva.configuration,org.apache.archiva.metadata.repository,org.apache.archiva.repository.index.mock"/> + + + <bean name="archivaConfiguration#test" class="org.apache.archiva.metadata.repository.storage.maven2.conf.MockConfiguration"/> + <alias name="archivaConfiguration#test" alias="archivaConfiguration#default"/> + <alias name="archivaConfiguration#test" alias="archivaConfiguration"/> + + <alias name="metadataResolver#test" alias="metadataResolver#default"/> + + <alias name="archivaTaskScheduler#repositoryMock" alias="archivaTaskScheduler#repository" /> + + <bean name="scheduler" class="org.apache.archiva.redback.components.scheduler.DefaultScheduler"> + <property name="properties"> + <props> + <prop key="org.quartz.scheduler.instanceName">scheduler1</prop> + <prop key="org.quartz.threadPool.class">org.quartz.simpl.SimpleThreadPool</prop> + <prop key="org.quartz.threadPool.threadCount">1</prop> + <prop key="org.quartz.threadPool.threadPriority">4</prop> + <prop key="org.quartz.jobStore.class">org.quartz.simpl.RAMJobStore</prop> + </props> + </property> + </bean> + + <bean name="metadataTools#default" class="org.apache.archiva.repository.metadata.MetadataTools"> + <property name="configuration" ref="archivaConfiguration#default"/> + </bean> + + <bean name="filetypes" class="org.apache.archiva.configuration.FileTypes"> + <property name="archivaConfiguration" ref="archivaConfiguration#default"/> + </bean> + + +</beans>
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/spring-context.xml b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/spring-context.xml new file mode 100644 index 000000000..85fa73c32 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/spring-context.xml @@ -0,0 +1,64 @@ +<?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:annotation-config/> + <context:component-scan base-package="org.apache.archiva.repository,org.apache.archiva.configuration,org.apache.archiva.metadata.repository,org.apache.archiva.repository.index.mock"/> + + + <bean name="archivaConfiguration#test" class="org.apache.archiva.configuration.DefaultArchivaConfiguration"> + </bean> + <alias name="archivaConfiguration#test" alias="archivaConfiguration#default"/> + <alias name="archivaConfiguration#test" alias="archivaConfiguration"/> + + <alias name="metadataResolver#test" alias="metadataResolver#default"/> + + <alias name="archivaTaskScheduler#repositoryMock" alias="archivaTaskScheduler#repository" /> + + <bean name="scheduler" class="org.apache.archiva.redback.components.scheduler.DefaultScheduler"> + <property name="properties"> + <props> + <prop key="org.quartz.scheduler.instanceName">scheduler1</prop> + <prop key="org.quartz.threadPool.class">org.quartz.simpl.SimpleThreadPool</prop> + <prop key="org.quartz.threadPool.threadCount">1</prop> + <prop key="org.quartz.threadPool.threadPriority">4</prop> + <prop key="org.quartz.jobStore.class">org.quartz.simpl.RAMJobStore</prop> + </props> + </property> + </bean> + + <bean name="metadataTools#default" class="org.apache.archiva.repository.metadata.MetadataTools"> + <property name="configuration" ref="archivaConfiguration#default"/> + </bean> + + <bean name="filetypes" class="org.apache.archiva.configuration.FileTypes"> + <property name="archivaConfiguration" ref="archivaConfiguration#default"/> + </bean> + + +</beans>
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/test-repo/org/apache/archiva/generic-version/1.0-SNAPSHOT/generic-version-1.0-SNAPSHOT.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/test-repo/org/apache/archiva/generic-version/1.0-SNAPSHOT/generic-version-1.0-SNAPSHOT.pom new file mode 100644 index 000000000..64ddc4d74 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/test-repo/org/apache/archiva/generic-version/1.0-SNAPSHOT/generic-version-1.0-SNAPSHOT.pom @@ -0,0 +1,9 @@ +<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>generic-version</artifactId> + <version>1.0-SNAPSHOT</version> + <name>Generic Snapshot Version</name> + <packaging>pom</packaging> +</project>
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/test-repo/org/apache/archiva/released-version/1.0/released-version-1.0.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/test-repo/org/apache/archiva/released-version/1.0/released-version-1.0.pom new file mode 100644 index 000000000..1a7f85e65 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/test-repo/org/apache/archiva/released-version/1.0/released-version-1.0.pom @@ -0,0 +1,9 @@ +<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>released-version</artifactId> + <version>1.0</version> + <name>Released Version</name> + <packaging>pom</packaging> +</project>
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/test-repo/org/apache/archiva/unique-version/1.0-SNAPSHOT/unique-version-1.0-20090807.070903-1.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/test-repo/org/apache/archiva/unique-version/1.0-SNAPSHOT/unique-version-1.0-20090807.070903-1.pom new file mode 100644 index 000000000..4ccc67759 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/test-repo/org/apache/archiva/unique-version/1.0-SNAPSHOT/unique-version-1.0-20090807.070903-1.pom @@ -0,0 +1,9 @@ +<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>unique-version</artifactId> + <version>1.0-SNAPSHOT</version> + <name>Unique Version Snapshot - Build 1</name> + <packaging>pom</packaging> +</project>
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/test-repo/org/apache/archiva/unique-version/1.0-SNAPSHOT/unique-version-1.0-20090808.051902-2.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/test-repo/org/apache/archiva/unique-version/1.0-SNAPSHOT/unique-version-1.0-20090808.051902-2.pom new file mode 100644 index 000000000..2662a0ea8 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/test-repo/org/apache/archiva/unique-version/1.0-SNAPSHOT/unique-version-1.0-20090808.051902-2.pom @@ -0,0 +1,9 @@ +<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>unique-version</artifactId> + <version>1.0-SNAPSHOT</version> + <name>Unique Version Snapshot - Build 2</name> + <packaging>pom</packaging> +</project>
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/test-repo/org/apache/archiva/unique-version/1.0-SNAPSHOT/unique-version-1.0-20090808.081025-3.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/test-repo/org/apache/archiva/unique-version/1.0-SNAPSHOT/unique-version-1.0-20090808.081025-3.pom new file mode 100644 index 000000000..597e65408 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/test-repo/org/apache/archiva/unique-version/1.0-SNAPSHOT/unique-version-1.0-20090808.081025-3.pom @@ -0,0 +1,9 @@ +<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>unique-version</artifactId> + <version>1.0-SNAPSHOT</version> + <name>Unique Version Snapshot - Build 3</name> + <packaging>pom</packaging> +</project>
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/test01.properties b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/test01.properties new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/test01.properties diff --git a/archiva-modules/archiva-maven/archiva-maven-scheduler/pom.xml b/archiva-modules/archiva-maven/archiva-maven-scheduler/pom.xml new file mode 100644 index 000000000..52763e1a9 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-scheduler/pom.xml @@ -0,0 +1,186 @@ +<?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/xsd/maven-4.0.0.xsd"> + + <modelVersion>4.0.0</modelVersion> + + <parent> + <artifactId>archiva-maven</artifactId> + <groupId>org.apache.archiva.maven</groupId> + <version>3.0.0-SNAPSHOT</version> + </parent> + + + <properties> + <site.staging.base>${project.parent.parent.basedir}</site.staging.base> + </properties> + + <artifactId>archiva-maven-scheduler</artifactId> + <name>Archiva :: Maven :: Scheduler</name> + + <description>Scheduler for downloading remote Maven indexes.</description> + + <dependencies> + <dependency> + <groupId>org.springframework</groupId> + <artifactId>spring-context</artifactId> + </dependency> + <dependency> + <groupId>org.apache.archiva</groupId> + <artifactId>archiva-configuration</artifactId> + </dependency> + <dependency> + <groupId>org.apache.archiva</groupId> + <artifactId>archiva-scheduler-indexing</artifactId> + </dependency> + <dependency> + <groupId>org.apache.archiva</groupId> + <artifactId>archiva-repository-layer</artifactId> + </dependency> + <dependency> + <groupId>org.apache.archiva.maven</groupId> + <artifactId>archiva-maven-proxy</artifactId> + </dependency> + + <dependency> + <groupId>org.apache.maven.wagon</groupId> + <artifactId>wagon-http</artifactId> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>org.apache.maven.wagon</groupId> + <artifactId>wagon-http-lightweight</artifactId> + <scope>provided</scope> + </dependency> + + <!-- Test dependencies --> + <dependency> + <groupId>org.apache.archiva</groupId> + <artifactId>archiva-repository-admin-default</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.apache.archiva.maven</groupId> + <artifactId>archiva-maven-indexer</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.apache.archiva.maven</groupId> + <artifactId>archiva-maven-repository</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.apache.archiva</groupId> + <artifactId>archiva-test-utils</artifactId> + <version>${project.version}</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.eclipse.jetty</groupId> + <artifactId>jetty-server</artifactId> + <version>${jetty.version}</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.eclipse.jetty</groupId> + <artifactId>jetty-plus</artifactId> + <version>${jetty.version}</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.assertj</groupId> + <artifactId>assertj-core</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.apache.archiva</groupId> + <artifactId>archiva-mock</artifactId> + <scope>test</scope> + </dependency> + + <dependency> + <groupId>org.apache.archiva.redback</groupId> + <artifactId>redback-rbac-cached</artifactId> + <scope>test</scope> + <version>${redback.version}</version> + </dependency> + + + <dependency> + <groupId>org.apache.archiva</groupId> + <artifactId>archiva-scheduler-repository</artifactId> + <scope>test</scope> + </dependency> + + <dependency> + <groupId>org.apache.logging.log4j</groupId> + <artifactId>log4j-slf4j-impl</artifactId> + </dependency> + + <dependency> + <groupId>org.apache.archiva.redback</groupId> + <artifactId>redback-common-test-resources</artifactId> + <scope>test</scope> + </dependency> + + <dependency> + <groupId>org.ow2.asm</groupId> + <artifactId>asm</artifactId> + <scope>test</scope> + </dependency> + </dependencies> + + <build> + <pluginManagement> + <plugins> + <plugin> + <groupId>org.apache.rat</groupId> + <artifactId>apache-rat-plugin</artifactId> + <configuration> + <excludes> + <exclude>src/test/index-updates/nexus-maven-repository-index.properties</exclude> + </excludes> + </configuration> + </plugin> + </plugins> + </pluginManagement> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-surefire-plugin</artifactId> + <configuration> + <systemPropertyVariables> + <appserver.base>${project.build.directory}/appserver-base</appserver.base> + <plexus.home>${project.build.directory}/appserver-base</plexus.home> + <derby.system.home>${project.build.directory}/appserver-base</derby.system.home> + <redback.jdbc.url>${redbackTestJdbcUrl}</redback.jdbc.url> + <redback.jdbc.driver.name>${redbackTestJdbcDriver}</redback.jdbc.driver.name> + <basedir>${basedir}</basedir> + <archiva.repositorySessionFactory.id>mock</archiva.repositorySessionFactory.id> + <openjpa.Log>${openjpa.Log}</openjpa.Log> + </systemPropertyVariables> + </configuration> + </plugin> + </plugins> + </build> + +</project> diff --git a/archiva-modules/archiva-maven/archiva-maven-scheduler/src/main/java/org/apache/archiva/scheduler/indexing/maven/ArchivaIndexingTaskExecutor.java b/archiva-modules/archiva-maven/archiva-maven-scheduler/src/main/java/org/apache/archiva/scheduler/indexing/maven/ArchivaIndexingTaskExecutor.java new file mode 100644 index 000000000..8192cce2b --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-scheduler/src/main/java/org/apache/archiva/scheduler/indexing/maven/ArchivaIndexingTaskExecutor.java @@ -0,0 +1,302 @@ +package org.apache.archiva.scheduler.indexing.maven; + +/* + * 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 Li + * cense 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.archiva.indexer.ArchivaIndexingContext; +import org.apache.archiva.indexer.UnsupportedBaseContextException; +import org.apache.archiva.redback.components.taskqueue.Task; +import org.apache.archiva.redback.components.taskqueue.execution.TaskExecutionException; +import org.apache.archiva.redback.components.taskqueue.execution.TaskExecutor; +import org.apache.archiva.repository.ManagedRepository; +import org.apache.archiva.repository.features.IndexCreationFeature; +import org.apache.archiva.scheduler.indexing.ArtifactIndexingTask; +import org.apache.maven.index.ArtifactContext; +import org.apache.maven.index.ArtifactContextProducer; +import org.apache.maven.index.DefaultScannerListener; +import org.apache.maven.index.FlatSearchRequest; +import org.apache.maven.index.FlatSearchResponse; +import org.apache.maven.index.Indexer; +import org.apache.maven.index.IndexerEngine; +import org.apache.maven.index.MAVEN; +import org.apache.maven.index.Scanner; +import org.apache.maven.index.ScanningRequest; +import org.apache.maven.index.ScanningResult; +import org.apache.maven.index.context.IndexingContext; +import org.apache.maven.index.expr.SourcedSearchExpression; +import org.apache.maven.index.packer.IndexPacker; +import org.apache.maven.index.packer.IndexPackingRequest; +import org.apache.maven.index_shaded.lucene.search.BooleanClause; +import org.apache.maven.index_shaded.lucene.search.BooleanQuery; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; + +import javax.inject.Inject; +import java.io.IOException; +import java.nio.file.Path; + +/** + * ArchivaIndexingTaskExecutor Executes all indexing tasks. Adding, updating and removing artifacts from the index are + * all performed by this executor. Add and update artifact in index tasks are added in the indexing task queue by the + * NexusIndexerConsumer while remove artifact from index tasks are added by the LuceneCleanupRemoveIndexedConsumer. + */ +@Service( "taskExecutor#indexing" ) +public class ArchivaIndexingTaskExecutor + implements TaskExecutor +{ + private Logger log = LoggerFactory.getLogger( ArchivaIndexingTaskExecutor.class ); + + @Inject + private IndexPacker indexPacker; + + @Inject + private ArtifactContextProducer artifactContextProducer; + + @Inject + private Indexer indexer; + + @Inject + private Scanner scanner; + + @Inject + IndexerEngine indexerEngine; + + /** + * depending on current {@link Task} you have. + * If {@link org.apache.archiva.scheduler.indexing.ArtifactIndexingTask.Action#FINISH} && isExecuteOnEntireRepo: + * repository will be scanned. + * + * @param task + * @throws TaskExecutionException + */ + @Override + public void executeTask( Task task ) + throws TaskExecutionException + { + ArtifactIndexingTask indexingTask = (ArtifactIndexingTask) task; + + ManagedRepository repository = indexingTask.getRepository( ); + ArchivaIndexingContext archivaContext = indexingTask.getContext( ); + IndexingContext context = null; + try + { + context = archivaContext.getBaseContext( IndexingContext.class ); + } + catch ( UnsupportedBaseContextException e ) + { + throw new TaskExecutionException( "Bad repository type.", e ); + } + + if ( ArtifactIndexingTask.Action.FINISH.equals( indexingTask.getAction( ) ) + && indexingTask.isExecuteOnEntireRepo( ) ) + { + long start = System.currentTimeMillis( ); + try + { + context.updateTimestamp( ); + DefaultScannerListener listener = new DefaultScannerListener( context, indexerEngine, true, null ); + ScanningRequest request = new ScanningRequest( context, listener ); + ScanningResult result = scanner.scan( request ); + if ( result.hasExceptions( ) ) + { + log.error( "Exceptions occured during index scan of " + context.getId( ) ); + result.getExceptions( ).stream( ).map( e -> e.getMessage( ) ).distinct( ).limit( 5 ).forEach( + s -> log.error( "Message: " + s ) + ); + } + } + catch ( IOException e ) + { + log.error( "Error during context scan {}: {}", context.getId( ), context.getIndexDirectory( ) ); + } + long end = System.currentTimeMillis( ); + log.info( "indexed maven repository: {}, onlyUpdate: {}, time {} ms", repository.getId( ), + indexingTask.isOnlyUpdate( ), ( end - start ) ); + log.debug( "Finishing indexing task on repo: {}", repository.getId( ) ); + finishIndexingTask( indexingTask, repository, context ); + } + else + { + // create context if not a repo scan request + if ( !indexingTask.isExecuteOnEntireRepo( ) ) + { + try + { + log.debug( "Creating indexing context on resource: {}", // + ( indexingTask.getResourceFile( ) == null + ? "none" + : indexingTask.getResourceFile( ) ) ); + archivaContext = repository.getIndexingContext( ); + context = archivaContext.getBaseContext( IndexingContext.class ); + } + catch ( UnsupportedBaseContextException e ) + { + log.error( "Error occurred while creating context: {}", e.getMessage( ) ); + throw new TaskExecutionException( "Error occurred while creating context: " + e.getMessage( ), e ); + } + } + + if ( context == null || context.getIndexDirectory( ) == null ) + { + throw new TaskExecutionException( "Trying to index an artifact but the context is already closed" ); + } + + try + { + Path artifactFile = indexingTask.getResourceFile( ); + if ( artifactFile == null ) + { + log.debug( "no artifact pass in indexing task so skip it" ); + } + else + { + ArtifactContext ac = artifactContextProducer.getArtifactContext( context, artifactFile.toFile( ) ); + + if ( ac != null ) + { + // MRM-1779 pom must be indexed too + // TODO make that configurable? + if ( artifactFile.getFileName( ).toString( ).endsWith( ".pom" ) ) + { + ac.getArtifactInfo( ).setFileExtension( "pom" ); + ac.getArtifactInfo( ).setPackaging( "pom" ); + ac.getArtifactInfo( ).setClassifier( "pom" ); + } + if ( indexingTask.getAction( ).equals( ArtifactIndexingTask.Action.ADD ) ) + { + //IndexSearcher s = context.getIndexSearcher(); + //String uinfo = ac.getArtifactInfo().getUinfo(); + //TopDocs d = s.search( new TermQuery( new Term( ArtifactInfo.UINFO, uinfo ) ), 1 ); + + BooleanQuery.Builder qb = new BooleanQuery.Builder(); + qb.add( indexer.constructQuery( MAVEN.GROUP_ID, new SourcedSearchExpression( + ac.getArtifactInfo( ).getGroupId( ) ) ), BooleanClause.Occur.MUST ); + qb.add( indexer.constructQuery( MAVEN.ARTIFACT_ID, new SourcedSearchExpression( + ac.getArtifactInfo( ).getArtifactId( ) ) ), BooleanClause.Occur.MUST ); + qb.add( indexer.constructQuery( MAVEN.VERSION, new SourcedSearchExpression( + ac.getArtifactInfo( ).getVersion( ) ) ), BooleanClause.Occur.MUST ); + if ( ac.getArtifactInfo( ).getClassifier( ) != null ) + { + qb.add( indexer.constructQuery( MAVEN.CLASSIFIER, new SourcedSearchExpression( + ac.getArtifactInfo( ).getClassifier( ) ) ), BooleanClause.Occur.MUST ); + } + if ( ac.getArtifactInfo( ).getPackaging( ) != null ) + { + qb.add( indexer.constructQuery( MAVEN.PACKAGING, new SourcedSearchExpression( + ac.getArtifactInfo( ).getPackaging( ) ) ), BooleanClause.Occur.MUST ); + } + FlatSearchRequest flatSearchRequest = new FlatSearchRequest( qb.build(), context ); + FlatSearchResponse flatSearchResponse = indexer.searchFlat( flatSearchRequest ); + if ( flatSearchResponse.getResults( ).isEmpty( ) ) + { + log.debug( "Adding artifact '{}' to index..", ac.getArtifactInfo( ) ); + indexerEngine.index( context, ac ); + } + else + { + log.debug( "Updating artifact '{}' in index..", ac.getArtifactInfo( ) ); + // TODO check if update exists !! + indexerEngine.update( context, ac ); + } + + context.updateTimestamp( ); + context.commit( ); + + + } + else + { + log.debug( "Removing artifact '{}' from index..", ac.getArtifactInfo( ) ); + indexerEngine.remove( context, ac ); + } + } + } + // close the context if not a repo scan request + if ( !indexingTask.isExecuteOnEntireRepo( ) ) + { + log.debug( "Finishing indexing task on resource file : {}", indexingTask.getResourceFile( ) != null + ? indexingTask.getResourceFile( ) + : " none " ); + finishIndexingTask( indexingTask, repository, context ); + } + } + catch ( IOException e ) + { + log.error( "Error occurred while executing indexing task '{}': {}", indexingTask, e.getMessage( ), + e ); + throw new TaskExecutionException( "Error occurred while executing indexing task '" + indexingTask + "'", + e ); + } + } + + } + + private void finishIndexingTask( ArtifactIndexingTask indexingTask, ManagedRepository repository, + IndexingContext context ) + throws TaskExecutionException + { + try + { + + log.debug( "Finishing indexing" ); + context.optimize( ); + + if ( repository.supportsFeature( IndexCreationFeature.class ) ) + { + IndexCreationFeature icf = repository.getFeature( IndexCreationFeature.class ).get( ); + if ( !icf.isSkipPackedIndexCreation( ) && icf.getLocalPackedIndexPath( ) != null ) + { + + log.debug( "Creating packed index from {} on {}", context.getIndexDirectoryFile( ), icf.getLocalPackedIndexPath( ) ); + IndexPackingRequest request = new IndexPackingRequest( context, // + context.acquireIndexSearcher( ).getIndexReader( ), + // + icf.getLocalPackedIndexPath( ).toFile( ) ); + + indexPacker.packIndex( request ); + context.updateTimestamp( true ); + + log.debug( "Index file packed at '{}'.", icf.getLocalPackedIndexPath( ) ); + } + else + { + log.debug( "skip packed index creation" ); + } + } + else + { + log.debug( "skip packed index creation" ); + } + } + catch ( IOException e ) + { + log.error( "Error occurred while executing indexing task '{}': {}", indexingTask, e.getMessage( ) ); + throw new TaskExecutionException( "Error occurred while executing indexing task '" + indexingTask + "'", + e ); + } + } + + public void setIndexPacker( IndexPacker indexPacker ) + { + this.indexPacker = indexPacker; + } + +} diff --git a/archiva-modules/archiva-maven/archiva-maven-scheduler/src/main/java/org/apache/archiva/scheduler/indexing/maven/DefaultDownloadRemoteIndexScheduler.java b/archiva-modules/archiva-maven/archiva-maven-scheduler/src/main/java/org/apache/archiva/scheduler/indexing/maven/DefaultDownloadRemoteIndexScheduler.java new file mode 100644 index 000000000..2496c1d81 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-scheduler/src/main/java/org/apache/archiva/scheduler/indexing/maven/DefaultDownloadRemoteIndexScheduler.java @@ -0,0 +1,211 @@ +package org.apache.archiva.scheduler.indexing.maven; +/* + * 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.archiva.proxy.ProxyRegistry; +import org.apache.archiva.proxy.model.NetworkProxy; +import org.apache.archiva.scheduler.indexing.DownloadRemoteIndexException; +import org.apache.archiva.scheduler.indexing.DownloadRemoteIndexScheduler; +import org.apache.archiva.admin.model.RepositoryAdminException; +import org.apache.archiva.configuration.ArchivaConfiguration; +import org.apache.archiva.configuration.ConfigurationEvent; +import org.apache.archiva.configuration.ConfigurationListener; +import org.apache.archiva.indexer.UnsupportedBaseContextException; +import org.apache.archiva.proxy.maven.WagonFactory; +import org.apache.archiva.repository.RepositoryRegistry; +import org.apache.archiva.repository.features.RemoteIndexFeature; +import org.apache.commons.lang.StringUtils; +import org.apache.maven.index.context.IndexingContext; +import org.apache.maven.index.packer.IndexPacker; +import org.apache.maven.index.updater.IndexUpdater; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.scheduling.TaskScheduler; +import org.springframework.scheduling.support.CronTrigger; +import org.springframework.stereotype.Service; + +import javax.annotation.PostConstruct; +import javax.inject.Inject; +import javax.inject.Named; +import java.util.Date; +import java.util.List; +import java.util.concurrent.CopyOnWriteArrayList; + +/** + * @author Olivier Lamy + * @since 1.4-M1 + */ +@Service( "downloadRemoteIndexScheduler#default" ) +public class DefaultDownloadRemoteIndexScheduler + implements ConfigurationListener, DownloadRemoteIndexScheduler +{ + + private Logger log = LoggerFactory.getLogger( getClass() ); + + @Inject + @Named( value = "taskScheduler#indexDownloadRemote" ) + private TaskScheduler taskScheduler; + + @Inject + RepositoryRegistry repositoryRegistry; + + @Inject + private ArchivaConfiguration archivaConfiguration; + + @Inject + private WagonFactory wagonFactory; + + @Inject + private IndexUpdater indexUpdater; + + @Inject + private IndexPacker indexPacker; + + @Inject + private ProxyRegistry proxyRegistry; + + // store ids about currently running remote download : updated in DownloadRemoteIndexTask + private List<String> runningRemoteDownloadIds = new CopyOnWriteArrayList<String>(); + + @PostConstruct + public void startup() + throws + DownloadRemoteIndexException, UnsupportedBaseContextException { + archivaConfiguration.addListener( this ); + // TODO add indexContexts even if null + + for ( org.apache.archiva.repository.RemoteRepository remoteRepository : repositoryRegistry.getRemoteRepositories() ) + { + String contextKey = "remote-" + remoteRepository.getId(); + IndexingContext context = remoteRepository.getIndexingContext().getBaseContext(IndexingContext.class); + if ( context == null ) + { + continue; + } + RemoteIndexFeature rif = remoteRepository.getFeature(RemoteIndexFeature.class).get(); + + + // TODO record jobs from configuration + if ( rif.isDownloadRemoteIndex() && StringUtils.isNotEmpty( + remoteRepository.getSchedulingDefinition() ) ) + { + boolean fullDownload = context.getIndexDirectoryFile().list().length == 0; + scheduleDownloadRemote( remoteRepository.getId(), false, fullDownload ); + } + } + + + } + + @Override + public void configurationEvent( ConfigurationEvent event ) + { + // TODO remove jobs and add again + } + + + @Override + public void scheduleDownloadRemote( String repositoryId, boolean now, boolean fullDownload ) + throws DownloadRemoteIndexException + { + org.apache.archiva.repository.RemoteRepository remoteRepo = repositoryRegistry.getRemoteRepository(repositoryId); + + if ( remoteRepo == null ) + { + log.warn( "ignore scheduleDownloadRemote for repo with id {} as not exists", repositoryId ); + return; + } + if (!remoteRepo.supportsFeature(RemoteIndexFeature.class)) { + log.warn("ignore scheduleDownloadRemote for repo with id {}. Does not support remote index.", repositoryId); + return; + } + RemoteIndexFeature rif = remoteRepo.getFeature(RemoteIndexFeature.class).get(); + NetworkProxy networkProxy = null; + if ( StringUtils.isNotBlank( rif.getProxyId() ) ) + { + networkProxy = proxyRegistry.getNetworkProxy( rif.getProxyId() ); + if ( networkProxy == null ) + { + log.warn( + "your remote repository is configured to download remote index trought a proxy we cannot find id:{}", + rif.getProxyId() ); + } + } + + DownloadRemoteIndexTaskRequest downloadRemoteIndexTaskRequest = new DownloadRemoteIndexTaskRequest() // + .setRemoteRepository( remoteRepo ) // + .setNetworkProxy( networkProxy ) // + .setFullDownload( fullDownload ) // + .setWagonFactory( wagonFactory ) // + .setIndexUpdater( indexUpdater ) // + .setIndexPacker( this.indexPacker ); + + if ( now ) + { + log.info( "schedule download remote index for repository {}", remoteRepo.getId() ); + // do it now + taskScheduler.schedule( + new DownloadRemoteIndexTask( downloadRemoteIndexTaskRequest, this.runningRemoteDownloadIds ), + new Date() ); + } + else + { + log.info( "schedule download remote index for repository {} with cron expression {}", + remoteRepo.getId(), remoteRepo.getSchedulingDefinition()); + try + { + CronTrigger cronTrigger = new CronTrigger( remoteRepo.getSchedulingDefinition()); + taskScheduler.schedule( + new DownloadRemoteIndexTask( downloadRemoteIndexTaskRequest, this.runningRemoteDownloadIds ), + cronTrigger ); + } + catch ( IllegalArgumentException e ) + { + log.warn( "Unable to schedule remote index download: {}", e.getLocalizedMessage() ); + } + + if ( rif.isDownloadRemoteIndexOnStartup() ) + { + log.info( + "remote repository {} configured with downloadRemoteIndexOnStartup schedule now a download", + remoteRepo.getId() ); + taskScheduler.schedule( + new DownloadRemoteIndexTask( downloadRemoteIndexTaskRequest, this.runningRemoteDownloadIds ), + new Date() ); + } + } + + } + + public TaskScheduler getTaskScheduler() + { + return taskScheduler; + } + + public void setTaskScheduler( TaskScheduler taskScheduler ) + { + this.taskScheduler = taskScheduler; + } + + @Override + public List<String> getRunningRemoteDownloadIds() + { + return runningRemoteDownloadIds; + } +} diff --git a/archiva-modules/archiva-maven/archiva-maven-scheduler/src/main/java/org/apache/archiva/scheduler/indexing/maven/DefaultIndexUpdateSideEffect.java b/archiva-modules/archiva-maven/archiva-maven-scheduler/src/main/java/org/apache/archiva/scheduler/indexing/maven/DefaultIndexUpdateSideEffect.java new file mode 100644 index 000000000..581dbb2da --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-scheduler/src/main/java/org/apache/archiva/scheduler/indexing/maven/DefaultIndexUpdateSideEffect.java @@ -0,0 +1,47 @@ +package org.apache.archiva.scheduler.indexing.maven; + +/* + * 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.index.context.IndexingContext; +import org.apache.maven.index.updater.IndexUpdateSideEffect; +import org.apache.maven.index_shaded.lucene.store.Directory; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; + +/** + * Not doing much but required at least one implementation + * + * @since 3.0.0 + */ +@Service +public class DefaultIndexUpdateSideEffect + implements IndexUpdateSideEffect +{ + private static final Logger LOGGER = LoggerFactory.getLogger( DefaultIndexUpdateSideEffect.class ); + + @Override + public void updateIndex( Directory directory, IndexingContext indexingContext, boolean b ) + { + LOGGER.info( "updating index: {} with directory: {}", // + indexingContext.getId(), // + directory.toString() ); + } +} diff --git a/archiva-modules/archiva-maven/archiva-maven-scheduler/src/main/java/org/apache/archiva/scheduler/indexing/maven/DownloadRemoteIndexTask.java b/archiva-modules/archiva-maven/archiva-maven-scheduler/src/main/java/org/apache/archiva/scheduler/indexing/maven/DownloadRemoteIndexTask.java new file mode 100644 index 000000000..3f794019e --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-scheduler/src/main/java/org/apache/archiva/scheduler/indexing/maven/DownloadRemoteIndexTask.java @@ -0,0 +1,380 @@ +package org.apache.archiva.scheduler.indexing.maven; +/* + * 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.archiva.proxy.maven.WagonFactory; +import org.apache.archiva.proxy.maven.WagonFactoryRequest; +import org.apache.archiva.proxy.model.NetworkProxy; +import org.apache.archiva.repository.PasswordCredentials; +import org.apache.archiva.repository.RemoteRepository; +import org.apache.archiva.repository.RepositoryException; +import org.apache.archiva.repository.RepositoryType; +import org.apache.archiva.repository.features.RemoteIndexFeature; +import org.apache.commons.lang.time.StopWatch; +import org.apache.maven.index.context.IndexingContext; +import org.apache.maven.index.updater.IndexUpdateRequest; +import org.apache.maven.index.updater.IndexUpdateResult; +import org.apache.maven.index.updater.IndexUpdater; +import org.apache.maven.index.updater.ResourceFetcher; +import org.apache.maven.index_shaded.lucene.index.IndexNotFoundException; +import org.apache.maven.wagon.ResourceDoesNotExistException; +import org.apache.maven.wagon.StreamWagon; +import org.apache.maven.wagon.TransferFailedException; +import org.apache.maven.wagon.Wagon; +import org.apache.maven.wagon.authentication.AuthenticationInfo; +import org.apache.maven.wagon.authorization.AuthorizationException; +import org.apache.maven.wagon.events.TransferEvent; +import org.apache.maven.wagon.events.TransferListener; +import org.apache.maven.wagon.proxy.ProxyInfo; +import org.apache.maven.wagon.repository.Repository; +import org.apache.maven.wagon.shared.http.AbstractHttpClientWagon; +import org.apache.maven.wagon.shared.http.HttpConfiguration; +import org.apache.maven.wagon.shared.http.HttpMethodConfiguration; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.InputStream; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.List; +import java.util.Map; + +/** + * @author Olivier Lamy + * @since 1.4-M1 + */ +public class DownloadRemoteIndexTask + implements Runnable +{ + private Logger log = LoggerFactory.getLogger( getClass() ); + + private RemoteRepository remoteRepository; + + private WagonFactory wagonFactory; + + private NetworkProxy networkProxy; + + private boolean fullDownload; + + private List<String> runningRemoteDownloadIds; + + private IndexUpdater indexUpdater; + + + public DownloadRemoteIndexTask( DownloadRemoteIndexTaskRequest downloadRemoteIndexTaskRequest, + List<String> runningRemoteDownloadIds ) + { + this.remoteRepository = downloadRemoteIndexTaskRequest.getRemoteRepository(); + this.wagonFactory = downloadRemoteIndexTaskRequest.getWagonFactory(); + this.networkProxy = downloadRemoteIndexTaskRequest.getNetworkProxy(); + this.fullDownload = downloadRemoteIndexTaskRequest.isFullDownload(); + this.runningRemoteDownloadIds = runningRemoteDownloadIds; + this.indexUpdater = downloadRemoteIndexTaskRequest.getIndexUpdater(); + } + + @Override + public void run() + { + + // so short lock : not sure we need it + synchronized ( this.runningRemoteDownloadIds ) + { + if ( this.runningRemoteDownloadIds.contains( this.remoteRepository.getId() ) ) + { + // skip it as it's running + log.info( "skip download index remote for repo {} it's already running", + this.remoteRepository.getId() ); + return; + } + this.runningRemoteDownloadIds.add( this.remoteRepository.getId() ); + } + Path tempIndexDirectory = null; + StopWatch stopWatch = new StopWatch(); + stopWatch.start(); + try + { + log.info( "start download remote index for remote repository {}", this.remoteRepository.getId() ); + if (this.remoteRepository.getIndexingContext()==null) { + throw new IndexNotFoundException("No index context set for repository "+remoteRepository.getId()); + } + if (this.remoteRepository.getType()!= RepositoryType.MAVEN) { + throw new RepositoryException("Bad repository type"); + } + if (!this.remoteRepository.supportsFeature(RemoteIndexFeature.class)) { + throw new RepositoryException("Repository does not support RemotIndexFeature "+remoteRepository.getId()); + } + RemoteIndexFeature rif = this.remoteRepository.getFeature(RemoteIndexFeature.class).get(); + IndexingContext indexingContext = this.remoteRepository.getIndexingContext().getBaseContext(IndexingContext.class); + // create a temp directory to download files + tempIndexDirectory = Paths.get(indexingContext.getIndexDirectoryFile().getParent(), ".tmpIndex" ); + Path indexCacheDirectory = Paths.get( indexingContext.getIndexDirectoryFile().getParent(), ".indexCache" ); + Files.createDirectories( indexCacheDirectory ); + if ( Files.exists(tempIndexDirectory) ) + { + org.apache.archiva.common.utils.FileUtils.deleteDirectory( tempIndexDirectory ); + } + Files.createDirectories( tempIndexDirectory ); + tempIndexDirectory.toFile().deleteOnExit(); + String baseIndexUrl = indexingContext.getIndexUpdateUrl(); + + String wagonProtocol = this.remoteRepository.getLocation().getScheme(); + + final StreamWagon wagon = (StreamWagon) wagonFactory.getWagon( + new WagonFactoryRequest( wagonProtocol, this.remoteRepository.getExtraHeaders() ).networkProxy( + this.networkProxy ) + ); + // FIXME olamy having 2 config values + wagon.setReadTimeout( (int)rif.getDownloadTimeout().toMillis()); + wagon.setTimeout( (int)remoteRepository.getTimeout().toMillis()); + + if ( wagon instanceof AbstractHttpClientWagon ) + { + HttpConfiguration httpConfiguration = new HttpConfiguration(); + HttpMethodConfiguration httpMethodConfiguration = new HttpMethodConfiguration(); + httpMethodConfiguration.setUsePreemptive( true ); + httpMethodConfiguration.setReadTimeout( (int)rif.getDownloadTimeout().toMillis() ); + httpConfiguration.setGet( httpMethodConfiguration ); + AbstractHttpClientWagon.class.cast( wagon ).setHttpConfiguration( httpConfiguration ); + } + + wagon.addTransferListener( new DownloadListener() ); + ProxyInfo proxyInfo = null; + if ( this.networkProxy != null ) + { + proxyInfo = new ProxyInfo(); + proxyInfo.setType( this.networkProxy.getProtocol() ); + proxyInfo.setHost( this.networkProxy.getHost() ); + proxyInfo.setPort( this.networkProxy.getPort() ); + proxyInfo.setUserName( this.networkProxy.getUsername() ); + proxyInfo.setPassword( this.networkProxy.getPassword() ); + } + AuthenticationInfo authenticationInfo = null; + if ( this.remoteRepository.getLoginCredentials()!=null && this.remoteRepository.getLoginCredentials() instanceof PasswordCredentials ) + { + PasswordCredentials creds = (PasswordCredentials) this.remoteRepository.getLoginCredentials(); + authenticationInfo = new AuthenticationInfo(); + authenticationInfo.setUserName( creds.getUsername()); + authenticationInfo.setPassword( new String(creds.getPassword()) ); + } + log.debug("Connection to {}, authInfo={}", this.remoteRepository.getId(), authenticationInfo); + wagon.connect( new Repository( this.remoteRepository.getId(), baseIndexUrl ), authenticationInfo, + proxyInfo ); + + Path indexDirectory = indexingContext.getIndexDirectoryFile().toPath(); + if ( !Files.exists(indexDirectory) ) + { + Files.createDirectories( indexDirectory ); + } + log.debug("Downloading index file to {}", indexDirectory); + log.debug("Index cache dir {}", indexCacheDirectory); + + ResourceFetcher resourceFetcher = + new WagonResourceFetcher( log, tempIndexDirectory, wagon, remoteRepository ); + IndexUpdateRequest request = new IndexUpdateRequest( indexingContext, resourceFetcher ); + request.setForceFullUpdate( this.fullDownload ); + request.setLocalIndexCacheDir( indexCacheDirectory.toFile() ); + + IndexUpdateResult result = this.indexUpdater.fetchAndUpdateIndex(request); + log.debug("Update result success: {}", result.isSuccessful()); + stopWatch.stop(); + log.info( "time update index from remote for repository {}: {}ms", this.remoteRepository.getId(), + ( stopWatch.getTime() ) ); + + // index packing optionnal ?? + //IndexPackingRequest indexPackingRequest = + // new IndexPackingRequest( indexingContext, indexingContext.getIndexDirectoryFile() ); + //indexPacker.packIndex( indexPackingRequest ); + indexingContext.updateTimestamp( true ); + + } + catch ( Exception e ) + { + log.error( e.getMessage(), e ); + throw new RuntimeException( e.getMessage(), e ); + } + finally + { + deleteDirectoryQuiet( tempIndexDirectory ); + this.runningRemoteDownloadIds.remove( this.remoteRepository.getId() ); + } + log.info( "end download remote index for remote repository {}", this.remoteRepository.getId() ); + } + + private void deleteDirectoryQuiet( Path f ) + { + try + { + org.apache.archiva.common.utils.FileUtils.deleteDirectory( f ); + } + catch ( IOException e ) + { + log.warn( "skip error delete {} : {}", f, e.getMessage() ); + } + } + + + private static final class DownloadListener + implements TransferListener + { + private Logger log = LoggerFactory.getLogger( getClass() ); + + private String resourceName; + + private long startTime; + + private int totalLength = 0; + + @Override + public void transferInitiated( TransferEvent transferEvent ) + { + startTime = System.currentTimeMillis(); + resourceName = transferEvent.getResource().getName(); + log.debug( "initiate transfer of {}", resourceName ); + } + + @Override + public void transferStarted( TransferEvent transferEvent ) + { + this.totalLength = 0; + resourceName = transferEvent.getResource().getName(); + log.info("Transferring: {}, {}", transferEvent.getResource().getContentLength(), transferEvent.getLocalFile().toString()); + log.info( "start transfer of {}", transferEvent.getResource().getName() ); + } + + @Override + public void transferProgress( TransferEvent transferEvent, byte[] buffer, int length ) + { + log.debug( "transfer of {} : {}/{}", transferEvent.getResource().getName(), buffer.length, length ); + this.totalLength += length; + } + + @Override + public void transferCompleted( TransferEvent transferEvent ) + { + resourceName = transferEvent.getResource().getName(); + long endTime = System.currentTimeMillis(); + log.info( "end of transfer file {}: {}b, {}ms", transferEvent.getResource().getName(), + this.totalLength, ( endTime - startTime ) ); + } + + @Override + public void transferError( TransferEvent transferEvent ) + { + log.info( "error of transfer file {}: {}", transferEvent.getResource().getName(), + transferEvent.getException().getMessage(), transferEvent.getException() ); + } + + @Override + public void debug( String message ) + { + log.debug( "transfer debug {}", message ); + } + } + + private static class WagonResourceFetcher + implements ResourceFetcher + { + + Logger log; + + Path tempIndexDirectory; + + Wagon wagon; + + RemoteRepository remoteRepository; + + private WagonResourceFetcher( Logger log, Path tempIndexDirectory, Wagon wagon, + RemoteRepository remoteRepository ) + { + this.log = log; + this.tempIndexDirectory = tempIndexDirectory; + this.wagon = wagon; + this.remoteRepository = remoteRepository; + } + + @Override + public void connect( String id, String url ) + throws IOException + { + //no op + } + + @Override + public void disconnect() + throws IOException + { + // no op + } + + @Override + public InputStream retrieve( String name ) + throws IOException, FileNotFoundException + { + try + { + log.info( "index update retrieve file, name:{}", name ); + Path file = tempIndexDirectory.resolve( name ); + Files.deleteIfExists( file ); + file.toFile().deleteOnExit(); + wagon.get( addParameters( name, this.remoteRepository ), file.toFile() ); + return Files.newInputStream( file ); + } + catch ( AuthorizationException | TransferFailedException e ) + { + throw new IOException( e.getMessage(), e ); + } + catch ( ResourceDoesNotExistException e ) + { + FileNotFoundException fnfe = new FileNotFoundException( e.getMessage() ); + fnfe.initCause( e ); + throw fnfe; + } + } + + // FIXME remove crappy copy/paste + protected String addParameters( String path, RemoteRepository remoteRepository ) + { + if ( remoteRepository.getExtraParameters().isEmpty() ) + { + return path; + } + + boolean question = false; + + StringBuilder res = new StringBuilder( path == null ? "" : path ); + + for ( Map.Entry<String, String> entry : remoteRepository.getExtraParameters().entrySet() ) + { + if ( !question ) + { + res.append( '?' ).append( entry.getKey() ).append( '=' ).append( entry.getValue() ); + } + } + + return res.toString(); + } + + } + + +} + diff --git a/archiva-modules/archiva-maven/archiva-maven-scheduler/src/main/java/org/apache/archiva/scheduler/indexing/maven/DownloadRemoteIndexTaskRequest.java b/archiva-modules/archiva-maven/archiva-maven-scheduler/src/main/java/org/apache/archiva/scheduler/indexing/maven/DownloadRemoteIndexTaskRequest.java new file mode 100644 index 000000000..784709345 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-scheduler/src/main/java/org/apache/archiva/scheduler/indexing/maven/DownloadRemoteIndexTaskRequest.java @@ -0,0 +1,116 @@ +package org.apache.archiva.scheduler.indexing.maven; +/* + * 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.archiva.proxy.maven.WagonFactory; +import org.apache.archiva.proxy.model.NetworkProxy; +import org.apache.archiva.repository.RemoteRepository; +import org.apache.maven.index.packer.IndexPacker; +import org.apache.maven.index.updater.IndexUpdater; + +/** + * @author Olivier Lamy + * @since 1.4-M1 + */ +public class DownloadRemoteIndexTaskRequest +{ + private RemoteRepository remoteRepository; + + private WagonFactory wagonFactory; + + private NetworkProxy networkProxy; + + private boolean fullDownload; + + private IndexUpdater indexUpdater; + + private IndexPacker indexPacker; + + public DownloadRemoteIndexTaskRequest() + { + // no op + } + + public RemoteRepository getRemoteRepository() + { + return remoteRepository; + } + + public DownloadRemoteIndexTaskRequest setRemoteRepository( RemoteRepository remoteRepository ) + { + this.remoteRepository = remoteRepository; + return this; + } + + + public WagonFactory getWagonFactory() + { + return wagonFactory; + } + + public DownloadRemoteIndexTaskRequest setWagonFactory( WagonFactory wagonFactory ) + { + this.wagonFactory = wagonFactory; + return this; + } + + public NetworkProxy getNetworkProxy() + { + return networkProxy; + } + + public DownloadRemoteIndexTaskRequest setNetworkProxy( NetworkProxy networkProxy ) + { + this.networkProxy = networkProxy; + return this; + } + + public boolean isFullDownload() + { + return fullDownload; + } + + public DownloadRemoteIndexTaskRequest setFullDownload( boolean fullDownload ) + { + this.fullDownload = fullDownload; + return this; + } + + public IndexUpdater getIndexUpdater() + { + return indexUpdater; + } + + public DownloadRemoteIndexTaskRequest setIndexUpdater( IndexUpdater indexUpdater ) + { + this.indexUpdater = indexUpdater; + return this; + } + + public IndexPacker getIndexPacker() + { + return indexPacker; + } + + public DownloadRemoteIndexTaskRequest setIndexPacker( IndexPacker indexPacker ) + { + this.indexPacker = indexPacker; + return this; + } +} diff --git a/archiva-modules/archiva-maven/archiva-maven-scheduler/src/main/resources/META-INF/spring-context.xml b/archiva-modules/archiva-maven/archiva-maven-scheduler/src/main/resources/META-INF/spring-context.xml new file mode 100644 index 000000000..ddb6a1592 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-scheduler/src/main/resources/META-INF/spring-context.xml @@ -0,0 +1,48 @@ +<?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. + --> +<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="false"> + + <context:annotation-config/> + <context:component-scan base-package="org.apache.archiva.scheduler.indexing,org.apache.maven.index"/> + + + + + <bean name="taskQueueExecutor#indexing" class="org.apache.archiva.redback.components.taskqueue.execution.ThreadedTaskQueueExecutor"> + <property name="executor" ref="taskExecutor#indexing"/> + <property name="queue" ref="taskQueue#indexing"/> + <property name="name" value="indexing"/> + </bean> + + <bean name="taskScheduler#indexDownloadRemote" + class="org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler"> + <property name="poolSize" value="4"/> + <property name="threadGroupName" value="indexDownloadRemote"/> + </bean> + + +</beans>
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/archiva-maven-scheduler/src/test/index-updates/nexus-maven-repository-index.gz b/archiva-modules/archiva-maven/archiva-maven-scheduler/src/test/index-updates/nexus-maven-repository-index.gz Binary files differnew file mode 100644 index 000000000..1bf73c9dc --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-scheduler/src/test/index-updates/nexus-maven-repository-index.gz diff --git a/archiva-modules/archiva-maven/archiva-maven-scheduler/src/test/index-updates/nexus-maven-repository-index.properties b/archiva-modules/archiva-maven/archiva-maven-scheduler/src/test/index-updates/nexus-maven-repository-index.properties new file mode 100644 index 000000000..1d81aaf59 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-scheduler/src/test/index-updates/nexus-maven-repository-index.properties @@ -0,0 +1,36 @@ +#Sun Sep 25 09:15:00 CEST 2011 +nexus.index.id=test-repo +nexus.index.chain-id=1316094851802 +nexus.index.timestamp=20110925071457.200 +0000 +nexus.index.incremental-19=39 +nexus.index.incremental-18=40 +nexus.index.incremental-17=41 +nexus.index.incremental-16=42 +nexus.index.incremental-15=43 +nexus.index.incremental-14=44 +nexus.index.incremental-13=45 +nexus.index.incremental-9=49 +nexus.index.incremental-12=46 +nexus.index.incremental-8=50 +nexus.index.incremental-11=47 +nexus.index.incremental-7=51 +nexus.index.incremental-10=48 +nexus.index.incremental-6=52 +nexus.index.incremental-5=53 +nexus.index.incremental-4=54 +nexus.index.incremental-3=55 +nexus.index.incremental-2=56 +nexus.index.last-incremental=58 +nexus.index.incremental-1=57 +nexus.index.incremental-0=58 +nexus.index.incremental-29=29 +nexus.index.incremental-28=30 +nexus.index.incremental-27=31 +nexus.index.incremental-26=32 +nexus.index.incremental-25=33 +nexus.index.incremental-24=34 +nexus.index.time=20110925071457.200 +0000 +nexus.index.incremental-23=35 +nexus.index.incremental-22=36 +nexus.index.incremental-21=37 +nexus.index.incremental-20=38 diff --git a/archiva-modules/archiva-maven/archiva-maven-scheduler/src/test/index-updates/nexus-maven-repository-index.zip b/archiva-modules/archiva-maven/archiva-maven-scheduler/src/test/index-updates/nexus-maven-repository-index.zip Binary files differnew file mode 100644 index 000000000..8f82a0dca --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-scheduler/src/test/index-updates/nexus-maven-repository-index.zip diff --git a/archiva-modules/archiva-maven/archiva-maven-scheduler/src/test/java/org/apache/archiva/scheduler/indexing/maven/ArchivaIndexingTaskExecutorTest.java b/archiva-modules/archiva-maven/archiva-maven-scheduler/src/test/java/org/apache/archiva/scheduler/indexing/maven/ArchivaIndexingTaskExecutorTest.java new file mode 100644 index 000000000..758568ba9 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-scheduler/src/test/java/org/apache/archiva/scheduler/indexing/maven/ArchivaIndexingTaskExecutorTest.java @@ -0,0 +1,352 @@ +package org.apache.archiva.scheduler.indexing.maven; + +/* + * 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 junit.framework.TestCase; +import org.apache.archiva.indexer.ArchivaIndexingContext; +import org.apache.archiva.indexer.UnsupportedBaseContextException; +import org.apache.archiva.repository.BasicManagedRepository; +import org.apache.archiva.repository.ManagedRepository; +import org.apache.archiva.repository.ReleaseScheme; +import org.apache.archiva.repository.RepositoryRegistry; +import org.apache.archiva.repository.features.IndexCreationFeature; +import org.apache.archiva.scheduler.indexing.ArtifactIndexingTask; +import org.apache.archiva.test.utils.ArchivaSpringJUnit4ClassRunner; +import org.apache.maven.index.ArtifactInfo; +import org.apache.maven.index.FlatSearchRequest; +import org.apache.maven.index.FlatSearchResponse; +import org.apache.maven.index.Indexer; +import org.apache.maven.index.MAVEN; +import org.apache.maven.index.context.IndexingContext; +import org.apache.maven.index.expr.SourcedSearchExpression; +import org.apache.maven.index.expr.StringSearchExpression; +import org.apache.maven.index.updater.DefaultIndexUpdater; +import org.apache.maven.index.updater.IndexUpdateRequest; +import org.apache.maven.index.updater.IndexUpdater; +import org.apache.maven.index_shaded.lucene.search.BooleanClause; +import org.apache.maven.index_shaded.lucene.search.BooleanQuery; +import org.apache.maven.index_shaded.lucene.search.IndexSearcher; +import org.apache.maven.index_shaded.lucene.search.TopDocs; +import org.assertj.core.api.Assertions; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.test.context.ContextConfiguration; + +import javax.inject.Inject; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.Set; + +/** + * ArchivaIndexingTaskExecutorTest + */ +@RunWith( ArchivaSpringJUnit4ClassRunner.class ) +@ContextConfiguration( locations = { "classpath*:/META-INF/spring-context.xml", "classpath*:/spring-context.xml" } ) +public class ArchivaIndexingTaskExecutorTest + extends TestCase +{ + @Inject + private ArchivaIndexingTaskExecutor indexingExecutor; + + @Inject + RepositoryRegistry repositoryRegistry; + + @Inject + private IndexUpdater indexUpdater; + + private ManagedRepository repo; + + @Inject + private Indexer indexer; + + @Before + @Override + public void setUp() + throws Exception + { + super.setUp(); + + Path baseDir = Paths.get(System.getProperty("basedir"), "target/test-classes").toAbsolutePath(); + BasicManagedRepository repositoryConfig = new BasicManagedRepository( "test-repo", "Test Repository", baseDir); + Path repoLocation = baseDir.resolve("test-repo" ); + repositoryConfig.setLocation(repoLocation.toUri() ); + repositoryConfig.setLayout( "default" ); + repositoryConfig.setScanned( true ); + repositoryConfig.addActiveReleaseScheme( ReleaseScheme.RELEASE ); + repositoryConfig.removeActiveReleaseScheme( ReleaseScheme.SNAPSHOT ); + repositoryRegistry.putRepository(repositoryConfig); + repo = repositoryRegistry.getManagedRepository( repositoryConfig.getId() ); + } + + @After + @Override + public void tearDown() + throws Exception + { + + repositoryRegistry.destroy(); + /* + removeIndexingContext with true cleanup files. + // delete created index in the repository + File indexDir = new File( repositoryConfig.getLocation(), ".indexer" ); + FileUtils.deleteDirectory( indexDir ); + assertFalse( indexDir.exists() ); + + indexDir = new File( repositoryConfig.getLocation(), ".index" ); + FileUtils.deleteDirectory( indexDir ); + assertFalse( indexDir.exists() ); + */ + super.tearDown(); + } + + protected IndexingContext getIndexingContext() throws UnsupportedBaseContextException { + assert repo != null; + ArchivaIndexingContext ctx = repo.getIndexingContext(); + assert ctx != null; + return ctx.getBaseContext(IndexingContext.class); + } + + @Test + public void testAddArtifactToIndex() + throws Exception + { + Path basePath = repo.getLocalPath(); + Path artifactFile = basePath.resolve( + "org/apache/archiva/archiva-index-methods-jar-test/1.0/archiva-index-methods-jar-test-1.0.jar" ); + + ArtifactIndexingTask task = + new ArtifactIndexingTask( repo, artifactFile, ArtifactIndexingTask.Action.ADD, + repo.getIndexingContext()); + + indexingExecutor.executeTask( task ); + + task = new ArtifactIndexingTask( repo, null, ArtifactIndexingTask.Action.FINISH, + repo.getIndexingContext() ); + indexingExecutor.executeTask( task ); + + BooleanQuery.Builder queryBuilder = new BooleanQuery.Builder( ); + queryBuilder.add( indexer.constructQuery( MAVEN.GROUP_ID, new StringSearchExpression( "org.apache.archiva" ) ), + BooleanClause.Occur.SHOULD ); + queryBuilder.add( + indexer.constructQuery( MAVEN.ARTIFACT_ID, new StringSearchExpression( "archiva-index-methods-jar-test" ) ), + BooleanClause.Occur.SHOULD ); + BooleanQuery q = queryBuilder.build(); + + FlatSearchRequest request = new FlatSearchRequest( q , getIndexingContext()); + FlatSearchResponse response = indexer.searchFlat( request ); + + assertTrue( Files.exists(basePath.resolve( ".indexer" )) ); + assertTrue( Files.exists(basePath.resolve(".index" )) ); + assertEquals( 1, response.getTotalHitsCount()); + + Set<ArtifactInfo> results = response.getResults(); + + ArtifactInfo artifactInfo = results.iterator().next(); + assertEquals( "org.apache.archiva", artifactInfo.getGroupId() ); + assertEquals( "archiva-index-methods-jar-test", artifactInfo.getArtifactId() ); + assertEquals( "test-repo", artifactInfo.getRepository() ); + + } + + @Test + public void testUpdateArtifactInIndex() + throws Exception + { + Path basePath = repo.getLocalPath(); + Path artifactFile = basePath.resolve( + "org/apache/archiva/archiva-index-methods-jar-test/1.0/archiva-index-methods-jar-test-1.0.jar" ); + + ArtifactIndexingTask task = + new ArtifactIndexingTask( repo, artifactFile, ArtifactIndexingTask.Action.ADD, + repo.getIndexingContext() ); + + indexingExecutor.executeTask( task ); + indexingExecutor.executeTask( task ); + + BooleanQuery.Builder qb = new BooleanQuery.Builder(); + qb.add( indexer.constructQuery( MAVEN.GROUP_ID, new StringSearchExpression( "org.apache.archiva" ) ), + BooleanClause.Occur.SHOULD ); + qb.add( + indexer.constructQuery( MAVEN.ARTIFACT_ID, new StringSearchExpression( "archiva-index-methods-jar-test" ) ), + BooleanClause.Occur.SHOULD ); + + IndexingContext ctx = getIndexingContext(); + + IndexSearcher searcher = ctx.acquireIndexSearcher(); + TopDocs topDocs = searcher.search( qb.build(), 10 ); + + //searcher.close(); + ctx.releaseIndexSearcher( searcher ); + + assertTrue( Files.exists(basePath.resolve(".indexer" )) ); + assertTrue( Files.exists(basePath.resolve(".index" )) ); + + // should only return 1 hit! + assertEquals( 1, topDocs.totalHits ); + } + + @Test + public void testRemoveArtifactFromIndex() + throws Exception + { + Path basePath = repo.getLocalPath(); + Path artifactFile = basePath.resolve( + "org/apache/archiva/archiva-index-methods-jar-test/1.0/archiva-index-methods-jar-test-1.0.jar" ); + + ArtifactIndexingTask task = + new ArtifactIndexingTask( repo, artifactFile, ArtifactIndexingTask.Action.ADD, + repo.getIndexingContext() ); + + // add artifact to index + indexingExecutor.executeTask( task ); + + BooleanQuery.Builder qb = new BooleanQuery.Builder(); + qb.add( indexer.constructQuery( MAVEN.GROUP_ID, new SourcedSearchExpression( "org.apache.archiva" ) ), + BooleanClause.Occur.SHOULD ); + //q.add( + // indexer.constructQuery( MAVEN.ARTIFACT_ID, new SourcedSearchExpression( "archiva-index-methods-jar-test" ) ), + // Occur.SHOULD ); + + IndexingContext ctx = repo.getIndexingContext( ).getBaseContext( IndexingContext.class ); + FlatSearchRequest flatSearchRequest = + new FlatSearchRequest( qb.build(), ctx ); + + FlatSearchResponse response = indexer.searchFlat( flatSearchRequest ); + + assertTrue( Files.exists(basePath.resolve(".indexer" )) ); + assertTrue( Files.exists(basePath.resolve( ".index" )) ); + + // should return 1 hit + assertEquals( 1, response.getTotalHitsCount() ); + + // remove added artifact from index + task = new ArtifactIndexingTask( repo, artifactFile, ArtifactIndexingTask.Action.DELETE, + repo.getIndexingContext()); + indexingExecutor.executeTask( task ); + + task = new ArtifactIndexingTask( repo, artifactFile, ArtifactIndexingTask.Action.FINISH, + repo.getIndexingContext() ); + indexingExecutor.executeTask( task ); + + qb = new BooleanQuery.Builder(); + qb.add( indexer.constructQuery( MAVEN.GROUP_ID, new SourcedSearchExpression( "org.apache.archiva" ) ), + BooleanClause.Occur.SHOULD ); + qb.add( indexer.constructQuery( MAVEN.ARTIFACT_ID, + new SourcedSearchExpression( "archiva-index-methods-jar-test" ) ), + BooleanClause.Occur.SHOULD ); + + assertTrue( Files.exists(basePath.resolve( ".indexer" )) ); + assertTrue( Files.exists(basePath.resolve(".index" )) ); + + flatSearchRequest = new FlatSearchRequest( qb.build(), getIndexingContext() ); + + response = indexer.searchFlat( flatSearchRequest ); + // artifact should have been removed from the index! + assertEquals( 0, response.getTotalHitsCount() );//.totalHits ); + + // TODO: test it was removed from the packaged index also + } + + @Test + public void testPackagedIndex() + throws Exception + { + + Path basePath = repo.getLocalPath(); + IndexCreationFeature icf = repo.getFeature( IndexCreationFeature.class ).get(); + Path packedIndexDirectory = icf.getLocalPackedIndexPath(); + Path indexerDirectory = icf.getLocalIndexPath(); + + for (Path dir : new Path[] { packedIndexDirectory, indexerDirectory }) { + Files.list(dir).filter(path -> path.getFileName().toString().startsWith("nexus-maven-repository-index")) + .forEach(path -> + { + try { + System.err.println("Deleting " + path); + Files.delete(path); + } catch (IOException e) { + e.printStackTrace(); + } + }); + } + + + + + Path artifactFile = basePath.resolve( + "org/apache/archiva/archiva-index-methods-jar-test/1.0/archiva-index-methods-jar-test-1.0.jar" ); + ArtifactIndexingTask task = + new ArtifactIndexingTask( repo, artifactFile, ArtifactIndexingTask.Action.ADD, + repo.getIndexingContext() ); + task.setExecuteOnEntireRepo( false ); + + indexingExecutor.executeTask( task ); + + task = new ArtifactIndexingTask( repo, null, ArtifactIndexingTask.Action.FINISH, + repo.getIndexingContext() ); + + task.setExecuteOnEntireRepo( false ); + + indexingExecutor.executeTask( task ); + + assertTrue( Files.exists(packedIndexDirectory) ); + assertTrue( Files.exists(indexerDirectory) ); + + // test packed index file creation + //no more zip + //Assertions.assertThat(new File( indexerDirectory, "nexus-maven-repository-index.zip" )).exists(); + Assertions.assertThat( Files.exists(packedIndexDirectory.resolve("nexus-maven-repository-index.properties" ) )); + Assertions.assertThat( Files.exists(packedIndexDirectory.resolve("nexus-maven-repository-index.gz" ) )); + assertFalse( Files.exists(packedIndexDirectory.resolve("nexus-maven-repository-index.1.gz" ) )); + + // unpack .zip index + //unzipIndex( indexerDirectory.getPath(), destDir.getPath() ); + + DefaultIndexUpdater.FileFetcher fetcher = new DefaultIndexUpdater.FileFetcher( packedIndexDirectory.toFile() ); + IndexUpdateRequest updateRequest = new IndexUpdateRequest( getIndexingContext(), fetcher ); + //updateRequest.setLocalIndexCacheDir( indexerDirectory ); + indexUpdater.fetchAndUpdateIndex( updateRequest ); + + BooleanQuery.Builder qb = new BooleanQuery.Builder(); + qb.add( indexer.constructQuery( MAVEN.GROUP_ID, new StringSearchExpression( "org.apache.archiva" ) ), + BooleanClause.Occur.SHOULD ); + qb.add( + indexer.constructQuery( MAVEN.ARTIFACT_ID, new StringSearchExpression( "archiva-index-methods-jar-test" ) ), + BooleanClause.Occur.SHOULD ); + + FlatSearchRequest request = new FlatSearchRequest( qb.build(), getIndexingContext() ); + FlatSearchResponse response = indexer.searchFlat( request ); + + assertEquals( 1, response.getTotalHitsCount() ); + Set<ArtifactInfo> results = response.getResults(); + + ArtifactInfo artifactInfo = results.iterator().next(); + assertEquals( "org.apache.archiva", artifactInfo.getGroupId() ); + assertEquals( "archiva-index-methods-jar-test", artifactInfo.getArtifactId() ); + assertEquals( "test-repo", artifactInfo.getRepository() ); + + + } + +} diff --git a/archiva-modules/archiva-maven/archiva-maven-scheduler/src/test/java/org/apache/archiva/scheduler/indexing/maven/DownloadRemoteIndexTaskTest.java b/archiva-modules/archiva-maven/archiva-maven-scheduler/src/test/java/org/apache/archiva/scheduler/indexing/maven/DownloadRemoteIndexTaskTest.java new file mode 100644 index 000000000..01921e45d --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-scheduler/src/test/java/org/apache/archiva/scheduler/indexing/maven/DownloadRemoteIndexTaskTest.java @@ -0,0 +1,187 @@ +package org.apache.archiva.scheduler.indexing.maven; +/* + * 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.archiva.admin.model.beans.RemoteRepository; +import org.apache.archiva.admin.model.remote.RemoteRepositoryAdmin; +import org.apache.archiva.common.utils.FileUtils; +import org.apache.archiva.repository.RepositoryRegistry; +import org.apache.archiva.test.utils.ArchivaSpringJUnit4ClassRunner; +import org.apache.maven.index.FlatSearchRequest; +import org.apache.maven.index.FlatSearchResponse; +import org.apache.maven.index.Indexer; +import org.apache.maven.index.MAVEN; +import org.apache.maven.index.context.IndexingContext; +import org.apache.maven.index.expr.StringSearchExpression; +import org.apache.maven.index_shaded.lucene.search.BooleanClause; +import org.apache.maven.index_shaded.lucene.search.BooleanQuery; +import org.assertj.core.api.Assertions; +import org.eclipse.jetty.server.HttpConnectionFactory; +import org.eclipse.jetty.server.Server; +import org.eclipse.jetty.server.ServerConnector; +import org.eclipse.jetty.servlet.DefaultServlet; +import org.eclipse.jetty.servlet.ServletContextHandler; +import org.eclipse.jetty.servlet.ServletHolder; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler; +import org.springframework.test.context.ContextConfiguration; + +import javax.inject.Inject; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.Arrays; +import java.util.Locale; +import java.util.concurrent.TimeUnit; + +import static org.assertj.core.api.Assertions.assertThat; + +/** + * @author Olivier Lamy + */ +@RunWith( ArchivaSpringJUnit4ClassRunner.class ) +@ContextConfiguration( locations = { "classpath*:/META-INF/spring-context.xml", "classpath*:/spring-context.xml" } ) +public class DownloadRemoteIndexTaskTest +{ + + private Server server; + private ServerConnector serverConnector; + + private int port; + + private Logger log = LoggerFactory.getLogger( getClass() ); + + @Inject + RemoteRepositoryAdmin remoteRepositoryAdmin; + + @Inject + DefaultDownloadRemoteIndexScheduler downloadRemoteIndexScheduler; + + @Inject + Indexer indexer; + + @Inject + RepositoryRegistry repositoryRegistry; + + @Before + public void initialize() + throws Exception + { + Path cfgFile = Paths.get("target/appserver-base/conf/archiva.xml"); + if (Files.exists(cfgFile)) { + Files.delete(cfgFile); + } + try { + remoteRepositoryAdmin.deleteRemoteRepository("test-repo-re", null); + } catch (Exception e) { + // Ignore + } + server = new Server( ); + serverConnector = new ServerConnector( server, new HttpConnectionFactory()); + server.addConnector( serverConnector ); + createContext( server, Paths.get( "src/test/" ) ); + this.server.start(); + this.port = serverConnector.getLocalPort(); + log.info( "start server on port {}", this.port ); + } + + protected void createContext( Server server, Path repositoryDirectory ) + throws IOException + { + ServletContextHandler context = new ServletContextHandler(); + context.setResourceBase( repositoryDirectory.toAbsolutePath().toString() ); + context.setContextPath( "/" ); + ServletHolder sh = new ServletHolder( DefaultServlet.class ); + context.addServlet( sh, "/" ); + server.setHandler( context ); + + } + + @After + public void tearDown() + throws Exception + { + if (server!=null) { + server.stop(); + } + Path cfgFile = Paths.get("target/appserver-base/conf/archiva.xml"); + if (Files.exists(cfgFile)) { + Files.delete(cfgFile); + } + } + + @Test + public void downloadAndMergeRemoteIndexInEmptyIndex() + throws Exception + { + RemoteRepository remoteRepository = getRemoteRepository(); + + remoteRepositoryAdmin.addRemoteRepository( remoteRepository, null ); + + downloadRemoteIndexScheduler.startup(); + + downloadRemoteIndexScheduler.scheduleDownloadRemote( "test-repo-re", true, true ); + + ( (ThreadPoolTaskScheduler) downloadRemoteIndexScheduler.getTaskScheduler() ).getScheduledExecutor().awaitTermination( + 10, TimeUnit.SECONDS ); + + remoteRepositoryAdmin.deleteRemoteRepository( "test-repo-re", null ); + + // search + BooleanQuery.Builder iQuery = new BooleanQuery.Builder(); + iQuery.add( indexer.constructQuery( MAVEN.GROUP_ID, new StringSearchExpression( "commons-logging" ) ), + BooleanClause.Occur.SHOULD ); + + remoteRepositoryAdmin.addRemoteRepository(remoteRepository, null); + FlatSearchRequest rq = new FlatSearchRequest( iQuery.build() ); + rq.setContexts( + Arrays.asList( repositoryRegistry.getRemoteRepository(remoteRepository.getId()).getIndexingContext().getBaseContext(IndexingContext.class) ) ); + + FlatSearchResponse response = indexer.searchFlat(rq); + + log.info( "returned hit count:{}", response.getReturnedHitsCount() ); + Assertions.assertThat( response.getReturnedHitsCount() ).isEqualTo( 8 ); + } + + + protected RemoteRepository getRemoteRepository() throws IOException + { + RemoteRepository remoteRepository = new RemoteRepository( Locale.getDefault()); + Path indexDirectory = + Paths.get( FileUtils.getBasedir(), "target/index/test-" + Long.toString( System.currentTimeMillis() ) ); + Files.createDirectories( indexDirectory ); + indexDirectory.toFile().deleteOnExit(); + + remoteRepository.setName( "foo" ); + remoteRepository.setIndexDirectory( indexDirectory.toAbsolutePath().toString() ); + remoteRepository.setDownloadRemoteIndex( true ); + remoteRepository.setId( "test-repo-re" ); + remoteRepository.setUrl( "http://localhost:" + port ); + remoteRepository.setRemoteIndexUrl( "http://localhost:" + port + "/index-updates/" ); + + return remoteRepository; + } + +} diff --git a/archiva-modules/archiva-maven/archiva-maven-scheduler/src/test/resources/log4j2-test.xml b/archiva-modules/archiva-maven/archiva-maven-scheduler/src/test/resources/log4j2-test.xml new file mode 100644 index 000000000..c7f86dd6b --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-scheduler/src/test/resources/log4j2-test.xml @@ -0,0 +1,42 @@ +<?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. + --> + + +<configuration> + <appenders> + <Console name="console" target="SYSTEM_OUT"> + <PatternLayout pattern="%d [%t] %-5p %c %x - %m%n"/> + </Console> + </appenders> + <loggers> + + <logger name="org.springframework" level="error"/> + + <logger name="org.apache.archiva.scheduler.indexing" level="info"/> + <!-- + <logger name="org.apache.http" level="debug"/> + --> + <root level="info"> + <appender-ref ref="console"/> + </root> + </loggers> +</configuration> + + diff --git a/archiva-modules/archiva-maven/archiva-maven-scheduler/src/test/resources/spring-context.xml b/archiva-modules/archiva-maven/archiva-maven-scheduler/src/test/resources/spring-context.xml new file mode 100644 index 000000000..3c9ef40d1 --- /dev/null +++ b/archiva-modules/archiva-maven/archiva-maven-scheduler/src/test/resources/spring-context.xml @@ -0,0 +1,99 @@ +<?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:tx="http://www.springframework.org/schema/tx" + 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/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd" + default-lazy-init="true"> + + <context:component-scan base-package="org.apache.archiva.repository.content.maven2,org.apache.archiva.indexer.maven" /> + + <bean name="scheduler" class="org.apache.archiva.redback.components.scheduler.DefaultScheduler"> + <property name="properties"> + <props> + <prop key="org.quartz.scheduler.instanceName">scheduler1</prop> + <prop key="org.quartz.threadPool.class">org.quartz.simpl.SimpleThreadPool</prop> + <prop key="org.quartz.threadPool.threadCount">2</prop> + <prop key="org.quartz.threadPool.threadPriority">4</prop> + <prop key="org.quartz.jobStore.class">org.quartz.simpl.RAMJobStore</prop> + </props> + </property> + </bean> + + + <!-- wire up more basic configuration so it doesn't overwrite any config files --> + <bean name="archivaConfiguration#default" class="org.apache.archiva.configuration.DefaultArchivaConfiguration"> + <property name="registry" ref="registry#default"/> + </bean> + + <alias name="archivaConfiguration#default" alias="archivaConfiguration"/> + + <bean name="registry#default" class="org.apache.archiva.redback.components.registry.commons.CommonsConfigurationRegistry"> + <property name="properties"> + <value> + <![CDATA[ + <configuration> + <system/> + <xml fileName="${appserver.base}/conf/archiva.xml" config-forceCreate="true" + config-optional="true" + config-name="org.apache.archiva.base" config-at="org.apache.archiva"/> + </configuration> + ]]> + </value> + </property> + </bean> + + <alias name="userConfiguration#redback" alias="userConfiguration#default"/> + + <!-- *** + JPA settings + *** --> + <bean name="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> + <property name="jpaVendorAdapter" > + <bean class="org.springframework.orm.jpa.vendor.OpenJpaVendorAdapter" /> + </property> + <property name="persistenceXmlLocation" value="classpath:META-INF/persistence-hsqldb.xml" /> + <property name="jpaPropertyMap"> + <map> + <entry key="openjpa.ConnectionURL" value="jdbc:hsqldb:mem:redback_database" /> + <entry key="openjpa.ConnectionDriverName" value="org.hsqldb.jdbcDriver" /> + <entry key="openjpa.ConnectionUserName" value="sa" /> + <entry key="openjpa.ConnectionPassword" value="" /> + <entry key="openjpa.Log" value="${openjpa.Log:DefaultLevel=INFO,Runtime=ERROR,Tool=ERROR,SQL=ERROR,Schema=ERROR,MetaData=ERROR}" /> + <entry key="openjpa.jdbc.SynchronizeMappings" value="buildSchema(ForeignKeys=true)" /> + <entry key="openjpa.jdbc.MappingDefaults" + value="ForeignKeyDeleteAction=restrict,JoinForeignKeyDeleteAction=restrict"/> + </map> + </property> + + </bean> + + <bean name="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager" > + <property name="entityManagerFactory" ref="entityManagerFactory" /> + </bean> + + <tx:annotation-driven /> + <!-- *** + End of JPA settings + *** --> + +</beans>
\ No newline at end of file diff --git a/archiva-modules/archiva-maven/pom.xml b/archiva-modules/archiva-maven/pom.xml index 38580ee99..1dbd32ebe 100644 --- a/archiva-modules/archiva-maven/pom.xml +++ b/archiva-modules/archiva-maven/pom.xml @@ -40,5 +40,8 @@ <module>archiva-maven-model</module> <module>archiva-maven-metadata</module> <module>archiva-maven-indexer</module> + <module>archiva-maven-scheduler</module> + <module>archiva-maven-repository</module> + <module>archiva-maven-proxy</module> </modules> </project> |