1 | package org.apache.maven.continuum.web.action; |
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.continuum.release.distributed.manager.DistributedReleaseManager; |
23 | import org.apache.maven.artifact.ArtifactUtils; |
24 | import org.apache.maven.continuum.ContinuumException; |
25 | import org.apache.maven.continuum.model.project.Project; |
26 | import org.apache.maven.continuum.release.ContinuumReleaseManager; |
27 | import org.apache.maven.continuum.web.exception.AuthorizationRequiredException; |
28 | import org.apache.maven.shared.release.config.ReleaseDescriptor; |
29 | import org.codehaus.plexus.util.StringUtils; |
30 | |
31 | import java.util.Map; |
32 | |
33 | /** |
34 | * @author Edwin Punzalan |
35 | * @version $Id: ReleaseProjectGoalAction.java 751433 2009-03-08 14:41:33Z ctan $ |
36 | * @plexus.component role="com.opensymphony.xwork2.Action" role-hint="releaseProjectGoal" |
37 | */ |
38 | public class ReleaseProjectGoalAction |
39 | extends ContinuumActionSupport |
40 | { |
41 | private int projectId; |
42 | |
43 | private int projectGroupId; |
44 | |
45 | private String projectName; |
46 | |
47 | private String preparedReleaseName; |
48 | |
49 | private String preparedReleaseId; |
50 | |
51 | private String projectGroupName = ""; |
52 | |
53 | public String execute() |
54 | throws Exception |
55 | { |
56 | try |
57 | { |
58 | checkBuildProjectInGroupAuthorization( getProjectGroupName() ); |
59 | } |
60 | catch ( AuthorizationRequiredException e ) |
61 | { |
62 | return REQUIRES_AUTHORIZATION; |
63 | } |
64 | |
65 | Project project = getContinuum().getProjectWithAllDetails( projectId ); |
66 | |
67 | String releaseId = ArtifactUtils.versionlessKey( project.getGroupId(), project.getArtifactId() ); |
68 | |
69 | if ( getContinuum().getConfiguration().isDistributedBuildEnabled() ) |
70 | { |
71 | DistributedReleaseManager releaseManager = getContinuum().getDistributedReleaseManager(); |
72 | |
73 | preparedReleaseName = releaseManager.getPreparedReleaseName( releaseId ); |
74 | |
75 | if ( StringUtils.isNotBlank( preparedReleaseName ) ) |
76 | { |
77 | preparedReleaseId = releaseId; |
78 | } |
79 | else |
80 | { |
81 | preparedReleaseName = null; |
82 | } |
83 | } |
84 | else |
85 | { |
86 | ContinuumReleaseManager releaseManager = getContinuum().getReleaseManager(); |
87 | |
88 | Map preparedReleases = releaseManager.getPreparedReleases(); |
89 | if ( preparedReleases.containsKey( releaseId ) ) |
90 | { |
91 | ReleaseDescriptor descriptor = (ReleaseDescriptor) preparedReleases.get( releaseId ); |
92 | |
93 | preparedReleaseName = descriptor.getReleaseVersions().get( releaseId ).toString(); |
94 | |
95 | preparedReleaseId = releaseId; |
96 | } |
97 | } |
98 | |
99 | projectName = project.getName(); |
100 | |
101 | return SUCCESS; |
102 | } |
103 | |
104 | public int getProjectId() |
105 | { |
106 | return projectId; |
107 | } |
108 | |
109 | public void setProjectId( int projectId ) |
110 | { |
111 | this.projectId = projectId; |
112 | } |
113 | |
114 | public int getProjectGroupId() |
115 | { |
116 | return projectGroupId; |
117 | } |
118 | |
119 | public void setProjectGroupId( int projectGroupId ) |
120 | { |
121 | this.projectGroupId = projectGroupId; |
122 | } |
123 | |
124 | public String getProjectName() |
125 | { |
126 | return projectName; |
127 | } |
128 | |
129 | public void setProjectName( String projectName ) |
130 | { |
131 | this.projectName = projectName; |
132 | } |
133 | |
134 | public String getPreparedReleaseName() |
135 | { |
136 | return preparedReleaseName; |
137 | } |
138 | |
139 | public void setPreparedReleaseName( String preparedReleaseName ) |
140 | { |
141 | this.preparedReleaseName = preparedReleaseName; |
142 | } |
143 | |
144 | public String getPreparedReleaseId() |
145 | { |
146 | return preparedReleaseId; |
147 | } |
148 | |
149 | public void setPreparedReleaseId( String preparedReleaseId ) |
150 | { |
151 | this.preparedReleaseId = preparedReleaseId; |
152 | } |
153 | |
154 | public String getProjectGroupName() |
155 | throws ContinuumException |
156 | { |
157 | if ( StringUtils.isEmpty( projectGroupName ) ) |
158 | { |
159 | projectGroupName = getContinuum().getProjectGroupByProjectId( projectId ).getName(); |
160 | } |
161 | |
162 | return projectGroupName; |
163 | } |
164 | } |