]> source.dussan.org Git - archiva.git/blob
1907a2399e2d6b79a5dee51fc41cb1b5cccebdc6
[archiva.git] /
1 package org.apache.maven.archiva.web.action.admin.legacy;
2
3 /*
4  * Licensed to the Apache Software Foundation (ASF) under one
5  * or more contributor license agreements.  See the NOTICE file
6  * distributed with this work for additional information
7  * regarding copyright ownership.  The ASF licenses this file
8  * to you under the Apache License, Version 2.0 (the
9  * "License"); you may not use this file except in compliance
10  * with the License.  You may obtain a copy of the License at
11  *
12  *  http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing,
15  * software distributed under the License is distributed on an
16  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17  * KIND, either express or implied.  See the License for the
18  * specific language governing permissions and limitations
19  * under the License.
20  */
21
22 import org.apache.maven.archiva.configuration.ArchivaConfiguration;
23 import org.apache.maven.archiva.configuration.Configuration;
24 import org.apache.maven.archiva.configuration.IndeterminateConfigurationException;
25 import org.apache.maven.archiva.configuration.LegacyArtifactPath;
26 import org.apache.maven.archiva.model.ArtifactReference;
27 import org.apache.maven.archiva.repository.ManagedRepositoryContent;
28 import org.codehaus.plexus.registry.RegistryException;
29
30 import com.opensymphony.xwork2.Preparable;
31 import com.opensymphony.xwork2.Validateable;
32 import org.apache.commons.lang.StringUtils;
33 import org.apache.maven.archiva.web.action.AbstractActionSupport;
34 import org.springframework.context.annotation.Scope;
35 import org.springframework.stereotype.Controller;
36
37 import javax.inject.Inject;
38 import javax.inject.Named;
39
40 /**
41  * Add a LegacyArtifactPath to archiva configuration
42  *
43  * @since 1.1
44  * plexus.component role="com.opensymphony.xwork2.Action" role-hint="addLegacyArtifactPathAction" instantiation-strategy="per-lookup"
45  */
46 @Controller( "addLegacyArtifactPathAction" )
47 @Scope( "prototype" )
48 public class AddLegacyArtifactPathAction
49     extends AbstractActionSupport
50     implements Preparable, Validateable
51 {
52     /**
53      * plexus.requirement
54      */
55     @Inject
56     private ArchivaConfiguration archivaConfiguration;
57
58     /**
59      * plexus.requirement role-hint="legacy"
60      */
61     @Inject
62     @Named(value = "managedRepositoryContent#legacy")
63     private ManagedRepositoryContent repositoryContent;
64
65
66     private LegacyArtifactPath legacyArtifactPath;
67
68     private String groupId;
69
70     private String artifactId;
71
72     private String version;
73
74     private String classifier;
75
76     private String type;
77
78
79     public void prepare()
80     {
81         this.legacyArtifactPath = new LegacyArtifactPath();
82     }
83
84     public String input()
85     {
86         return INPUT;
87     }
88
89     public String commit()
90     {
91         this.legacyArtifactPath.setArtifact( this.groupId + ":" + this.artifactId + ":" + this.version + ":" +
92             this.classifier + ":" + this.type );
93
94         // Check the proposed Artifact macthes the path
95         ArtifactReference artifact = new ArtifactReference();
96
97                 artifact.setGroupId( this.groupId );
98                 artifact.setArtifactId( this.artifactId );
99                 artifact.setClassifier( this.classifier );
100                 artifact.setVersion( this.version );
101                 artifact.setType( this.type );
102
103         String path = repositoryContent.toPath( artifact );
104         if ( ! path.equals( this.legacyArtifactPath.getPath() ) )
105         {
106             addActionError( "artifact reference does not match the initial path : " + path );
107             return ERROR;
108         }
109
110         Configuration configuration = archivaConfiguration.getConfiguration();
111         configuration.addLegacyArtifactPath( legacyArtifactPath );
112         return saveConfiguration( configuration );
113     }
114
115     public LegacyArtifactPath getLegacyArtifactPath()
116     {
117         return legacyArtifactPath;
118     }
119
120     public void setLegacyArtifactPath( LegacyArtifactPath legacyArtifactPath )
121     {
122         this.legacyArtifactPath = legacyArtifactPath;
123     }
124
125     public void validate()
126     {
127         // trim all unecessary trailing/leading white-spaces; always put this statement before the closing braces(after all validation).
128         trimAllRequestParameterValues();
129     }
130
131     protected String saveConfiguration( Configuration configuration )
132     {
133         try
134         {
135             archivaConfiguration.save( configuration );
136             addActionMessage( "Successfully saved configuration" );
137         }
138         catch ( IndeterminateConfigurationException e )
139         {
140             addActionError( e.getMessage() );
141             return INPUT;
142         }
143         catch ( RegistryException e )
144         {
145             addActionError( "Configuration Registry Exception: " + e.getMessage() );
146             return INPUT;
147         }
148
149         return SUCCESS;
150     }
151
152     private void trimAllRequestParameterValues()
153     {
154         if(StringUtils.isNotEmpty(legacyArtifactPath.getPath()))
155         {
156             legacyArtifactPath.setPath(legacyArtifactPath.getPath().trim());
157         }
158
159         if(StringUtils.isNotEmpty(groupId))
160         {
161             groupId = groupId.trim();
162         }
163
164         if(StringUtils.isNotEmpty(artifactId))
165         {
166             artifactId = artifactId.trim();
167         }
168
169         if(StringUtils.isNotEmpty(version))
170         {
171             version = version.trim();
172         }
173
174         if(StringUtils.isNotEmpty(classifier))
175         {
176             classifier = classifier.trim();
177         }
178
179         if(StringUtils.isNotEmpty(type))
180         {
181             type = type.trim();
182         }
183     }
184
185     public String getGroupId()
186     {
187         return groupId;
188     }
189
190     public void setGroupId( String groupId )
191     {
192         this.groupId = groupId;
193     }
194
195     public String getArtifactId()
196     {
197         return artifactId;
198     }
199
200     public void setArtifactId( String artifactId )
201     {
202         this.artifactId = artifactId;
203     }
204
205     public String getVersion()
206     {
207         return version;
208     }
209
210     public void setVersion( String version )
211     {
212         this.version = version;
213     }
214
215     public String getClassifier()
216     {
217         return classifier;
218     }
219
220     public void setClassifier( String classifier )
221     {
222         this.classifier = classifier;
223     }
224
225     public String getType()
226     {
227         return type;
228     }
229
230     public void setType( String type )
231     {
232         this.type = type;
233     }
234 }