package org.addsimplicity.anicetus;
import java.io.CharArrayReader;
import java.io.CharArrayWriter;
import java.io.IOException;
import java.io.Writer;
import java.util.ArrayList;
import java.util.List;
import org.codehaus.jackson.JsonFactory;
import org.codehaus.jackson.JsonNode;
import org.codehaus.jackson.JsonParser;
import org.codehaus.jackson.map.ObjectMapper;
public class InMemoryAdapter extends Writer {
private CharArrayWriter m_delegate;
void clear() {
m_delegate = new CharArrayWriter();
}
@Override
public void close() throws IOException {
m_delegate.close();
}
@Override
public void flush() throws IOException {
m_delegate.flush();
}
List<JsonNode> getAllObjects() throws Exception {
System.out.println(m_delegate.toCharArray());
JsonFactory fact = new JsonFactory();
JsonParser parser = fact.createJsonParser(new CharArrayReader(
m_delegate.toCharArray()));
ObjectMapper mapper = new ObjectMapper();
List<JsonNode> result = new ArrayList<JsonNode>();
while (true) {
try {
JsonNode node = mapper.readTree(parser);
if (node == null) {
break;
}
result.add(node);
} catch (Exception e) {
break;
}
}
return result;
}
JsonNode getObjectGraph() throws Exception {
System.out.println(m_delegate.toCharArray());
JsonFactory fact = new JsonFactory();
JsonParser parser = fact.createJsonParser(new CharArrayReader(
m_delegate.toCharArray()));
ObjectMapper mapper = new ObjectMapper();
return mapper.readTree(parser);
}
@Override
public void write(char[] cbuf, int off, int len) throws IOException {
m_delegate.write(cbuf, off, len);
}
}