@@ -42,8 +42,10 @@ public final class ExpandProperties
extends BaseFilterReader
extends BaseFilterReader
implements ChainableReader {
implements ChainableReader {
/** Data that must be read from, if not null. */
private String queuedData = null;
private static final int EOF = -1;
private char[] buffer;
private int index;
private PropertySet propertySet;
private PropertySet propertySet;
/**
/**
@@ -89,24 +91,9 @@ public final class ExpandProperties
* during reading
* during reading
*/
*/
public int read() throws IOException {
public int read() throws IOException {
int ch = -1;
if (queuedData != null && queuedData.length() == 0) {
queuedData = null;
}
if (queuedData != null) {
ch = queuedData.charAt(0);
queuedData = queuedData.substring(1);
if (queuedData.length() == 0) {
queuedData = null;
}
} else {
queuedData = readFully();
if (queuedData == null || queuedData.length() == 0) {
ch = -1;
} else {
if (index > EOF) {
if (buffer == null) {
String data = readFully();
Project project = getProject();
Project project = getProject();
GetProperty getProperty;
GetProperty getProperty;
if (propertySet == null) {
if (propertySet == null) {
@@ -114,18 +101,22 @@ public final class ExpandProperties
} else {
} else {
final Properties props = propertySet.getProperties();
final Properties props = propertySet.getProperties();
getProperty = new GetProperty() {
getProperty = new GetProperty() {
public Object getProperty(String name) {
public Object getProperty(String name) {
return props.getProperty(name);
return props.getProperty(name);
}
}
};
};
}
}
queuedData = new ParseProperties(project, PropertyHelper.getPropertyHelper(project)
.getExpanders(), getProperty).parseProperties(queuedData).toString();
return read();
buffer = new ParseProperties(project, PropertyHelper.getPropertyHelper(project)
.getExpanders(), getProperty).parseProperties(data).toString()
.toCharArray();
}
if (index < buffer.length) {
return buffer[index++];
}
}
index = EOF;
}
}
return ch;
return EOF ;
}
}
/**
/**