antoine 2003/07/11 14:25:35
Modified: . WHATSNEW
src/main/org/apache/tools/ant/taskdefs/optional
PropertyFile.java
src/testcases/org/apache/tools/ant/taskdefs/optional
PropertyFileTest.java
src/etc/testcases/taskdefs/optional propertyfile.xml
Log:
resolves bug : propertyfile does *2 instead of +1
actually due to field value of PropertyFile.Entry class overwritten
after execution with the result (contains the increment before execution)
PR: 21505
Revision Changes Path
1.456 +8 -0 ant/WHATSNEW
Index: WHATSNEW
===================================================================
RCS file: /home/cvs/ant/WHATSNEW,v
retrieving revision 1.455
retrieving revision 1.456
diff -u -r1.455 -r1.456
--- WHATSNEW 10 Jul 2003 13:23:47 -0000 1.455
+++ WHATSNEW 11 Jul 2003 21:25:35 -0000 1.456
@@ -49,6 +49,10 @@
allows a per-user library location to be used if the main Ant install
is locked down.
+* The Entry nested element of PropertyFile will not any more have its value
+ attribute (actually increment) overwritten with the new value of the entry
+ after execution.
+
Fixed bugs:
-----------
* Filter readers were not handling line endings properly. Bugzilla
@@ -194,6 +198,10 @@
* Don't multiply Class-Path attributes when updating jars. Bugzilla
Report 21170.
+
+* Do not overwrite the value (increment) attribute of PropertyFile nested
Entry element.
+ Bugzilla Report 21505.
+
Other changes:
--------------
1.29 +14 -32
ant/src/main/org/apache/tools/ant/taskdefs/optional/PropertyFile.java
Index: PropertyFile.java
===================================================================
RCS file:
/home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/optional/PropertyFile.java,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -r1.28 -r1.29
--- PropertyFile.java 16 Feb 2003 13:57:42 -0000 1.28
+++ PropertyFile.java 11 Jul 2003 21:25:35 -0000 1.29
@@ -249,23 +249,7 @@
BufferedOutputStream bos = null;
try {
bos = new BufferedOutputStream(new
FileOutputStream(propertyfile));
-
- // Properties.store is not available in JDK 1.1
- Method m =
- Properties.class.getMethod("store",
- new Class[] {
- OutputStream.class,
- String.class});
- m.invoke(properties, new Object[] {bos, comment});
-
- } catch (NoSuchMethodException nsme) {
- properties.save(bos, comment);
- } catch (InvocationTargetException ite) {
- Throwable t = ite.getTargetException();
- throw new BuildException(t, getLocation());
- } catch (IllegalAccessException iae) {
- // impossible
- throw new BuildException(iae, getLocation());
+ properties.store(bos, comment);
} catch (IOException ioe) {
throw new BuildException(ioe, getLocation());
} finally {
@@ -277,14 +261,6 @@
}
}
- /**
- * Returns whether the given parameter has been defined.
- * @todo IDEA is saying this method is never used - remove?
- */
- private boolean checkParam(String param) {
- return !((param == null) || (param.equals("null")));
- }
-
private boolean checkParam(File param) {
return !(param == null);
}
@@ -303,6 +279,7 @@
private int operation = Operation.EQUALS_OPER;
private String value = null;
private String defaultValue = null;
+ private String newValue = null;
private String pattern = null;
private int field = Calendar.DATE;
@@ -396,12 +373,12 @@
npe.printStackTrace();
}
- if (value == null) {
- value = "";
+ if (newValue == null) {
+ newValue = "";
}
// Insert as a string by default
- props.put(key, value);
+ props.put(key, newValue);
}
/**
@@ -447,7 +424,7 @@
currentValue.add(field, offset);
}
- value = fmt.format(currentValue.getTime());
+ newValue = fmt.format(currentValue.getTime());
}
@@ -466,7 +443,12 @@
DecimalFormat fmt = (pattern != null) ? new
DecimalFormat(pattern)
: new DecimalFormat();
try {
- currentValue =
fmt.parse(getCurrentValue(oldValue)).intValue();
+ String curval = getCurrentValue(oldValue);
+ if (curval != null) {
+ currentValue = fmt.parse(curval).intValue();
+ } else {
+ currentValue = 0;
+ }
} catch (NumberFormatException nfe) {
// swallow
} catch (ParseException pe) {
@@ -494,7 +476,7 @@
}
}
- value = fmt.format(newValue);
+ this.newValue = fmt.format(newValue);
}
/**
@@ -518,7 +500,7 @@
} else if (operation == Operation.INCREMENT_OPER) {
newValue = currentValue + value;
}
- value = newValue;
+ this.newValue = newValue;
}
/**
1.8 +19 -4
ant/src/testcases/org/apache/tools/ant/taskdefs/optional/PropertyFileTest.java
Index: PropertyFileTest.java
===================================================================
RCS file:
/home/cvs/ant/src/testcases/org/apache/tools/ant/taskdefs/optional/PropertyFileTest.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- PropertyFileTest.java 10 Feb 2003 14:14:51 -0000 1.7
+++ PropertyFileTest.java 11 Jul 2003 21:25:35 -0000 1.8
@@ -1,7 +1,7 @@
/*
* The Apache Software License, Version 1.1
*
- * Copyright (c) 2001-2002 The Apache Software Foundation. All rights
+ * Copyright (c) 2001-2003 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -85,6 +85,7 @@
initTestPropFile();
initBuildPropFile();
configureProject(projectFilePath);
+
project.setProperty(valueDoesNotGetOverwrittenPropertyFileKey,valueDoesNotGetOverwrittenPropertyFile);
}
@@ -134,6 +135,12 @@
assertEquals("6",project.getProperty("int.without.value"));
}
+ public void testValueDoesNotGetOverwritten() {
+ // this test shows that the bug report 21505 is fixed
+ executeTarget("bugDemo1");
+ executeTarget("bugDemo2");
+ assertEquals("5", project.getProperty("foo"));
+ }
/*
public void testDirect() throws Exception {
PropertyFile pf = new PropertyFile();
@@ -175,7 +182,7 @@
testProps.put("existing.prop", "37");
FileOutputStream fos = new FileOutputStream(testPropsFilePath);
- testProps.save(fos, "defaults");
+ testProps.store(fos, "defaults");
fos.close();
}
@@ -191,7 +198,7 @@
buildProps.put(DATE_KEY, NEW_DATE);
FileOutputStream fos = new FileOutputStream(buildPropsFilePath);
- buildProps.save(fos, null);
+ buildProps.store(fos, null);
fos.close();
}
@@ -204,6 +211,10 @@
tempFile = new File(buildPropsFilePath);
tempFile.delete();
tempFile = null;
+
+ tempFile = new File(valueDoesNotGetOverwrittenPropsFilePath);
+ tempFile.delete();
+ tempFile = null;
}
@@ -214,7 +225,11 @@
testPropertyFile = "propertyfile.test.properties",
testPropertyFileKey = "test.propertyfile",
testPropsFilePath = "src/etc/testcases/taskdefs/optional/" +
testPropertyFile,
-
+
+ valueDoesNotGetOverwrittenPropertyFile =
"overwrite.test.properties",
+ valueDoesNotGetOverwrittenPropertyFileKey =
"overwrite.test.propertyfile",
+ valueDoesNotGetOverwrittenPropsFilePath =
"src/etc/testcases/taskdefs/optional/" + valueDoesNotGetOverwrittenPropertyFile,
+
buildPropsFilePath =
"src/etc/testcases/taskdefs/optional/propertyfile.build.properties",
FNAME = "Bruce",
1.4 +14 -0 ant/src/etc/testcases/taskdefs/optional/propertyfile.xml
Index: propertyfile.xml
===================================================================
RCS file: /home/cvs/ant/src/etc/testcases/taskdefs/optional/propertyfile.xml,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- propertyfile.xml 1 Jun 2002 12:26:37 -0000 1.3
+++ propertyfile.xml 11 Jul 2003 21:25:35 -0000 1.4
@@ -69,6 +69,20 @@
</propertyfile>
<property file="${test.propertyfile}"/>
</target>
+ <target name="createfile">
+ <echo file="${overwrite.test.propertyfile}">
+ foo=3
+ </echo>
+ </target>
+ <target name="bugDemo1" depends="createfile,bugDemoInit"/>
+ <target name="bugDemo2" depends="bugDemoInit">
+ <property file="${overwrite.test.propertyfile}"/>
+ </target>
+ <target name="bugDemoInit">
+ <propertyfile file="${overwrite.test.propertyfile}">
+ <entry key="foo" default="0" value="1" operation="+" type="int"/>
+ </propertyfile>
+ </target>
</project>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]