Re: Update of properties - patch 1
Dan Tihelka <[email protected]>
| Newsgroups | gmane.comp.java.cruise-control.user |
|---|---|
| Message-ID | <[email protected]> |
Hallo Jeffrey,
I am sending the first code. It is the interface itself (FileResolver.java)
and its incorporation in XmlConfigManager.Resolver. It does not break any
other modules, nor it affects the function of CruiseControl.
Now, I am not sure about comments in the interface file. Could you check them
and eventually correct them, please? Or delete it completely, as it is in
XmlResolver.java :-)
I am going to continue with coding, and I will try send a small patch for each
step ...
Thanks for eventual feedback.
Regards,
Dan T.
BTW: i tried to build the whole CruiseControl using 'ant release', but it
failed with the error (not connected with my work ;-)):
[junit] Running
net.sourceforge.cruisecontrol.dashboard.service.BuildServiceTest
[junit] Testsuite:
net.sourceforge.cruisecontrol.dashboard.service.BuildServiceTest
[junit] Tests run: 15, Failures: 1, Errors: 0, Time elapsed: 0,64 sec
[junit] Tests run: 15, Failures: 1, Errors: 0, Time elapsed: 0,64 sec
[junit]
[junit] Testcase:
testShouldReadTestSuitesFromFailedBuild(net.sourceforge.cruisecontrol.dashboard.service.BuildServiceTest):
FAILED
[junit] expected:<1000.109> but was:<1.0>
[junit] junit.framework.AssertionFailedError: expected:<1000.109> but
was:<1.0>
[junit] at
net.sourceforge.cruisecontrol.dashboard.service.BuildServiceTest.testShouldReadTestSuitesFromFailedBuild(BuildServiceTest.java:169)
[junit] at
org.jmock.core.VerifyingTestCase.runBare(VerifyingTestCase.java:39)
[junit]
[junit]
BUILD FAILED
/home/dtihelka/Pokusy/CruiseControl/cruisecontrol/build.xml:46: The following
error occurred while executing this line:
/home/dtihelka/Pokusy/CruiseControl/cruisecontrol/reporting/dashboard/build.xml:166:
Tests failed
------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now. http://p.sf.net/sfu/bobj-july
_______________________________________________
Cruisecontrol-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/cruisecontrol-user
FileResolver.java
(text/x-java, 2.9 KB)
/********************************************************************************
* CruiseControl, a Continuous Integration Toolkit
* Copyright (c) 2001, ThoughtWorks, Inc.
* 200 E. Randolph, 25th Floor
* Chicago, IL 60601 USA
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* + Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* + Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
*
* + Neither the name of ThoughtWorks, Inc., CruiseControl, nor the
* names of its contributors may be used to endorse or promote
* products derived from this software without specific prior
* written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
********************************************************************************/
package net.sourceforge.cruisecontrol.config;
import net.sourceforge.cruisecontrol.CruiseControlException;
import java.io.InputStream;
/**
* The interface defining methods responsible for the general resolving of files used
* to control CruiseControl.
*
* The aim is to limit file system access to a {@link FileResolver} implementation,
* which is good for testing, but also useful if we wanted to do something like try resolving
* paths against different known contexts (e.g. parent directories) rather than being limited
* to the working directory.
*
* As the bonus, the resolved files are automatically monitored for changes which cause the
* reload of Cruisecontrol configuration.
*/
public interface FileResolver {
/**
* Resolves the path (either absolute or relative to the location of CruiseControl
* configuration file).
*
* @param path to file to resolve.
* @return stream to read the content of file from.
* @throws CruiseControlException
*/
InputStream getInputStream(String path) throws CruiseControlException;
}
FileResolver.patch1
(text/x-diff, 1.7 KB)
Index: main/src/net/sourceforge/cruisecontrol/config/XMLConfigManager.java
===================================================================
--- main/src/net/sourceforge/cruisecontrol/config/XMLConfigManager.java (revision 4343)
+++ main/src/net/sourceforge/cruisecontrol/config/XMLConfigManager.java (working copy)
@@ -36,9 +36,13 @@
********************************************************************************/
package net.sourceforge.cruisecontrol.config;
+import java.io.BufferedInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
import java.io.IOException;
+import java.io.InputStream;
import java.util.HashSet;
import java.util.Set;
@@ -140,7 +144,7 @@
return md5;
}
- class Resolver implements XmlResolver {
+ class Resolver implements XmlResolver, FileResolver {
private final Set<File> resolvedFiles = new HashSet<File>();
public Element getElement(final String path) throws CruiseControlException {
@@ -149,6 +153,16 @@
return Util.loadRootElement(file);
}
+ public InputStream getInputStream(final String path) throws CruiseControlException {
+ final File file = new File(configFile.getParentFile(), path);
+ resolvedFiles.add(file);
+ try {
+ return new BufferedInputStream(new FileInputStream(file));
+ } catch (FileNotFoundException e) {
+ throw new CruiseControlException("exception when opening file " + file.getAbsolutePath(), e);
+ }
+ }
+
public Set<File> getResolvedFiles() {
return resolvedFiles;
}