/** * Parse a YAML stream and produce parsing events. * * @see <a href="http://yaml.org/spec/1.1/#id859333">Processing Overview</a> * @param yaml * YAML document(s) * @return parsed events */ public Iterable<Event> parse(Reader yaml) { final Parser parser = new ParserImpl(new StreamReader(yaml)); Iterator<Event> result = new Iterator<Event>() { public boolean hasNext() { return parser.peekEvent() != null; } public Event next() { return parser.getEvent(); } public void remove() { throw new UnsupportedOperationException(); } }; return new EventIterable(result); }
/** * Parse all YAML documents in a String and produce corresponding Java * objects. The documents are parsed only when the iterator is invoked. * * @param yaml * YAML data to load from (BOM must not be present) * @return an iterator over the parsed Java objects in this String in proper * sequence */ public Iterable<Object> loadAll(Reader yaml) { Composer composer = new Composer(new ParserImpl(new StreamReader(yaml)), resolver); constructor.setComposer(composer); Iterator<Object> result = new Iterator<Object>() { public boolean hasNext() { return constructor.checkData(); } public Object next() { return constructor.getData(); } public void remove() { throw new UnsupportedOperationException(); } }; return new YamlIterable(result); }
/** * Parse all YAML documents in a stream and produce corresponding * representation trees. * * @see <a href="http://yaml.org/spec/1.1/#id859333">Processing Overview</a> * @param yaml * stream of YAML documents * @return parsed root Nodes for all the specified YAML documents */ public Iterable<Node> composeAll(Reader yaml) { final Composer composer = new Composer(new ParserImpl(new StreamReader(yaml)), resolver); constructor.setComposer(composer); Iterator<Node> result = new Iterator<Node>() { public boolean hasNext() { return composer.checkNode(); } public Node next() { return composer.getNode(); } public void remove() { throw new UnsupportedOperationException(); } }; return new NodeIterable(result); }
/** * Parse the only YAML document in a stream as configuration object. * * @param template * template of config object. * @param io * data to load from (BOM must not be present) * @param <T> * type of config object. * * @return parsed object */ @SuppressWarnings("unchecked") @Nullable public <T extends Config> T fromYaml(ConfigTemplate<T> template, Reader io) { ClassLoader old = Thread.currentThread().getContextClassLoader(); if (old == null) { Thread.currentThread().setContextClassLoader(template.getConfigType().getClassLoader()); } try { Composer composer = new Composer(new ParserImpl(new StreamReader(io)), new ConfigTemplateResolver(template)); this.constructor.setComposer(composer); return (T) this.constructor.getSingleData(template.getConfigType()); } finally { if (old == null) { Thread.currentThread().setContextClassLoader(null); } } }
@Nullable private Object loadFromReader(StreamReader sreader, Class<?> type) { ClassLoader old = Thread.currentThread().getContextClassLoader(); if (old == null) { Thread.currentThread().setContextClassLoader(type.getClassLoader()); } try { Composer composer = new Composer(new ParserImpl(sreader), this.resolver); this.constructor.setComposer(composer); return this.constructor.getSingleData(type); } finally { if (old == null) { Thread.currentThread().setContextClassLoader(null); } } }
protected List<Event> parse(InputStream input) throws IOException { StreamReader reader = new StreamReader(new UnicodeReader(input)); Parser parser = new ParserImpl(reader); List<Event> result = new ArrayList<Event>(); while (parser.peekEvent() != null) { result.add(parser.getEvent()); } input.close(); return result; }
private List<Node> compose_all(InputStream file) { Composer composer = new Composer(new ParserImpl(new StreamReader(new UnicodeReader(file))), new Resolver()); List<Node> documents = new ArrayList<Node>(); while (composer.checkNode()) { documents.add(composer.getNode()); } return documents; }
public Iterable<Node> composeAll(StreamReader yaml) { final Composer composer = new Composer(new ParserImpl(yaml), resolver); constructor.setComposer(composer); final Iterator<Node> result = new Iterator<Node>() { public boolean hasNext() { return composer.checkNode(); } public Node next() { return composer.getNode(); } public void remove() { throw new UnsupportedOperationException(); } }; return new Iterable<Node>() { public Iterator<Node> iterator() { return result; } }; }
/** * Parse all YAML documents in a String and produce corresponding Java objects. The documents are parsed only when the iterator is * invoked. * * @param yaml * YAML data to load from (BOM must not be present) * @return an iterator over the parsed Java objects in this String in proper sequence */ public Iterable<Object> loadAll(final Reader yaml) { Composer composer = new Composer(new ParserImpl(new StreamReader(yaml)), resolver); constructor.setComposer(composer); Iterator<Object> result = new Iterator<Object>() { @Override public boolean hasNext() { return constructor.checkData(); } @Override public Object next() { return constructor.getData(); } @Override public void remove() { throw new UnsupportedOperationException(); } }; return new YamlIterable(result); }
/** * Parse all YAML documents in a stream and produce corresponding representation trees. * * @see <a href="http://yaml.org/spec/1.1/#id859333">Processing Overview</a> * @param yaml * stream of YAML documents * @return parsed root Nodes for all the specified YAML documents */ public Iterable<Node> composeAll(final Reader yaml) { final Composer composer = new Composer(new ParserImpl(new StreamReader(yaml)), resolver); constructor.setComposer(composer); Iterator<Node> result = new Iterator<Node>() { @Override public boolean hasNext() { return composer.checkNode(); } @Override public Node next() { return composer.getNode(); } @Override public void remove() { throw new UnsupportedOperationException(); } }; return new NodeIterable(result); }
/** * Parse a YAML stream and produce parsing events. * * @see <a href="http://yaml.org/spec/1.1/#id859333">Processing Overview</a> * @param yaml * YAML document(s) * @return parsed events */ public Iterable<Event> parse(final Reader yaml) { final Parser parser = new ParserImpl(new StreamReader(yaml)); Iterator<Event> result = new Iterator<Event>() { @Override public boolean hasNext() { return parser.peekEvent() != null; } @Override public Event next() { return parser.getEvent(); } @Override public void remove() { throw new UnsupportedOperationException(); } }; return new EventIterable(result); }
public void testFragment() { String document = "foo: blargle\n" + "developer: { name: \"Bjarne Stroustrup\", language: \"C++\"}\n" + "gee: [ \"whiz\", \"bang\"]\n";// StreamReader reader = new StreamReader(document); Composer composer = new FragmentComposer(new ParserImpl(reader), new Resolver(), "developer"); Constructor constructor = new Constructor(); constructor.setComposer(composer); DeveloperBean developer = (DeveloperBean) constructor.getSingleData(DeveloperBean.class); assertEquals("Bjarne Stroustrup", developer.name); assertEquals("C++", developer.language); }
private Object construct(Constructor constructor, String data) { StreamReader reader = new StreamReader(data); Parser parser = new ParserImpl(reader); Resolver resolver = new Resolver(); Composer composer = new Composer(parser, resolver); constructor.setComposer(composer); return constructor.getSingleData(Object.class); }
@SuppressWarnings("unchecked") private List<Object> construct(Constructor constructor, String data) { StreamReader reader = new StreamReader(data); Parser parser = new ParserImpl(reader); Resolver resolver = new Resolver(); Composer composer = new Composer(parser, resolver); constructor.setComposer(composer); List<Object> result = (List<Object>) constructor.getSingleData(Object.class); return result; }
private List<Event> parse(String data) { ParserImpl parser = new ParserImpl(new StreamReader(data)); List<Event> newEvents = new ArrayList<Event>(); while (parser.peekEvent() != null) { newEvents.add(parser.getEvent()); } return newEvents; }
private Object loadFromReader(StreamReader sreader, Class<?> type) { Composer composer = new Composer(new ParserImpl(sreader), resolver); constructor.setComposer(composer); return constructor.getSingleData(type); }