]> source.dussan.org Git - archiva.git/blob
8f2c0d3c1a3d9b680ddaf0d1faaf19d5117dd26d
[archiva.git] /
1 package org.apache.maven.archiva.web.action.admin.legacy;\r
2 \r
3 /*\r
4  * Licensed to the Apache Software Foundation (ASF) under one\r
5  * or more contributor license agreements.  See the NOTICE file\r
6  * distributed with this work for additional information\r
7  * regarding copyright ownership.  The ASF licenses this file\r
8  * to you under the Apache License, Version 2.0 (the\r
9  * "License"); you may not use this file except in compliance\r
10  * with the License.  You may obtain a copy of the License at\r
11  *\r
12  *  http://www.apache.org/licenses/LICENSE-2.0\r
13  *\r
14  * Unless required by applicable law or agreed to in writing,\r
15  * software distributed under the License is distributed on an\r
16  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r
17  * KIND, either express or implied.  See the License for the\r
18  * specific language governing permissions and limitations\r
19  * under the License.\r
20  */\r
21 \r
22 import org.apache.maven.archiva.configuration.ArchivaConfiguration;\r
23 import org.apache.maven.archiva.configuration.Configuration;\r
24 import org.apache.maven.archiva.configuration.IndeterminateConfigurationException;\r
25 import org.apache.maven.archiva.configuration.LegacyArtifactPath;\r
26 import org.apache.maven.archiva.repository.ManagedRepositoryContent;\r
27 import org.codehaus.plexus.registry.RegistryException;\r
28 import org.codehaus.plexus.xwork.action.PlexusActionSupport;\r
29 \r
30 import com.opensymphony.xwork.Preparable;\r
31 \r
32 /**\r
33  * Add a LegacyArtifactPath to archiva configuration\r
34  *\r
35  *\r
36  * @plexus.component role="com.opensymphony.xwork.Action" role-hint="addLegacyArtifactPathAction"\r
37  */\r
38 public class AddLegacyArtifactPathAction\r
39     extends PlexusActionSupport\r
40     implements Preparable\r
41 {\r
42     /**\r
43      * @plexus.requirement\r
44      */\r
45     private ArchivaConfiguration archivaConfiguration;\r
46 \r
47     /**\r
48      * @plexus.requirement role-hint="legacy"\r
49      */\r
50     private ManagedRepositoryContent repositoryContent;\r
51 \r
52 \r
53     private LegacyArtifactPath legacyArtifactPath;\r
54 \r
55 \r
56     public void prepare()\r
57     {\r
58         this.legacyArtifactPath = new LegacyArtifactPath();\r
59     }\r
60 \r
61     public String input()\r
62     {\r
63         return INPUT;\r
64     }\r
65 \r
66     public String commit()\r
67     {\r
68         ArtifactReference artifact = this.legacyArtifactPath.getArtifactReference();\r
69         String path = repositoryContent.toPath( artifact );\r
70         if ( ! path.equals( this.legacyArtifactPath.getPath() ) )\r
71         {\r
72             addActionError( "artifact reference does not match the initial path : " + path );\r
73             return ERROR;\r
74         }\r
75 \r
76         Configuration configuration = archivaConfiguration.getConfiguration();\r
77         configuration.addLegacyArtifactPath( legacyArtifactPath );\r
78         return saveConfiguration( configuration );\r
79     }\r
80 \r
81     public LegacyArtifactPath getLegacyArtifactPath()\r
82     {\r
83         return legacyArtifactPath;\r
84     }\r
85 \r
86     public void setLegacyArtifactPath( LegacyArtifactPath legacyArtifactPath )\r
87     {\r
88         this.legacyArtifactPath = legacyArtifactPath;\r
89     }\r
90 \r
91     protected String saveConfiguration( Configuration configuration )\r
92     {\r
93         try\r
94         {\r
95             archivaConfiguration.save( configuration );\r
96             addActionMessage( "Successfully saved configuration" );\r
97         }\r
98         catch ( IndeterminateConfigurationException e )\r
99         {\r
100             addActionError( e.getMessage() );\r
101             return INPUT;\r
102         }\r
103         catch ( RegistryException e )\r
104         {\r
105             addActionError( "Configuration Registry Exception: " + e.getMessage() );\r
106             return INPUT;\r
107         }\r
108 \r
109         return SUCCESS;\r
110     }\r
111 }\r