From fc91eda1e673e3220c62112e3b1a9d39769d60fa Mon Sep 17 00:00:00 2001 From: "Maria Odea B. Ching" Date: Tue, 11 Mar 2008 07:59:35 +0000 Subject: [PATCH] [MRM-216] Submitted by Wendy Smoak -added jsp page and action class for uploading single artifacts -added commons-file-upload as dependency -i commented out some parts in UploadAction as they need to be modified to reflect the changes in some of the Archiva components used. git-svn-id: https://svn.apache.org/repos/asf/maven/archiva/trunk@635836 13f79535-47bb-0310-9956-ffa450edef68 --- archiva-web/archiva-webapp/pom.xml | 4 + .../archiva/web/action/UploadAction.java | 166 ++++++++++++++++++ .../src/main/resources/webwork.properties | 3 +- .../src/main/resources/xwork.xml | 10 ++ .../src/main/webapp/WEB-INF/jsp/upload.jsp | 52 ++++++ pom.xml | 5 + 6 files changed, 239 insertions(+), 1 deletion(-) create mode 100644 archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/UploadAction.java create mode 100644 archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/upload.jsp diff --git a/archiva-web/archiva-webapp/pom.xml b/archiva-web/archiva-webapp/pom.xml index 4bedf01d5..be1612e5e 100644 --- a/archiva-web/archiva-webapp/pom.xml +++ b/archiva-web/archiva-webapp/pom.xml @@ -238,6 +238,10 @@ ${redback.version} test + + commons-fileupload + commons-fileupload + diff --git a/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/UploadAction.java b/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/UploadAction.java new file mode 100644 index 000000000..6d6d6ac0b --- /dev/null +++ b/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/UploadAction.java @@ -0,0 +1,166 @@ +package org.apache.maven.archiva.web.action; + +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import org.codehaus.plexus.xwork.action.PlexusActionSupport; +import org.apache.maven.archiva.configuration.Configuration; +// import org.apache.maven.archiva.configuration.ArchivaConfiguration; +// import org.apache.maven.archiva.configuration.RepositoryConfiguration; +// import org.apache.maven.archiva.repository.layout.BidirectionalRepositoryLayoutFactory; +// import org.apache.maven.archiva.repository.layout.BidirectionalRepositoryLayout; +// import org.apache.maven.archiva.repository.layout.LayoutException; +import org.apache.maven.archiva.model.ArchivaArtifact; +import java.io.File; + +/** + * Upload an artifact. + * + * @author Wendy Smoak + * @plexus.component role="com.opensymphony.xwork.Action" role-hint="uploadAction" + */ +public class UploadAction + extends PlexusActionSupport +{ + + private String groupId; + + private String artifactId; + + private String version; + + private String packaging; + + private String classifier; + + private File file; + + private String contentType; + + private String filename; + + private String repositoryId; + + /** + * @plexus.requirement role-hint="default" + */ + // private ArchivaConfiguration configuration; + /** + * @plexus.requirement role-hint="default" + */ + // private BidirectionalRepositoryLayoutFactory layoutFactory; + public void setUpload( File file ) + { + this.file = file; + } + + public void setUploadContentType( String contentType ) + { + this.contentType = contentType; + } + + public void setUploadFileName( String filename ) + { + this.filename = filename; + } + + 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 String getVersion() + { + return version; + } + + public void setVersion( String version ) + { + this.version = version; + } + + public String getPackaging() + { + return packaging; + } + + public void setPackaging( String packaging ) + { + this.packaging = packaging; + } + + public String getClassifier() + { + return classifier; + } + + public void setClassifier( String classifier ) + { + this.classifier = classifier; + } + + public String getRepositoryId() + { + return repositoryId; + } + + public void setRepositoryId( String repositoryId ) + { + this.repositoryId = repositoryId; + } + + public String upload() + { + getLogger().debug( "upload" ); + return SUCCESS; + } + + public String doUpload() + // throws LayoutException + { + // TODO: adapt to changes in RepositoryConfiguration from the MRM-462 branch + // RepositoryConfiguration rc = configuration.getConfiguration().findRepositoryById( repositoryId ); + // String layout = rc.getLayout(); + // String url = rc.getUrl(); + // ArchivaArtifact artifact = new ArchivaArtifact( groupId, artifactId, version, classifier, packaging ); + // BidirectionalRepositoryLayout repositoryLayout = layoutFactory.getLayout( layout ); + + // output from getLogger().debug(...) not appearing in logs, so... + // System.out.println( "doUpload, file: " + file.getAbsolutePath() ); + // System.out.println( "doUpload, path: " + repositoryLayout.toPath( artifact ) ); + + return SUCCESS; + } + +} diff --git a/archiva-web/archiva-webapp/src/main/resources/webwork.properties b/archiva-web/archiva-webapp/src/main/resources/webwork.properties index 539c9f278..02b991ff9 100644 --- a/archiva-web/archiva-webapp/src/main/resources/webwork.properties +++ b/archiva-web/archiva-webapp/src/main/resources/webwork.properties @@ -22,7 +22,8 @@ webwork.mapper.class = org.apache.maven.archiva.web.mapper.RepositoryActionMappe webwork.objectFactory = org.codehaus.plexus.xwork.PlexusObjectFactory webwork.url.includeParams = none -# webwork.devMode = true +webwork.devMode = true +webwork.multipart.parser=jakarta # TODO: package up a theme and share with Continuum. Should contain everything from xhtml, and set templateDir to WEB-INF/themes diff --git a/archiva-web/archiva-webapp/src/main/resources/xwork.xml b/archiva-web/archiva-webapp/src/main/resources/xwork.xml index 7ca72136b..c90ad778e 100644 --- a/archiva-web/archiva-webapp/src/main/resources/xwork.xml +++ b/archiva-web/archiva-webapp/src/main/resources/xwork.xml @@ -164,6 +164,16 @@ + + /WEB-INF/jsp/upload.jsp + + + + + + /WEB-INF/jsp/upload.jsp + + /WEB-INF/jsp/browse.jsp diff --git a/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/upload.jsp b/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/upload.jsp new file mode 100644 index 000000000..b6360da74 --- /dev/null +++ b/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/upload.jsp @@ -0,0 +1,52 @@ +<%-- + ~ 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. + --%> + +<%-- http://www.opensymphony.com/webwork/wikidocs/File%20Upload%20Interceptor.html --%> + +<%@ taglib prefix="ww" uri="/webwork" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="archiva" uri="http://maven.apache.org/archiva" %> +<%@ taglib prefix="redback" uri="http://plexus.codehaus.org/redback/taglib-1.0" %> + + + + Upload Artifact + + + + + +

Upload Artifact

+
+ +

groupId:

+

artifactId:

+

version:

+

packaging:

+

classifier:

+

repositoryId:

+

+ + +

+
+
+ + + diff --git a/pom.xml b/pom.xml index 6af4becf0..78cc28fe1 100644 --- a/pom.xml +++ b/pom.xml @@ -320,6 +320,11 @@ commons-collections 3.2 + + commons-fileupload + commons-fileupload + 1.2 + commons-io commons-io