You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@juneau.apache.org by ja...@apache.org on 2016/08/25 16:29:37 UTC
[1/2] incubator-juneau git commit: Eliminate references to
language-specific metadata in the core metadata classes.
Repository: incubator-juneau
Updated Branches:
refs/heads/master 69d11dbb7 -> 51bb3c48f
Eliminate references to language-specific metadata in the core metadata
classes.
Project: http://git-wip-us.apache.org/repos/asf/incubator-juneau/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-juneau/commit/9c6eec75
Tree: http://git-wip-us.apache.org/repos/asf/incubator-juneau/tree/9c6eec75
Diff: http://git-wip-us.apache.org/repos/asf/incubator-juneau/diff/9c6eec75
Branch: refs/heads/master
Commit: 9c6eec755b04b07f9b1e3f5ba4253950879184e9
Parents: 3f09988
Author: jamesbognar <ja...@gmail.com>
Authored: Thu Aug 25 12:23:14 2016 -0400
Committer: jamesbognar <ja...@gmail.com>
Committed: Thu Aug 25 12:28:36 2016 -0400
----------------------------------------------------------------------
.../main/java/org/apache/juneau/BeanMeta.java | 21 ++---
.../org/apache/juneau/BeanMetaExtended.java | 43 ++++++++++
.../org/apache/juneau/BeanMetaFiltered.java | 7 +-
.../org/apache/juneau/BeanPropertyMeta.java | 44 ++--------
.../apache/juneau/BeanPropertyMetaExtended.java | 43 ++++++++++
.../org/apache/juneau/ClassMetaExtended.java | 51 ++++++++++++
.../juneau/html/HtmlBeanPropertyMeta.java | 19 ++---
.../org/apache/juneau/html/HtmlSerializer.java | 18 ++---
.../apache/juneau/internal/DelegateBeanMap.java | 15 +---
.../apache/juneau/jena/RdfBeanPropertyMeta.java | 11 +--
.../java/org/apache/juneau/jena/RdfParser.java | 4 +-
.../org/apache/juneau/json/JsonSerializer.java | 2 +-
.../urlencoding/UrlEncodingParserSession.java | 2 +-
.../UrlEncodingSerializerSession.java | 2 +-
.../org/apache/juneau/utils/MetadataMap.java | 84 ++++++++++++++++++++
.../java/org/apache/juneau/xml/XmlBeanMeta.java | 29 +++----
.../apache/juneau/xml/XmlBeanPropertyMeta.java | 51 +++++-------
.../apache/juneau/xml/XmlSchemaSerializer.java | 22 ++---
.../org/apache/juneau/xml/XmlSerializer.java | 46 +++++------
19 files changed, 342 insertions(+), 172 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/9c6eec75/juneau-core/src/main/java/org/apache/juneau/BeanMeta.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/BeanMeta.java b/juneau-core/src/main/java/org/apache/juneau/BeanMeta.java
index 5ea06a8..1eb9123 100644
--- a/juneau-core/src/main/java/org/apache/juneau/BeanMeta.java
+++ b/juneau-core/src/main/java/org/apache/juneau/BeanMeta.java
@@ -22,11 +22,9 @@ import java.util.*;
import java.util.Map.*;
import org.apache.juneau.annotation.*;
-import org.apache.juneau.html.*;
import org.apache.juneau.internal.*;
-import org.apache.juneau.jena.*;
import org.apache.juneau.transform.*;
-import org.apache.juneau.xml.*;
+import org.apache.juneau.utils.*;
/**
@@ -93,8 +91,7 @@ public class BeanMeta<T> {
/** For beans with constructors with BeanConstructor annotation, this is the list of constructor arg properties. */
protected String[] constructorArgs = new String[0];
- /** XML-related metadata */
- protected XmlBeanMeta<T> xmlMeta;
+ private MetadataMap extMeta = new MetadataMap(); // Extended metadata
// Other fields
BeanPropertyMeta uriProperty; // The property identified as the URI for this bean (annotated with @BeanProperty.beanUri).
@@ -347,8 +344,6 @@ public class BeanMeta<T> {
}
}
- xmlMeta = new XmlBeanMeta<T>(this, null);
-
// We return this through the Bean.keySet() interface, so make sure it's not modifiable.
properties = Collections.unmodifiableMap(properties);
@@ -577,12 +572,13 @@ public class BeanMeta<T> {
}
/**
- * Returns XML related metadata for this bean type.
+ * Returns the language-specified extended metadata on this bean class.
*
- * @return The XML metadata for this bean type.
+ * @param metaDataClass The name of the metadata class to create.
+ * @return Extended metadata on this bean class. Never <jk>null</jk>.
*/
- public XmlBeanMeta<T> getXmlMeta() {
- return xmlMeta;
+ public <M extends BeanMetaExtended> M getExtendedMeta(Class<M> metaDataClass) {
+ return extMeta.get(metaDataClass, this);
}
/**
@@ -712,9 +708,6 @@ public class BeanMeta<T> {
super(BeanMeta.this, subTypeAttr, ctx.string());
this.subTypes = subTypes;
this.realProperty = realProperty;
- this.htmlMeta = new HtmlBeanPropertyMeta(this);
- this.xmlMeta = new XmlBeanPropertyMeta(this);
- this.rdfMeta = new RdfBeanPropertyMeta(this);
}
/*
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/9c6eec75/juneau-core/src/main/java/org/apache/juneau/BeanMetaExtended.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/BeanMetaExtended.java b/juneau-core/src/main/java/org/apache/juneau/BeanMetaExtended.java
new file mode 100644
index 0000000..45fbc06
--- /dev/null
+++ b/juneau-core/src/main/java/org/apache/juneau/BeanMetaExtended.java
@@ -0,0 +1,43 @@
+/***************************************************************************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations under the License.
+ ***************************************************************************************************************************/
+
+package org.apache.juneau;
+
+/**
+ * Defines extended language-specific metadata associated with a bean.
+ * <p>
+ * Serializers and parsers can implement their own language-specific metadata on a bean and retrieve
+ * the metadata using the {@link BeanMeta#getExtendedMeta(Class)} method.
+ *
+ */
+public class BeanMetaExtended {
+
+ private final BeanMeta<?> bm;
+
+ /**
+ * Constructor.
+ * @param bm The metadata of the bean we're extending.
+ * @throws BeanRuntimeException If any error occurred trying to construct the metadata.
+ */
+ public BeanMetaExtended(BeanMeta<?> bm) throws BeanRuntimeException {
+ this.bm = bm;
+ }
+
+ /**
+ * Returns the bean metadata that was passed into the constructor.
+ * @return The bean metadata that was passed into the constructor.
+ */
+ protected BeanMeta<?> getBeanMeta() {
+ return bm;
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/9c6eec75/juneau-core/src/main/java/org/apache/juneau/BeanMetaFiltered.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/BeanMetaFiltered.java b/juneau-core/src/main/java/org/apache/juneau/BeanMetaFiltered.java
index cbffeaa..b9d1d9e 100644
--- a/juneau-core/src/main/java/org/apache/juneau/BeanMetaFiltered.java
+++ b/juneau-core/src/main/java/org/apache/juneau/BeanMetaFiltered.java
@@ -15,7 +15,6 @@ package org.apache.juneau;
import java.util.*;
import org.apache.juneau.annotation.*;
-import org.apache.juneau.xml.*;
/**
* Sames as {@link BeanMeta}, except the list of bean properties are limited
@@ -39,7 +38,6 @@ public final class BeanMetaFiltered<T> extends BeanMeta<T> {
this.properties = new LinkedHashMap<String,BeanPropertyMeta>();
for (String p : pNames)
properties.put(p, innerMeta.getPropertyMeta(p));
- this.xmlMeta = new XmlBeanMeta<T>(innerMeta, pNames);
}
/**
@@ -57,6 +55,11 @@ public final class BeanMetaFiltered<T> extends BeanMeta<T> {
return innerMeta.classMeta;
}
+ @Override /* Delagate */
+ public <M extends BeanMetaExtended> M getExtendedMeta(Class<M> m) {
+ return innerMeta.getExtendedMeta(m);
+ }
+
@Override /* BeanMeta */
public Collection<BeanPropertyMeta> getPropertyMetas() {
return properties.values();
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/9c6eec75/juneau-core/src/main/java/org/apache/juneau/BeanPropertyMeta.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/BeanPropertyMeta.java b/juneau-core/src/main/java/org/apache/juneau/BeanPropertyMeta.java
index 3813e8a..1cdd8ea 100644
--- a/juneau-core/src/main/java/org/apache/juneau/BeanPropertyMeta.java
+++ b/juneau-core/src/main/java/org/apache/juneau/BeanPropertyMeta.java
@@ -24,13 +24,11 @@ import java.net.URI;
import java.util.*;
import org.apache.juneau.annotation.*;
-import org.apache.juneau.html.*;
import org.apache.juneau.internal.*;
-import org.apache.juneau.jena.*;
import org.apache.juneau.parser.*;
import org.apache.juneau.serializer.*;
import org.apache.juneau.transform.*;
-import org.apache.juneau.xml.*;
+import org.apache.juneau.utils.*;
/**
* Contains metadata about a bean property.
@@ -59,14 +57,7 @@ public class BeanPropertyMeta {
private String[] properties;
private PojoTransform transform; // PojoTransform defined only via @BeanProperty annotation.
- /** HTML related metadata on this bean property. */
- protected HtmlBeanPropertyMeta htmlMeta;
-
- /** XML related metadata on this bean property. */
- protected XmlBeanPropertyMeta xmlMeta;
-
- /** RDF related metadata on this bean property. */
- protected RdfBeanPropertyMeta rdfMeta; //
+ private MetadataMap extMeta = new MetadataMap(); // Extended metadata
/**
* Constructor.
@@ -233,30 +224,13 @@ public class BeanPropertyMeta {
}
/**
- * Returns the HTML-related metadata on this bean property.
- *
- * @return The HTML-related metadata on this bean property. Never <jk>null</jk>/.
- */
- public HtmlBeanPropertyMeta getHtmlMeta() {
- return htmlMeta;
- }
-
- /**
- * Returns the XML-related metadata on this bean property.
+ * Returns the language-specified extended metadata on this bean property.
*
- * @return The XML-related metadata on this bean property. Never <jk>null</jk>/.
+ * @param c The name of the metadata class to create.
+ * @return Extended metadata on this bean property. Never <jk>null</jk>.
*/
- public XmlBeanPropertyMeta getXmlMeta() {
- return xmlMeta;
- }
-
- /**
- * Returns the RDF-related metadata on this bean property.
- *
- * @return The RDF-related metadata on this bean property. Never <jk>null</jk>/.
- */
- public RdfBeanPropertyMeta getRdfMeta() {
- return rdfMeta;
+ public <M extends BeanPropertyMetaExtended> M getExtendedMeta(Class<M> c) {
+ return extMeta.get(c, this);
}
boolean validate() throws Exception {
@@ -322,10 +296,6 @@ public class BeanPropertyMeta {
if (field != null && ! isParentClass(field.getType(), c))
return false;
- htmlMeta = new HtmlBeanPropertyMeta(this);
- xmlMeta = new XmlBeanPropertyMeta(this);
- rdfMeta = new RdfBeanPropertyMeta(this);
-
return true;
}
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/9c6eec75/juneau-core/src/main/java/org/apache/juneau/BeanPropertyMetaExtended.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/BeanPropertyMetaExtended.java b/juneau-core/src/main/java/org/apache/juneau/BeanPropertyMetaExtended.java
new file mode 100644
index 0000000..68ea149
--- /dev/null
+++ b/juneau-core/src/main/java/org/apache/juneau/BeanPropertyMetaExtended.java
@@ -0,0 +1,43 @@
+/***************************************************************************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations under the License.
+ ***************************************************************************************************************************/
+
+package org.apache.juneau;
+
+/**
+ * Defines extended language-specific metadata associated with a bean property.
+ * <p>
+ * Serializers and parsers can implement their own language-specific metadata on a bean property and retrieve
+ * the metadata using the {@link BeanPropertyMeta#getExtendedMeta(Class)} method.
+ *
+ */
+public class BeanPropertyMetaExtended {
+
+ private final BeanPropertyMeta bpm;
+
+ /**
+ * Constructor.
+ * @param bpm The metadata of the bean property we're extending.
+ * @throws BeanRuntimeException If any error occurred trying to construct the metadata.
+ */
+ public BeanPropertyMetaExtended(BeanPropertyMeta bpm) throws BeanRuntimeException {
+ this.bpm = bpm;
+ }
+
+ /**
+ * Returns the bean property metadata that was passed into the constructor.
+ * @return The bean property metadata that was passed into the constructor.
+ */
+ protected BeanPropertyMeta getBeanPropertyMeta() {
+ return bpm;
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/9c6eec75/juneau-core/src/main/java/org/apache/juneau/ClassMetaExtended.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/ClassMetaExtended.java b/juneau-core/src/main/java/org/apache/juneau/ClassMetaExtended.java
new file mode 100644
index 0000000..12ab579
--- /dev/null
+++ b/juneau-core/src/main/java/org/apache/juneau/ClassMetaExtended.java
@@ -0,0 +1,51 @@
+/***************************************************************************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations under the License.
+ ***************************************************************************************************************************/
+
+package org.apache.juneau;
+
+/**
+ * Defines extended language-specific metadata associated with a class.
+ * <p>
+ * Serializers and parsers can implement their own language-specific metadata on a class and retrieve
+ * the metadata using the {@link ClassMeta#getExtendedMeta(Class)} method.
+ *
+ */
+public class ClassMetaExtended {
+
+ private final ClassMeta<?> cm;
+
+ /**
+ * Constructor.
+ * @param cm The metadata of the class we're extending.
+ * @throws BeanRuntimeException If any error occurred trying to construct the metadata.
+ */
+ public ClassMetaExtended(ClassMeta<?> cm) throws BeanRuntimeException {
+ this.cm = cm;
+ }
+
+ /**
+ * Returns the class metadata that was passed into the constructor.
+ * @return The class metadata that was passed into the constructor.
+ */
+ protected ClassMeta<?> getClassMeta() {
+ return cm;
+ }
+
+ /**
+ * Convenience method for calling {@link ClassMeta#getInnerClass()} on the metadata passed to the constructor.
+ * @return The class wrapped by this metadata.
+ */
+ protected Class<?> getInnerClass() {
+ return cm.getInnerClass();
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/9c6eec75/juneau-core/src/main/java/org/apache/juneau/html/HtmlBeanPropertyMeta.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/html/HtmlBeanPropertyMeta.java b/juneau-core/src/main/java/org/apache/juneau/html/HtmlBeanPropertyMeta.java
index 79538ce..7ac8f66 100644
--- a/juneau-core/src/main/java/org/apache/juneau/html/HtmlBeanPropertyMeta.java
+++ b/juneau-core/src/main/java/org/apache/juneau/html/HtmlBeanPropertyMeta.java
@@ -20,22 +20,23 @@ import org.apache.juneau.html.annotation.*;
*
* @author James Bognar (james.bognar@salesforce.com)
*/
-public class HtmlBeanPropertyMeta {
+public class HtmlBeanPropertyMeta extends BeanPropertyMetaExtended {
private boolean asXml, noTables, noTableHeaders, asPlainText;
/**
* Constructor.
*
- * @param beanPropertyMeta The metadata of the bean property of this additional metadata.
+ * @param bpm The metadata of the bean property of this additional metadata.
*/
- public HtmlBeanPropertyMeta(BeanPropertyMeta beanPropertyMeta) {
- if (beanPropertyMeta.getField() != null)
- findHtmlInfo(beanPropertyMeta.getField().getAnnotation(Html.class));
- if (beanPropertyMeta.getGetter() != null)
- findHtmlInfo(beanPropertyMeta.getGetter().getAnnotation(Html.class));
- if (beanPropertyMeta.getSetter() != null)
- findHtmlInfo(beanPropertyMeta.getSetter().getAnnotation(Html.class));
+ public HtmlBeanPropertyMeta(BeanPropertyMeta bpm) {
+ super(bpm);
+ if (bpm.getField() != null)
+ findHtmlInfo(bpm.getField().getAnnotation(Html.class));
+ if (bpm.getGetter() != null)
+ findHtmlInfo(bpm.getGetter().getAnnotation(Html.class));
+ if (bpm.getSetter() != null)
+ findHtmlInfo(bpm.getSetter().getAnnotation(Html.class));
}
private void findHtmlInfo(Html html) {
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/9c6eec75/juneau-core/src/main/java/org/apache/juneau/html/HtmlSerializer.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/html/HtmlSerializer.java b/juneau-core/src/main/java/org/apache/juneau/html/HtmlSerializer.java
index dc98972..47e40cc 100644
--- a/juneau-core/src/main/java/org/apache/juneau/html/HtmlSerializer.java
+++ b/juneau-core/src/main/java/org/apache/juneau/html/HtmlSerializer.java
@@ -232,11 +232,11 @@ public class HtmlSerializer extends XmlSerializer {
gType = bc.getClassMetaForObject(o);
}
- HtmlClassMeta html = gType.getHtmlMeta();
+ HtmlClassMeta html = gType.getExtendedMeta(HtmlClassMeta.class);
- if (html.isAsXml() || (pMeta != null && pMeta.getHtmlMeta().isAsXml()))
+ if (html.isAsXml() || (pMeta != null && pMeta.getExtendedMeta(HtmlBeanPropertyMeta.class).isAsXml()))
super.serializeAnything(session, out, o, null, null, null, false, XmlFormat.NORMAL, null);
- else if (html.isAsPlainText() || (pMeta != null && pMeta.getHtmlMeta().isAsPlainText()))
+ else if (html.isAsPlainText() || (pMeta != null && pMeta.getExtendedMeta(HtmlBeanPropertyMeta.class).isAsPlainText()))
out.write(o == null ? "null" : o.toString());
else if (o == null || (gType.isChar() && ((Character)o).charValue() == 0))
out.tag(i, "null").nl();
@@ -289,7 +289,7 @@ public class HtmlSerializer extends XmlSerializer {
if (classAttr != null)
out.attr("class", classAttr);
out.appendln(">");
- if (! (aType.getHtmlMeta().isNoTableHeaders() || (ppMeta != null && ppMeta.getHtmlMeta().isNoTableHeaders()))) {
+ if (! (aType.getExtendedMeta(HtmlClassMeta.class).isNoTableHeaders() || (ppMeta != null && ppMeta.getExtendedMeta(HtmlBeanPropertyMeta.class).isNoTableHeaders()))) {
out.sTag(i+1, "tr").nl();
out.sTag(i+2, "th").nl().appendln(i+3, "<string>key</string>").eTag(i+2, "th").nl();
out.sTag(i+2, "th").nl().appendln(i+3, "<string>value</string>").eTag(i+2, "th").nl();
@@ -337,7 +337,7 @@ public class HtmlSerializer extends XmlSerializer {
if (classAttr != null)
out.attr("_class", classAttr);
out.append('>').nl();
- if (! (m.getClassMeta().getHtmlMeta().isNoTableHeaders() || (ppMeta != null && ppMeta.getHtmlMeta().isNoTableHeaders()))) {
+ if (! (m.getClassMeta().getExtendedMeta(HtmlClassMeta.class).isNoTableHeaders() || (ppMeta != null && ppMeta.getExtendedMeta(HtmlBeanPropertyMeta.class).isNoTableHeaders()))) {
out.sTag(i+1, "tr").nl();
out.sTag(i+2, "th").nl().appendln(i+3, "<string>key</string>").eTag(i+2, "th").nl();
out.sTag(i+2, "th").nl().appendln(i+3, "<string>value</string>").eTag(i+2, "th").nl();
@@ -486,7 +486,7 @@ public class HtmlSerializer extends XmlSerializer {
}
if (o1 == null)
return null;
- ClassMeta cm = bc.getClassMetaForObject(o1);
+ ClassMeta<?> cm = bc.getClassMetaForObject(o1);
if (cm.getPojoTransform() != null) {
PojoTransform f = cm.getPojoTransform();
o1 = f.transform(o1);
@@ -496,10 +496,10 @@ public class HtmlSerializer extends XmlSerializer {
return null;
if (cm.getInnerClass().isAnnotationPresent(HtmlLink.class))
return null;
- HtmlClassMeta h = cm.getHtmlMeta();
- if (h.isNoTables() || (pMeta != null && pMeta.getHtmlMeta().isNoTables()))
+ HtmlClassMeta h = cm.getExtendedMeta(HtmlClassMeta.class);
+ if (h.isNoTables() || (pMeta != null && pMeta.getExtendedMeta(HtmlBeanPropertyMeta.class).isNoTables()))
return null;
- if (h.isNoTableHeaders() || (pMeta != null && pMeta.getHtmlMeta().isNoTableHeaders()))
+ if (h.isNoTableHeaders() || (pMeta != null && pMeta.getExtendedMeta(HtmlBeanPropertyMeta.class).isNoTableHeaders()))
return new String[0];
if (session.canIgnoreValue(cm, null, o1))
return null;
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/9c6eec75/juneau-core/src/main/java/org/apache/juneau/internal/DelegateBeanMap.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/internal/DelegateBeanMap.java b/juneau-core/src/main/java/org/apache/juneau/internal/DelegateBeanMap.java
index 81c2fc5..ab64d59 100644
--- a/juneau-core/src/main/java/org/apache/juneau/internal/DelegateBeanMap.java
+++ b/juneau-core/src/main/java/org/apache/juneau/internal/DelegateBeanMap.java
@@ -15,9 +15,6 @@ package org.apache.juneau.internal;
import java.util.*;
import org.apache.juneau.*;
-import org.apache.juneau.html.*;
-import org.apache.juneau.jena.*;
-import org.apache.juneau.xml.*;
/**
* Represents a wrapped {@link BeanMap} where property values can be overridden, removed, or reordered
@@ -127,16 +124,8 @@ public class DelegateBeanMap<T> extends BeanMap<T> {
return overrideValues.get(key);
}
@Override /* BeanPropertyMeta */
- public RdfBeanPropertyMeta getRdfMeta() {
- return p2.getRdfMeta();
- }
- @Override /* BeanPropertyMeta */
- public HtmlBeanPropertyMeta getHtmlMeta() {
- return p2.getHtmlMeta();
- }
- @Override /* BeanPropertyMeta */
- public XmlBeanPropertyMeta getXmlMeta() {
- return p2.getXmlMeta();
+ public <M extends BeanPropertyMetaExtended> M getExtendedMeta(Class<M> c) {
+ return p2.getExtendedMeta(c);
}
};
}
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/9c6eec75/juneau-core/src/main/java/org/apache/juneau/jena/RdfBeanPropertyMeta.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/jena/RdfBeanPropertyMeta.java b/juneau-core/src/main/java/org/apache/juneau/jena/RdfBeanPropertyMeta.java
index 48d0547..f03c285 100644
--- a/juneau-core/src/main/java/org/apache/juneau/jena/RdfBeanPropertyMeta.java
+++ b/juneau-core/src/main/java/org/apache/juneau/jena/RdfBeanPropertyMeta.java
@@ -25,7 +25,7 @@ import org.apache.juneau.xml.*;
*
* @author James Bognar (james.bognar@salesforce.com)
*/
-public class RdfBeanPropertyMeta {
+public class RdfBeanPropertyMeta extends BeanPropertyMetaExtended {
private RdfCollectionFormat collectionFormat = DEFAULT;
private Namespace namespace = null;
@@ -33,12 +33,13 @@ public class RdfBeanPropertyMeta {
/**
* Constructor.
*
- * @param bpMeta The metadata of the bean property of this additional metadata.
+ * @param bpm The metadata of the bean property of this additional metadata.
*/
- public RdfBeanPropertyMeta(BeanPropertyMeta bpMeta) {
+ public RdfBeanPropertyMeta(BeanPropertyMeta bpm) {
+ super(bpm);
- List<Rdf> rdfs = bpMeta.findAnnotations(Rdf.class);
- List<RdfSchema> schemas = bpMeta.findAnnotations(RdfSchema.class);
+ List<Rdf> rdfs = bpm.findAnnotations(Rdf.class);
+ List<RdfSchema> schemas = bpm.findAnnotations(RdfSchema.class);
for (Rdf rdf : rdfs)
if (collectionFormat == DEFAULT)
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/9c6eec75/juneau-core/src/main/java/org/apache/juneau/jena/RdfParser.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/jena/RdfParser.java b/juneau-core/src/main/java/org/apache/juneau/jena/RdfParser.java
index 9125969..6695b0b 100644
--- a/juneau-core/src/main/java/org/apache/juneau/jena/RdfParser.java
+++ b/juneau-core/src/main/java/org/apache/juneau/jena/RdfParser.java
@@ -231,8 +231,8 @@ public class RdfParser extends ReaderParser {
}
private boolean isMultiValuedCollections(RdfParserSession session, BeanPropertyMeta pMeta) {
- if (pMeta != null && pMeta.getRdfMeta().getCollectionFormat() != RdfCollectionFormat.DEFAULT)
- return pMeta.getRdfMeta().getCollectionFormat() == RdfCollectionFormat.MULTI_VALUED;
+ if (pMeta != null && pMeta.getExtendedMeta(RdfBeanPropertyMeta.class).getCollectionFormat() != RdfCollectionFormat.DEFAULT)
+ return pMeta.getExtendedMeta(RdfBeanPropertyMeta.class).getCollectionFormat() == RdfCollectionFormat.MULTI_VALUED;
return session.getCollectionFormat() == RdfCollectionFormat.MULTI_VALUED;
}
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/9c6eec75/juneau-core/src/main/java/org/apache/juneau/json/JsonSerializer.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/json/JsonSerializer.java b/juneau-core/src/main/java/org/apache/juneau/json/JsonSerializer.java
index d8265e6..2be051e 100644
--- a/juneau-core/src/main/java/org/apache/juneau/json/JsonSerializer.java
+++ b/juneau-core/src/main/java/org/apache/juneau/json/JsonSerializer.java
@@ -198,7 +198,7 @@ public class JsonSerializer extends WriterSerializer {
gType = bc.getClassMetaForObject(o);
}
- String wrapperAttr = gType.getJsonMeta().getWrapperAttr();
+ String wrapperAttr = gType.getExtendedMeta(JsonClassMeta.class).getWrapperAttr();
if (wrapperAttr != null) {
out.append('{').cr(session.indent).attr(wrapperAttr).append(':').s();
session.indent++;
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/9c6eec75/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParserSession.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParserSession.java b/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParserSession.java
index 23fcdbb..591a442 100644
--- a/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParserSession.java
+++ b/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParserSession.java
@@ -69,7 +69,7 @@ public class UrlEncodingParserSession extends UonParserSession {
if (cm.isArray() || cm.isCollection()) {
if (expandedParams)
return true;
- if (pMeta.getBeanMeta().getClassMeta().getUrlEncodingMeta().isExpandedParams())
+ if (pMeta.getBeanMeta().getClassMeta().getExtendedMeta(UrlEncodingClassMeta.class).isExpandedParams())
return true;
}
return false;
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/9c6eec75/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializerSession.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializerSession.java b/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializerSession.java
index 768d196..ea6378a 100644
--- a/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializerSession.java
+++ b/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializerSession.java
@@ -61,7 +61,7 @@ public class UrlEncodingSerializerSession extends UonSerializerSession {
if (cm.isArray() || cm.isCollection()) {
if (expandedParams)
return true;
- if (pMeta.getBeanMeta().getClassMeta().getUrlEncodingMeta().isExpandedParams())
+ if (pMeta.getBeanMeta().getClassMeta().getExtendedMeta(UrlEncodingClassMeta.class).isExpandedParams())
return true;
}
return false;
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/9c6eec75/juneau-core/src/main/java/org/apache/juneau/utils/MetadataMap.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/utils/MetadataMap.java b/juneau-core/src/main/java/org/apache/juneau/utils/MetadataMap.java
new file mode 100644
index 0000000..0b7682e
--- /dev/null
+++ b/juneau-core/src/main/java/org/apache/juneau/utils/MetadataMap.java
@@ -0,0 +1,84 @@
+/***************************************************************************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations under the License.
+ ***************************************************************************************************************************/
+
+package org.apache.juneau.utils;
+
+import java.lang.reflect.*;
+
+import org.apache.juneau.*;
+import org.apache.juneau.internal.*;
+
+/**
+ * Utility class for quick lookup of class metadata instances.
+ * <p>
+ * Class instances are created once and then cached.
+ * <p>
+ * Classes must have a constructor that takes in a single argument.
+ *
+ * @author james.bognar
+ */
+public class MetadataMap {
+
+ private Class<?>[] classes = new Class<?>[0];
+ private Object[] metadata = new Object[0];
+
+
+ /**
+ * Constructor.
+ *
+ * @param c The metadata class to create.
+ * @param constructorArg The argument needed to construct the metadata.
+ * @return The cached metadata object.
+ */
+ @SuppressWarnings("unchecked")
+ public <T> T get(Class<T> c, Object constructorArg) {
+ for (int i = 0; i < classes.length; i++)
+ if (classes[i] == c)
+ return (T)metadata[i];
+ synchronized(this) {
+ for (int i = 0; i < classes.length; i++)
+ if (classes[i] == c)
+ return (T)metadata[i];
+ Class<?>[] classes2 = new Class<?>[classes.length + 1];
+ Object[] metadata2 = new Object[classes.length + 1];
+ for (int i = 0; i < classes.length; i++) {
+ classes2[i] = classes[i];
+ metadata2[i] = metadata[i];
+ }
+ Object o = null;
+ try {
+ for (Constructor<?> con : c.getConstructors()) {
+ Class<?>[] params = con.getParameterTypes();
+ if (params.length == 1 && ClassUtils.isParentClass(params[0], constructorArg.getClass())) {
+ o = con.newInstance(constructorArg);
+ break;
+ }
+ }
+ } catch (InvocationTargetException e) {
+ Throwable t = e.getTargetException();
+ if (t instanceof RuntimeException)
+ throw (RuntimeException)t;
+ throw new RuntimeException(t);
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ if (o == null)
+ throw new BeanRuntimeException(c, "Could not find a constructor on class with a parameter to handle type {0}", constructorArg.getClass());
+ classes2[classes.length] = c;
+ metadata2[classes.length] = o;
+ classes = classes2;
+ metadata = metadata2;
+ return (T)o;
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/9c6eec75/juneau-core/src/main/java/org/apache/juneau/xml/XmlBeanMeta.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/xml/XmlBeanMeta.java b/juneau-core/src/main/java/org/apache/juneau/xml/XmlBeanMeta.java
index d0f066c..abb424a 100644
--- a/juneau-core/src/main/java/org/apache/juneau/xml/XmlBeanMeta.java
+++ b/juneau-core/src/main/java/org/apache/juneau/xml/XmlBeanMeta.java
@@ -21,16 +21,18 @@ import org.apache.juneau.xml.annotation.*;
* Metadata on beans specific to the XML serializers and parsers pulled from the {@link Xml @Xml} annotation on the class.
*
* @author James Bognar (james.bognar@salesforce.com)
- * @param <T> The bean class type.
*/
-public class XmlBeanMeta<T> {
+public class XmlBeanMeta extends BeanMetaExtended {
// XML related fields
private final Map<String,BeanPropertyMeta> xmlAttrs; // Map of bean properties that are represented as XML attributes.
private final BeanPropertyMeta xmlContent; // Bean property that is represented as XML content within the bean element.
- private final XmlContentHandler<T> xmlContentHandler; // Class used to convert bean to XML content.
+ private final XmlContentHandler<?> xmlContentHandler; // Class used to convert bean to XML content.
private final Map<String,BeanPropertyMeta> childElementProperties; // Properties defined with @Xml.childName annotation.
- private final BeanMeta<T> beanMeta;
+
+ public XmlBeanMeta(BeanMeta<?> beanMeta) {
+ this(beanMeta, null);
+ }
/**
* Constructor.
@@ -38,28 +40,27 @@ public class XmlBeanMeta<T> {
* @param beanMeta The metadata on the bean that this metadata applies to.
* @param pNames Only look at these property names. If <jk>null</jk>, apply to all bean properties.
*/
- @SuppressWarnings("unchecked")
- public XmlBeanMeta(BeanMeta<T> beanMeta, String[] pNames) {
- this.beanMeta = beanMeta;
- Class<T> c = beanMeta.getClassMeta().getInnerClass();
+ public XmlBeanMeta(BeanMeta<?> beanMeta, String[] pNames) {
+ super(beanMeta);
+ Class<?> c = beanMeta.getClassMeta().getInnerClass();
Map<String,BeanPropertyMeta> tXmlAttrs = new LinkedHashMap<String,BeanPropertyMeta>();
BeanPropertyMeta tXmlContent = null;
- XmlContentHandler<T> tXmlContentHandler = null;
+ XmlContentHandler<?> tXmlContentHandler = null;
Map<String,BeanPropertyMeta> tChildElementProperties = new LinkedHashMap<String,BeanPropertyMeta>();
for (BeanPropertyMeta p : beanMeta.getPropertyMetas(pNames)) {
- XmlFormat xf = p.getXmlMeta().getXmlFormat();
+ XmlFormat xf = p.getExtendedMeta(XmlBeanPropertyMeta.class).getXmlFormat();
if (xf == XmlFormat.ATTR)
tXmlAttrs.put(p.getName(), p);
else if (xf == XmlFormat.CONTENT) {
if (tXmlContent != null)
throw new BeanRuntimeException(c, "Multiple instances of CONTENT properties defined on class. Only one property can be designated as such.");
tXmlContent = p;
- tXmlContentHandler = (XmlContentHandler<T>) p.getXmlMeta().getXmlContentHandler();
+ tXmlContentHandler = p.getExtendedMeta(XmlBeanPropertyMeta.class).getXmlContentHandler();
}
// Look for any properties that are collections with @Xml.childName specified.
- String n = p.getXmlMeta().getChildName();
+ String n = p.getExtendedMeta(XmlBeanPropertyMeta.class).getChildName();
if (n != null) {
if (tChildElementProperties.containsKey(n))
throw new BeanRuntimeException(c, "Multiple properties found with the name ''{0}''.", n);
@@ -97,7 +98,7 @@ public class XmlBeanMeta<T> {
*
* @return The XML content handler for this bean, or <jk>null</jk> if no content handler is defined.
*/
- protected XmlContentHandler<T> getXmlContentHandler() {
+ protected XmlContentHandler<?> getXmlContentHandler() {
return xmlContentHandler;
}
@@ -125,6 +126,6 @@ public class XmlBeanMeta<T> {
if (bpm != null)
return bpm;
}
- return beanMeta.getPropertyMeta(fieldName);
+ return getBeanMeta().getPropertyMeta(fieldName);
}
}
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/9c6eec75/juneau-core/src/main/java/org/apache/juneau/xml/XmlBeanPropertyMeta.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/xml/XmlBeanPropertyMeta.java b/juneau-core/src/main/java/org/apache/juneau/xml/XmlBeanPropertyMeta.java
index 00aa151..21ed6ea 100644
--- a/juneau-core/src/main/java/org/apache/juneau/xml/XmlBeanPropertyMeta.java
+++ b/juneau-core/src/main/java/org/apache/juneau/xml/XmlBeanPropertyMeta.java
@@ -22,33 +22,32 @@ import org.apache.juneau.xml.annotation.*;
*
* @author James Bognar (james.bognar@salesforce.com)
*/
-public class XmlBeanPropertyMeta {
+public class XmlBeanPropertyMeta extends BeanPropertyMetaExtended {
private Namespace namespace = null;
private XmlFormat xmlFormat = XmlFormat.NORMAL;
private XmlContentHandler<?> xmlContentHandler = null;
private String childName;
- private final BeanPropertyMeta beanPropertyMeta;
/**
* Constructor.
*
- * @param beanPropertyMeta The metadata of the bean property of this additional metadata.
+ * @param bpm The metadata of the bean property of this additional metadata.
*/
- public XmlBeanPropertyMeta(BeanPropertyMeta beanPropertyMeta) {
- this.beanPropertyMeta = beanPropertyMeta;
+ public XmlBeanPropertyMeta(BeanPropertyMeta bpm) {
+ super(bpm);
- if (beanPropertyMeta.getField() != null)
- findXmlInfo(beanPropertyMeta.getField().getAnnotation(Xml.class));
- if (beanPropertyMeta.getGetter() != null)
- findXmlInfo(beanPropertyMeta.getGetter().getAnnotation(Xml.class));
- if (beanPropertyMeta.getSetter() != null)
- findXmlInfo(beanPropertyMeta.getSetter().getAnnotation(Xml.class));
+ if (bpm.getField() != null)
+ findXmlInfo(bpm.getField().getAnnotation(Xml.class));
+ if (bpm.getGetter() != null)
+ findXmlInfo(bpm.getGetter().getAnnotation(Xml.class));
+ if (bpm.getSetter() != null)
+ findXmlInfo(bpm.getSetter().getAnnotation(Xml.class));
if (namespace == null)
- namespace = beanPropertyMeta.getBeanMeta().getClassMeta().getXmlMeta().getNamespace();
+ namespace = bpm.getBeanMeta().getClassMeta().getExtendedMeta(XmlClassMeta.class).getNamespace();
- if (beanPropertyMeta.isBeanUri() && xmlFormat != XmlFormat.ELEMENT)
+ if (bpm.isBeanUri() && xmlFormat != XmlFormat.ELEMENT)
xmlFormat = XmlFormat.ATTR;
}
@@ -102,26 +101,18 @@ public class XmlBeanPropertyMeta {
return childName;
}
- /**
- * Returns the bean property metadata that this metadata belongs to.
- *
- * @return The bean property metadata. Never <jk>null</jk>.
- */
- protected BeanPropertyMeta getBeanPropertyMeta() {
- return beanPropertyMeta;
- }
-
private void findXmlInfo(Xml xml) {
if (xml == null)
return;
- ClassMeta<?> cmProperty = beanPropertyMeta.getClassMeta();
- ClassMeta<?> cmBean = beanPropertyMeta.getBeanMeta().getClassMeta();
- String name = beanPropertyMeta.getName();
+ BeanPropertyMeta bpm = getBeanPropertyMeta();
+ ClassMeta<?> cmProperty = bpm.getClassMeta();
+ ClassMeta<?> cmBean = bpm.getBeanMeta().getClassMeta();
+ String name = bpm.getName();
if (! xml.name().isEmpty())
throw new BeanRuntimeException(cmBean.getInnerClass(), "Annotation error on property ''{0}''. Found @Xml.name annotation can only be specified on types.", name);
- List<Xml> xmls = beanPropertyMeta.findAnnotations(Xml.class);
- List<XmlSchema> schemas = beanPropertyMeta.findAnnotations(XmlSchema.class);
+ List<Xml> xmls = bpm.findAnnotations(Xml.class);
+ List<XmlSchema> schemas = bpm.findAnnotations(XmlSchema.class);
namespace = XmlUtils.findNamespace(xmls, schemas);
if (xmlFormat == XmlFormat.NORMAL)
@@ -136,16 +127,16 @@ public class XmlBeanPropertyMeta {
if (xmlFormat == XmlFormat.COLLAPSED) {
if (isCollection) {
if (cen.isEmpty())
- cen = cmProperty.getXmlMeta().getChildName();
+ cen = cmProperty.getExtendedMeta(XmlClassMeta.class).getChildName();
if (cen == null || cen.isEmpty())
- cen = cmProperty.getElementType().getXmlMeta().getElementName();
+ cen = cmProperty.getElementType().getExtendedMeta(XmlClassMeta.class).getElementName();
if (cen == null || cen.isEmpty())
cen = name;
} else {
throw new BeanRuntimeException(cmBean.getInnerClass(), "Annotation error on property ''{0}''. @Xml.format=COLLAPSED can only be specified on collections and arrays.", name);
}
if (cen.isEmpty() && isCollection)
- cen = cmProperty.getXmlMeta().getElementName();
+ cen = cmProperty.getExtendedMeta(XmlClassMeta.class).getElementName();
}
try {
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/9c6eec75/juneau-core/src/main/java/org/apache/juneau/xml/XmlSchemaSerializer.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/xml/XmlSchemaSerializer.java b/juneau-core/src/main/java/org/apache/juneau/xml/XmlSchemaSerializer.java
index 0e5b0be..dc74bba 100644
--- a/juneau-core/src/main/java/org/apache/juneau/xml/XmlSchemaSerializer.java
+++ b/juneau-core/src/main/java/org/apache/juneau/xml/XmlSchemaSerializer.java
@@ -196,7 +196,7 @@ public class XmlSchemaSerializer extends XmlSerializer {
if (cm == null)
queueElement(ns, "null", object());
else {
- XmlClassMeta xmlMeta = cm.getXmlMeta();
+ XmlClassMeta xmlMeta = cm.getExtendedMeta(XmlClassMeta.class);
if (xmlMeta.getElementName() != null && xmlMeta.getNamespace() != null)
ns = xmlMeta.getNamespace();
queueElement(ns, xmlMeta.getElementName(), cm);
@@ -296,7 +296,7 @@ public class XmlSchemaSerializer extends XmlSerializer {
int i = session.getIndent() + 1;
if (name == null)
name = getElementName(ft);
- Namespace ns = first(ft.getXmlMeta().getNamespace(), defaultNs);
+ Namespace ns = first(ft.getExtendedMeta(XmlClassMeta.class).getNamespace(), defaultNs);
String type = getXmlType(ns, ft);
w.oTag(i, "element")
@@ -340,7 +340,7 @@ public class XmlSchemaSerializer extends XmlSerializer {
// This element can have mixed content if:
// 1) It's a generic Object (so it can theoretically be anything)
// 2) The bean has a property defined with @XmlFormat.CONTENT.
- if ((cm.isBean() && cm.getBeanMeta().getXmlMeta().getXmlContentProperty() != null) || cm.isObject())
+ if ((cm.isBean() && cm.getBeanMeta().getExtendedMeta(XmlBeanMeta.class).getXmlContentProperty() != null) || cm.isObject())
w.attr("mixed", "true");
w.cTag().nl();
@@ -371,10 +371,10 @@ public class XmlSchemaSerializer extends XmlSerializer {
boolean hasChildElements = false;
for (BeanPropertyMeta pMeta : bm.getPropertyMetas())
- if (pMeta.getXmlMeta().getXmlFormat() != XmlFormat.ATTR && pMeta.getXmlMeta().getXmlFormat() != XmlFormat.CONTENT)
+ if (pMeta.getExtendedMeta(XmlBeanPropertyMeta.class).getXmlFormat() != XmlFormat.ATTR && pMeta.getExtendedMeta(XmlBeanPropertyMeta.class).getXmlFormat() != XmlFormat.CONTENT)
hasChildElements = true;
- if (bm.getXmlMeta().getXmlContentProperty() != null) {
+ if (bm.getExtendedMeta(XmlBeanMeta.class).getXmlContentProperty() != null) {
w.sTag(i+1, "sequence").nl();
w.oTag(i+2, "any")
.attr("processContents", "skip")
@@ -388,7 +388,7 @@ public class XmlSchemaSerializer extends XmlSerializer {
boolean hasOtherNsElement = false;
for (BeanPropertyMeta pMeta : bm.getPropertyMetas()) {
- XmlBeanPropertyMeta xmlMeta = pMeta.getXmlMeta();
+ XmlBeanPropertyMeta xmlMeta = pMeta.getExtendedMeta(XmlBeanPropertyMeta.class);
if (xmlMeta.getXmlFormat() != XmlFormat.ATTR) {
boolean isCollapsed = xmlMeta.getXmlFormat() == COLLAPSED;
ClassMeta<?> ct2 = pMeta.getClassMeta();
@@ -398,7 +398,7 @@ public class XmlSchemaSerializer extends XmlSerializer {
childName = xmlMeta.getChildName();
ct2 = pMeta.getClassMeta().getElementType();
}
- Namespace cNs = first(xmlMeta.getNamespace(), ct2.getXmlMeta().getNamespace(), cm.getXmlMeta().getNamespace(), defaultNs);
+ Namespace cNs = first(xmlMeta.getNamespace(), ct2.getExtendedMeta(XmlClassMeta.class).getNamespace(), cm.getExtendedMeta(XmlClassMeta.class).getNamespace(), defaultNs);
if (xmlMeta.getNamespace() == null) {
w.oTag(i+2, "element")
.attr("name", XmlUtils.encodeElementName(childName), true)
@@ -433,8 +433,8 @@ public class XmlSchemaSerializer extends XmlSerializer {
w.eTag(i+1, "sequence").nl();
}
- for (BeanPropertyMeta pMeta : bm.getXmlMeta().getXmlAttrProperties().values()) {
- Namespace pNs = pMeta.getXmlMeta().getNamespace();
+ for (BeanPropertyMeta pMeta : bm.getExtendedMeta(XmlBeanMeta.class).getXmlAttrProperties().values()) {
+ Namespace pNs = pMeta.getExtendedMeta(XmlBeanPropertyMeta.class).getNamespace();
if (pNs == null)
pNs = defaultNs;
@@ -469,7 +469,7 @@ public class XmlSchemaSerializer extends XmlSerializer {
.ceTag().nl();
w.eTag(i+1, "sequence").nl();
} else {
- Namespace cNs = first(elementType.getXmlMeta().getNamespace(), cm.getXmlMeta().getNamespace(), defaultNs);
+ Namespace cNs = first(elementType.getExtendedMeta(XmlClassMeta.class).getNamespace(), cm.getExtendedMeta(XmlClassMeta.class).getNamespace(), defaultNs);
schemas.queueType(cNs, null, elementType);
w.sTag(i+1, "sequence").nl();
w.oTag(i+2, "choice")
@@ -521,7 +521,7 @@ public class XmlSchemaSerializer extends XmlSerializer {
private String getElementName(ClassMeta<?> cm) {
cm = cm.getTransformedClassMeta();
- String name = cm.getXmlMeta().getElementName();
+ String name = cm.getExtendedMeta(XmlClassMeta.class).getElementName();
if (name == null) {
if (cm.isBoolean())
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/9c6eec75/juneau-core/src/main/java/org/apache/juneau/xml/XmlSerializer.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/xml/XmlSerializer.java b/juneau-core/src/main/java/org/apache/juneau/xml/XmlSerializer.java
index e51aff4..ee75f5a 100644
--- a/juneau-core/src/main/java/org/apache/juneau/xml/XmlSerializer.java
+++ b/juneau-core/src/main/java/org/apache/juneau/xml/XmlSerializer.java
@@ -209,7 +209,7 @@ public class XmlSerializer extends WriterSerializer {
aType = session.push(null, o, null);
if (aType != null) {
- Namespace ns = aType.getXmlMeta().getNamespace();
+ Namespace ns = aType.getExtendedMeta(XmlClassMeta.class).getNamespace();
if (ns != null) {
if (ns.uri != null)
session.addNamespace(ns);
@@ -227,8 +227,8 @@ public class XmlSerializer extends WriterSerializer {
} else if (aType.isBean()) {
bm = bc.forBean(o);
} else if (aType.isDelegate()) {
- ClassMeta innerType = ((Delegate)o).getClassMeta();
- Namespace ns = innerType.getXmlMeta().getNamespace();
+ ClassMeta<?> innerType = ((Delegate)o).getClassMeta();
+ Namespace ns = innerType.getExtendedMeta(XmlClassMeta.class).getNamespace();
if (ns != null) {
if (ns.uri != null)
session.addNamespace(ns);
@@ -237,8 +237,8 @@ public class XmlSerializer extends WriterSerializer {
}
if (innerType.isBean()) {
- for (BeanPropertyMeta bpm : (Collection<BeanPropertyMeta>)innerType.getBeanMeta().getPropertyMetas()) {
- ns = bpm.getXmlMeta().getNamespace();
+ for (BeanPropertyMeta bpm : innerType.getBeanMeta().getPropertyMetas()) {
+ ns = bpm.getExtendedMeta(XmlBeanPropertyMeta.class).getNamespace();
if (ns != null && ns.uri != null)
session.addNamespace(ns);
}
@@ -264,7 +264,7 @@ public class XmlSerializer extends WriterSerializer {
if (bm != null) {
for (BeanPropertyValue p : bm.getValues(false, session.isTrimNulls())) {
- Namespace ns = p.getMeta().getXmlMeta().getNamespace();
+ Namespace ns = p.getMeta().getExtendedMeta(XmlBeanPropertyMeta.class).getNamespace();
if (ns != null && ns.uri != null)
session.addNamespace(ns);
@@ -362,7 +362,7 @@ public class XmlSerializer extends WriterSerializer {
else if (gType.isBoolean())
ts = "boolean";
else if (gType.isMap() || gType.isBean() || gType.hasToObjectMapMethod()) {
- isCollapsed = gType.getXmlMeta().getFormat() == XmlFormat.COLLAPSED;
+ isCollapsed = gType.getExtendedMeta(XmlClassMeta.class).getFormat() == XmlFormat.COLLAPSED;
ts = "object";
}
else if (gType.isCollection() || gType.isArray()) {
@@ -375,9 +375,9 @@ public class XmlSerializer extends WriterSerializer {
// Is there a name associated with this bean?
if (elementName == null)
- elementName = gType.getXmlMeta().getElementName();
+ elementName = gType.getExtendedMeta(XmlClassMeta.class).getElementName();
if (elementName == null)
- elementName = aType.getXmlMeta().getElementName();
+ elementName = aType.getExtendedMeta(XmlClassMeta.class).getElementName();
// If the value is null then it's either going to be <null/> or <XmlSerializer nil='true'/>
// depending on whether the element has a name.
@@ -388,9 +388,9 @@ public class XmlSerializer extends WriterSerializer {
if (session.isEnableNamespaces()) {
if (elementNamespace == null)
- elementNamespace = gType.getXmlMeta().getNamespace();
+ elementNamespace = gType.getExtendedMeta(XmlClassMeta.class).getNamespace();
if (elementNamespace == null)
- elementNamespace = aType.getXmlMeta().getNamespace();
+ elementNamespace = aType.getExtendedMeta(XmlClassMeta.class).getNamespace();
if (elementNamespace != null && elementNamespace.uri == null)
elementNamespace = null;
if (elementNamespace == null)
@@ -528,11 +528,11 @@ public class XmlSerializer extends WriterSerializer {
private boolean serializeBeanMap(XmlSerializerSession session, XmlWriter out, BeanMap<?> m, Namespace elementNs, boolean isCollapsed) throws Exception {
boolean hasChildren = false;
- BeanMeta bm = m.getMeta();
+ BeanMeta<?> bm = m.getMeta();
List<BeanPropertyValue> lp = m.getValues(false, session.isTrimNulls());
- Map<String,BeanPropertyMeta> xmlAttrs = bm.getXmlMeta().getXmlAttrProperties();
+ Map<String,BeanPropertyMeta> xmlAttrs = bm.getExtendedMeta(XmlBeanMeta.class).getXmlAttrProperties();
Object content = null;
for (BeanPropertyValue p : lp) {
if (xmlAttrs.containsKey(p.getName())) {
@@ -546,7 +546,7 @@ public class XmlSerializer extends WriterSerializer {
if (session.canIgnoreValue(pMeta.getClassMeta(), key, value))
continue;
- Namespace ns = (session.isEnableNamespaces() && pMeta.getXmlMeta().getNamespace() != elementNs ? pMeta.getXmlMeta().getNamespace() : null);
+ Namespace ns = (session.isEnableNamespaces() && pMeta.getExtendedMeta(XmlBeanPropertyMeta.class).getNamespace() != elementNs ? pMeta.getExtendedMeta(XmlBeanPropertyMeta.class).getNamespace() : null);
if (pMeta.isBeanUri() || pMeta.isUri())
out.attrUri(ns, key, value);
@@ -559,7 +559,7 @@ public class XmlSerializer extends WriterSerializer {
for (BeanPropertyValue p : lp) {
BeanPropertyMeta pMeta = p.getMeta();
- XmlFormat xf = pMeta.getXmlMeta().getXmlFormat();
+ XmlFormat xf = pMeta.getExtendedMeta(XmlBeanPropertyMeta.class).getXmlFormat();
if (xf == CONTENT) {
content = p.getValue();
@@ -580,7 +580,7 @@ public class XmlSerializer extends WriterSerializer {
hasChildren = true;
out.appendIf(! isCollapsed, '>').nl();
}
- serializeAnything(session, out, value, pMeta.getClassMeta(), key, pMeta.getXmlMeta().getNamespace(), false, pMeta.getXmlMeta().getXmlFormat(), pMeta);
+ serializeAnything(session, out, value, pMeta.getClassMeta(), key, pMeta.getExtendedMeta(XmlBeanPropertyMeta.class).getNamespace(), false, pMeta.getExtendedMeta(XmlBeanPropertyMeta.class).getXmlFormat(), pMeta);
}
}
if ((! hasContent) || session.canIgnoreValue(string(), null, content))
@@ -588,7 +588,7 @@ public class XmlSerializer extends WriterSerializer {
out.append('>').cr(session.indent);
// Serialize XML content.
- XmlContentHandler h = bm.getXmlMeta().getXmlContentHandler();
+ XmlContentHandler h = bm.getExtendedMeta(XmlBeanMeta.class).getXmlContentHandler();
if (h != null)
h.serialize(out, m.getBean());
else
@@ -607,18 +607,18 @@ public class XmlSerializer extends WriterSerializer {
Namespace eNs = null;
if (ppMeta != null) {
- eName = ppMeta.getXmlMeta().getChildName();
- eNs = ppMeta.getXmlMeta().getNamespace();
+ eName = ppMeta.getExtendedMeta(XmlBeanPropertyMeta.class).getChildName();
+ eNs = ppMeta.getExtendedMeta(XmlBeanPropertyMeta.class).getNamespace();
}
if (eName == null) {
- eName = type.getXmlMeta().getChildName();
- eNs = type.getXmlMeta().getNamespace();
+ eName = type.getExtendedMeta(XmlClassMeta.class).getChildName();
+ eNs = type.getExtendedMeta(XmlClassMeta.class).getNamespace();
}
if (eName == null && ! elementType.isObject()) {
- eName = elementType.getXmlMeta().getElementName();
- eNs = elementType.getXmlMeta().getNamespace();
+ eName = elementType.getExtendedMeta(XmlClassMeta.class).getElementName();
+ eNs = elementType.getExtendedMeta(XmlClassMeta.class).getNamespace();
}
for (Iterator i = c.iterator(); i.hasNext();) {
[2/2] incubator-juneau git commit: Remove language-specific metadata
references from core metadata classes.
Posted by ja...@apache.org.
Remove language-specific metadata references from core metadata classes.
Project: http://git-wip-us.apache.org/repos/asf/incubator-juneau/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-juneau/commit/51bb3c48
Tree: http://git-wip-us.apache.org/repos/asf/incubator-juneau/tree/51bb3c48
Diff: http://git-wip-us.apache.org/repos/asf/incubator-juneau/diff/51bb3c48
Branch: refs/heads/master
Commit: 51bb3c48f00e640f64df3faa9a5cd68ccccd4ae3
Parents: 9c6eec7 69d11db
Author: jamesbognar <ja...@gmail.com>
Authored: Thu Aug 25 12:28:47 2016 -0400
Committer: jamesbognar <ja...@gmail.com>
Committed: Thu Aug 25 12:29:34 2016 -0400
----------------------------------------------------------------------
----------------------------------------------------------------------