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/02/03 02:04:56 UTC
incubator-juneau git commit: Jena parsers are not using _type
attributes like the rest of the API.
Repository: incubator-juneau
Updated Branches:
refs/heads/master 22b24ff57 -> 738a0d2b4
Jena parsers are not using _type attributes like the rest of the API.
Project: http://git-wip-us.apache.org/repos/asf/incubator-juneau/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-juneau/commit/738a0d2b
Tree: http://git-wip-us.apache.org/repos/asf/incubator-juneau/tree/738a0d2b
Diff: http://git-wip-us.apache.org/repos/asf/incubator-juneau/diff/738a0d2b
Branch: refs/heads/master
Commit: 738a0d2b49ac86254c3df1b455555c1146083bc9
Parents: 22b24ff
Author: JamesBognar <ja...@apache.org>
Authored: Thu Feb 2 21:04:53 2017 -0500
Committer: JamesBognar <ja...@apache.org>
Committed: Thu Feb 2 21:04:53 2017 -0500
----------------------------------------------------------------------
.../java/org/apache/juneau/jena/Constants.java | 2 +-
.../java/org/apache/juneau/jena/RdfParser.java | 34 +++++++++++---------
.../apache/juneau/jena/RdfParserSession.java | 18 +++++------
.../org/apache/juneau/jena/RdfSerializer.java | 8 ++---
.../juneau/jena/RdfSerializerSession.java | 8 ++---
.../apache/juneau/jena/CommonParserTest.java | 6 ++--
6 files changed, 39 insertions(+), 37 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/738a0d2b/juneau-core-rdf/src/main/java/org/apache/juneau/jena/Constants.java
----------------------------------------------------------------------
diff --git a/juneau-core-rdf/src/main/java/org/apache/juneau/jena/Constants.java b/juneau-core-rdf/src/main/java/org/apache/juneau/jena/Constants.java
index 1e4d8ea..00873ba 100644
--- a/juneau-core-rdf/src/main/java/org/apache/juneau/jena/Constants.java
+++ b/juneau-core-rdf/src/main/java/org/apache/juneau/jena/Constants.java
@@ -67,7 +67,7 @@ public final class Constants {
* <p>
* Added if {@link SerializerContext#SERIALIZER_addBeanTypeProperties} setting is enabled.
*/
- public static final String RDF_juneauNs_CLASS = "class";
+ public static final String RDF_juneauNs_TYPE = "_type";
/**
* RDF property identifier <js>"value"</js>.
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/738a0d2b/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 c62938d..26a9697 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
@@ -124,7 +124,7 @@ public class RdfParser extends ReaderParser {
else
c = (type.canCreateNewInstance(session.getOuter()) ? (Collection<?>)type.newInstance(session.getOuter()) : new ObjectList(session));
for (Resource resource : roots)
- c.add(parseAnything(s, type.getElementType(), resource, session.getOuter()));
+ c.add(parseAnything(s, type.getElementType(), resource, session.getOuter(), null));
if (type.isArray())
return (T)session.toArray(type, c);
@@ -137,7 +137,7 @@ public class RdfParser extends ReaderParser {
throw new ParseException(session, "Too many root nodes found in model: {0}", roots.size());
Resource resource = roots.get(0);
- return parseAnything(s, type, resource, session.getOuter());
+ return parseAnything(s, type, resource, session.getOuter(), null);
}
/*
@@ -202,18 +202,18 @@ public class RdfParser extends ReaderParser {
ClassMeta<?> cm = pMeta.getClassMeta();
if (cm.isCollectionOrArray() && isMultiValuedCollections(session, pMeta)) {
ClassMeta<?> et = cm.getElementType();
- Object value = parseAnything(session, et, o, m.getBean(false));
+ Object value = parseAnything(session, et, o, m.getBean(false), pMeta);
setName(et, value, key);
pMeta.add(m, value);
} else {
- Object value = parseAnything(session, cm, o, m.getBean(false));
+ Object value = parseAnything(session, cm, o, m.getBean(false), pMeta);
setName(cm, value, key);
pMeta.set(m, value);
}
- } else if (! (p.equals(session.getRootProperty()) || p.equals(session.getClassProperty()) || p.equals(subTypeIdProperty))) {
+ } else if (! (p.equals(session.getRootProperty()) || p.equals(session.getTypeProperty()) || p.equals(subTypeIdProperty))) {
if (bm.isSubTyped()) {
RDFNode o = st.getObject();
- Object value = parseAnything(session, object(), o, m.getBean(false));
+ Object value = parseAnything(session, object(), o, m.getBean(false), pMeta);
m.put(key, value);
} else {
onUnknownProperty(session, key, m, -1, -1);
@@ -231,20 +231,22 @@ public class RdfParser extends ReaderParser {
}
@SuppressWarnings({ "unchecked", "rawtypes" })
- private <T> T parseAnything(RdfParserSession session, ClassMeta<T> eType, RDFNode n, Object outer) throws Exception {
+ private <T> T parseAnything(RdfParserSession session, ClassMeta<T> eType, RDFNode n, Object outer, BeanPropertyMeta pMeta) throws Exception {
if (eType == null)
eType = (ClassMeta<T>)object();
PojoSwap<T,Object> transform = (PojoSwap<T,Object>)eType.getPojoSwap();
ClassMeta<?> sType = eType.getSerializedClassMeta();
session.setCurrentClass(sType);
+ BeanRegistry breg = pMeta == null ? session.getBeanRegistry() : pMeta.getBeanRegistry();
if (! sType.canCreateNewInstance(outer)) {
if (n.isResource()) {
- Statement st = n.asResource().getProperty(session.getClassProperty());
+ Statement st = n.asResource().getProperty(session.getTypeProperty());
if (st != null) {
String c = st.getLiteral().getString();
- sType = eType = (ClassMeta<T>)session.getClassMetaFromString(c);
+ if (breg.hasName(c))
+ sType = eType = (ClassMeta<T>)breg.getClassMeta(c);
}
}
}
@@ -264,7 +266,7 @@ public class RdfParser extends ReaderParser {
if (session.wasAlreadyProcessed(r))
o = r.getURI();
else if (r.getProperty(session.getValueProperty()) != null) {
- o = parseAnything(session, object(), n.asResource().getProperty(session.getValueProperty()).getObject(), outer);
+ 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());
@@ -355,7 +357,7 @@ public class RdfParser extends ReaderParser {
private boolean isSeq(RdfParserSession session, RDFNode n) {
if (n.isResource()) {
- Statement st = n.asResource().getProperty(session.getTypeProperty());
+ Statement st = n.asResource().getProperty(session.getRdfTypeProperty());
if (st != null)
return RDF_SEQ.equals(st.getResource().getURI());
}
@@ -364,7 +366,7 @@ public class RdfParser extends ReaderParser {
private boolean isBag(RdfParserSession session, RDFNode n) {
if (n.isResource()) {
- Statement st = n.asResource().getProperty(session.getTypeProperty());
+ Statement st = n.asResource().getProperty(session.getRdfTypeProperty());
if (st != null)
return RDF_BAG.equals(st.getResource().getURI());
}
@@ -380,7 +382,7 @@ public class RdfParser extends ReaderParser {
n = st.getObject();
if (n.isLiteral())
return n.asLiteral().getValue();
- return parseAnything(session, object(), st.getObject(), outer);
+ return parseAnything(session, object(), st.getObject(), outer, null);
}
}
throw new ParseException(session, "Unknown value type for node ''{0}''", n);
@@ -401,7 +403,7 @@ public class RdfParser extends ReaderParser {
key = session.decodeString(key);
RDFNode o = st.getObject();
K key2 = convertAttrToType(session, m, key, keyType);
- V value = parseAnything(session, valueType, o, m);
+ V value = parseAnything(session, valueType, o, m, null);
setName(valueType, value, key);
m.put(key2, value);
}
@@ -413,7 +415,7 @@ public class RdfParser extends ReaderParser {
private <E> Collection<E> parseIntoCollection(RdfParserSession session, Container c, Collection<E> l, ClassMeta<E> et) throws Exception {
for (NodeIterator ni = c.iterator(); ni.hasNext();) {
- E e = parseAnything(session, et, ni.next(), l);
+ E e = parseAnything(session, et, ni.next(), l, null);
l.add(e);
}
return l;
@@ -421,7 +423,7 @@ public class RdfParser extends ReaderParser {
private <E> Collection<E> parseIntoCollection(RdfParserSession session, RDFList list, Collection<E> l, ClassMeta<E> et) throws Exception {
for (ExtendedIterator<RDFNode> ni = list.iterator(); ni.hasNext();) {
- E e = parseAnything(session, et, ni.next(), l);
+ E e = parseAnything(session, et, ni.next(), l, null);
l.add(e);
}
return l;
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/738a0d2b/juneau-core-rdf/src/main/java/org/apache/juneau/jena/RdfParserSession.java
----------------------------------------------------------------------
diff --git a/juneau-core-rdf/src/main/java/org/apache/juneau/jena/RdfParserSession.java b/juneau-core-rdf/src/main/java/org/apache/juneau/jena/RdfParserSession.java
index 4433b38..13ca513 100644
--- a/juneau-core-rdf/src/main/java/org/apache/juneau/jena/RdfParserSession.java
+++ b/juneau-core-rdf/src/main/java/org/apache/juneau/jena/RdfParserSession.java
@@ -34,7 +34,7 @@ public class RdfParserSession extends ParserSession {
private final String rdfLanguage;
private final Namespace juneauNs, juneauBpNs;
- private final Property pRoot, pValue, pClass, pType;
+ private final Property pRoot, pValue, pType, pRdfType;
private final Model model;
private final boolean trimWhitespace, looseCollections;
private final RDFReader rdfReader;
@@ -88,8 +88,8 @@ public class RdfParserSession extends ParserSession {
addModelPrefix(juneauBpNs);
this.pRoot = model.createProperty(juneauNs.getUri(), RDF_juneauNs_ROOT);
this.pValue = model.createProperty(juneauNs.getUri(), RDF_juneauNs_VALUE);
- this.pClass = model.createProperty(juneauNs.getUri(), RDF_juneauNs_CLASS);
- this.pType = model.createProperty("http://www.w3.org/1999/02/22-rdf-syntax-ns#type");
+ this.pType = model.createProperty(juneauNs.getUri(), RDF_juneauNs_TYPE);
+ this.pRdfType = model.createProperty("http://www.w3.org/1999/02/22-rdf-syntax-ns#type");
rdfReader = model.getReader(rdfLanguage);
// Note: NTripleReader throws an exception if you try to set any properties on it.
@@ -128,12 +128,12 @@ public class RdfParserSession extends ParserSession {
}
/**
- * Returns the RDF property identifier <js>"class"</js>.
+ * Returns the RDF property identifier <js>"_type"</js>.
*
- * @return The RDF property identifier <js>"class"</js>.
+ * @return The RDF property identifier <js>"_type"</js>.
*/
- public final Property getClassProperty() {
- return pClass;
+ public final Property getTypeProperty() {
+ return pType;
}
/**
@@ -141,8 +141,8 @@ public class RdfParserSession extends ParserSession {
*
* @return The RDF property identifier <js>"type"</js>.
*/
- public final Property getTypeProperty() {
- return pType;
+ public final Property getRdfTypeProperty() {
+ return pRdfType;
}
/**
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/738a0d2b/juneau-core-rdf/src/main/java/org/apache/juneau/jena/RdfSerializer.java
----------------------------------------------------------------------
diff --git a/juneau-core-rdf/src/main/java/org/apache/juneau/jena/RdfSerializer.java b/juneau-core-rdf/src/main/java/org/apache/juneau/jena/RdfSerializer.java
index 83bad9d..c579001 100644
--- a/juneau-core-rdf/src/main/java/org/apache/juneau/jena/RdfSerializer.java
+++ b/juneau-core-rdf/src/main/java/org/apache/juneau/jena/RdfSerializer.java
@@ -259,10 +259,10 @@ public class RdfSerializer extends WriterSerializer {
}
if (session.isAddBeanTypeProperties() && n != null && n.isResource()) {
- if (o != null && ! eType.equals(aType))
- n.asResource().addProperty(session.getClassProperty(), aType.toString());
- else if (o == null)
- n.asResource().addProperty(session.getClassProperty(), eType.toString());
+ if (o != null && aType.getDictionaryName() != null)
+ n.asResource().addProperty(session.getTypeProperty(), aType.getDictionaryName());
+ else if (o == null && eType.getDictionaryName() != null)
+ n.asResource().addProperty(session.getTypeProperty(), eType.getDictionaryName());
}
session.pop();
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/738a0d2b/juneau-core-rdf/src/main/java/org/apache/juneau/jena/RdfSerializerSession.java
----------------------------------------------------------------------
diff --git a/juneau-core-rdf/src/main/java/org/apache/juneau/jena/RdfSerializerSession.java b/juneau-core-rdf/src/main/java/org/apache/juneau/jena/RdfSerializerSession.java
index 1c8b55b..831ba08 100644
--- a/juneau-core-rdf/src/main/java/org/apache/juneau/jena/RdfSerializerSession.java
+++ b/juneau-core-rdf/src/main/java/org/apache/juneau/jena/RdfSerializerSession.java
@@ -36,7 +36,7 @@ public final class RdfSerializerSession extends SerializerSession {
private final String rdfLanguage;
private final Namespace juneauNs, juneauBpNs;
private final boolean addLiteralTypes, addRootProperty, useXmlNamespaces, looseCollections, autoDetectNamespaces;
- private final Property pRoot, pValue, pClass;
+ private final Property pRoot, pValue, pType;
private final Model model;
private final RDFWriter writer;
private final RdfCollectionFormat collectionFormat;
@@ -98,7 +98,7 @@ public final class RdfSerializerSession extends SerializerSession {
addModelPrefix(ns);
this.pRoot = model.createProperty(juneauNs.getUri(), RDF_juneauNs_ROOT);
this.pValue = model.createProperty(juneauNs.getUri(), RDF_juneauNs_VALUE);
- this.pClass = model.createProperty(juneauNs.getUri(), RDF_juneauNs_CLASS);
+ this.pType = model.createProperty(juneauNs.getUri(), RDF_juneauNs_TYPE);
writer = model.getWriter(rdfLanguage);
// Only apply properties with this prefix!
@@ -224,8 +224,8 @@ public final class RdfSerializerSession extends SerializerSession {
*
* @return The RDF property that represents a class in the RDF model.
*/
- public final Property getClassProperty() {
- return pClass;
+ public final Property getTypeProperty() {
+ return pType;
}
/**
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/738a0d2b/juneau-core-test/src/test/java/org/apache/juneau/jena/CommonParserTest.java
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/test/java/org/apache/juneau/jena/CommonParserTest.java b/juneau-core-test/src/test/java/org/apache/juneau/jena/CommonParserTest.java
index 04a7f67..5bd851f 100755
--- a/juneau-core-test/src/test/java/org/apache/juneau/jena/CommonParserTest.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/jena/CommonParserTest.java
@@ -20,6 +20,7 @@ import static org.junit.Assert.*;
import java.util.*;
import org.apache.juneau.*;
+import org.apache.juneau.annotation.Bean;
import org.apache.juneau.parser.*;
import org.apache.juneau.serializer.*;
import org.junit.*;
@@ -112,14 +113,13 @@ public class CommonParserTest {
s.setProperty(SERIALIZER_addBeanTypeProperties, true);
in = strip(s.serialize(t1));
- assertEquals("<rdf:Description><j:class>"+A1.class.getName()+"</j:class><jp:list><rdf:Seq><rdf:li rdf:parseType='Resource'><jp:name>name0</jp:name><jp:value>value0</jp:value></rdf:li><rdf:li rdf:parseType='Resource'><jp:name>name1</jp:name><jp:value>value1</jp:value></rdf:li></rdf:Seq></jp:list></rdf:Description>", in);
+ assertEquals("<rdf:Description><j:_type>A1</j:_type><jp:list><rdf:Seq><rdf:li rdf:parseType='Resource'><jp:name>name0</jp:name><jp:value>value0</jp:value></rdf:li><rdf:li rdf:parseType='Resource'><jp:name>name1</jp:name><jp:value>value1</jp:value></rdf:li></rdf:Seq></jp:list></rdf:Description>", in);
in = wrap(in);
- t1 = (A1)p.parse(in, Object.class);
- assertEquals("value1", t1.list.get(1).value);
t1 = p.parse(in, A1.class);
assertEquals("value1", t1.list.get(1).value);
}
+ @Bean(typeName="A1")
public static class A1 {
public A2 list;
}