001: /********************************************************************************
002: * CruiseControl, a Continuous Integration Toolkit
003: * Copyright (c) 2001, ThoughtWorks, Inc.
004: * 200 E. Randolph, 25th Floor
005: * Chicago, IL 60601 USA
006: * All rights reserved.
007: *
008: * Redistribution and use in source and binary forms, with or without
009: * modification, are permitted provided that the following conditions
010: * are met:
011: *
012: * + Redistributions of source code must retain the above copyright
013: * notice, this list of conditions and the following disclaimer.
014: *
015: * + Redistributions in binary form must reproduce the above
016: * copyright notice, this list of conditions and the following
017: * disclaimer in the documentation and/or other materials provided
018: * with the distribution.
019: *
020: * + Neither the name of ThoughtWorks, Inc., CruiseControl, nor the
021: * names of its contributors may be used to endorse or promote
022: * products derived from this software without specific prior
023: * written permission.
024: *
025: * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
026: * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
027: * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
028: * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR
029: * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
030: * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
031: * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
032: * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
033: * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
034: * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
035: * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
036: ********************************************************************************/package net.sourceforge.cruisecontrol.bootstrappers;
037:
038: import net.sourceforge.cruisecontrol.Bootstrapper;
039: import net.sourceforge.cruisecontrol.CruiseControlException;
040: import net.sourceforge.cruisecontrol.builders.AntBuilder;
041: import net.sourceforge.cruisecontrol.builders.Property;
042: import org.apache.log4j.Logger;
043: import org.jdom.Attribute;
044: import org.jdom.Element;
045:
046: import java.util.HashMap;
047:
048: /**
049: * A thin wrapper around the AntBuilder class, this class allows you to call an Ant script as a bootstrapper.
050: *
051: * @see net.sourceforge.cruisecontrol.builders.AntBuilder
052: * @author <a href="mailto:rjmpsmith@hotmail.com">Robert J. Smith</a>
053: */
054: public class AntBootstrapper implements Bootstrapper {
055:
056: private static final Logger LOG = Logger
057: .getLogger(AntBootstrapper.class);
058:
059: private final AntBuilder delegate = new AntBuilder();
060:
061: /**
062: * Constructor overrides default AntBuilder.showAntOutput value in delegate.
063: * Required if showAntOutput defaults to true.
064: */
065: public AntBootstrapper() {
066: delegate.setShowAntOutput(false);
067: }
068:
069: /**
070: * @see net.sourceforge.cruisecontrol.Bootstrapper#bootstrap()
071: */
072: public void bootstrap() throws CruiseControlException {
073: Element result = delegate.build(new HashMap(), null);
074: if (result == null) {
075: throw new CruiseControlException(
076: "Build returned null. Bootstrap failed.");
077: } else {
078: Attribute error = result.getAttribute("error");
079: if (error != null) {
080: throw new CruiseControlException(
081: "Bootstrap failed with error: "
082: + error.getValue());
083: }
084: LOG.info("Bootstrap successful.");
085: }
086: }
087:
088: public void validate() throws CruiseControlException {
089: delegate.validate();
090: }
091:
092: /**
093: * @see net.sourceforge.cruisecontrol.builders.AntBuilder#setSaveLogDir(String)
094: */
095: public void setSaveLogDir(String dir) {
096: delegate.setSaveLogDir(dir);
097: }
098:
099: /**
100: * @see net.sourceforge.cruisecontrol.builders.AntBuilder#setAntWorkingDir(String)
101: */
102: public void setAntWorkingDir(String dir) {
103: delegate.setAntWorkingDir(dir);
104: }
105:
106: /**
107: * @see net.sourceforge.cruisecontrol.builders.AntBuilder#setAntScript(String)
108: */
109: public void setAntScript(String antScript) {
110: delegate.setAntScript(antScript);
111: }
112:
113: /**
114: * @see net.sourceforge.cruisecontrol.builders.AntBuilder#setAntHome(String)
115: */
116: public void setAntHome(String antHome) {
117: delegate.setAntHome(antHome);
118: }
119:
120: /**
121: * @see net.sourceforge.cruisecontrol.builders.AntBuilder#setTempFile(String)
122: */
123: public void setTempFile(String tempFileName) {
124: delegate.setTempFile(tempFileName);
125: }
126:
127: /**
128: * @see net.sourceforge.cruisecontrol.builders.AntBuilder#setTarget(String)
129: */
130: public void setTarget(String target) {
131: delegate.setTarget(target);
132: }
133:
134: /**
135: * @see net.sourceforge.cruisecontrol.builders.AntBuilder#setBuildFile(String)
136: */
137: public void setBuildFile(String buildFile) {
138: delegate.setBuildFile(buildFile);
139: }
140:
141: /**
142: * @see net.sourceforge.cruisecontrol.builders.AntBuilder#setPropertyfile(String)
143: */
144: public void setPropertyfile(String propertyfile) {
145: delegate.setPropertyfile(propertyfile);
146: }
147:
148: /**
149: * @see net.sourceforge.cruisecontrol.builders.AntBuilder#setUseLogger(boolean)
150: */
151: public void setUseLogger(boolean useLogger) {
152: delegate.setUseLogger(useLogger);
153: }
154:
155: /**
156: * @see net.sourceforge.cruisecontrol.builders.AntBuilder#createJVMArg()
157: */
158: public Object createJVMArg() {
159: return delegate.createJVMArg();
160: }
161:
162: /**
163: * @see net.sourceforge.cruisecontrol.builders.AntBuilder#createLib()
164: */
165: public Object createLib() {
166: return delegate.createLib();
167: }
168:
169: /**
170: * @see net.sourceforge.cruisecontrol.builders.AntBuilder#createListener()
171: */
172: public Object createListener() {
173: return delegate.createListener();
174: }
175:
176: /**
177: * @see net.sourceforge.cruisecontrol.builders.AntBuilder#createProperty()
178: */
179: public Property createProperty() {
180: return delegate.createProperty();
181: }
182:
183: /**
184: * @see net.sourceforge.cruisecontrol.builders.AntBuilder#setUseDebug(boolean)
185: */
186: public void setUseDebug(boolean debug) {
187: delegate.setUseDebug(debug);
188: }
189:
190: /**
191: * @see net.sourceforge.cruisecontrol.builders.AntBuilder#setUseQuiet(boolean)
192: */
193: public void setUseQuiet(boolean quiet) {
194: delegate.setUseQuiet(quiet);
195: }
196:
197: /**
198: * @see net.sourceforge.cruisecontrol.builders.AntBuilder#getLoggerClassName()
199: */
200: public String getLoggerClassName() {
201: return delegate.getLoggerClassName();
202: }
203:
204: /**
205: * @see net.sourceforge.cruisecontrol.builders.AntBuilder#setLoggerClassName(String)
206: */
207: public void setLoggerClassName(String string) {
208: delegate.setLoggerClassName(string);
209: }
210:
211: /**
212: * @see net.sourceforge.cruisecontrol.builders.AntBuilder#setTimeout(long)
213: */
214: public void setTimeout(long timeout) {
215: delegate.setTimeout(timeout);
216: }
217: }
|