T - Java type supported by the provider@Produces(value={"application/json","application/*+json"})
@Consumes(value={"application/json","application/*+json"})
@Provider
public class JSONProvider<T>
extends org.apache.cxf.jaxrs.provider.AbstractJAXBProvider<T>
JSONProvider does not enforce JAX-RS (JSON in this case) depth control properties org.apache.cxf.stax.* (only innerElementCountThreshold is enforced and only affects
JSONObject key-value pairs, not JSONArray elements!), as of CXF 3.1.8. This fix is adapted from protected method getStreamReader() of
JAXBElementProvider
FIXME: report this issue
This implementation, like JSONProvider, is not as efficient as it could be, because JSON parsing is done after the whole JSON payload has been parsed into a String by
AbstractXMLInputFactory#readAll() methods
| Modifier and Type | Class and Description |
|---|---|
protected class |
JSONProvider.MappedConventionBasedXmlToJsonStreamWriterFactory |
| Modifier and Type | Field and Description |
|---|---|
protected org.ow2.authzforce.webapp.org.apache.cxf.jaxrs.provider.json.JSONProvider.JsonToXmlStreamReaderFactory |
jsonToXmlStreamReaderFactory |
protected org.ow2.authzforce.webapp.org.apache.cxf.jaxrs.provider.json.JSONProvider.XmlToJsonStreamWriterFactory |
xmlToJsonStreamWriterFactory |
classContexts, collectionContextClasses, inAppendMap, inDropElements, inElementsMap, jaxbElementClassMap, marshalAsJaxbElement, NS_MAPPER_PROPERTY_RI, NS_MAPPER_PROPERTY_RI_INT, outAppendMap, outDropElements, outElementsMap, packageContexts, unmarshalAsJaxbElement, xmlTypeAsJaxbElementOnly| Constructor and Description |
|---|
JSONProvider() |
| Modifier and Type | Method and Description |
|---|---|
protected static void |
copyReaderToWriter(XMLStreamReader reader,
XMLStreamWriter writer) |
protected XMLStreamReader |
createDepthReaderIfNeeded(XMLStreamReader reader,
InputStream is)
Reason for override: super.createDepthReaderIfNeeded() fails if getDepthProperties() != null because the reader (XMLStreamReader) is not compatible with internal call to
StaxUtils.configureReader(reader, message): it is not expected type org.codehaus.stax2.XMLStreamReader2 (therefore ClassCastException);
|
protected XMLStreamReader |
createReader(InputStream is,
boolean isCollection,
String enc) |
protected XMLStreamReader |
createReader(InputStream is,
String enc)
Reason for changing original
org.apache.cxf.jaxrs.provider.json.JSONProvider#createReader(Class,InputStream,String):
Prevent use of depthProperties with badgerfish convention (not supported). |
protected List<String> |
getArrayKeys() |
protected boolean |
getBooleanJsonProperty(String name,
boolean defaultValue) |
protected org.apache.cxf.staxutils.DocumentDepthProperties |
getDepthProperties() |
protected InputStream |
getInputStream(Class<T> cls,
Type type,
InputStream is) |
protected String |
getRootName(Class<T> cls,
Type type) |
boolean |
isReadable(Class<?> type,
Type genericType,
Annotation[] anns,
javax.ws.rs.core.MediaType mt) |
protected boolean |
isRootArray(List<String> theArrayKeys) |
boolean |
isWriteable(Class<?> type,
Type genericType,
Annotation[] anns,
javax.ws.rs.core.MediaType mt) |
protected void |
marshal(Marshaller ms,
Object actualObject,
Class<?> actualClass,
Type genericType,
String enc,
OutputStream os,
boolean isCollection) |
protected void |
marshal(Object actualObject,
Class<?> actualClass,
Type genericType,
String enc,
OutputStream os) |
protected void |
marshalCollection(Class<?> originalCls,
Object collection,
Type genericType,
String encoding,
OutputStream os,
Annotation[] anns) |
protected void |
marshalCollectionMember(Object obj,
Class<?> cls,
Type genericType,
String enc,
OutputStream os) |
T |
readFrom(Class<T> type,
Type genericType,
Annotation[] anns,
javax.ws.rs.core.MediaType mt,
javax.ws.rs.core.MultivaluedMap<String,String> headers,
InputStream is) |
void |
setArrayKeys(List<String> keys) |
void |
setAttributesToElements(boolean value)
END CHANGE to
JSONProvider |
void |
setConvention(String value) |
void |
setConvertTypesToStrings(boolean convert) |
void |
setDropCollectionWrapperElement(boolean drop) |
void |
setDropElementsInXmlStream(boolean drop) |
void |
setDropRootElement(boolean drop) |
void |
setElementsToAttributes(List<String> keys) |
void |
setEscapeForwardSlashesAlways(boolean escape) |
void |
setIgnoreEmptyArrayValues(boolean ignoreEmptyArrayElements) |
void |
setIgnoreMixedContent(boolean ignore) |
void |
setIgnoreNamespaces(boolean ignoreNamespaces) |
void |
setInTransformAttributes(Map<String,String> attributesMap) |
void |
setMaxStringLength(int value)
Set maximum string length in JSON payload;
|
void |
setMessageContext(org.apache.cxf.jaxrs.ext.MessageContext mc) |
void |
setNamespaceMap(Map<String,String> namespaceMap) |
void |
setNamespaceSeparator(String namespaceSeparator) |
void |
setOutTransformAttributes(Map<String,String> attributesMap) |
void |
setPrimitiveArrayKeys(List<String> primitiveArrayKeys) |
void |
setReadXsiType(boolean readXsiType) |
void |
setSerializeAsArray(boolean asArray) |
void |
setSupportUnwrapped(boolean unwrap) |
void |
setTypeConverter(org.codehaus.jettison.mapped.TypeConverter converter) |
void |
setWrapperMap(Map<String,String> map) |
void |
setWrapperName(String wName) |
void |
setWriteNullAsString(boolean writeNullAsString) |
void |
setWriteXsiType(boolean writeXsiType) |
void |
writeTo(T obj,
Class<?> cls,
Type genericType,
Annotation[] anns,
javax.ws.rs.core.MediaType m,
javax.ws.rs.core.MultivaluedMap<String,Object> headers,
OutputStream os) |
canBeReadAsJaxbElement, checkAdapter, clearContexts, configureReaderRestrictions, convertToJaxbElementIfNeeded, createMarshaller, createTransformReaderIfNeeded, createTransformWriterIfNeeded, createUnmarshaller, createUnmarshaller, getActualType, getClassContext, getClassContext, getCollectionContext, getCollectionWrapperQName, getContext, getJAXBContext, getJaxbElementClass, getJaxbQName, getPackageContext, getPackageContext, getSchema, getSchema, getSize, getStreamHandlerFromCurrentMessage, handleExceptionEnd, handleExceptionStart, handleJAXBException, handleXMLStreamException, init, isSkipJaxbChecks, isSupported, isXmlRoot, isXmlType, objectFactoryOrIndexAvailable, setCatalogLocation, setCollectionWrapperMap, setCollectionWrapperName, setContext, setContextProperties, setDepthProperties, setExtraClass, setInAppendElements, setInDropElements, setInTransformElements, setJaxbElementClassMap, setJaxbElementClassNames, setMarshallAsJaxbElement, setMarshallerListener, setMarshallerProp, setNamespaceMapper, setNamespaceMapperPropertyName, setOutAppendElements, setOutDropElements, setOutTransformElements, setSchema, setSchemaHandler, setSchemaHandlers, setSchemaLocations, setSingleJaxbContext, setSkipJaxbChecks, setUnmarshallAsJaxbElement, setUnmarshallerListener, setUnmarshallerProperties, setUseSingleContextForPackages, setValidateBeforeWrite, setValidateInput, setValidateOutput, setValidationHandler, setXmlRootAsJaxbElement, setXmlTypeAsJaxbElementOnly, validateObjectIfNeeded, writeTogetBus, getConsumeMediaTypes, getEnableBuffering, getEnableStreaming, getProduceMediaTypes, isPayloadEmpty, isPayloadEmpty, reportEmptyContentLength, setBus, setConsumeMediaTypes, setEnableBuffering, setEnableStreaming, setProduceMediaTypesprotected org.ow2.authzforce.webapp.org.apache.cxf.jaxrs.provider.json.JSONProvider.JsonToXmlStreamReaderFactory jsonToXmlStreamReaderFactory
protected org.ow2.authzforce.webapp.org.apache.cxf.jaxrs.provider.json.JSONProvider.XmlToJsonStreamWriterFactory xmlToJsonStreamWriterFactory
public void setAttributesToElements(boolean value)
JSONProvidersetAttributesToElements in class org.apache.cxf.jaxrs.provider.AbstractJAXBProvider<T>public void setConvention(String value)
public void setConvertTypesToStrings(boolean convert)
public void setTypeConverter(org.codehaus.jettison.mapped.TypeConverter converter)
public void setIgnoreNamespaces(boolean ignoreNamespaces)
@Context public void setMessageContext(org.apache.cxf.jaxrs.ext.MessageContext mc)
public void setDropRootElement(boolean drop)
public void setDropCollectionWrapperElement(boolean drop)
public void setIgnoreMixedContent(boolean ignore)
public void setSupportUnwrapped(boolean unwrap)
public void setWrapperName(String wName)
public void setSerializeAsArray(boolean asArray)
public boolean isReadable(Class<?> type, Type genericType, Annotation[] anns, javax.ws.rs.core.MediaType mt)
public T readFrom(Class<T> type, Type genericType, Annotation[] anns, javax.ws.rs.core.MediaType mt, javax.ws.rs.core.MultivaluedMap<String,String> headers, InputStream is) throws IOException
IOExceptionprotected XMLStreamReader createReader(InputStream is, boolean isCollection, String enc) throws Exception
Exceptionprotected XMLStreamReader createReader(InputStream is, String enc) throws Exception
org.apache.cxf.jaxrs.provider.json.JSONProvider#createReader(Class,InputStream,String):
Exceptionprotected InputStream getInputStream(Class<T> cls, Type type, InputStream is) throws Exception
Exceptionprotected String getRootName(Class<T> cls, Type type) throws Exception
Exceptionpublic boolean isWriteable(Class<?> type, Type genericType, Annotation[] anns, javax.ws.rs.core.MediaType mt)
public void writeTo(T obj, Class<?> cls, Type genericType, Annotation[] anns, javax.ws.rs.core.MediaType m, javax.ws.rs.core.MultivaluedMap<String,Object> headers, OutputStream os) throws IOException
IOExceptionprotected static void copyReaderToWriter(XMLStreamReader reader, XMLStreamWriter writer) throws Exception
Exceptionprotected void marshalCollection(Class<?> originalCls, Object collection, Type genericType, String encoding, OutputStream os, Annotation[] anns) throws Exception
Exceptionprotected void marshalCollectionMember(Object obj, Class<?> cls, Type genericType, String enc, OutputStream os) throws Exception
Exceptionprotected void marshal(Marshaller ms, Object actualObject, Class<?> actualClass, Type genericType, String enc, OutputStream os, boolean isCollection) throws Exception
Exceptionprotected boolean getBooleanJsonProperty(String name, boolean defaultValue)
protected void marshal(Object actualObject, Class<?> actualClass, Type genericType, String enc, OutputStream os) throws Exception
Exceptionpublic void setWriteXsiType(boolean writeXsiType)
public void setReadXsiType(boolean readXsiType)
public void setDropElementsInXmlStream(boolean drop)
public void setWriteNullAsString(boolean writeNullAsString)
public void setIgnoreEmptyArrayValues(boolean ignoreEmptyArrayElements)
protected org.apache.cxf.staxutils.DocumentDepthProperties getDepthProperties()
getDepthProperties in class org.apache.cxf.jaxrs.provider.AbstractJAXBProvider<T>public void setEscapeForwardSlashesAlways(boolean escape)
public void setNamespaceSeparator(String namespaceSeparator)
public void setMaxStringLength(int value)
value - maximum, ignored iff negative (or zero)protected XMLStreamReader createDepthReaderIfNeeded(XMLStreamReader reader, InputStream is)
createDepthReaderIfNeeded in class org.apache.cxf.jaxrs.provider.AbstractJAXBProvider<T>Copyright © 2012–2020. All rights reserved.