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