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 <[email protected]>
Authored: Thu Feb 2 21:04:53 2017 -0500
Committer: JamesBognar <[email protected]>
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;
        }

Reply via email to