use of groovy.lang.Writable in project grails-core by grails.
the class JSONObject method writeQuoted.
static void writeQuoted(Writer writer, Object value) throws IOException {
if (useStreamingJavascriptEncoder) {
writer.write("\"");
if (value.getClass() == String.class || value.getClass() == StringBuilder.class || value.getClass() == StringBuffer.class) {
encodeToWriter((CharSequence) value, writer);
} else if (value instanceof StreamingEncoderWritable) {
((StreamingEncoderWritable) value).encodeTo(writer, javascriptEncoderStateless);
} else if (value instanceof Writable) {
((Writable) value).writeTo(new StreamingEncoderWriter(writer, javascriptEncoder, null));
} else {
encodeToWriter(value.toString(), writer);
}
writer.write("\"");
} else {
writer.write(valueToString(value));
}
}
use of groovy.lang.Writable in project groovy-core by groovy.
the class IOGroovyMethods method filterLine.
/**
* Filter the lines from this Reader, and return a Writable which can be
* used to stream the filtered lines to a destination. The closure should
* return <code>true</code> if the line should be passed to the writer.
*
* @param reader this reader
* @param closure a closure used for filtering
* @return a Writable which will use the closure to filter each line
* from the reader when the Writable#writeTo(Writer) is called.
* @since 1.0
*/
public static Writable filterLine(Reader reader, @ClosureParams(value = SimpleType.class, options = "java.lang.String") final Closure closure) {
final BufferedReader br = new BufferedReader(reader);
return new Writable() {
public Writer writeTo(Writer out) throws IOException {
BufferedWriter bw = new BufferedWriter(out);
String line;
BooleanClosureWrapper bcw = new BooleanClosureWrapper(closure);
while ((line = br.readLine()) != null) {
if (bcw.call(line)) {
bw.write(line);
bw.newLine();
}
}
bw.flush();
return out;
}
public String toString() {
StringWriter buffer = new StringWriter();
try {
writeTo(buffer);
} catch (IOException e) {
throw new StringWriterIOException(e);
}
return buffer.toString();
}
};
}
use of groovy.lang.Writable in project groovy-core by groovy.
the class EncodingGroovyMethods method encodeHex.
/**
* Produces a Writable that writes the hex encoding of the byte[]. Calling
* toString() on this Writable returns the hex encoding as a String. The hex
* encoding includes two characters for each byte and all letters are lower case.
*
* @param data byte array to be encoded
* @return object which will write the hex encoding of the byte array
* @see Integer#toHexString(int)
*/
public static Writable encodeHex(final byte[] data) {
return new Writable() {
public Writer writeTo(Writer out) throws IOException {
for (int i = 0; i < data.length; i++) {
// convert byte into unsigned hex string
String hexString = Integer.toHexString(data[i] & 0xFF);
// add leading zero if the length of the string is one
if (hexString.length() < 2) {
out.write("0");
}
// write hex string to writer
out.write(hexString);
}
return out;
}
public String toString() {
StringWriter buffer = new StringWriter();
try {
writeTo(buffer);
} catch (IOException e) {
throw new StringWriterIOException(e);
}
return buffer.toString();
}
};
}
use of groovy.lang.Writable in project grails-core by grails.
the class Base64ByteArrayMarshaller method marshalObject.
public void marshalObject(Object object, XML xml) throws ConverterException {
xml.attribute("encoding", "BASE-64");
xml.chars("");
Writable w;
if (object instanceof byte[]) {
w = EncodingGroovyMethods.encodeBase64((byte[]) object);
} else {
w = EncodingGroovyMethods.encodeBase64((Byte[]) object);
}
try {
w.writeTo(xml.getStream());
} catch (IOException e) {
throw new ConverterException(e);
}
}
use of groovy.lang.Writable in project groovy-core by groovy.
the class XmlUtil method asString.
private static String asString(GPathResult node) {
// little bit of hackery to avoid Groovy dependency in this file
try {
Object builder = ((Class) Class.forName("groovy.xml.StreamingMarkupBuilder")).newInstance();
InvokerHelper.setProperty(builder, "encoding", "UTF-8");
Writable w = (Writable) InvokerHelper.invokeMethod(builder, "bindNode", node);
return "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + w.toString();
} catch (Exception e) {
return "Couldn't convert node to string because: " + e.getMessage();
}
}
Aggregations