]> source.dussan.org Git - archiva.git/blob
4b2735adbc3d8866ee8b2d524811539928128219
[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     @Inject
54     private ArchivaConfiguration archivaConfiguration;
55
56     @Inject
57     @Named(value = "managedRepositoryContent#legacy")
58     private ManagedRepositoryContent repositoryContent;
59
60
61     private LegacyArtifactPath legacyArtifactPath;
62
63     private String groupId;
64
65     private String artifactId;
66
67     private String version;
68
69     private String classifier;
70
71     private String type;
72
73
74     public void prepare()
75     {
76         this.legacyArtifactPath = new LegacyArtifactPath();
77     }
78
79     public String input()
80     {
81         return INPUT;
82     }
83
84     public String commit()
85     {
86         this.legacyArtifactPath.setArtifact( this.groupId + ":" + this.artifactId + ":" + this.version + ":" +
87             this.classifier + ":" + this.type );
88
89         // Check the proposed Artifact macthes the path
90         ArtifactReference artifact = new ArtifactReference();
91
92                 artifact.setGroupId( this.groupId );
93                 artifact.setArtifactId( this.artifactId );
94                 artifact.setClassifier( this.classifier );
95                 artifact.setVersion( this.version );
96                 artifact.setType( this.type );
97
98         String path = repositoryContent.toPath( artifact );
99         if ( ! path.equals( this.legacyArtifactPath.getPath() ) )
100         {
101             addActionError( "artifact reference does not match the initial path : " + path );
102             return ERROR;
103         }
104
105         Configuration configuration = archivaConfiguration.getConfiguration();
106         configuration.addLegacyArtifactPath( legacyArtifactPath );
107         return saveConfiguration( configuration );
108     }
109
110     public LegacyArtifactPath getLegacyArtifactPath()
111     {
112         return legacyArtifactPath;
113     }
114
115     public void setLegacyArtifactPath( LegacyArtifactPath legacyArtifactPath )
116     {
117         this.legacyArtifactPath = legacyArtifactPath;
118     }
119
120     public void validate()
121     {
122         // trim all unecessary trailing/leading white-spaces; always put this statement before the closing braces(after all validation).
123         trimAllRequestParameterValues();
124     }
125
126     protected String saveConfiguration( Configuration configuration )
127     {
128         try
129         {
130             archivaConfiguration.save( configuration );
131             addActionMessage( "Successfully saved configuration" );
132         }
133         catch ( IndeterminateConfigurationException e )
134         {
135             addActionError( e.getMessage() );
136             return INPUT;
137         }
138         catch ( RegistryException e )
139         {
140             addActionError( "Configuration Registry Exception: " + e.getMessage() );
141             return INPUT;
142         }
143
144         return SUCCESS;
145     }
146
147     private void trimAllRequestParameterValues()
148     {
149         if(StringUtils.isNotEmpty(legacyArtifactPath.getPath()))
150         {
151             legacyArtifactPath.setPath(legacyArtifactPath.getPath().trim());
152         }
153
154         if(StringUtils.isNotEmpty(groupId))
155         {
156             groupId = groupId.trim();
157         }
158
159         if(StringUtils.isNotEmpty(artifactId))
160         {
161             artifactId = artifactId.trim();
162         }
163
164         if(StringUtils.isNotEmpty(version))
165         {
166             version = version.trim();
167         }
168
169         if(StringUtils.isNotEmpty(classifier))
170         {
171             classifier = classifier.trim();
172         }
173
174         if(StringUtils.isNotEmpty(type))
175         {
176             type = type.trim();
177         }
178     }
179
180     public String getGroupId()
181     {
182         return groupId;
183     }
184
185     public void setGroupId( String groupId )
186     {
187         this.groupId = groupId;
188     }
189
190     public String getArtifactId()
191     {
192         return artifactId;
193     }
194
195     public void setArtifactId( String artifactId )
196     {
197         this.artifactId = artifactId;
198     }
199
200     public String getVersion()
201     {
202         return version;
203     }
204
205     public void setVersion( String version )
206     {
207         this.version = version;
208     }
209
210     public String getClassifier()
211     {
212         return classifier;
213     }
214
215     public void setClassifier( String classifier )
216     {
217         this.classifier = classifier;
218     }
219
220     public String getType()
221     {
222         return type;
223     }
224
225     public void setType( String type )
226     {
227         this.type = type;
228     }
229 }