http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30947fd7/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfCollectionFormat.java ---------------------------------------------------------------------- diff --git a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfCollectionFormat.java b/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfCollectionFormat.java deleted file mode 100755 index 5b865a1..0000000 --- a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfCollectionFormat.java +++ /dev/null @@ -1,52 +0,0 @@ -/******************************************************************************* - * Licensed Materials - Property of IBM - * (c) Copyright IBM Corporation 2015. All Rights Reserved. - * - * Note to U.S. Government Users Restricted Rights: Use, - * duplication or disclosure restricted by GSA ADP Schedule - * Contract with IBM Corp. - *******************************************************************************/ -package com.ibm.juno.core.jena; - -import com.ibm.juno.core.jena.annotation.*; - -/** - * Used in conjunction with the {@link Rdf#collectionFormat() @Rdf.collectionFormat()} annotation to fine-tune how - * classes, beans, and bean properties are serialized, particularly collections. - * <p> - * - * @author James Bognar ([email protected]) - */ -public enum RdfCollectionFormat { - - /** - * Default formatting (default). - * <p> - * Inherit formatting from parent class or parent package. - * If no formatting specified at any level, default is {@link #SEQ}. - */ - DEFAULT, - - /** - * Causes collections and arrays to be rendered as RDF sequences. - */ - SEQ, - - /** - * Causes collections and arrays to be rendered as RDF bags. - */ - BAG, - - /** - * Causes collections and arrays to be rendered as RDF lists. - */ - LIST, - - /** - * Causes collections and arrays to be rendered as multi-valued RDF properties instead of sequences. - * <p> - * Note that enabling this setting will cause order of elements in the collection to be lost. - */ - MULTI_VALUED; - -} \ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30947fd7/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfParser$N3.class ---------------------------------------------------------------------- diff --git a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfParser$N3.class b/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfParser$N3.class deleted file mode 100755 index 9170a84..0000000 Binary files a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfParser$N3.class and /dev/null differ http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30947fd7/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfParser$NTriple.class ---------------------------------------------------------------------- diff --git a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfParser$NTriple.class b/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfParser$NTriple.class deleted file mode 100755 index 4a64589..0000000 Binary files a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfParser$NTriple.class and /dev/null differ http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30947fd7/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfParser$Turtle.class ---------------------------------------------------------------------- diff --git a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfParser$Turtle.class b/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfParser$Turtle.class deleted file mode 100755 index 39cc7e4..0000000 Binary files a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfParser$Turtle.class and /dev/null differ http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30947fd7/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfParser$Xml.class ---------------------------------------------------------------------- diff --git a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfParser$Xml.class b/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfParser$Xml.class deleted file mode 100755 index 3398700..0000000 Binary files a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfParser$Xml.class and /dev/null differ http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30947fd7/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfParser.class ---------------------------------------------------------------------- diff --git a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfParser.class b/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfParser.class deleted file mode 100755 index 8f78101..0000000 Binary files a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfParser.class and /dev/null differ http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30947fd7/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfParser.java ---------------------------------------------------------------------- diff --git a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfParser.java b/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfParser.java deleted file mode 100755 index 50fec99..0000000 --- a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfParser.java +++ /dev/null @@ -1,527 +0,0 @@ -/******************************************************************************* - * Licensed Materials - Property of IBM - * (c) Copyright IBM Corporation 2014, 2015. All Rights Reserved. - * - * The source code for this program is not published or otherwise - * divested of its trade secrets, irrespective of what has been - * deposited with the U.S. Copyright Office. - *******************************************************************************/ -package com.ibm.juno.core.jena; - -import static com.ibm.juno.core.jena.Constants.*; -import static com.ibm.juno.core.jena.RdfProperties.*; -import static com.ibm.juno.core.utils.StringUtils.*; -import static com.ibm.juno.core.xml.XmlUtils.*; - -import java.io.*; -import java.lang.reflect.*; -import java.util.*; - -import com.hp.hpl.jena.rdf.model.*; -import com.hp.hpl.jena.util.iterator.*; -import com.ibm.juno.core.*; -import com.ibm.juno.core.annotation.*; -import com.ibm.juno.core.filter.*; -import com.ibm.juno.core.parser.*; -import com.ibm.juno.core.utils.*; -import com.ibm.juno.core.xml.*; - -/** - * Parses RDF into POJOs. - * - * - * <h6 class='topic'>Configurable properties</h6> - * <p> - * Refer to <a class='doclink' href='package-summary.html#ParserConfigurableProperties'>Configurable Properties</a> - * for the entire list of configurable properties. - * - * - * <h6 class='topic'>Behavior-specific subclasses</h6> - * <p> - * The following direct subclasses are provided for language-specific parsers: - * <ul> - * <li>{@link RdfParser.Xml} - RDF/XML and RDF/XML-ABBREV. - * <li>{@link RdfParser.NTriple} - N-TRIPLE. - * <li>{@link RdfParser.Turtle} - TURTLE. - * <li>{@link RdfParser.N3} - N3. - * </ul> - * - * - * <h6 class='topic'>Additional Information</h6> - * <p> - * See <a class='doclink' href='package-summary.html#TOC'>RDF Overview</a> for an overview of RDF support in Juno. - * - * - * @author James Bognar ([email protected]) - */ -@Consumes(value="text/xml+rdf") -public class RdfParser extends ReaderParser { - - /** Default XML parser, all default settings.*/ - public static final RdfParser DEFAULT_XML = new RdfParser.Xml().lock(); - - /** Default Turtle parser, all default settings.*/ - public static final RdfParser DEFAULT_TURTLE = new RdfParser.Turtle().lock(); - - /** Default N-Triple parser, all default settings.*/ - public static final RdfParser DEFAULT_NTRIPLE = new RdfParser.NTriple().lock(); - - /** Default N3 parser, all default settings.*/ - public static final RdfParser DEFAULT_N3 = new RdfParser.N3().lock(); - - - /** Consumes RDF/XML input */ - @Consumes("text/xml+rdf") - public static class Xml extends RdfParser { - /** Constructor */ - public Xml() { - setProperty(RDF_language, LANG_RDF_XML); - } - } - - /** Consumes N-Triple input */ - @Consumes(value="text/n-triple") - public static class NTriple extends RdfParser { - /** Constructor */ - public NTriple() { - setProperty(RDF_language, LANG_NTRIPLE); - } - } - - /** Consumes Turtle input */ - @Consumes(value="text/turtle") - public static class Turtle extends RdfParser { - /** Constructor */ - public Turtle() { - setProperty(RDF_language, LANG_TURTLE); - } - } - - /** Consumes N3 input */ - @Consumes(value="text/n3") - public static class N3 extends RdfParser { - /** Constructor */ - public N3() { - setProperty(RDF_language, LANG_N3); - } - } - - - /** Jena parser properties currently set on this parser. */ - protected transient RdfParserProperties rpp = new RdfParserProperties(); - - - @SuppressWarnings({"unchecked", "rawtypes"}) - @Override /* ReaderParser */ - protected <T> T doParse(Reader in, int estimatedSize, ClassMeta<T> type, ParserContext ctx) throws ParseException, IOException { - - in = IOUtils.getBufferedReader(in, estimatedSize); - - RdfParserContext rctx = (RdfParserContext)ctx; - - type = ctx.getBeanContext().normalizeClassMeta(type); - - Model model = rctx.model; - RDFReader r = rctx.rdfReader; - r.read(model, in, null); - BeanContext bc = ctx.getBeanContext(); - - List<Resource> roots = getRoots(model, rctx); - - try { - // Special case where we're parsing a loose collection of resources. - if (rctx.isLooseCollection() && (type.isCollection() || type.isArray())) { - Collection c = null; - if (type.isArray()) - c = new ArrayList(); - else - c = (type.canCreateNewInstance(ctx.getOuter()) ? (Collection<?>)type.newInstance(ctx.getOuter()) : new ObjectList(bc)); - for (Resource resource : roots) - c.add(parseAnything(type.getElementType(), resource, null, rctx, ctx.getOuter(), null)); - - if (type.isArray()) - return (T)bc.toArray(type, c); - return (T)c; - } - - if (roots.isEmpty()) - return null; - if (roots.size() > 1) - throw new ParseException("Too many root nodes found in model: {0}", roots.size()); - Resource resource = roots.get(0); - - return parseAnything(type, resource, null, rctx, ctx.getOuter(), null); - - } catch (ParseException e) { - throw e; - } catch (Exception e) { - throw new ParseException(e); - } - } - - /* - * Finds the roots in the model using either the "root" property to identify it, - * or by resorting to scanning the model for all nodes with no incoming predicates. - */ - private List<Resource> getRoots(Model m, RdfParserContext ctx) { - List<Resource> l = new LinkedList<Resource>(); - - // First try to find the root using the "http://www.ibm.com/juno/root" property. - Property root = m.createProperty(ctx.junoNs.getUri(), RDF_junoNs_ROOT); - for (ResIterator i = m.listResourcesWithProperty(root); i.hasNext();) - l.add(i.next()); - - if (! l.isEmpty()) - return l; - - // Otherwise, we need to find all resources that aren't objects. - // We want to explicitly ignore statements where the subject - // and object are the same node. - Set<RDFNode> objects = new HashSet<RDFNode>(); - for (StmtIterator i = m.listStatements(); i.hasNext();) { - Statement st = i.next(); - RDFNode subject = st.getSubject(); - RDFNode object = st.getObject(); - if (object.isResource() && ! object.equals(subject)) - objects.add(object); - } - for (ResIterator i = m.listSubjects(); i.hasNext();) { - Resource r = i.next(); - if (! objects.contains(r)) - l.add(r); - } - return l; - } - - private <T> BeanMap<T> parseIntoBeanMap(Resource r2, BeanMap<T> m, RdfParserContext ctx) throws ParseException { - BeanMeta<T> bm = m.getMeta(); - if (bm.hasBeanUriProperty() && r2.getURI() != null) - m.putBeanUri(r2.getURI()); - Property subTypeIdProperty = null; - BeanPropertyMeta<T> stp = bm.getSubTypeIdProperty(); - if (stp != null) { - subTypeIdProperty = ctx.getProperty(stp.getName()); - Statement st = r2.getProperty(subTypeIdProperty); - if (st == null) - throw new ParseException("Could not find subtype ID property for bean of type ''{0}''", m.getClassMeta()); - String subTypeId = st.getLiteral().getString(); - stp.set(m, subTypeId); - } - for (StmtIterator i = r2.listProperties(); i.hasNext();) { - Statement st = i.next(); - Property p = st.getPredicate(); - if (p.equals(subTypeIdProperty)) - continue; - String key = XmlUtils.decode(p.getLocalName()); - BeanPropertyMeta<T> pMeta = m.getPropertyMeta(key); - if (pMeta != null) { - RDFNode o = st.getObject(); - ClassMeta<?> cm = pMeta.getClassMeta(); - if ((cm.isArray() || cm.isCollection()) && isMultiValuedCollections(ctx, pMeta)) { - Object val = parseAnything(cm.getElementType(), o, pMeta, ctx, m.getBean(false), key); - pMeta.add(m, val); - } else { - Object val = parseAnything(cm, o, pMeta, ctx, m.getBean(false), key); - pMeta.set(m, val); - } - } else if (! (p.equals(ctx.pRoot) || p.equals(ctx.pClass) || p.equals(subTypeIdProperty))) { - if (bm.isSubTyped()) { - RDFNode o = st.getObject(); - Object val = parseAnything(object(), o, null, ctx, m.getBean(false), key); - m.put(key, val); - } else { - onUnknownProperty(ctx, key, m, -1, -1); - } - } - } - return m; - } - - private boolean isMultiValuedCollections(RdfParserContext ctx, BeanPropertyMeta<?> pMeta) { - if (pMeta != null && pMeta.getRdfMeta().getCollectionFormat() != RdfCollectionFormat.DEFAULT) - return pMeta.getRdfMeta().getCollectionFormat() == RdfCollectionFormat.MULTI_VALUED; - return ctx.getCollectionFormat() == RdfCollectionFormat.MULTI_VALUED; - } - - @SuppressWarnings({ "unchecked", "rawtypes" }) - private <T> T parseAnything(ClassMeta<T> nt, RDFNode n, BeanPropertyMeta<?> p, RdfParserContext ctx, Object outer, Object name) throws ParseException { - - BeanContext bc = ctx.getBeanContext(); - - if (nt == null) - nt = (ClassMeta<T>)object(); - PojoFilter<T,Object> filter = (PojoFilter<T,Object>)nt.getPojoFilter(); - ClassMeta<?> ft = nt.getFilteredClassMeta(); - - if (! ft.canCreateNewInstance(outer)) { - if (n.isResource()) { - Statement st = n.asResource().getProperty(ctx.pClass); - if (st != null) { - String c = st.getLiteral().getString(); - ft = nt = (ClassMeta<T>)bc.getClassMetaFromString(c); - } - } - } - - try { - - Object o = null; - if (n.isResource() && n.asResource().getURI() != null && n.asResource().getURI().equals(RDF_NIL)) { - // Do nothing. Leave o == null. - } else if (ft.isObject()) { - if (n.isLiteral()) { - o = n.asLiteral().getValue(); - if (o instanceof String) { - String s = o.toString(); - s = decode(s); - if (ctx.trimWhitespace) - s = s.trim(); - o = s; - } - } - else if (n.isResource()) { - Resource r = n.asResource(); - if (ctx.wasAlreadyProcessed(r)) - o = r.getURI(); - else if (r.getProperty(ctx.pValue) != null) { - o = parseAnything(object(), n.asResource().getProperty(ctx.pValue).getObject(), null, ctx, outer, null); - } else if (isSeq(r, ctx)) { - o = new ObjectList(bc); - parseIntoCollection(r.as(Seq.class), (Collection)o, ft.getElementType(), ctx); - } else if (isBag(r, ctx)) { - o = new ObjectList(bc); - parseIntoCollection(r.as(Bag.class), (Collection)o, ft.getElementType(), ctx); - } else if (r.canAs(RDFList.class)) { - o = new ObjectList(bc); - parseIntoCollection(r.as(RDFList.class), (Collection)o, ft.getElementType(), ctx); - } else { - // If it has a URI and no child properties, we interpret this as an - // external resource, and convert it to just a URL. - String uri = r.getURI(); - if (uri != null && ! r.listProperties().hasNext()) { - o = r.getURI(); - } else { - o = new ObjectMap(bc); - parseIntoMap(r, (Map)o, null, null, ctx); - } - } - } else { - throw new ParseException("Unrecognized node type ''{0}'' for object", n); - } - } else if (ft.isBoolean()) { - o = bc.convertToType(getValue(n, ctx, outer), boolean.class); - } else if (ft.isCharSequence()) { - String s = decode(getValue(n, ctx, outer).toString()); - if (ctx.trimWhitespace) - s = s.trim(); - o = s; - } else if (ft.isChar()) { - o = decode(getValue(n, ctx, outer).toString()).charAt(0); - } else if (ft.isNumber()) { - o = parseNumber(getValue(n, ctx, outer).toString(), (Class<? extends Number>)ft.getInnerClass()); - } else if (ft.isMap()) { - Resource r = n.asResource(); - if (ctx.wasAlreadyProcessed(r)) - return null; - Map m = (ft.canCreateNewInstance(outer) ? (Map)ft.newInstance(outer) : new ObjectMap(bc)); - o = parseIntoMap(r, m, nt.getKeyType(), nt.getValueType(), ctx); - } else if (ft.isCollection() || ft.isArray()) { - if (ft.isArray()) - o = new ArrayList(); - else - o = (ft.canCreateNewInstance(outer) ? (Collection<?>)ft.newInstance(outer) : new ObjectList(bc)); - Resource r = n.asResource(); - if (ctx.wasAlreadyProcessed(r)) - return null; - if (isSeq(r, ctx)) { - parseIntoCollection(r.as(Seq.class), (Collection)o, ft.getElementType(), ctx); - } else if (isBag(r, ctx)) { - parseIntoCollection(r.as(Bag.class), (Collection)o, ft.getElementType(), ctx); - } else if (r.canAs(RDFList.class)) { - parseIntoCollection(r.as(RDFList.class), (Collection)o, ft.getElementType(), ctx); - } else { - throw new ParseException("Unrecognized node type ''{0}'' for collection", n); - } - if (ft.isArray()) - o = bc.toArray(ft, (Collection)o); - } else if (ft.canCreateNewInstanceFromObjectMap(outer)) { - Resource r = n.asResource(); - if (ctx.wasAlreadyProcessed(r)) - return null; - Map m = new ObjectMap(bc); - parseIntoMap(r, m, nt.getKeyType(), nt.getValueType(), ctx); - o = ft.newInstanceFromObjectMap(outer, (ObjectMap)m); - } else if (ft.canCreateNewBean(outer)) { - Resource r = n.asResource(); - if (ctx.wasAlreadyProcessed(r)) - return null; - BeanMap<?> bm = bc.newBeanMap(outer, ft.getInnerClass()); - o = parseIntoBeanMap(r, bm, ctx).getBean(); - } else if (ft.isUri() && n.isResource()) { - o = ft.newInstanceFromString(outer, decode(n.asResource().getURI())); - } else if (ft.canCreateNewInstanceFromString(outer)) { - o = ft.newInstanceFromString(outer, decode(getValue(n, ctx, outer).toString())); - } else { - throw new ParseException("Class ''{0}'' could not be instantiated. Reason: ''{1}''", ft.getInnerClass().getName(), ft.getNotABeanReason()); - } - - if (filter != null && o != null) - o = filter.unfilter(o, nt); - - if (outer != null) - setParent(nt, o, outer); - - if (name != null) - setName(nt, o, name); - - return (T)o; - - } catch (RuntimeException e) { - throw e; - } catch (Exception e) { - if (p == null) - throw new ParseException("Error occurred trying to parse into class ''{0}''", ft).initCause(e); - throw new ParseException("Error occurred trying to parse value for bean property ''{0}'' on class ''{1}''", - p.getName(), p.getBeanMeta().getClassMeta() - ).initCause(e); - } - } - - private boolean isSeq(RDFNode n, RdfParserContext ctx) { - if (n.isResource()) { - Statement st = n.asResource().getProperty(ctx.pType); - if (st != null) - return RDF_SEQ.equals(st.getResource().getURI()); - } - return false; - } - - private boolean isBag(RDFNode n, RdfParserContext ctx) { - if (n.isResource()) { - Statement st = n.asResource().getProperty(ctx.pType); - if (st != null) - return RDF_BAG.equals(st.getResource().getURI()); - } - return false; - } - - private Object getValue(RDFNode n, RdfParserContext ctx, Object outer) throws ParseException { - if (n.isLiteral()) - return n.asLiteral().getValue(); - if (n.isResource()) { - Statement st = n.asResource().getProperty(ctx.pValue); - if (st != null) { - n = st.getObject(); - if (n.isLiteral()) - return n.asLiteral().getValue(); - return parseAnything(object(), st.getObject(), null, ctx, outer, null); - } - } - throw new ParseException("Unknown value type for node ''{0}''", n); - } - - private <K,V> Map<K,V> parseIntoMap(Resource r, Map<K,V> m, ClassMeta<K> keyType, ClassMeta<V> valueType, RdfParserContext ctx) throws ParseException { - // Add URI as "uri" to generic maps. - if (r.getURI() != null) { - K uri = convertAttrToType(m, "uri", keyType); - V value = convertAttrToType(m, r.getURI(), valueType); - m.put(uri, value); - } - for (StmtIterator i = r.listProperties(); i.hasNext();) { - Statement st = i.next(); - Property p = st.getPredicate(); - String key = p.getLocalName(); - if (! (key.equals("root") && p.getURI().equals(ctx.junoNs.getUri()))) { - key = decode(key); - RDFNode o = st.getObject(); - K key2 = convertAttrToType(m, key, keyType); - V value = parseAnything(valueType, o, null, ctx, m, key); - m.put(key2, value); - } - - } - // TODO Auto-generated method stub - return m; - } - - private <E> Collection<E> parseIntoCollection(Container c, Collection<E> l, ClassMeta<E> et, RdfParserContext ctx) throws ParseException { - for (NodeIterator ni = c.iterator(); ni.hasNext();) { - E e = parseAnything(et, ni.next(), null, ctx, l, null); - l.add(e); - } - return l; - } - - private <E> Collection<E> parseIntoCollection(RDFList list, Collection<E> l, ClassMeta<E> et, RdfParserContext ctx) throws ParseException { - for (ExtendedIterator<RDFNode> ni = list.iterator(); ni.hasNext();) { - E e = parseAnything(et, ni.next(), null, ctx, l, null); - l.add(e); - } - return l; - } - - //-------------------------------------------------------------------------------- - // Overridden methods - //-------------------------------------------------------------------------------- - - @Override /* Parser */ - public RdfParserContext createContext(ObjectMap op, Method javaMethod, Object outer) { - return new RdfParserContext(getBeanContext(), pp, rpp, op, javaMethod, outer); - } - - @Override /* CoreApi */ - public RdfParser setProperty(String property, Object value) throws LockedException { - checkLock(); - if (! rpp.setProperty(property, value)) - super.setProperty(property, value); - return this; - } - - @Override /* CoreApi */ - public RdfParser setProperties(ObjectMap properties) throws LockedException { - for (Map.Entry<String,Object> e : properties.entrySet()) - setProperty(e.getKey(), e.getValue()); - return this; - } - - @Override /* CoreApi */ - public RdfParser addNotBeanClasses(Class<?>...classes) throws LockedException { - super.addNotBeanClasses(classes); - return this; - } - - @Override /* CoreApi */ - public RdfParser addFilters(Class<?>...classes) throws LockedException { - super.addFilters(classes); - return this; - } - - @Override /* CoreApi */ - public <T> RdfParser addImplClass(Class<T> interfaceClass, Class<? extends T> implClass) throws LockedException { - super.addImplClass(interfaceClass, implClass); - return this; - } - - @Override /* CoreApi */ - public RdfParser setClassLoader(ClassLoader classLoader) throws LockedException { - super.setClassLoader(classLoader); - return this; - } - - @Override /* Lockable */ - public RdfParser lock() { - super.lock(); - return this; - } - - @Override /* Lockable */ - public RdfParser clone() { - try { - RdfParser c = (RdfParser)super.clone(); - c.rpp = rpp.clone(); - return c; - } catch (CloneNotSupportedException e) { - throw new RuntimeException(e); // Shouldn't happen - } - } -} http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30947fd7/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfParserContext.class ---------------------------------------------------------------------- diff --git a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfParserContext.class b/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfParserContext.class deleted file mode 100755 index 32ba6c5..0000000 Binary files a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfParserContext.class and /dev/null differ http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30947fd7/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfParserContext.java ---------------------------------------------------------------------- diff --git a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfParserContext.java b/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfParserContext.java deleted file mode 100755 index f85e31f..0000000 --- a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfParserContext.java +++ /dev/null @@ -1,136 +0,0 @@ -/******************************************************************************* - * Licensed Materials - Property of IBM - * (c) Copyright IBM Corporation 2014, 2015. All Rights Reserved. - * - * The source code for this program is not published or otherwise - * divested of its trade secrets, irrespective of what has been - * deposited with the U.S. Copyright Office. - *******************************************************************************/ -package com.ibm.juno.core.jena; - -import static com.ibm.juno.core.jena.Constants.*; -import static com.ibm.juno.core.jena.RdfProperties.*; - -import java.lang.reflect.*; -import java.util.*; - -import com.hp.hpl.jena.rdf.model.*; -import com.ibm.juno.core.*; -import com.ibm.juno.core.parser.*; -import com.ibm.juno.core.xml.*; - -/** - * Context object that lives for the duration of a single parse of {@link RdfParser}. - * <p> - * See {@link ParserContext} for details. - * - * @author James Bognar ([email protected]) - */ -public class RdfParserContext extends ParserContext { - - final String rdfLanguage; - final Namespace junoNs, junoBpNs; - final Property pRoot, pValue, pClass, pType; - final Model model; - final boolean trimWhitespace, looseCollection; - final RDFReader rdfReader; - final Set<Resource> urisVisited = new HashSet<Resource>(); - final RdfCollectionFormat collectionFormat; - - /** - * Constructor. - * - * @param beanContext The bean context being used by the parser. - * @param pp Default general parser properties. - * @param rpp Default Jena parser properties. - * @param op Override properties. - * @param javaMethod The java method that called this parser, usually the method in a REST servlet. - * @param outer The outer object for instantiating top-level non-static inner classes. - */ - protected RdfParserContext(BeanContext beanContext, ParserProperties pp, RdfParserProperties rpp, ObjectMap op, Method javaMethod, Object outer) { - super(beanContext, pp, op, javaMethod, outer); - ObjectMap jenaSettings = new ObjectMap(); - jenaSettings.putAll(rpp.jenaSettings); - if (op == null || op.isEmpty()) { - this.rdfLanguage = rpp.rdfLanguage; - this.junoNs = rpp.junoNs; - this.junoBpNs = rpp.junoBpNs; - this.trimWhitespace = rpp.trimWhitespace; - this.collectionFormat = rpp.collectionFormat; - this.looseCollection = rpp.looseCollection; - } else { - this.rdfLanguage = op.getString(RDF_language, rpp.rdfLanguage); - this.junoNs = (op.containsKey(RDF_junoNs) ? NamespaceFactory.parseNamespace(op.get(RDF_junoNs)) : rpp.junoNs); - this.junoBpNs = (op.containsKey(RDF_junoBpNs) ? NamespaceFactory.parseNamespace(op.get(RDF_junoBpNs)) : rpp.junoBpNs); - this.trimWhitespace = op.getBoolean(RdfParserProperties.RDF_trimWhitespace, rpp.trimWhitespace); - this.collectionFormat = RdfCollectionFormat.valueOf(op.getString(RDF_collectionFormat, "DEFAULT")); - this.looseCollection = op.getBoolean(RDF_looseCollection, rpp.looseCollection); - } - this.model = ModelFactory.createDefaultModel(); - addModelPrefix(junoNs); - addModelPrefix(junoBpNs); - this.pRoot = model.createProperty(junoNs.getUri(), RDF_junoNs_ROOT); - this.pValue = model.createProperty(junoNs.getUri(), RDF_junoNs_VALUE); - this.pClass = model.createProperty(junoNs.getUri(), RDF_junoNs_CLASS); - this.pType = 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. - if (! rdfLanguage.equals(LANG_NTRIPLE)) { - for (Map.Entry<String,Object> e : jenaSettings.entrySet()) - rdfReader.setProperty(e.getKey(), e.getValue()); - } - } - - boolean wasAlreadyProcessed(Resource r) { - return ! urisVisited.add(r); - } - - /** - * Adds the specified namespace as a model prefix. - * - * @param ns The XML namespace. - */ - public void addModelPrefix(Namespace ns) { - model.setNsPrefix(ns.getName(), ns.getUri()); - } - - /** - * Constructs a <code>Property</code> in the specified namespace in this mode. - * - * @param namespaceUri The namespace URI. - * @param name The property name. - * @return The new property object. - */ - public Property getProperty(String namespaceUri, String name) { - return model.createProperty(namespaceUri, name); - } - - /** - * Constructs a <code>Property</code> in the Juno Bean namespace in this mode. - * - * @param name The property name. - * @return The new property object. - */ - public Property getProperty(String name) { - return model.createProperty(junoBpNs.getUri(), name); - } - - /** - * Returns the format for serializing collections. - * - * @return The format for serializing collections. - */ - protected RdfCollectionFormat getCollectionFormat() { - return collectionFormat; - } - - /** - * Returns the {@link RdfProperties#RDF_looseCollection} property value. - * - * @return The {@link RdfProperties#RDF_looseCollection} property value. - */ - protected boolean isLooseCollection() { - return looseCollection; - } -} http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30947fd7/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfParserProperties.class ---------------------------------------------------------------------- diff --git a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfParserProperties.class b/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfParserProperties.class deleted file mode 100755 index c475e4b..0000000 Binary files a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfParserProperties.class and /dev/null differ http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30947fd7/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfParserProperties.java ---------------------------------------------------------------------- diff --git a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfParserProperties.java b/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfParserProperties.java deleted file mode 100755 index b6ea048..0000000 --- a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfParserProperties.java +++ /dev/null @@ -1,68 +0,0 @@ -/******************************************************************************* - * Licensed Materials - Property of IBM - * (c) Copyright IBM Corporation 2014, 2015. All Rights Reserved. - * - * The source code for this program is not published or otherwise - * divested of its trade secrets, irrespective of what has been - * deposited with the U.S. Copyright Office. - *******************************************************************************/ -package com.ibm.juno.core.jena; - -import com.ibm.juno.core.*; -import com.ibm.juno.core.parser.*; - -/** - * Configurable properties on the {@link RdfParser} class. - * <p> - * Use the {@link RdfParser#setProperty(String, Object)} method to set property values. - * <p> - * In addition to these properties, the following properties are also applicable for {@link RdfParser}. - * <ul> - * <li>{@link RdfProperties} - * <li>{@link ParserProperties} - * <li>{@link BeanContextProperties} - * </ul> - * - * @author James Bognar ([email protected]) - */ -public final class RdfParserProperties extends RdfProperties implements Cloneable { - - - /** - * Trim whitespace from text elements ({@link Boolean}, default=<jk>false</jk>). - * <p> - * If <jk>true</jk>, whitespace in text elements will be automatically trimmed. - */ - public static final String RDF_trimWhitespace = "RdfParser.trimWhitespace"; - - boolean trimWhitespace = false; - - /** - * Sets the specified property value. - * @param property The property name. - * @param value The property value. - * @return <jk>true</jk> if property name was valid and property was set. - */ - @Override /* RdfProperties */ - public boolean setProperty(String property, Object value) { - if (property.equals(RDF_trimWhitespace)) - trimWhitespace = BeanContext.DEFAULT.convertToType(value, boolean.class); - else - return super.setProperty(property, value); - return true; - } - - - //-------------------------------------------------------------------------------- - // Overridden methods - //-------------------------------------------------------------------------------- - - @Override /* Cloneable */ - public RdfParserProperties clone() { - try { - return (RdfParserProperties)super.clone(); - } catch (CloneNotSupportedException e) { - throw new RuntimeException(e); // Shouldn't happen. - } - } -} http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30947fd7/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfProperties$1.class ---------------------------------------------------------------------- diff --git a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfProperties$1.class b/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfProperties$1.class deleted file mode 100755 index b05e79d..0000000 Binary files a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfProperties$1.class and /dev/null differ http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30947fd7/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfProperties.class ---------------------------------------------------------------------- diff --git a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfProperties.class b/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfProperties.class deleted file mode 100755 index 804022f..0000000 Binary files a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfProperties.class and /dev/null differ http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30947fd7/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfProperties.java ---------------------------------------------------------------------- diff --git a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfProperties.java b/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfProperties.java deleted file mode 100755 index 8994948..0000000 --- a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfProperties.java +++ /dev/null @@ -1,415 +0,0 @@ -/******************************************************************************* - * Licensed Materials - Property of IBM - * (c) Copyright IBM Corporation 2014, 2015. All Rights Reserved. - * - * The source code for this program is not published or otherwise - * divested of its trade secrets, irrespective of what has been - * deposited with the U.S. Copyright Office. - *******************************************************************************/ -package com.ibm.juno.core.jena; - -import java.util.*; - -import com.ibm.juno.core.annotation.*; -import com.ibm.juno.core.jena.annotation.*; -import com.ibm.juno.core.xml.*; -import com.ibm.juno.core.xml.annotation.*; - -/** - * Configurable properties common to both the {@link RdfSerializer} and {@link RdfParser} classes. - * - * @author James Bognar ([email protected]) - */ -@SuppressWarnings("serial") -public class RdfProperties { - - /** - * Maps RDF writer names to property prefixes that apply to them. - */ - final static Map<String,String> LANG_PROP_MAP = new HashMap<String,String>() {{ - put("RDF/XML","rdfXml."); - put("RDF/XML-ABBREV","rdfXml."); - put("N3","n3."); - put("N3-PP","n3."); - put("N3-PLAIN","n3."); - put("N3-TRIPLES","n3."); - put("TURTLE","n3."); - put("N-TRIPLE","ntriple."); - }}; - - /** - * The RDF language to serialize to ({@link String}, default=<js>"RDF/XML-ABBREV"</js>). - * <p> - * Can be any of the following: - * <ul> - * <li><js>"RDF/XML"</js> - * <li><js>"RDF/XML-ABBREV"</js> - * <li><js>"N-TRIPLE"</js> - * <li><js>"N3"</js> - General name for the N3 writer. - * Will make a decision on exactly which writer to use (pretty writer, plain writer or simple writer) when created. - * Default is the pretty writer but can be overridden with system property <code>com.hp.hpl.jena.n3.N3JenaWriter.writer</code>. - * <li><js>"N3-PP"</js> - Name of the N3 pretty writer. - * The pretty writer uses a frame-like layout, with prefixing, clustering like properties and embedding one-referenced bNodes. - * <li><js>"N3-PLAIN"</js> - Name of the N3 plain writer. - * The plain writer writes records by subject. - * <li><js>"N3-TRIPLES"</js> - Name of the N3 triples writer. - * This writer writes one line per statement, like N-Triples, but does N3-style prefixing. - * <li><js>"TURTLE"</js> - Turtle writer. - * http://www.dajobe.org/2004/01/turtle/ - * </ul> - */ - public static final String RDF_language = "Rdf.language"; - - /** - * The XML namespace for Juno properties ({@link Namespace}, default=<js>{j:'http://www.ibm.com/juno/'}</js>). - */ - public static final String RDF_junoNs = "Rdf.junoNs"; - - /** - * The default XML namespace for bean properties ({@link Namespace}, default=<js>{j:'http://www.ibm.com/junobp/'}</js>). - */ - public static final String RDF_junoBpNs = "Rdf.junoBpNs"; - - /** - * Reuse XML namespaces when RDF namespaces not specified ({@link Boolean}, default=<jk>true</jk>). - * <p> - * When specified, namespaces defined using {@link XmlNs} and {@link Xml} will be inherited by the RDF serializers. - * Otherwise, namespaces will be defined using {@link RdfNs} and {@link Rdf}. - */ - public static final String RDF_useXmlNamespaces = "Rdf.useXmlNamespaces"; - - /** - * RDF/XML property: <code>iri_rules</code> ({@link String}, default=<js>"lax"</js>). - * <p> - * Set the engine for checking and resolving. - * <p> - * Possible values: - * <ul> - * <li><js>"lax"</js> - The rules for RDF URI references only, which does permit spaces although the use of spaces is not good practice. - * <li><js>"strict"</js> - Sets the IRI engine with rules for valid IRIs, XLink and RDF; it does not permit spaces in IRIs. - * <li><js>"iri"</js> - Sets the IRI engine to IRI (<a href='http://www.ietf.org/rfc/rfc3986.txt'>RFC 3986</a>, <a href='http://www.ietf.org/rfc/rfc3987.txt'>RFC 3987</a>). - * </ul> - */ - public static final String RDF_arp_iriRules = "Rdf.jena.rdfXml.iri-rules"; - - /** - * RDF/XML ARP property: <code>error-mode</code> ({@link String}, default=<js>"lax"</js>). - * <p> - * This allows a coarse-grained approach to control of error handling. - * <p> - * Possible values: - * <ul> - * <li><js>"default"</js> - * <li><js>"lax"</js> - * <li><js>"strict"</js> - * <li><js>"strict-ignore"</js> - * <li><js>"strict-warning"</js> - * <li><js>"strict-error"</js> - * <li><js>"strict-fatal"</js> - * </ul> - * <p> - * See also: - * <ul> - * <li><a href='http://jena.sourceforge.net/javadoc/com/hp/hpl/jena/rdf/arp/ARPOptions.html#setDefaultErrorMode()'>ARPOptions.setDefaultErrorMode()</a> - * <li><a href='http://jena.sourceforge.net/javadoc/com/hp/hpl/jena/rdf/arp/ARPOptions.html#setLaxErrorMode()'>ARPOptions.setLaxErrorMode()</a> - * <li><a href='http://jena.sourceforge.net/javadoc/com/hp/hpl/jena/rdf/arp/ARPOptions.html#setStrictErrorMode()'>ARPOptions.setStrictErrorMode()</a> - * <li><a href='http://jena.sourceforge.net/javadoc/com/hp/hpl/jena/rdf/arp/ARPOptions.html#setStrictErrorMode(int)'>ARPOptions.setStrictErrorMode(int)</a> - * </ul> - */ - public static final String RDF_arp_errorMode = "Rdf.jena.rdfXml.error-mode"; - - /** - * RDF/XML ARP property: <code>embedding</code> ({@link Boolean}, default=<jk>false</jk>). - * <p> - * Sets ARP to look for RDF embedded within an enclosing XML document. - * <p> - * See also: - * <ul> - * <li><a href='http://jena.sourceforge.net/javadoc/com/hp/hpl/jena/rdf/arp/ARPOptions.html#setEmbedding(boolean)'>ARPOptions.setEmbedding(boolean)</a> - * </ul> - */ - public static final String RDF_arp_embedding = "Rdf.jena.rdfXml.embedding"; - - /** - * RDF/XML ARP property: <code>ERR_xxx</code> ({@link String}). - * <p> - * Provides fine-grained control over detected error conditions. - * <p> - * Possible values: - * <ul> - * <li><js>"EM_IGNORE"</js> - * <li><js>"EM_WARNING"</js> - * <li><js>"EM_ERROR"</js> - * <li><js>"EM_FATAL"</js> - * </ul> - * <p> - * See also: - * <ul> - * <li><a href='http://jena.sourceforge.net/javadoc/com/hp/hpl/jena/rdf/arp/ARPErrorNumbers.html'>ARPErrorNumbers</a> - * <li><a href='http://jena.sourceforge.net/javadoc/com/hp/hpl/jena/rdf/arp/ARPOptions.html#setErrorMode(int,%20int)'>ARPOptions.setErrorMode(int, int)</a> - * </ul> - */ - public static final String RDF_arp_err_ = "Rdf.jena.rdfXml.ERR_"; - - /** - * RDF/XML ARP property: <code>WARN_xxx</code> ({@link String}). - * <p> - * See {@link #RDF_arp_err_} for details. - */ - public static final String RDF_arp_warn_ = "Rdf.jena.rdfXml.WARN_"; - - /** - * RDF/XML ARP property: <code>IGN_xxx</code> ({@link String}). - * <p> - * See {@link #RDF_arp_err_} for details. - */ - public static final String RDF_arp_ign_ = "Rdf.jena.rdfXml.IGN_"; - - /** - * RDF/XML property: <code>xmlbase</code> ({@link String}, default=<jk>null</jk>). - * <p> - * The value to be included for an <xa>xml:base</xa> attribute on the root element in the file. - */ - public static final String RDF_rdfxml_xmlBase = "Rdf.jena.rdfXml.xmlbase"; - - /** - * RDF/XML property: <code>longId</code> ({@link Boolean}, default=<jk>false</jk>). - * <p> - * Whether to use long ID's for anon resources. - * Short ID's are easier to read, but can run out of memory on very large models. - */ - public static final String RDF_rdfxml_longId = "Rdf.jena.rdfXml.longId"; - - /** - * RDF/XML property: <code>allowBadURIs</code> ({@link Boolean}, default=<jk>false</jk>). - * <p> - * URIs in the graph are, by default, checked prior to serialization. - */ - public static final String RDF_rdfxml_allowBadUris = "Rdf.jena.rdfXml.allowBadURIs"; - - /** - * RDF/XML property: <code>relativeURIs</code> ({@link String}). - * <p> - * What sort of relative URIs should be used. - * <p> - * A comma separate list of options: - * <ul> - * <li><js>"same-document"</js> - Same-document references (e.g. <js>""</js> or <js>"#foo"</js>) - * <li><js>"network"</js> - Network paths (e.g. <js>"//example.org/foo"</js> omitting the URI scheme) - * <li><js>"absolute"</js> - Absolute paths (e.g. <js>"/foo"</js> omitting the scheme and authority) - * <li><js>"relative"</js> - Relative path not begining in <js>"../"</js> - * <li><js>"parent"</js> - Relative path begining in <js>"../"</js> - * <li><js>"grandparent"</js> - Relative path begining in <js>"../../"</js> - * </ul> - * <p> - * The default value is <js>"same-document, absolute, relative, parent"</js>. - * To switch off relative URIs use the value <js>""</js>. - * Relative URIs of any of these types are output where possible if and only if the option has been specified. - */ - public static final String RDF_rdfxml_relativeUris = "Rdf.jena.rdfXml.relativeURIs"; - - /** - * RDF/XML property: <code>showXmlDeclaration</code> ({@link String}, default=<js>"default"</js>). - * <p> - * Possible values: - * <ul> - * <li><js>"true"</js> - Add XML Declaration to the output. - * <li><js>"false"</js> - Don't add XML Declaration to the output. - * <li><js>"default"</js> - Only add an XML Declaration when asked to write to an <code>OutputStreamWriter</code> that uses some encoding other than <code>UTF-8</code> or <code>UTF-16</code>. - * In this case the encoding is shown in the XML declaration. - * </ul> - */ - public static final String RDF_rdfxml_showXmlDeclaration = "Rdf.jena.rdfXml.showXmlDeclaration"; - - /** - * RDF/XML property: <code>showDoctypeDeclaration</code> ({@link Boolean}, default=<jk>true</jk>). - * <p> - * If true, an XML Doctype declaration is included in the output. - * This declaration includes a <code>!ENTITY</code> declaration for each prefix mapping in the model, and any attribute value that starts with the URI of that mapping is written as starting with the corresponding entity invocation. - */ - public static final String RDF_rdfxml_showDoctypeDeclaration = "Rdf.jena.rdfXml.showDoctypeDeclaration"; - - /** - * RDF/XML property: <code>tab</code> ({@link Integer}, default=<code>2</code>). - * <p> - * The number of spaces with which to indent XML child elements. - */ - public static final String RDF_rdfxml_tab = "Rdf.jena.rdfXml.tab"; - - /** - * RDF/XML property: <code>attributeQuoteChar</code> ({@link Character}, default=<js>'"'</js>). - * <p> - * The XML attribute quote character. - */ - public static final String RDF_rdfxml_attributeQuoteChar = "Rdf.jena.rdfXml.attributeQuoteChar"; - - /** - * RDF/XML property: <code>blockRules</code> ({@link String}, default=<js>""</js>). - * <p> - * A list of <code>Resource</code> or a <code>String</code> being a comma separated list of fragment IDs from <a href='http://www.w3.org/TR/rdf-syntax-grammar'>RDF Syntax Grammar</a> indicating grammar rules that will not be used. - */ - public static final String RDF_rdfxml_blockRules = "Rdf.jena.rdfXml.blockRules"; - - /** - * N3/Turtle property: <code>minGap</code> ({@link Integer}, default=<code>1</code>). - * <p> - * Minimum gap between items on a line. - */ - public static final String RDF_n3_minGap = "Rdf.jena.n3.minGap"; - - /** - * N3/Turtle property: <code>objectLists</code> ({@link Boolean}, default=<jk>true</jk>). - * <p> - * Print object lists as comma separated lists. - */ - public static final String RDF_n3_objectLists = "Rdf.jena.n3.objectLists"; - - /** - * N3/Turtle property: <code>subjectColumn</code> ({@link Integer}, default=indentProperty). - * <p> - * If the subject is shorter than this value, the first property may go on the same line. - */ - public static final String RDF_n3_subjectColumn = "Rdf.jena.n3.subjectColumn"; - - /** - * N3/Turtle property: <code>propertyColumn</code> ({@link Integer}, default=<code>8</code>). - * <p> - * Width of the property column. - */ - public static final String RDF_n3_propertyColumn = "Rdf.jena.n3.propertyColumn"; - - /** - * N3/Turtle property: <code>indentProperty</code> ({@link Integer}, default=<code>6</code>). - * <p> - * Width to indent properties. - */ - public static final String RDF_n3_indentProperty = "Rdf.jena.n3.indentProperty"; - - /** - * N3/Turtle property: <code>widePropertyLen</code> ({@link Integer}, default=<code>20</code>). - * <p> - * Width of the property column. - * Must be longer than <code>propertyColumn</code>. - */ - public static final String RDF_n3_widePropertyLen = "Rdf.jena.n3.widePropertyLen"; - - /** - * N3/Turtle property: <code>abbrevBaseURI</code> ({@link Boolean}, default=<jk>true</jk>). - * <p> - * Control whether to use abbreviations <code><></code> or <code><#></code>. - */ - public static final String RDF_n3_abbrevBaseUri = "Rdf.jena.n3.abbrevBaseURI"; - - /** - * N3/Turtle property: <code>usePropertySymbols</code> ({@link Boolean}, default=<jk>true</jk>). - * <p> - * Control whether to use <code>a</code>, <code>=</code> and <code>=></code> in output - */ - public static final String RDF_n3_usePropertySymbols = "Rdf.jena.n3.usePropertySymbols"; - - /** - * N3/Turtle property: <code>useTripleQuotedStrings</code> ({@link Boolean}, default=<jk>true</jk>). - * <p> - * Allow the use of <code>"""</code> to delimit long strings. - */ - public static final String RDF_n3_useTripleQuotedStrings = "Rdf.jena.n3.useTripleQuotedStrings"; - - /** - * N3/Turtle property: <code>useDoubles</code> ({@link Boolean}, default=<jk>true</jk>). - * <p> - * Allow the use doubles as <code>123.456</code>. - */ - public static final String RDF_n3_useDoubles = "Rdf.jena.n3.useDoubles"; - - /** - * The RDF format for representing collections and arrays. ({@link String}, default=<js>"DEFAULT"</js>). - * <p> - * Possible values: - * <ul> - * <li><js>"DEFAULT"</js> - Default format. The default is an RDF Sequence container. - * <li><js>"SEQ"</js> - RDF Sequence container. - * <li><js>"BAG"</js> - RDF Bag container. - * <li><js>"LIST"</js> - RDF List container. - * <li><js>"MULTI_VALUED"</js> - Multi-valued properties. - * </ul> - * </p> - * <p> - * Important Note: If you use <js>"BAG"</js> or <js>"MULTI_VALUED"</js>, the order of the elements - * in the collection will get lost. - */ - public static final String RDF_collectionFormat = "Rdf.collectionFormat"; - RdfCollectionFormat collectionFormat = RdfCollectionFormat.DEFAULT; - - /** - * Specifies that collections should be serialized and parsed as loose collections. ({@link Boolean}, default=<jk>false</jk>). - * <p> - * When specified, collections of resources are handled as loose collections of resources in RDF instead of - * resources that are children of an RDF collection (e.g. Sequence, Bag). - * <p> - * Note that this setting is specialized for RDF syntax, and is incompatible with the concept of - * losslessly representing POJO models, since the tree structure of these POJO models are lost - * when serialized as loose collections. - * <p> - * This setting is typically only useful if the beans being parsed into do not have a bean property - * annotated with {@link BeanProperty#beanUri @BeanProperty(beanUri=true)}. - * - * <dl> - * <dt>Example:</dt> - * <dd> - * <p class='bcode'> - * WriterSerializer s = <jk>new</jk> RdfSerializer.XmlAbbrev().setProperty(<jsf>RDF_looseCollection</jsf>, <jk>true</jk>); - * ReaderParser p = <jk>new</jk> RdfParser.Xml().setProperty(<jsf>RDF_looseCollection</jsf>, <jk>true</jk>); - * - * List<MyBean> l = createListOfMyBeans(); - * - * <jc>// Serialize to RDF/XML as loose resources</jc> - * String rdfXml = s.serialize(l); - * - * <jc>// Parse back into a Java collection</jc> - * l = p.parseCollection(rdfXml, LinkedList.<jk>class</jk>, MyBean.<jk>class</jk>); - * - * MyBean[] b = createArrayOfMyBeans(); - * - * <jc>// Serialize to RDF/XML as loose resources</jc> - * String rdfXml = s.serialize(b); - * - * <jc>// Parse back into a bean array</jc> - * b = p.parse(rdfXml, MyBean[].<jk>class</jk>); - * </p> - * </dd> - * </dl> - */ - public static final String RDF_looseCollection = "Rdf.looseCollection"; - - String rdfLanguage = "RDF/XML-ABBREV"; - Namespace junoNs = NamespaceFactory.get("j", "http://www.ibm.com/juno/"); - Namespace junoBpNs = NamespaceFactory.get("jp", "http://www.ibm.com/junobp/"); - boolean useXmlNamespaces = true, looseCollection = false; - Map<String,Object> jenaSettings = new HashMap<String,Object>(); - - /** - * Sets the specified property value. - * @param property The property name. - * @param value The property value. - * @return <jk>true</jk> if property name was valid and property was set. - */ - public boolean setProperty(String property, Object value) { - if (property.equals(RDF_language)) - rdfLanguage = value.toString(); - else if (property.equals(RDF_junoNs)) - junoNs = NamespaceFactory.parseNamespace(value); - else if (property.equals(RDF_junoBpNs)) - junoBpNs = NamespaceFactory.parseNamespace(value); - else if (property.startsWith("Rdf.jena.")) - jenaSettings.put(property.substring(9), value); - else if (property.equals(RDF_collectionFormat)) - collectionFormat = RdfCollectionFormat.valueOf(value.toString()); - else if (property.equals(RDF_useXmlNamespaces)) - useXmlNamespaces = Boolean.valueOf(value.toString()); - else if (property.equals(RDF_looseCollection)) - looseCollection = Boolean.valueOf(value.toString()); - else - return false; - return true; - } -} http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30947fd7/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfSerializer$1.class ---------------------------------------------------------------------- diff --git a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfSerializer$1.class b/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfSerializer$1.class deleted file mode 100755 index 4ac3006..0000000 Binary files a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfSerializer$1.class and /dev/null differ http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30947fd7/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfSerializer$N3.class ---------------------------------------------------------------------- diff --git a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfSerializer$N3.class b/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfSerializer$N3.class deleted file mode 100755 index e90348b..0000000 Binary files a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfSerializer$N3.class and /dev/null differ http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30947fd7/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfSerializer$NTriple.class ---------------------------------------------------------------------- diff --git a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfSerializer$NTriple.class b/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfSerializer$NTriple.class deleted file mode 100755 index 0314bf4..0000000 Binary files a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfSerializer$NTriple.class and /dev/null differ http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30947fd7/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfSerializer$Turtle.class ---------------------------------------------------------------------- diff --git a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfSerializer$Turtle.class b/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfSerializer$Turtle.class deleted file mode 100755 index 8bde941..0000000 Binary files a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfSerializer$Turtle.class and /dev/null differ http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30947fd7/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfSerializer$Xml.class ---------------------------------------------------------------------- diff --git a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfSerializer$Xml.class b/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfSerializer$Xml.class deleted file mode 100755 index 79dc12d..0000000 Binary files a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfSerializer$Xml.class and /dev/null differ http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30947fd7/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfSerializer$XmlAbbrev.class ---------------------------------------------------------------------- diff --git a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfSerializer$XmlAbbrev.class b/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfSerializer$XmlAbbrev.class deleted file mode 100755 index 8c176f9..0000000 Binary files a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfSerializer$XmlAbbrev.class and /dev/null differ http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30947fd7/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfSerializer.class ---------------------------------------------------------------------- diff --git a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfSerializer.class b/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfSerializer.class deleted file mode 100755 index 2af16f2..0000000 Binary files a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfSerializer.class and /dev/null differ http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30947fd7/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfSerializer.java ---------------------------------------------------------------------- diff --git a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfSerializer.java b/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfSerializer.java deleted file mode 100755 index 4acb7cd..0000000 --- a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfSerializer.java +++ /dev/null @@ -1,466 +0,0 @@ -/******************************************************************************* - * Licensed Materials - Property of IBM - * (c) Copyright IBM Corporation 2014, 2015. All Rights Reserved. - * - * The source code for this program is not published or otherwise - * divested of its trade secrets, irrespective of what has been - * deposited with the U.S. Copyright Office. - *******************************************************************************/ -package com.ibm.juno.core.jena; - -import static com.ibm.juno.core.jena.Constants.*; -import static com.ibm.juno.core.jena.RdfProperties.*; -import static com.ibm.juno.core.xml.XmlUtils.*; - -import java.io.*; -import java.lang.reflect.*; -import java.util.*; - -import com.hp.hpl.jena.rdf.model.*; -import com.ibm.juno.core.*; -import com.ibm.juno.core.annotation.*; -import com.ibm.juno.core.filter.*; -import com.ibm.juno.core.serializer.*; -import com.ibm.juno.core.utils.*; -import com.ibm.juno.core.xml.*; - -/** - * Serializes POJOs to RDF. - * - * - * <h6 class='topic'>Configurable properties</h6> - * <p> - * Refer to <a class='doclink' href='package-summary.html#SerializerConfigurableProperties'>Configurable Properties</a> - * for the entire list of configurable properties. - * - * - * <h6 class='topic'>Behavior-specific subclasses</h6> - * <p> - * The following direct subclasses are provided for language-specific serializers: - * <ul> - * <li>{@link RdfSerializer.Xml} - RDF/XML. - * <li>{@link RdfSerializer.XmlAbbrev} - RDF/XML-ABBREV. - * <li>{@link RdfSerializer.NTriple} - N-TRIPLE. - * <li>{@link RdfSerializer.Turtle} - TURTLE. - * <li>{@link RdfSerializer.N3} - N3. - * </ul> - * - * - * <h6 class='topic'>Additional Information</h6> - * <p> - * See <a class='doclink' href='package-summary.html#TOC'>RDF Overview</a> for an overview of RDF support in Juno. - * - * - * @author James Bognar ([email protected]) - */ -@SuppressWarnings({ "rawtypes", "unchecked" }) -@Produces(value="text/xml+rdf+abbrev", contentType="text/xml+rdf") -public class RdfSerializer extends WriterSerializer { - - /** Default RDF/XML serializer, all default settings.*/ - public static final RdfSerializer DEFAULT_XML = new RdfSerializer.Xml().lock(); - - /** Default Abbreviated RDF/XML serializer, all default settings.*/ - public static final RdfSerializer DEFAULT_XMLABBREV = new RdfSerializer.XmlAbbrev().lock(); - - /** Default Turtle serializer, all default settings.*/ - public static final RdfSerializer DEFAULT_TURTLE = new RdfSerializer.Turtle().lock(); - - /** Default N-Triple serializer, all default settings.*/ - public static final RdfSerializer DEFAULT_NTRIPLE = new RdfSerializer.NTriple().lock(); - - /** Default N3 serializer, all default settings.*/ - public static final RdfSerializer DEFAULT_N3 = new RdfSerializer.N3().lock(); - - - /** Produces RDF/XML output */ - @Produces("text/xml+rdf") - public static class Xml extends RdfSerializer { - /** Constructor */ - public Xml() { - setProperty(RDF_language, LANG_RDF_XML); - } - } - - /** Produces Abbreviated RDF/XML output */ - @Produces(value="text/xml+rdf+abbrev", contentType="text/xml+rdf") - public static class XmlAbbrev extends RdfSerializer { - /** Constructor */ - public XmlAbbrev() { - setProperty(RDF_language, LANG_RDF_XML_ABBREV); - } - } - - /** Produces N-Triple output */ - @Produces("text/n-triple") - public static class NTriple extends RdfSerializer { - /** Constructor */ - public NTriple() { - setProperty(RDF_language, LANG_NTRIPLE); - } - } - - /** Produces Turtle output */ - @Produces("text/turtle") - public static class Turtle extends RdfSerializer { - /** Constructor */ - public Turtle() { - setProperty(RDF_language, LANG_TURTLE); - } - } - - /** Produces N3 output */ - @Produces("text/n3") - public static class N3 extends RdfSerializer { - /** Constructor */ - public N3() { - setProperty(RDF_language, LANG_N3); - } - } - - - /** Jena serializer properties currently set on this serializer. */ - protected transient RdfSerializerProperties rsp = new RdfSerializerProperties(); - - /** Xml serializer properties currently set on this serializer. */ - protected transient XmlSerializerProperties xsp = new XmlSerializerProperties(); - - - @Override /* Serializer */ - protected void doSerialize(Object o, Writer out, SerializerContext ctx) throws IOException, SerializeException { - - RdfSerializerContext rctx = (RdfSerializerContext)ctx; - - Model model = rctx.model; - Resource r = null; - - ClassMeta<?> cm = rctx.getBeanContext().getClassMetaForObject(o); - if (rctx.isLooseCollection() && cm != null && (cm.isCollection() || cm.isArray())) { - Collection c = sort(ctx, cm.isCollection() ? (Collection)o : toList(cm.getInnerClass(), o)); - for (Object o2 : c) - serializeAnything(o2, false, object(), rctx, "root", null, null); - } else { - RDFNode n = serializeAnything(o, false, object(), rctx, "root", null, null); - if (n.isLiteral()) { - r = model.createResource(); - r.addProperty(rctx.pValue, n); - } else { - r = n.asResource(); - } - - if (rctx.addRootProperty) - r.addProperty(rctx.pRoot, "true"); - } - - rctx.writer.write(model, out, "http://unknown/"); - } - - private RDFNode serializeAnything(Object o, boolean isURI, ClassMeta<?> eType, RdfSerializerContext ctx, String attrName, BeanPropertyMeta bpm, Resource parentResource) throws SerializeException { - Model m = ctx.model; - BeanContext bc = ctx.getBeanContext(); - - ClassMeta<?> aType = null; // The actual type - ClassMeta<?> wType = null; // The wrapped type - ClassMeta<?> gType = object(); // The generic type - - aType = ctx.push(attrName, o, eType); - - if (eType == null) - eType = object(); - - // Handle recursion - if (aType == null) { - o = null; - aType = object(); - } - - if (o != null) { - - if (aType.isDelegate()) { - wType = aType; - aType = ((Delegate)o).getClassMeta(); - } - - gType = aType.getFilteredClassMeta(); - - // Filter if necessary - PojoFilter filter = aType.getPojoFilter(); - if (filter != null) { - o = filter.filter(o); - - // If the filter's getFilteredClass() method returns Object, we need to figure out - // the actual type now. - if (gType.isObject()) - gType = bc.getClassMetaForObject(o); - } - } else { - gType = eType.getFilteredClassMeta(); - } - - RDFNode n = null; - - if (o == null || gType.isChar() && ((Character)o).charValue() == 0) { - if (bpm != null) { - if (! ctx.isTrimNulls()) { - n = m.createResource(RDF_NIL); - } - } else { - n = m.createResource(RDF_NIL); - } - - } else if (gType.isUri() || isURI) { - n = m.createResource(getUri(o, null, ctx)); - - } else if (gType.isCharSequence() || gType.isChar()) { - n = m.createLiteral(encodeTextInvalidChars(o)); - - } else if (gType.isNumber() || gType.isBoolean()) { - if (! ctx.addLiteralTypes) - n = m.createLiteral(o.toString()); - else - n = m.createTypedLiteral(o); - - } else if (gType.isMap() || (wType != null && wType.isMap())) { - if (o instanceof BeanMap) { - BeanMap bm = (BeanMap)o; - String uri = getUri(bm.getBeanUri(), null, ctx); - n = m.createResource(uri); - serializeBeanMap(bm, (Resource)n, ctx); - } else { - Map m2 = (Map)o; - n = m.createResource(); - serializeMap(m2, (Resource)n, gType, ctx); - } - - } else if (gType.hasToObjectMapMethod()) { - Map m2 = gType.toObjectMap(o); - n = m.createResource(); - serializeMap(m2, (Resource)n, gType, ctx); - - } else if (gType.isBean()) { - BeanMap bm = bc.forBean(o); - String uri = getUri(bm.getBeanUri(), null, ctx); - n = m.createResource(uri); - serializeBeanMap(bm, (Resource)n, ctx); - - } else if (gType.isCollection() || gType.isArray() || (wType != null && wType.isCollection())) { - Collection c = sort(ctx, gType.isCollection() ? (Collection)o : toList(gType.getInnerClass(), o)); - RdfCollectionFormat f = ctx.getCollectionFormat(); - if (gType.getRdfMeta().getCollectionFormat() != RdfCollectionFormat.DEFAULT) - f = gType.getRdfMeta().getCollectionFormat(); - if (bpm != null && bpm.getRdfMeta().getCollectionFormat() != RdfCollectionFormat.DEFAULT) - f = bpm.getRdfMeta().getCollectionFormat(); - switch (f) { - case BAG: n = serializeToContainer(c, gType, m.createBag(), ctx); break; - case LIST: n = serializeToList(c, gType, ctx); break; - case MULTI_VALUED: serializeToMultiProperties(c, gType, bpm, ctx, attrName, parentResource); break; - default: n = serializeToContainer(c, gType, m.createSeq(), ctx); - } - } else { - n = m.createLiteral(encodeTextInvalidChars(o)); - } - - if (ctx.isAddClassAttrs() && n != null && n.isResource()) { - if (o != null && ! eType.equals(aType)) - n.asResource().addProperty(ctx.pClass, aType.toString()); - else if (o == null) - n.asResource().addProperty(ctx.pClass, eType.toString()); - } - - ctx.pop(); - - return n; - } - - private String getUri(Object uri, Object uri2, RdfSerializerContext ctx) { - String s = null; - if (uri != null) - s = uri.toString(); - if ((s == null || s.isEmpty()) && uri2 != null) - s = uri2.toString(); - if (s == null) - return null; - if (s.indexOf("://") == -1) { - String aUri = ctx.getAbsolutePathUriBase(); - String rUri = ctx.getRelativeUriBase(); - if (StringUtils.startsWith(s, '/')) { - if (aUri != null) - return aUri + s; - } else { - if (rUri != null) { - if (rUri.equals("/")) - return '/' + s; - return rUri + '/' + s; - } - } - } - return s; - } - - private void serializeMap(Map m, Resource r, ClassMeta<?> type, RdfSerializerContext ctx) throws SerializeException { - - m = sort(ctx, m); - - ClassMeta<?> keyType = type.getKeyType(), valueType = type.getValueType(); - - ArrayList<Map.Entry<Object,Object>> l = new ArrayList<Map.Entry<Object,Object>>(m.entrySet()); - Collections.reverse(l); - for (Map.Entry<Object,Object> me : l) { - Object value = me.getValue(); - - Object key = generalize(ctx, me.getKey(), keyType); - - Namespace ns = ctx.junoBpNs; - Model model = ctx.model; - Property p = model.createProperty(ns.getUri(), encodeElementName(key)); - RDFNode n = serializeAnything(value, false, valueType, ctx, key == null ? null : key.toString(), null, r); - if (n != null) - r.addProperty(p, n); - } - } - - private void serializeBeanMap(BeanMap m, Resource r, RdfSerializerContext ctx) throws SerializeException { - ArrayList<BeanMapEntry> l = new ArrayList<BeanMapEntry>(m.entrySet()); - Collections.reverse(l); - for (BeanMapEntry bme : l) { - BeanPropertyMeta pMeta = bme.getMeta(); - ClassMeta<?> cm = pMeta.getClassMeta(); - - if (pMeta.isBeanUri()) - continue; - - String key = bme.getKey(); - Object value = null; - try { - value = bme.getValue(); - } catch (StackOverflowError e) { - throw e; - } catch (Throwable t) { - ctx.addBeanGetterWarning(pMeta, t); - } - - if (canIgnoreValue(ctx, cm, key, value)) - continue; - - BeanPropertyMeta bpm = bme.getMeta(); - Namespace ns = bpm.getRdfMeta().getNamespace(); - if (ns == null && ctx.isUseXmlNamespaces()) - ns = bpm.getXmlMeta().getNamespace(); - if (ns == null) - ns = ctx.junoBpNs; - else if (ctx.isAutoDetectNamespaces()) - ctx.addModelPrefix(ns); - - Property p = ctx.model.createProperty(ns.getUri(), encodeElementName(key)); - RDFNode n = serializeAnything(value, pMeta.isUri(), cm, ctx, key, pMeta, r); - if (n != null) - r.addProperty(p, n); - } - } - - - private Container serializeToContainer(Collection c, ClassMeta<?> type, Container list, RdfSerializerContext ctx) throws SerializeException { - - ClassMeta<?> elementType = type.getElementType(); - for (Object e : c) { - RDFNode n = serializeAnything(e, false, elementType, ctx, null, null, null); - list = list.add(n); - } - return list; - } - - private RDFList serializeToList(Collection c, ClassMeta<?> type, RdfSerializerContext ctx) throws SerializeException { - ClassMeta<?> elementType = type.getElementType(); - List<RDFNode> l = new ArrayList<RDFNode>(c.size()); - for (Object e : c) { - l.add(serializeAnything(e, false, elementType, ctx, null, null, null)); - } - return ctx.model.createList(l.iterator()); - } - - private void serializeToMultiProperties(Collection c, ClassMeta<?> gType, BeanPropertyMeta bpm, RdfSerializerContext ctx, String attrName, Resource parentResource) throws SerializeException { - ClassMeta<?> elementType = gType.getElementType(); - for (Object e : c) { - Namespace ns = null; - if (bpm != null) { - ns = bpm.getRdfMeta().getNamespace(); - if (ns == null && ctx.isUseXmlNamespaces()) - ns = bpm.getXmlMeta().getNamespace(); - } - if (ns == null) - ns = ctx.junoBpNs; - else if (ctx.isAutoDetectNamespaces()) - ctx.addModelPrefix(ns); - RDFNode n2 = serializeAnything(e, false, elementType, ctx, null, null, null); - Property p = ctx.model.createProperty(ns.getUri(), encodeElementName(attrName)); - parentResource.addProperty(p, n2); - } - - } - - //-------------------------------------------------------------------------------- - // Overridden methods - //-------------------------------------------------------------------------------- - - @Override /* Serializer */ - public RdfSerializerContext createContext(ObjectMap properties, Method javaMethod) { - return new RdfSerializerContext(getBeanContext(), sp, xsp, rsp, properties, javaMethod); - } - - @Override /* CoreApi */ - public RdfSerializer setProperty(String property, Object value) throws LockedException { - checkLock(); - if (! rsp.setProperty(property, value)) - if (! xsp.setProperty(property, value)) - super.setProperty(property, value); - return this; - } - - @Override /* CoreApi */ - public RdfSerializer setProperties(ObjectMap properties) throws LockedException { - for (Map.Entry<String,Object> e : properties.entrySet()) - setProperty(e.getKey(), e.getValue()); - return this; - } - - @Override /* CoreApi */ - public RdfSerializer addNotBeanClasses(Class<?>...classes) throws LockedException { - super.addNotBeanClasses(classes); - return this; - } - - @Override /* CoreApi */ - public RdfSerializer addFilters(Class<?>...classes) throws LockedException { - super.addFilters(classes); - return this; - } - - @Override /* CoreApi */ - public <T> RdfSerializer addImplClass(Class<T> interfaceClass, Class<? extends T> implClass) throws LockedException { - super.addImplClass(interfaceClass, implClass); - return this; - } - - @Override /* CoreApi */ - public RdfSerializer setClassLoader(ClassLoader classLoader) throws LockedException { - super.setClassLoader(classLoader); - return this; - } - - @Override /* Lockable */ - public RdfSerializer lock() { - super.lock(); - return this; - } - - @Override /* Lockable */ - public RdfSerializer clone() { - try { - RdfSerializer c = (RdfSerializer)super.clone(); - c.rsp = rsp.clone(); - return c; - } catch (CloneNotSupportedException e) { - throw new RuntimeException(e); // Shouldn't happen - } - } -} http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30947fd7/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfSerializerContext.class ---------------------------------------------------------------------- diff --git a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfSerializerContext.class b/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfSerializerContext.class deleted file mode 100755 index 6d3e9ae..0000000 Binary files a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfSerializerContext.class and /dev/null differ http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30947fd7/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfSerializerContext.java ---------------------------------------------------------------------- diff --git a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfSerializerContext.java b/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfSerializerContext.java deleted file mode 100755 index 82d95c5..0000000 --- a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfSerializerContext.java +++ /dev/null @@ -1,135 +0,0 @@ -/******************************************************************************* - * Licensed Materials - Property of IBM - * (c) Copyright IBM Corporation 2014, 2015. All Rights Reserved. - * - * The source code for this program is not published or otherwise - * divested of its trade secrets, irrespective of what has been - * deposited with the U.S. Copyright Office. - *******************************************************************************/ -package com.ibm.juno.core.jena; - -import static com.ibm.juno.core.jena.Constants.*; -import static com.ibm.juno.core.jena.RdfProperties.*; -import static com.ibm.juno.core.jena.RdfSerializerProperties.*; - -import java.lang.reflect.*; -import java.util.*; - -import com.hp.hpl.jena.rdf.model.*; -import com.ibm.juno.core.*; -import com.ibm.juno.core.serializer.*; -import com.ibm.juno.core.xml.*; - -/** - * Context object that lives for the duration of a single serialization of {@link RdfSerializer}. - * <p> - * See {@link SerializerContext} for details. - * - * @author James Bognar ([email protected]) - */ -public final class RdfSerializerContext extends XmlSerializerContext { - - final String rdfLanguage; - final Namespace junoNs, junoBpNs; - final boolean addLiteralTypes, addRootProperty, useXmlNamespaces, looseCollection; - final Property pRoot, pValue, pClass; - final Model model; - final RDFWriter writer; - final RdfCollectionFormat collectionFormat; - - /** - * Constructor. - * @param beanContext The bean context being used by the serializer. - * @param sp Default general serializer properties. - * @param xsp Default XML serializer properties. - * @param jsp Default Jena serializer properties. - * @param op Override properties. - * @param javaMethod Java method that invoked this serializer. - * When using the REST API, this is the Java method invoked by the REST call. - * Can be used to access annotations defined on the method or class. - */ - protected RdfSerializerContext(BeanContext beanContext, SerializerProperties sp, XmlSerializerProperties xsp, RdfSerializerProperties jsp, ObjectMap op, Method javaMethod) { - super(beanContext, sp, xsp, op, javaMethod); - ObjectMap jenaSettings = new ObjectMap(); - jenaSettings.put("rdfXml.tab", isUseIndentation() ? 2 : 0); - jenaSettings.put("rdfXml.attributeQuoteChar", Character.toString(getQuoteChar())); - jenaSettings.putAll(jsp.jenaSettings); - if (op == null || op.isEmpty()) { - this.rdfLanguage = jsp.rdfLanguage; - this.junoNs = jsp.junoNs; - this.junoBpNs = jsp.junoBpNs; - this.addLiteralTypes = jsp.addLiteralTypes; - this.addRootProperty = jsp.addRootProperty; - this.collectionFormat = jsp.collectionFormat; - this.looseCollection = jsp.looseCollection; - this.useXmlNamespaces = jsp.useXmlNamespaces; - } else { - this.rdfLanguage = op.getString(RDF_language, jsp.rdfLanguage); - this.junoNs = (op.containsKey(RDF_junoNs) ? NamespaceFactory.parseNamespace(op.get(RDF_junoNs)) : jsp.junoNs); - this.junoBpNs = (op.containsKey(RDF_junoBpNs) ? NamespaceFactory.parseNamespace(op.get(RDF_junoBpNs)) : jsp.junoBpNs); - this.addLiteralTypes = op.getBoolean(RDF_addLiteralTypes, jsp.addLiteralTypes); - this.addRootProperty = op.getBoolean(RDF_addRootProperty, jsp.addRootProperty); - for (Map.Entry<String,Object> e : op.entrySet()) { - String key = e.getKey(); - if (key.startsWith("Rdf.jena.")) - jenaSettings.put(key.substring(9), e.getValue()); - } - this.collectionFormat = RdfCollectionFormat.valueOf(op.getString(RDF_collectionFormat, "DEFAULT")); - this.looseCollection = op.getBoolean(RDF_looseCollection, jsp.looseCollection); - this.useXmlNamespaces = op.getBoolean(RDF_useXmlNamespaces, jsp.useXmlNamespaces); - } - this.model = ModelFactory.createDefaultModel(); - addModelPrefix(junoNs); - addModelPrefix(junoBpNs); - for (Namespace ns : this.getNamespaces()) - addModelPrefix(ns); - this.pRoot = model.createProperty(junoNs.getUri(), RDF_junoNs_ROOT); - this.pValue = model.createProperty(junoNs.getUri(), RDF_junoNs_VALUE); - this.pClass = model.createProperty(junoNs.getUri(), RDF_junoNs_CLASS); - writer = model.getWriter(rdfLanguage); - - // Only apply properties with this prefix! - String propPrefix = RdfProperties.LANG_PROP_MAP.get(rdfLanguage); - if (propPrefix == null) - throw new RuntimeException("Unknown RDF language encountered: '"+rdfLanguage+"'"); - - for (Map.Entry<String,Object> e : jenaSettings.entrySet()) - if (e.getKey().startsWith(propPrefix)) - writer.setProperty(e.getKey().substring(propPrefix.length()), e.getValue()); - } - - /** - * Adds the specified namespace as a model prefix. - * @param ns The XML namespace. - */ - public void addModelPrefix(Namespace ns) { - model.setNsPrefix(ns.getName(), ns.getUri()); - } - - /** - * Returns the format for serializing collections. - * - * @return The format for serializing collections. - */ - protected RdfCollectionFormat getCollectionFormat() { - return collectionFormat; - } - - /** - * Returns <jk>true</jk> if RDF serializer should use XML serializer namespaces. - * - * @return <jk>true</jk> if RDF serializer should use XML serializer namespaces. - */ - protected boolean isUseXmlNamespaces() { - return useXmlNamespaces; - } - - /** - * Returns the {@link RdfProperties#RDF_looseCollection} property value. - * - * @return The {@link RdfProperties#RDF_looseCollection} property value. - */ - protected boolean isLooseCollection() { - return looseCollection; - } -} http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30947fd7/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfSerializerProperties.class ---------------------------------------------------------------------- diff --git a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfSerializerProperties.class b/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfSerializerProperties.class deleted file mode 100755 index e5fb1bc..0000000 Binary files a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfSerializerProperties.class and /dev/null differ http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30947fd7/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfSerializerProperties.java ---------------------------------------------------------------------- diff --git a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfSerializerProperties.java b/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfSerializerProperties.java deleted file mode 100755 index fd5ffbc..0000000 --- a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfSerializerProperties.java +++ /dev/null @@ -1,80 +0,0 @@ -/******************************************************************************* - * Licensed Materials - Property of IBM - * (c) Copyright IBM Corporation 2014, 2015. All Rights Reserved. - * - * The source code for this program is not published or otherwise - * divested of its trade secrets, irrespective of what has been - * deposited with the U.S. Copyright Office. - *******************************************************************************/ -package com.ibm.juno.core.jena; - -import com.ibm.juno.core.*; -import com.ibm.juno.core.serializer.*; - -/** - * Configurable properties on the {@link RdfSerializer} class. - * <p> - * Use the {@link RdfSerializer#setProperty(String, Object)} method to set property values. - * <p> - * In addition to these properties, the following properties are also applicable for {@link RdfSerializer}. - * <ul> - * <li>{@link RdfProperties} - * <li>{@link SerializerProperties} - * <li>{@link BeanContextProperties} - * </ul> - * - * @author James Bognar ([email protected]) - */ -public final class RdfSerializerProperties extends RdfProperties implements Cloneable { - - /** - * Add XSI data types to non-<code>String</code> literals ({@link Boolean}, default=<jk>false</jk>). - */ - public static final String RDF_addLiteralTypes = "RdfSerializer.addLiteralTypes"; - - /** - * Add RDF root identifier property to root node ({@link Boolean}, default=<jk>false</jk>). - * <p> - * When enabled an RDF property <code>http://www.ibm.com/juno/root</code> is added with a value of <js>"true"</js> - * to identify the root node in the graph. - * This helps locate the root node during parsing. - * <p> - * If disabled, the parser has to search through the model to find any resources without - * incoming predicates to identify root notes, which can introduce a considerable performance - * degradation. - */ - public static final String RDF_addRootProperty = "RdfSerializer.addRootProperty"; - - boolean addLiteralTypes = false, addRootProperty = false; - - /** - * Sets the specified property value. - * @param property The property name. - * @param value The property value. - * @return <jk>true</jk> if property name was valid and property was set. - */ - @Override /* RdfProperties */ - public boolean setProperty(String property, Object value) { - if (property.equals(RDF_addLiteralTypes)) - addLiteralTypes = BeanContext.DEFAULT.convertToType(value, boolean.class); - else if (property.equals(RDF_addRootProperty)) - addRootProperty = BeanContext.DEFAULT.convertToType(value, boolean.class); - else - return super.setProperty(property, value); - return true; - } - - - //-------------------------------------------------------------------------------- - // Overridden methods - //-------------------------------------------------------------------------------- - - @Override /* Cloneable */ - public RdfSerializerProperties clone() { - try { - return (RdfSerializerProperties)super.clone(); - } catch (CloneNotSupportedException e) { - throw new RuntimeException(e); // Shouldn't happen. - } - } -} http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30947fd7/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfUtils.class ---------------------------------------------------------------------- diff --git a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfUtils.class b/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfUtils.class deleted file mode 100755 index c20f2c9..0000000 Binary files a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfUtils.class and /dev/null differ http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30947fd7/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfUtils.java ---------------------------------------------------------------------- diff --git a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfUtils.java b/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfUtils.java deleted file mode 100755 index 2e34b81..0000000 --- a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/RdfUtils.java +++ /dev/null @@ -1,87 +0,0 @@ -/******************************************************************************* - * Licensed Materials - Property of IBM - * (c) Copyright IBM Corporation 2015. All Rights Reserved. - * - * Note to U.S. Government Users Restricted Rights: Use, - * duplication or disclosure restricted by GSA ADP Schedule - * Contract with IBM Corp. - *******************************************************************************/ -package com.ibm.juno.core.jena; - -import java.util.*; - -import com.ibm.juno.core.*; -import com.ibm.juno.core.jena.annotation.*; -import com.ibm.juno.core.xml.*; - -/** - * Utility classes. - */ -public class RdfUtils { - - /** - * Find the namespace given a list of <ja>@Rdf</ja> and <ja>@RdfSchema</ja> annotations. - * The annotations should be a child-to-parent ordering of annotations found on - * a class or method. - * - * @param rdfs The <code>@Rdf</code> annotations to search. - * @param schemas The list of known RDF schemas. - * @return The resolved namespace, or <jk>null</jk> if the namespace could not be resolved. - */ - public static Namespace findNamespace(List<Rdf> rdfs, List<RdfSchema> schemas) { - - for (Rdf rdf : rdfs) { - Namespace ns = findNamespace(rdf.prefix(), rdf.namespace(), rdfs, schemas); - if (ns != null) - return ns; - } - - for (RdfSchema schema : schemas) { - Namespace ns = findNamespace(schema.prefix(), schema.namespace(), null, schemas); - if (ns != null) - return ns; - } - - return null; - } - - private static Namespace findNamespace(String prefix, String ns, List<Rdf> rdfs, List<RdfSchema> schemas) { - - // If both prefix and namespace specified, use that Namespace mapping. - if (! (prefix.isEmpty() || ns.isEmpty())) - return NamespaceFactory.get(prefix, ns); - - // If only prefix specified, need to search for namespaceURI. - if (! prefix.isEmpty()) { - if (rdfs != null) - for (Rdf rdf2 : rdfs) - if (rdf2.prefix().equals(prefix) && ! rdf2.namespace().isEmpty()) - return NamespaceFactory.get(prefix, rdf2.namespace()); - for (RdfSchema schema : schemas) { - if (schema.prefix().equals(prefix) && ! schema.namespace().isEmpty()) - return NamespaceFactory.get(prefix, schema.namespace()); - for (RdfNs rdfNs : schema.rdfNs()) - if (rdfNs.prefix().equals(prefix)) - return NamespaceFactory.get(prefix, rdfNs.namespaceURI()); - } - throw new BeanRuntimeException("Found @Rdf.prefix annotation with no matching URI. prefix='"+prefix+"'"); - } - - // If only namespaceURI specified, need to search for prefix. - if (! ns.isEmpty()) { - if (rdfs != null) - for (Rdf rdf2 : rdfs) - if (rdf2.namespace().equals(ns) && ! rdf2.prefix().isEmpty()) - return NamespaceFactory.get(rdf2.prefix(), ns); - for (RdfSchema schema : schemas) { - if (schema.namespace().equals(ns) && ! schema.prefix().isEmpty()) - return NamespaceFactory.get(schema.prefix(), ns); - for (RdfNs rdfNs : schema.rdfNs()) - if (rdfNs.namespaceURI().equals(ns)) - return NamespaceFactory.get(rdfNs.prefix(), ns); - } - } - - return null; - } -} http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30947fd7/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/annotation/Rdf.class ---------------------------------------------------------------------- diff --git a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/annotation/Rdf.class b/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/annotation/Rdf.class deleted file mode 100755 index afb35fb..0000000 Binary files a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/jena/annotation/Rdf.class and /dev/null differ
