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