[MRM-1361] add support for NPanday artifact types. Currently requires some hard coding into webapp and tests, but removing the plugin from the webapp would safely disable the functionality.

git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@921687 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Brett Porter 2010-03-11 04:43:23 +00:00
parent 5761f19b58
commit a7238c5eb0
7 changed files with 146 additions and 1 deletions

View File

@ -92,7 +92,25 @@ public class ArtifactManagementTest
addArtifact( groupId , artifactId, getVersion(), getPackaging() , getArtifactFilePath(), getRepositoryId() ); addArtifact( groupId , artifactId, getVersion(), getPackaging() , getArtifactFilePath(), getRepositoryId() );
assertTextPresent( "Artifact '" + groupId + ":" + artifactId + ":" + getVersion() + "' was successfully deployed to repository 'internal'" ); assertTextPresent( "Artifact '" + groupId + ":" + artifactId + ":" + getVersion() + "' was successfully deployed to repository 'internal'" );
} }
@Test( groups = "requiresUpload" )
public void testDotNetTypes()
{
addArtifact( getGroupId(), "testDotNetTypes", getVersion(), "library", getArtifactFilePath(),
getRepositoryId() );
assertTextPresent( "Artifact 'test:testDotNetTypes:1.0' was successfully deployed to repository 'internal'" );
getSelenium().open( baseUrl + "/browse/" + getGroupId() + "/testDotNetTypes/" + getVersion() );
waitPage();
assertTextPresent( "<type>library</type>" );
String basePath =
"/archiva/repository/internal/" + getGroupId() + "/testDotNetTypes/" + getVersion() + "/testDotNetTypes-" +
getVersion();
assertLinkPresent( ".NET Library" );
assertElementPresent( "//a[@href='" + basePath + ".dll']" );
assertElementPresent( "//a[@href='" + basePath + ".pom']" );
}
//MRM-747 //MRM-747
@Test(groups = "requiresUpload") @Test(groups = "requiresUpload")
public void testAddArtifactBlockRedeployments() public void testAddArtifactBlockRedeployments()

View File

@ -29,6 +29,10 @@
<packaging>war</packaging> <packaging>war</packaging>
<name>Archiva Web :: Application</name> <name>Archiva Web :: Application</name>
<dependencies> <dependencies>
<dependency>
<groupId>org.apache.archiva</groupId>
<artifactId>npanday-support</artifactId>
</dependency>
<dependency> <dependency>
<groupId>org.apache.archiva</groupId> <groupId>org.apache.archiva</groupId>
<artifactId>repository-statistics</artifactId> <artifactId>repository-statistics</artifactId>

View File

@ -178,6 +178,11 @@
<c:url var="imageUrl" value="/images/download-type-other.png"/> <c:url var="imageUrl" value="/images/download-type-other.png"/>
<c:set var="packageName">JavaDoc Archive</c:set> <c:set var="packageName">JavaDoc Archive</c:set>
</c:when> </c:when>
<c:when test="${a.type == 'library'}">
<c:url var="imageUrl" value="/images/download-type-other.png"/>
<c:set var="packageName">.NET Library</c:set>
</c:when>
<%-- TODO: other NPanday types, and move this code into the plugin somehow --%>
<%-- Must be last so that the above get picked up if possible --%> <%-- Must be last so that the above get picked up if possible --%>
<c:when test="${a.type == 'jar'}"> <c:when test="${a.type == 'jar'}">
<c:url var="imageUrl" value="/images/download-type-jar.png"/> <c:url var="imageUrl" value="/images/download-type-jar.png"/>

View File

@ -0,0 +1,37 @@
<?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 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>plugins</artifactId>
<groupId>org.apache.archiva</groupId>
<version>1.4-SNAPSHOT</version>
</parent>
<artifactId>npanday-support</artifactId>
<name>NPanday Support for Archiva</name>
<dependencies>
<dependency>
<groupId>org.apache.archiva</groupId>
<artifactId>maven2-repository</artifactId>
</dependency>
</dependencies>
</project>

View File

@ -0,0 +1,74 @@
package org.apache.archiva.plugins.npanday;
/*
* 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 java.util.HashMap;
import java.util.Map;
/**
* @plexus.component role="org.apache.archiva.metadata.repository.storage.maven2.ArtifactMappingProvider" role-hint="npanday"
*/
public class NPandayArtifactMappingProvider
implements ArtifactMappingProvider
{
private final Map<String, String> classifierAndExtensionToTypeMap;
private final Map<String, String> typeToExtensionMap;
public NPandayArtifactMappingProvider()
{
classifierAndExtensionToTypeMap = new HashMap<String, String>();
// TODO: this could be one of many - we need to look up the artifact metadata from the POM instead
// should do this anyway so that plugins don't compete for providing an extension
classifierAndExtensionToTypeMap.put( "dll", "library" );
classifierAndExtensionToTypeMap.put( "netmodule", "module" );
classifierAndExtensionToTypeMap.put( "exe", "winexe" );
classifierAndExtensionToTypeMap.put( "tests:jar", "test-jar" );
typeToExtensionMap = new HashMap<String, String>();
typeToExtensionMap.put( "library", "dll" );
typeToExtensionMap.put( "asp", "dll" );
typeToExtensionMap.put( "gac", "dll" );
typeToExtensionMap.put( "gac_generic", "dll" );
typeToExtensionMap.put( "gac_msil", "dll" );
typeToExtensionMap.put( "gac_32", "dll" );
typeToExtensionMap.put( "netplugin", "dll" );
typeToExtensionMap.put( "visual-studio-addin", "dll" );
typeToExtensionMap.put( "module", "netmodule" );
typeToExtensionMap.put( "exe.config", "exe.config" );
typeToExtensionMap.put( "winexe", "exe" );
typeToExtensionMap.put( "nar", "nar" );
}
public String mapClassifierAndExtensionToType( String classifier, String ext )
{
// we don't need classifier
return classifierAndExtensionToTypeMap.get( ext );
}
public String mapTypeToExtension( String type )
{
return typeToExtensionMap.get( type );
}
}

View File

@ -32,5 +32,7 @@
<module>repository-statistics</module> <module>repository-statistics</module>
<module>problem-reports</module> <module>problem-reports</module>
<module>audit</module> <module>audit</module>
<!-- TODO: eventually not a core plugin, needs to be moved to a separate tree, with it's own Selenium tests -->
<module>npanday-support</module>
</modules> </modules>
</project> </project>

View File

@ -334,6 +334,11 @@
<artifactId>archiva-checksum</artifactId> <artifactId>archiva-checksum</artifactId>
<version>1.4-SNAPSHOT</version> <version>1.4-SNAPSHOT</version>
</dependency> </dependency>
<dependency>
<groupId>org.apache.archiva</groupId>
<artifactId>npanday-support</artifactId>
<version>1.4-SNAPSHOT</version>
</dependency>
<dependency> <dependency>
<groupId>org.apache.archiva</groupId> <groupId>org.apache.archiva</groupId>
<artifactId>archiva-common</artifactId> <artifactId>archiva-common</artifactId>