You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@juneau.apache.org by ja...@apache.org on 2017/03/29 18:35:06 UTC
incubator-juneau git commit: Add remoteable proxy support for RDF.
Repository: incubator-juneau
Updated Branches:
refs/heads/master 657fb5e07 -> 7ff5e8981
Add remoteable proxy support for RDF.
Project: http://git-wip-us.apache.org/repos/asf/incubator-juneau/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-juneau/commit/7ff5e898
Tree: http://git-wip-us.apache.org/repos/asf/incubator-juneau/tree/7ff5e898
Diff: http://git-wip-us.apache.org/repos/asf/incubator-juneau/diff/7ff5e898
Branch: refs/heads/master
Commit: 7ff5e8981c288e8703892872fb84b115128d03f0
Parents: 657fb5e
Author: JamesBognar <ja...@apache.org>
Authored: Wed Mar 29 14:35:04 2017 -0400
Committer: JamesBognar <ja...@apache.org>
Committed: Wed Mar 29 14:35:04 2017 -0400
----------------------------------------------------------------------
.../java/org/apache/juneau/jena/RdfParser.java | 49 +++++++++++---------
.../juneau/rest/test/InterfaceProxyTest.java | 3 +-
2 files changed, 30 insertions(+), 22 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/7ff5e898/juneau-core-rdf/src/main/java/org/apache/juneau/jena/RdfParser.java
----------------------------------------------------------------------
diff --git a/juneau-core-rdf/src/main/java/org/apache/juneau/jena/RdfParser.java b/juneau-core-rdf/src/main/java/org/apache/juneau/jena/RdfParser.java
index ae7b12a..30042df 100644
--- a/juneau-core-rdf/src/main/java/org/apache/juneau/jena/RdfParser.java
+++ b/juneau-core-rdf/src/main/java/org/apache/juneau/jena/RdfParser.java
@@ -169,14 +169,16 @@ public class RdfParser extends ReaderParser {
// Special case where we're parsing a loose collection of resources.
if (s.isLooseCollections() && type.isCollectionOrArray()) {
Collection c = null;
- if (type.isArray())
+ if (type.isArray() || type.isArgs())
c = new ArrayList();
else
c = (type.canCreateNewInstance(session.getOuter()) ? (Collection<?>)type.newInstance(session.getOuter()) : new ObjectList(session));
+
+ int argIndex = 0;
for (Resource resource : roots)
- c.add(parseAnything(s, type.getElementType(), resource, session.getOuter(), null));
+ c.add(parseAnything(s, type.isArgs() ? type.getArg(argIndex++) : type.getElementType(), resource, session.getOuter(), null));
- if (type.isArray())
+ if (type.isArray() || type.isArgs())
return (T)session.toArray(type, c);
return (T)c;
}
@@ -301,13 +303,13 @@ public class RdfParser extends ReaderParser {
o = parseAnything(session, object(), n.asResource().getProperty(session.getValueProperty()).getObject(), outer, null);
} else if (isSeq(session, r)) {
o = new ObjectList(session);
- parseIntoCollection(session, r.as(Seq.class), (Collection)o, sType.getElementType(), pMeta);
+ parseIntoCollection(session, r.as(Seq.class), (Collection)o, sType, pMeta);
} else if (isBag(session, r)) {
o = new ObjectList(session);
- parseIntoCollection(session, r.as(Bag.class), (Collection)o, sType.getElementType(), pMeta);
+ parseIntoCollection(session, r.as(Bag.class), (Collection)o, sType, pMeta);
} else if (r.canAs(RDFList.class)) {
o = new ObjectList(session);
- parseIntoCollection(session, r.as(RDFList.class), (Collection)o, sType.getElementType(), pMeta);
+ parseIntoCollection(session, r.as(RDFList.class), (Collection)o, sType, pMeta);
} else {
// If it has a URI and no child properties, we interpret this as an
// external resource, and convert it to just a URL.
@@ -337,8 +339,8 @@ public class RdfParser extends ReaderParser {
return null;
Map m = (sType.canCreateNewInstance(outer) ? (Map)sType.newInstance(outer) : new ObjectMap(session));
o = parseIntoMap(session, r, m, eType.getKeyType(), eType.getValueType(), pMeta);
- } else if (sType.isCollectionOrArray()) {
- if (sType.isArray())
+ } else if (sType.isCollectionOrArray() || sType.isArgs()) {
+ if (sType.isArray() || sType.isArgs())
o = new ArrayList();
else
o = (sType.canCreateNewInstance(outer) ? (Collection<?>)sType.newInstance(outer) : new ObjectList(session));
@@ -346,15 +348,15 @@ public class RdfParser extends ReaderParser {
if (session.wasAlreadyProcessed(r))
return null;
if (isSeq(session, r)) {
- parseIntoCollection(session, r.as(Seq.class), (Collection)o, sType.getElementType(), pMeta);
+ parseIntoCollection(session, r.as(Seq.class), (Collection)o, sType, pMeta);
} else if (isBag(session, r)) {
- parseIntoCollection(session, r.as(Bag.class), (Collection)o, sType.getElementType(), pMeta);
+ parseIntoCollection(session, r.as(Bag.class), (Collection)o, sType, pMeta);
} else if (r.canAs(RDFList.class)) {
- parseIntoCollection(session, r.as(RDFList.class), (Collection)o, sType.getElementType(), pMeta);
+ parseIntoCollection(session, r.as(RDFList.class), (Collection)o, sType, pMeta);
} else {
throw new ParseException("Unrecognized node type ''{0}'' for collection", n);
}
- if (sType.isArray())
+ if (sType.isArray() || sType.isArgs())
o = session.toArray(sType, (Collection)o);
} else if (sType.canCreateNewBean(outer)) {
Resource r = n.asResource();
@@ -446,27 +448,26 @@ public class RdfParser extends ReaderParser {
return m;
}
- private <E> Collection<E> parseIntoCollection(RdfParserSession session, Container c, Collection<E> l, ClassMeta<E> et, BeanPropertyMeta pMeta) throws Exception {
+ @SuppressWarnings("unchecked")
+ private <E> Collection<E> parseIntoCollection(RdfParserSession session, Container c, Collection<E> l, ClassMeta<?> type, BeanPropertyMeta pMeta) throws Exception {
+ int argIndex = 0;
for (NodeIterator ni = c.iterator(); ni.hasNext();) {
- E e = parseAnything(session, et, ni.next(), l, pMeta);
+ E e = (E)parseAnything(session, type.isArgs() ? type.getArg(argIndex++) : type.getElementType(), ni.next(), l, pMeta);
l.add(e);
}
return l;
}
- private <E> Collection<E> parseIntoCollection(RdfParserSession session, RDFList list, Collection<E> l, ClassMeta<E> et, BeanPropertyMeta pMeta) throws Exception {
+ @SuppressWarnings("unchecked")
+ private <E> Collection<E> parseIntoCollection(RdfParserSession session, RDFList list, Collection<E> l, ClassMeta<?> type, BeanPropertyMeta pMeta) throws Exception {
+ int argIndex = 0;
for (ExtendedIterator<RDFNode> ni = list.iterator(); ni.hasNext();) {
- E e = parseAnything(session, et, ni.next(), l, pMeta);
+ E e = (E)parseAnything(session, type.isArgs() ? type.getArg(argIndex++) : type.getElementType(), ni.next(), l, pMeta);
l.add(e);
}
return l;
}
- @Override /* Parser */
- protected Object[] doParseArgs(ParserSession session, ClassMeta<Object[]> args) throws Exception {
- throw new UnsupportedOperationException("Parser '"+getClass().getName()+"' does not support this method.");
- }
-
//--------------------------------------------------------------------------------
// Entry point methods
@@ -476,4 +477,10 @@ public class RdfParser extends ReaderParser {
public RdfParserSession createSession(Object input, ObjectMap op, Method javaMethod, Object outer, Locale locale, TimeZone timeZone, MediaType mediaType) {
return new RdfParserSession(ctx, op, input, javaMethod, outer, locale, timeZone, mediaType);
}
+
+ @Override /* Parser */
+ protected Object[] doParseArgs(ParserSession session, ClassMeta<Object[]> args) throws Exception {
+ return doParse(session, args);
+ }
+
}
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/7ff5e898/juneau-rest-test/src/test/java/org/apache/juneau/rest/test/InterfaceProxyTest.java
----------------------------------------------------------------------
diff --git a/juneau-rest-test/src/test/java/org/apache/juneau/rest/test/InterfaceProxyTest.java b/juneau-rest-test/src/test/java/org/apache/juneau/rest/test/InterfaceProxyTest.java
index b7d9928..4bdc15a 100644
--- a/juneau-rest-test/src/test/java/org/apache/juneau/rest/test/InterfaceProxyTest.java
+++ b/juneau-rest-test/src/test/java/org/apache/juneau/rest/test/InterfaceProxyTest.java
@@ -19,6 +19,7 @@ import static org.junit.Assert.*;
import java.util.*;
import org.apache.juneau.html.*;
+import org.apache.juneau.jena.*;
import org.apache.juneau.json.*;
import org.apache.juneau.msgpack.*;
import org.apache.juneau.parser.*;
@@ -46,7 +47,7 @@ public class InterfaceProxyTest extends RestTestcase {
{ /* 4 */ "MessagePack", MsgPackSerializer.DEFAULT, MsgPackParser.DEFAULT },
{ /* 5 */ "UrlEncoding", UrlEncodingSerializer.DEFAULT, UrlEncodingParser.DEFAULT },
{ /* 6 */ "Uon", UonSerializer.DEFAULT, UonParser.DEFAULT },
- //{ /* 7 */ "RdfXml", RdfSerializer.DEFAULT_XMLABBREV, RdfParser.DEFAULT_XML },
+ { /* 7 */ "RdfXml", RdfSerializer.DEFAULT_XMLABBREV, RdfParser.DEFAULT_XML },
});
}