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;
 	}