Classes in this File | Line Coverage | Branch Coverage | Complexity | ||||
AbstractDeployMojo |
|
| 1.7;1,7 |
1 | package org.apache.tomcat.maven.plugin.tomcat7.deploy; | |
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.plugin.MojoExecutionException; | |
23 | import org.apache.maven.plugins.annotations.Parameter; | |
24 | import org.apache.tomcat.maven.common.deployer.TomcatManagerException; | |
25 | import org.apache.tomcat.maven.plugin.tomcat7.AbstractWarCatalinaMojo; | |
26 | ||
27 | import java.io.File; | |
28 | import java.io.IOException; | |
29 | import java.net.URL; | |
30 | ||
31 | /** | |
32 | * Deploy a WAR to Tomcat. | |
33 | * | |
34 | * @author Mark Hobson <markhobson@gmail.com> | |
35 | */ | |
36 | 0 | public abstract class AbstractDeployMojo |
37 | extends AbstractWarCatalinaMojo | |
38 | { | |
39 | // ---------------------------------------------------------------------- | |
40 | // Mojo Parameters | |
41 | // ---------------------------------------------------------------------- | |
42 | ||
43 | /** | |
44 | * The deployment mode to use. This must be either <code>war</code> to deploy the war, <code>context</code> to | |
45 | * deploy the context XML file, or <code>both</code> to deploy the war with the context XML file. | |
46 | */ | |
47 | @Parameter( property = "maven.tomcat.mode", defaultValue = "war", required = true ) | |
48 | private String mode; | |
49 | ||
50 | /** | |
51 | * The path of the Tomcat context XML file. This is not used for war deployment mode. | |
52 | */ | |
53 | @Parameter( defaultValue = "${project.build.directory}/${project.build.finalName}/META-INF/context.xml" ) | |
54 | private File contextFile; | |
55 | ||
56 | /** | |
57 | * Whether Tomcat should automatically undeploy webapps that already exist when deploying. | |
58 | */ | |
59 | @Parameter( property = "maven.tomcat.update", defaultValue = "false", required = true ) | |
60 | private boolean update; | |
61 | ||
62 | /** | |
63 | * The Tomcat webapp tag name to use. | |
64 | */ | |
65 | @Parameter( property = "maven.tomcat.tag" ) | |
66 | private String tag; | |
67 | ||
68 | // ---------------------------------------------------------------------- | |
69 | // Protected Methods | |
70 | // ---------------------------------------------------------------------- | |
71 | ||
72 | /** | |
73 | * {@inheritDoc} | |
74 | */ | |
75 | @Override | |
76 | public void invokeManager() | |
77 | throws MojoExecutionException, TomcatManagerException, IOException | |
78 | { | |
79 | 0 | if ( "war".equals( mode ) ) |
80 | { | |
81 | 0 | deployWar(); |
82 | } | |
83 | 0 | else if ( "context".equals( mode ) ) |
84 | { | |
85 | 0 | deployContext(); |
86 | } | |
87 | 0 | else if ( "both".equals( mode ) ) |
88 | { | |
89 | 0 | deployWarAndContext(); |
90 | } | |
91 | else | |
92 | { | |
93 | 0 | throw new MojoExecutionException( messagesProvider.getMessage( "AbstractDeployMojo.unknownMode", mode ) ); |
94 | } | |
95 | 0 | } |
96 | ||
97 | /** | |
98 | * Gets the Tomcat WAR file. This may be a file or a directory depending on the deployment mode. | |
99 | * | |
100 | * @return the Tomcat WAR file. | |
101 | */ | |
102 | protected abstract File getWarFile(); | |
103 | ||
104 | /** | |
105 | * Ensures that the Tomcat WAR file exists and is the correct type for the deployment mode. | |
106 | * | |
107 | * @throws org.apache.maven.plugin.MojoExecutionException | |
108 | * if the WAR file does not exist or is not the correct type for the deployment mode | |
109 | */ | |
110 | protected abstract void validateWarFile() | |
111 | throws MojoExecutionException; | |
112 | ||
113 | /** | |
114 | * Gets the Tomcat context XML file. | |
115 | * | |
116 | * @return the Tomcat context XML file. | |
117 | */ | |
118 | protected File getContextFile() | |
119 | { | |
120 | 0 | return contextFile; |
121 | } | |
122 | ||
123 | /** | |
124 | * Ensures that the Tomcat context XML file exists and is indeed a file. | |
125 | * | |
126 | * @throws org.apache.maven.plugin.MojoExecutionException | |
127 | * if the context file does not exist or is not a file | |
128 | */ | |
129 | protected void validateContextFile() | |
130 | throws MojoExecutionException | |
131 | { | |
132 | 0 | if ( !contextFile.exists() || !contextFile.isFile() ) |
133 | { | |
134 | 0 | throw new MojoExecutionException( |
135 | messagesProvider.getMessage( "AbstractDeployMojo.missingContext", contextFile.getPath() ) ); | |
136 | } | |
137 | 0 | } |
138 | ||
139 | /** | |
140 | * Gets whether Tomcat should automatically undeploy webapps that already exist when deploying. | |
141 | * | |
142 | * @return whether Tomcat should automatically undeploy webapps that already exist when deploying | |
143 | */ | |
144 | protected boolean isUpdate() | |
145 | { | |
146 | 0 | return update; |
147 | } | |
148 | ||
149 | /** | |
150 | * Gets the Tomcat webapp tag name to use. | |
151 | * | |
152 | * @return the Tomcat webapp tag name to use | |
153 | */ | |
154 | protected String getTag() | |
155 | { | |
156 | 0 | return tag; |
157 | } | |
158 | ||
159 | /** | |
160 | * Deploys the WAR to Tomcat. | |
161 | * | |
162 | * @throws org.apache.maven.plugin.MojoExecutionException | |
163 | * if there was a problem locating the WAR | |
164 | * @throws org.apache.tomcat.maven.common.deployer.TomcatManagerException | |
165 | * if the Tomcat manager request fails | |
166 | * @throws java.io.IOException if an i/o error occurs | |
167 | */ | |
168 | protected void deployWar() | |
169 | throws MojoExecutionException, TomcatManagerException, IOException | |
170 | { | |
171 | 0 | validateWarFile(); |
172 | ||
173 | 0 | getLog().info( messagesProvider.getMessage( "AbstractDeployMojo.deployingWar", getDeployedURL() ) ); |
174 | ||
175 | 0 | URL warURL = getWarFile().toURL(); |
176 | 0 | log( getManager().deploy( getPath(), warURL, isUpdate(), getTag() ).getHttpResponseBody() ); |
177 | 0 | } |
178 | ||
179 | /** | |
180 | * Deploys the context XML file to Tomcat. | |
181 | * | |
182 | * @throws org.apache.maven.plugin.MojoExecutionException | |
183 | * if there was a problem locating the context XML file | |
184 | * @throws org.apache.tomcat.maven.common.deployer.TomcatManagerException | |
185 | * if the Tomcat manager request fails | |
186 | * @throws java.io.IOException if an i/o error occurs | |
187 | */ | |
188 | protected void deployContext() | |
189 | throws MojoExecutionException, TomcatManagerException, IOException | |
190 | { | |
191 | 0 | validateContextFile(); |
192 | ||
193 | 0 | getLog().info( messagesProvider.getMessage( "AbstractDeployMojo.deployingContext", getDeployedURL() ) ); |
194 | ||
195 | 0 | URL contextURL = getContextFile().toURL(); |
196 | 0 | log( getManager().deployContext( getPath(), contextURL, isUpdate(), getTag() ).getHttpResponseBody() ); |
197 | 0 | } |
198 | ||
199 | /** | |
200 | * Deploys the WAR and context XML file to Tomcat. | |
201 | * | |
202 | * @throws org.apache.maven.plugin.MojoExecutionException | |
203 | * if there was a problem locating either the WAR or the context XML file | |
204 | * @throws org.apache.tomcat.maven.common.deployer.TomcatManagerException | |
205 | * if the Tomcat manager request fails | |
206 | * @throws java.io.IOException if an i/o error occurs | |
207 | */ | |
208 | protected void deployWarAndContext() | |
209 | throws MojoExecutionException, TomcatManagerException, IOException | |
210 | { | |
211 | 0 | validateWarFile(); |
212 | 0 | validateContextFile(); |
213 | ||
214 | 0 | getLog().info( messagesProvider.getMessage( "AbstractDeployMojo.deployingWarContext", getDeployedURL() ) ); |
215 | ||
216 | 0 | URL warURL = getWarFile().toURL(); |
217 | 0 | URL contextURL = getContextFile().toURL(); |
218 | 0 | log( getManager().deployContext( getPath(), contextURL, warURL, isUpdate(), getTag() ).getHttpResponseBody() ); |
219 | 0 | } |
220 | } |