[OLINGO-317] Simplified version dependent constants

This commit is contained in:
Michael Bolz 2014-07-16 14:22:33 +02:00
parent 599f1ef28b
commit 8442ea8f78
17 changed files with 247 additions and 410 deletions

View File

@ -50,47 +50,44 @@ public class JSONTest extends AtomTest {
} }
private void cleanup(final ObjectNode node) { private void cleanup(final ObjectNode node) {
final ODataServiceVersion version = getClient().getServiceVersion();
if (node.has(Constants.JSON_METADATA)) { if (node.has(Constants.JSON_METADATA)) {
node.remove(Constants.JSON_METADATA); node.remove(Constants.JSON_METADATA);
} }
if (node.has(getClient().getServiceVersion().getJSONMap().get(ODataServiceVersion.JSON_TYPE))) { if (node.has(version.getJsonName(ODataServiceVersion.JsonKey.TYPE))) {
node.remove(getClient().getServiceVersion().getJSONMap().get(ODataServiceVersion.JSON_TYPE)); node.remove(version.getJsonName(ODataServiceVersion.JsonKey.TYPE));
} }
if (node.has(getClient().getServiceVersion().getJSONMap().get(ODataServiceVersion.JSON_EDIT_LINK))) { if (node.has(version.getJsonName(ODataServiceVersion.JsonKey.EDIT_LINK))) {
node.remove(getClient().getServiceVersion().getJSONMap().get(ODataServiceVersion.JSON_EDIT_LINK)); node.remove(version.getJsonName(ODataServiceVersion.JsonKey.EDIT_LINK));
} }
if (node.has(getClient().getServiceVersion().getJSONMap().get(ODataServiceVersion.JSON_READ_LINK))) { if (node.has(version.getJsonName(ODataServiceVersion.JsonKey.READ_LINK))) {
node.remove(getClient().getServiceVersion().getJSONMap().get(ODataServiceVersion.JSON_READ_LINK)); node.remove(version.getJsonName(ODataServiceVersion.JsonKey.READ_LINK));
} }
if (node.has(getClient().getServiceVersion().getJSONMap().get(ODataServiceVersion.JSON_MEDIAEDIT_LINK))) { if (node.has(version.getJsonName(ODataServiceVersion.JsonKey.MEDIA_EDIT_LINK))) {
node.remove(getClient().getServiceVersion().getJSONMap().get(ODataServiceVersion.JSON_MEDIAEDIT_LINK)); node.remove(version.getJsonName(ODataServiceVersion.JsonKey.MEDIA_EDIT_LINK));
} }
if (node.has(getClient().getServiceVersion().getJSONMap().get(ODataServiceVersion.JSON_MEDIAREAD_LINK))) { if (node.has(version.getJsonName(ODataServiceVersion.JsonKey.MEDIA_READ_LINK))) {
node.remove(getClient().getServiceVersion().getJSONMap().get(ODataServiceVersion.JSON_MEDIAREAD_LINK)); node.remove(version.getJsonName(ODataServiceVersion.JsonKey.MEDIA_READ_LINK));
} }
if (node.has(getClient().getServiceVersion().getJSONMap().get(ODataServiceVersion.JSON_MEDIA_CONTENT_TYPE))) { if (node.has(version.getJsonName(ODataServiceVersion.JsonKey.MEDIA_CONTENT_TYPE))) {
node.remove(getClient().getServiceVersion().getJSONMap().get(ODataServiceVersion.JSON_MEDIA_CONTENT_TYPE)); node.remove(version.getJsonName(ODataServiceVersion.JsonKey.MEDIA_CONTENT_TYPE));
} }
if (node.has(getClient().getServiceVersion().getJSONMap().get(ODataServiceVersion.JSON_NEXT_LINK))) { if (node.has(version.getJsonName(ODataServiceVersion.JsonKey.NEXT_LINK))) {
node.remove(getClient().getServiceVersion().getJSONMap().get(ODataServiceVersion.JSON_NEXT_LINK)); node.remove(version.getJsonName(ODataServiceVersion.JsonKey.NEXT_LINK));
} }
final List<String> toRemove = new ArrayList<String>(); final List<String> toRemove = new ArrayList<String>();
for (final Iterator<Map.Entry<String, JsonNode>> itor = node.fields(); itor.hasNext();) { for (final Iterator<Map.Entry<String, JsonNode>> itor = node.fields(); itor.hasNext();) {
final Map.Entry<String, JsonNode> field = itor.next(); final Map.Entry<String, JsonNode> field = itor.next();
if (field.getKey().charAt(0) == '#' final String key = field.getKey();
|| field.getKey().endsWith( if (key.charAt(0) == '#'
getClient().getServiceVersion().getJSONMap().get(ODataServiceVersion.JSON_TYPE)) || key.endsWith(version.getJsonName(ODataServiceVersion.JsonKey.TYPE))
|| field.getKey().endsWith( || key.endsWith(version.getJsonName(ODataServiceVersion.JsonKey.MEDIA_EDIT_LINK))
getClient().getServiceVersion().getJSONMap().get(ODataServiceVersion.JSON_MEDIAEDIT_LINK)) || key.endsWith(version.getJsonName(ODataServiceVersion.JsonKey.MEDIA_CONTENT_TYPE))
|| field.getKey().endsWith( || key.endsWith(version.getJsonName(ODataServiceVersion.JsonKey.ASSOCIATION_LINK))
getClient().getServiceVersion().getJSONMap().get(ODataServiceVersion.JSON_MEDIA_CONTENT_TYPE)) || key.endsWith(version.getJsonName(ODataServiceVersion.JsonKey.MEDIA_ETAG))) {
|| field.getKey().endsWith(
getClient().getServiceVersion().getJSONMap().get(ODataServiceVersion.JSON_ASSOCIATION_LINK))
|| field.getKey().endsWith(
getClient().getServiceVersion().getJSONMap().get(ODataServiceVersion.JSON_MEDIA_ETAG))) {
toRemove.add(field.getKey()); toRemove.add(key);
} else if (field.getValue().isObject()) { } else if (field.getValue().isObject()) {
cleanup((ObjectNode) field.getValue()); cleanup((ObjectNode) field.getValue());
} else if (field.getValue().isArray()) { } else if (field.getValue().isArray()) {
@ -107,12 +104,12 @@ public class JSONTest extends AtomTest {
@Override @Override
protected void assertSimilar(final String filename, final String actual) throws Exception { protected void assertSimilar(final String filename, final String actual) throws Exception {
final JsonNode expected = OBJECT_MAPPER.readTree(IOUtils.toString(getClass().getResourceAsStream(filename)). final JsonNode expected = OBJECT_MAPPER.readTree(IOUtils.toString(getClass().getResourceAsStream(filename))
replace("Categories" + getClient().getServiceVersion().getJSONMap(). .replace("Categories"
get(ODataServiceVersion.JSON_NAVIGATION_LINK), + getClient().getServiceVersion().getJsonName(ODataServiceVersion.JsonKey.NAVIGATION_LINK),
"Categories" + Constants.JSON_BIND_LINK_SUFFIX). "Categories" + Constants.JSON_BIND_LINK_SUFFIX)
replace("\"Products(0)/Categories\"", "[\"Products(0)/Categories\"]"). .replace("\"Products(0)/Categories\"", "[\"Products(0)/Categories\"]")
replace(getClient().getServiceVersion().getJSONMap().get(ODataServiceVersion.JSON_NAVIGATION_LINK), .replace(getClient().getServiceVersion().getJsonName(ODataServiceVersion.JsonKey.NAVIGATION_LINK),
Constants.JSON_BIND_LINK_SUFFIX)); Constants.JSON_BIND_LINK_SUFFIX));
cleanup((ObjectNode) expected); cleanup((ObjectNode) expected);
final ObjectNode actualNode = (ObjectNode) OBJECT_MAPPER.readTree(new ByteArrayInputStream(actual.getBytes())); final ObjectNode actualNode = (ObjectNode) OBJECT_MAPPER.readTree(new ByteArrayInputStream(actual.getBytes()));

View File

@ -61,50 +61,47 @@ public class JSONTest extends AbstractTest {
} }
private void cleanup(final ObjectNode node) { private void cleanup(final ObjectNode node) {
final ODataServiceVersion version = getClient().getServiceVersion();
if (node.has(Constants.JSON_CONTEXT)) { if (node.has(Constants.JSON_CONTEXT)) {
node.remove(Constants.JSON_CONTEXT); node.remove(Constants.JSON_CONTEXT);
} }
if (node.has(getClient().getServiceVersion().getJSONMap().get(ODataServiceVersion.JSON_ETAG))) { if (node.has(version.getJsonName(ODataServiceVersion.JsonKey.ETAG))) {
node.remove(getClient().getServiceVersion().getJSONMap().get(ODataServiceVersion.JSON_ETAG)); node.remove(version.getJsonName(ODataServiceVersion.JsonKey.ETAG));
} }
if (node.has(getClient().getServiceVersion().getJSONMap().get(ODataServiceVersion.JSON_TYPE))) { if (node.has(version.getJsonName(ODataServiceVersion.JsonKey.TYPE))) {
node.remove(getClient().getServiceVersion().getJSONMap().get(ODataServiceVersion.JSON_TYPE)); node.remove(version.getJsonName(ODataServiceVersion.JsonKey.TYPE));
} }
if (node.has(getClient().getServiceVersion().getJSONMap().get(ODataServiceVersion.JSON_EDIT_LINK))) { if (node.has(version.getJsonName(ODataServiceVersion.JsonKey.EDIT_LINK))) {
node.remove(getClient().getServiceVersion().getJSONMap().get(ODataServiceVersion.JSON_EDIT_LINK)); node.remove(version.getJsonName(ODataServiceVersion.JsonKey.EDIT_LINK));
} }
if (node.has(getClient().getServiceVersion().getJSONMap().get(ODataServiceVersion.JSON_READ_LINK))) { if (node.has(version.getJsonName(ODataServiceVersion.JsonKey.READ_LINK))) {
node.remove(getClient().getServiceVersion().getJSONMap().get(ODataServiceVersion.JSON_READ_LINK)); node.remove(version.getJsonName(ODataServiceVersion.JsonKey.READ_LINK));
} }
if (node.has(getClient().getServiceVersion().getJSONMap().get(ODataServiceVersion.JSON_MEDIAEDIT_LINK))) { if (node.has(version.getJsonName(ODataServiceVersion.JsonKey.MEDIA_EDIT_LINK))) {
node.remove(getClient().getServiceVersion().getJSONMap().get(ODataServiceVersion.JSON_MEDIAEDIT_LINK)); node.remove(version.getJsonName(ODataServiceVersion.JsonKey.MEDIA_EDIT_LINK));
} }
if (node.has(getClient().getServiceVersion().getJSONMap().get(ODataServiceVersion.JSON_MEDIAREAD_LINK))) { if (node.has(version.getJsonName(ODataServiceVersion.JsonKey.MEDIA_READ_LINK))) {
node.remove(getClient().getServiceVersion().getJSONMap().get(ODataServiceVersion.JSON_MEDIAREAD_LINK)); node.remove(version.getJsonName(ODataServiceVersion.JsonKey.MEDIA_READ_LINK));
} }
if (node.has(getClient().getServiceVersion().getJSONMap().get(ODataServiceVersion.JSON_MEDIA_CONTENT_TYPE))) { if (node.has(version.getJsonName(ODataServiceVersion.JsonKey.MEDIA_CONTENT_TYPE))) {
node.remove(getClient().getServiceVersion().getJSONMap().get(ODataServiceVersion.JSON_MEDIA_CONTENT_TYPE)); node.remove(version.getJsonName(ODataServiceVersion.JsonKey.MEDIA_CONTENT_TYPE));
} }
if (node.has(getClient().getServiceVersion().getJSONMap().get(ODataServiceVersion.JSON_COUNT))) { if (node.has(version.getJsonName(ODataServiceVersion.JsonKey.COUNT))) {
node.remove(getClient().getServiceVersion().getJSONMap().get(ODataServiceVersion.JSON_COUNT)); node.remove(version.getJsonName(ODataServiceVersion.JsonKey.COUNT));
} }
final List<String> toRemove = new ArrayList<String>(); final List<String> toRemove = new ArrayList<String>();
for (final Iterator<Map.Entry<String, JsonNode>> itor = node.fields(); itor.hasNext();) { for (final Iterator<Map.Entry<String, JsonNode>> itor = node.fields(); itor.hasNext();) {
final Map.Entry<String, JsonNode> field = itor.next(); final Map.Entry<String, JsonNode> field = itor.next();
if (field.getKey().charAt(0) == '#' final String key = field.getKey();
|| field.getKey().endsWith( if (key.charAt(0) == '#'
getClient().getServiceVersion().getJSONMap().get(ODataServiceVersion.JSON_TYPE)) || key.endsWith(version.getJsonName(ODataServiceVersion.JsonKey.TYPE))
|| field.getKey().endsWith( || key.endsWith(version.getJsonName(ODataServiceVersion.JsonKey.MEDIA_EDIT_LINK))
getClient().getServiceVersion().getJSONMap().get(ODataServiceVersion.JSON_MEDIAEDIT_LINK)) || key.endsWith(version.getJsonName(ODataServiceVersion.JsonKey.MEDIA_CONTENT_TYPE))
|| field.getKey().endsWith( || key.endsWith(version.getJsonName(ODataServiceVersion.JsonKey.ASSOCIATION_LINK))
getClient().getServiceVersion().getJSONMap().get(ODataServiceVersion.JSON_MEDIA_CONTENT_TYPE)) || key.endsWith(version.getJsonName(ODataServiceVersion.JsonKey.MEDIA_ETAG))) {
|| field.getKey().endsWith(
getClient().getServiceVersion().getJSONMap().get(ODataServiceVersion.JSON_ASSOCIATION_LINK))
|| field.getKey().endsWith(
getClient().getServiceVersion().getJSONMap().get(ODataServiceVersion.JSON_MEDIA_ETAG))) {
toRemove.add(field.getKey()); toRemove.add(key);
} else if (field.getValue().isObject()) { } else if (field.getValue().isObject()) {
cleanup((ObjectNode) field.getValue()); cleanup((ObjectNode) field.getValue());
} else if (field.getValue().isArray()) { } else if (field.getValue().isArray()) {
@ -121,7 +118,7 @@ public class JSONTest extends AbstractTest {
protected void assertSimilar(final String filename, final String actual) throws Exception { protected void assertSimilar(final String filename, final String actual) throws Exception {
final JsonNode expected = OBJECT_MAPPER.readTree(IOUtils.toString(getClass().getResourceAsStream(filename)). final JsonNode expected = OBJECT_MAPPER.readTree(IOUtils.toString(getClass().getResourceAsStream(filename)).
replace(getClient().getServiceVersion().getJSONMap().get(ODataServiceVersion.JSON_NAVIGATION_LINK), replace(getClient().getServiceVersion().getJsonName(ODataServiceVersion.JsonKey.NAVIGATION_LINK),
Constants.JSON_BIND_LINK_SUFFIX)); Constants.JSON_BIND_LINK_SUFFIX));
cleanup((ObjectNode) expected); cleanup((ObjectNode) expected);
final ObjectNode actualNode = (ObjectNode) OBJECT_MAPPER.readTree(new ByteArrayInputStream(actual.getBytes())); final ObjectNode actualNode = (ObjectNode) OBJECT_MAPPER.readTree(new ByteArrayInputStream(actual.getBytes()));

View File

@ -32,74 +32,52 @@ public interface Constants {
public final static String METADATA = "$metadata"; public final static String METADATA = "$metadata";
public final static Integer DEFAULT_PRECISION = 40; public final static Integer DEFAULT_PRECISION = 40;
public final static Integer DEFAULT_SCALE = 25; public final static Integer DEFAULT_SCALE = 25;
public final static String PROXY_TERM_CLASS_LIST = "org.apache.olingo.ext.proxy.term"; public final static String PROXY_TERM_CLASS_LIST = "org.apache.olingo.ext.proxy.term";
public final static String PROXY_ENUM_CLASS_LIST = "org.apache.olingo.ext.proxy.enum"; public final static String PROXY_ENUM_CLASS_LIST = "org.apache.olingo.ext.proxy.enum";
public final static String PROXY_COMPLEX_CLASS_LIST = "org.apache.olingo.ext.proxy.complex"; public final static String PROXY_COMPLEX_CLASS_LIST = "org.apache.olingo.ext.proxy.complex";
// XML namespaces and prefixes // XML namespaces and prefixes
public final static String NS_ATOM = "http://www.w3.org/2005/Atom"; public final static String NS_ATOM = "http://www.w3.org/2005/Atom";
public static final String NS_GEORSS = "http://www.georss.org/georss"; public static final String NS_GEORSS = "http://www.georss.org/georss";
public static final String NS_GML = "http://www.opengis.net/gml"; public static final String NS_GML = "http://www.opengis.net/gml";
public static final String NS_ATOM_TOMBSTONE = "http://purl.org/atompub/tombstones/1.0"; public static final String NS_ATOM_TOMBSTONE = "http://purl.org/atompub/tombstones/1.0";
public static final String PREFIX_DATASERVICES = "d"; public static final String PREFIX_DATASERVICES = "d";
public static final String PREFIX_METADATA = "m"; public static final String PREFIX_METADATA = "m";
public static final String PREFIX_GEORSS = "georss"; public static final String PREFIX_GEORSS = "georss";
public static final String PREFIX_GML = "gml"; public static final String PREFIX_GML = "gml";
public final static String SRS_URLPREFIX = "http://www.opengis.net/def/crs/EPSG/0/"; public final static String SRS_URLPREFIX = "http://www.opengis.net/def/crs/EPSG/0/";
// Link rel(s) // Link rel(s)
public static final String EDIT_LINK_REL = "edit"; public static final String EDIT_LINK_REL = "edit";
public static final String SELF_LINK_REL = "self"; public static final String SELF_LINK_REL = "self";
public static final String EDITMEDIA_LINK_REL = "edit-media"; public static final String EDITMEDIA_LINK_REL = "edit-media";
public static final String NEXT_LINK_REL = "next"; public static final String NEXT_LINK_REL = "next";
public static final String DELTA_LINK_REL = "http://docs.oasis-open.org/odata/ns/delta";
// XML elements and attributes // XML elements and attributes
public static final String PROPERTIES = "properties"; public static final String PROPERTIES = "properties";
public static final String ELEM_ELEMENT = "element"; public static final String ELEM_ELEMENT = "element";
public final static String ATTR_TYPE = "type"; public final static String ATTR_TYPE = "type";
public final static String ATTR_NULL = "null"; public final static String ATTR_NULL = "null";
public static final String ATTR_XML_BASE = "base"; public static final String ATTR_XML_BASE = "base";
public static final QName QNAME_ATTR_XML_BASE = new QName(XMLConstants.XML_NS_URI, ATTR_XML_BASE); public static final QName QNAME_ATTR_XML_BASE = new QName(XMLConstants.XML_NS_URI, ATTR_XML_BASE);
public static final String CONTEXT = "context"; public static final String CONTEXT = "context";
public static final String ATTR_REL = "rel"; public static final String ATTR_REL = "rel";
public static final String ATTR_TITLE = "title"; public static final String ATTR_TITLE = "title";
public static final String ATTR_METADATA = "metadata"; public static final String ATTR_METADATA = "metadata";
public static final String ATTR_HREF = "href"; public static final String ATTR_HREF = "href";
public static final String ATTR_REF = "ref"; public static final String ATTR_REF = "ref";
public static final String ATTR_TARGET = "target"; public static final String ATTR_TARGET = "target";
public static final String ATTR_SRSNAME = "srsName"; public static final String ATTR_SRSNAME = "srsName";
public static final QName QNAME_ATTR_SRSNAME = new QName(NS_GML, ATTR_SRSNAME); public static final QName QNAME_ATTR_SRSNAME = new QName(NS_GML, ATTR_SRSNAME);
public static final String ELEM_POINT = "Point"; public static final String ELEM_POINT = "Point";
@ -107,11 +85,9 @@ public interface Constants {
public static final String ELEM_MULTIPOINT = "MultiPoint"; public static final String ELEM_MULTIPOINT = "MultiPoint";
public static final String ELEM_POINTMEMBERS = "pointMembers"; public static final String ELEM_POINTMEMBERS = "pointMembers";
public static final QName QNAME_POINTMEMBERS = new QName(NS_GML, ELEM_POINTMEMBERS); public static final QName QNAME_POINTMEMBERS = new QName(NS_GML, ELEM_POINTMEMBERS);
public static final String ELEM_LINESTRING = "LineString"; public static final String ELEM_LINESTRING = "LineString";
public static final QName QNAME_LINESTRING = new QName(NS_GML, ELEM_LINESTRING); public static final QName QNAME_LINESTRING = new QName(NS_GML, ELEM_LINESTRING);
public static final String ELEM_MULTILINESTRING = "MultiCurve"; public static final String ELEM_MULTILINESTRING = "MultiCurve";
@ -119,15 +95,12 @@ public interface Constants {
public static final String ELEM_LINESTRINGMEMBERS = "curveMembers"; public static final String ELEM_LINESTRINGMEMBERS = "curveMembers";
public static final String ELEM_POLYGON = "Polygon"; public static final String ELEM_POLYGON = "Polygon";
public static final QName QNAME_POLYGON = new QName(NS_GML, ELEM_POLYGON); public static final QName QNAME_POLYGON = new QName(NS_GML, ELEM_POLYGON);
public static final String ELEM_POLYGON_EXTERIOR = "exterior"; public static final String ELEM_POLYGON_EXTERIOR = "exterior";
public static final QName QNAME_POLYGON_EXTERIOR = new QName(NS_GML, ELEM_POLYGON_EXTERIOR); public static final QName QNAME_POLYGON_EXTERIOR = new QName(NS_GML, ELEM_POLYGON_EXTERIOR);
public static final String ELEM_POLYGON_INTERIOR = "interior"; public static final String ELEM_POLYGON_INTERIOR = "interior";
public static final QName QNAME_POLYGON_INTERIOR = new QName(NS_GML, ELEM_POLYGON_INTERIOR); public static final QName QNAME_POLYGON_INTERIOR = new QName(NS_GML, ELEM_POLYGON_INTERIOR);
public static final String ELEM_POLYGON_LINEARRING = "LinearRing"; public static final String ELEM_POLYGON_LINEARRING = "LinearRing";
@ -139,7 +112,6 @@ public interface Constants {
public static final String ELEM_GEOCOLLECTION = "MultiGeometry"; public static final String ELEM_GEOCOLLECTION = "MultiGeometry";
public static final String ELEM_GEOMEMBERS = "geometryMembers"; public static final String ELEM_GEOMEMBERS = "geometryMembers";
public static final QName QNAME_GEOMEMBERS = new QName(NS_GML, ELEM_GEOMEMBERS); public static final QName QNAME_GEOMEMBERS = new QName(NS_GML, ELEM_GEOMEMBERS);
public static final String ELEM_POS = "pos"; public static final String ELEM_POS = "pos";
@ -155,7 +127,6 @@ public interface Constants {
public static final String ELEM_DELETED_LINK = "deleted-link"; public static final String ELEM_DELETED_LINK = "deleted-link";
public static final String ATTR_SOURCE = "source"; public static final String ATTR_SOURCE = "source";
public static final String ATTR_RELATIONSHIP = "relationship"; public static final String ATTR_RELATIONSHIP = "relationship";
public static final String ANNOTATION = "annotation"; public static final String ANNOTATION = "annotation";
@ -180,6 +151,7 @@ public interface Constants {
public final static String JSON_COUNT = "@odata.count"; public final static String JSON_COUNT = "@odata.count";
public final static String JSON_NEXT_LINK = "@odata.nextLink"; public final static String JSON_NEXT_LINK = "@odata.nextLink";
public final static String JSON_DELTA_LINK = "@odata.deltaLink"; public final static String JSON_DELTA_LINK = "@odata.deltaLink";
public final static String JSON_ERROR = "error";
public final static String JSON_NULL = "odata.null"; public final static String JSON_NULL = "odata.null";
@ -188,56 +160,44 @@ public interface Constants {
public final static String JSON_URL = "url"; public final static String JSON_URL = "url";
public final static String JSON_COORDINATES = "coordinates"; public final static String JSON_COORDINATES = "coordinates";
public final static String JSON_GEOMETRIES = "geometries"; public final static String JSON_GEOMETRIES = "geometries";
public final static String JSON_CRS = "crs"; public final static String JSON_CRS = "crs";
public final static String JSON_NAME = "name"; public final static String JSON_NAME = "name";
// Atom stuff // Atom stuff
public final static String ATOM_ELEM_ENTRY = "entry"; public final static String ATOM_ELEM_ENTRY = "entry";
public static final QName QNAME_ATOM_ELEM_ENTRY = new QName(NS_ATOM, ATOM_ELEM_ENTRY);
public final static String ATOM_ELEM_ENTRY_REF = "ref"; public final static String ATOM_ELEM_ENTRY_REF = "ref";
public final static String ATOM_ATTR_ID = "id"; public final static String ATOM_ATTR_ID = "id";
public final static QName QNAME_ATOM_ATTR_ID = new QName(ATOM_ATTR_ID); public final static QName QNAME_ATOM_ATTR_ID = new QName(ATOM_ATTR_ID);
public static final QName QNAME_ATOM_ELEM_ENTRY = new QName(NS_ATOM, ATOM_ELEM_ENTRY);
public final static String ATOM_ELEM_FEED = "feed"; public final static String ATOM_ELEM_FEED = "feed";
public static final QName QNAME_ATOM_ELEM_FEED = new QName(NS_ATOM, ATOM_ELEM_FEED); public static final QName QNAME_ATOM_ELEM_FEED = new QName(NS_ATOM, ATOM_ELEM_FEED);
public final static String ATOM_ELEM_CATEGORY = "category"; public final static String ATOM_ELEM_CATEGORY = "category";
public static final QName QNAME_ATOM_ELEM_CATEGORY = new QName(NS_ATOM, ATOM_ELEM_CATEGORY); public static final QName QNAME_ATOM_ELEM_CATEGORY = new QName(NS_ATOM, ATOM_ELEM_CATEGORY);
public static final String ATOM_ELEM_COUNT = "count"; public static final String ATOM_ELEM_COUNT = "count";
public final static String ATOM_ELEM_ID = "id"; public final static String ATOM_ELEM_ID = "id";
public static final QName QNAME_ATOM_ELEM_ID = new QName(NS_ATOM, ATOM_ELEM_ID); public static final QName QNAME_ATOM_ELEM_ID = new QName(NS_ATOM, ATOM_ELEM_ID);
public static final String ATOM_ELEM_TITLE = "title"; public static final String ATOM_ELEM_TITLE = "title";
public static final QName QNAME_ATOM_ELEM_TITLE = new QName(NS_ATOM, ATOM_ELEM_TITLE); public static final QName QNAME_ATOM_ELEM_TITLE = new QName(NS_ATOM, ATOM_ELEM_TITLE);
public static final String ATOM_ELEM_SUMMARY = "summary"; public static final String ATOM_ELEM_SUMMARY = "summary";
public static final QName QNAME_ATOM_ELEM_SUMMARY = new QName(NS_ATOM, ATOM_ELEM_SUMMARY); public static final QName QNAME_ATOM_ELEM_SUMMARY = new QName(NS_ATOM, ATOM_ELEM_SUMMARY);
public static final String ATOM_ELEM_UPDATED = "updated"; public static final String ATOM_ELEM_UPDATED = "updated";
public static final QName QNAME_ATOM_ELEM_UPDATED = new QName(NS_ATOM, ATOM_ELEM_UPDATED); public static final QName QNAME_ATOM_ELEM_UPDATED = new QName(NS_ATOM, ATOM_ELEM_UPDATED);
public final static String ATOM_ELEM_LINK = "link"; public final static String ATOM_ELEM_LINK = "link";
public static final QName QNAME_ATOM_ELEM_LINK = new QName(NS_ATOM, ATOM_ELEM_LINK); public static final QName QNAME_ATOM_ELEM_LINK = new QName(NS_ATOM, ATOM_ELEM_LINK);
public final static String ATOM_ELEM_CONTENT = "content"; public final static String ATOM_ELEM_CONTENT = "content";
public static final QName QNAME_ATOM_ELEM_CONTENT = new QName(NS_ATOM, ATOM_ELEM_CONTENT); public static final QName QNAME_ATOM_ELEM_CONTENT = new QName(NS_ATOM, ATOM_ELEM_CONTENT);
public static final String ATOM_ELEM_ACTION = "action"; public static final String ATOM_ELEM_ACTION = "action";
@ -245,33 +205,22 @@ public interface Constants {
public static final String ATOM_ELEM_INLINE = "inline"; public static final String ATOM_ELEM_INLINE = "inline";
public static final String ATOM_ATTR_TERM = "term"; public static final String ATOM_ATTR_TERM = "term";
public static final String ATOM_ATTR_SCHEME = "scheme"; public static final String ATOM_ATTR_SCHEME = "scheme";
public static final String ATOM_ATTR_SRC = "src"; public static final String ATOM_ATTR_SRC = "src";
public static final String ATOM_ATTR_ETAG = "etag"; public static final String ATOM_ATTR_ETAG = "etag";
public static final String ATOM_ATTR_METADATAETAG = "metadata-etag"; public static final String ATOM_ATTR_METADATAETAG = "metadata-etag";
public static final String ATOM_ELEM_DELETED_ENTRY = "deleted-entry"; public static final String ATOM_ELEM_DELETED_ENTRY = "deleted-entry";
// error stuff // error stuff
public static final String ERROR_CODE = "code"; public static final String ERROR_CODE = "code";
public static final String ERROR_MESSAGE = "message"; public static final String ERROR_MESSAGE = "message";
public static final String ERROR_TARGET = "target"; public static final String ERROR_TARGET = "target";
public static final String ERROR_DETAILS = "details"; public static final String ERROR_DETAILS = "details";
public static final String ERROR_INNERERROR = "innererror"; public static final String ERROR_INNERERROR = "innererror";
// canonical functions to be applied via dynamic annotation <tt>Apply</tt> // canonical functions to be applied via dynamic annotation <tt>Apply</tt>
public static final String CANONICAL_FUNCTION_CONCAT = "odata.concat"; public static final String CANONICAL_FUNCTION_CONCAT = "odata.concat";
public static final String CANONICAL_FUNCTION_FILLURITEMPLATE = "odata.fillUriTemplate"; public static final String CANONICAL_FUNCTION_FILLURITEMPLATE = "odata.fillUriTemplate";
public static final String CANONICAL_FUNCTION_URIENCODE = "odata.uriEncode"; public static final String CANONICAL_FUNCTION_URIENCODE = "odata.uriEncode";
} }

View File

@ -123,17 +123,17 @@ public class ODataLink extends ODataItem {
switch (this.type) { switch (this.type) {
case ASSOCIATION: case ASSOCIATION:
rel = version.getNamespaceMap().get(ODataServiceVersion.ASSOCIATION_LINK_REL) + title; rel = version.getNamespace(ODataServiceVersion.NamespaceKey.ASSOCIATION_LINK_REL) + title;
break; break;
case ENTITY_NAVIGATION: case ENTITY_NAVIGATION:
case ENTITY_SET_NAVIGATION: case ENTITY_SET_NAVIGATION:
rel = version.getNamespaceMap().get(ODataServiceVersion.NAVIGATION_LINK_REL) + title; rel = version.getNamespace(ODataServiceVersion.NamespaceKey.NAVIGATION_LINK_REL) + title;
break; break;
case MEDIA_EDIT: case MEDIA_EDIT:
default: default:
rel = version.getNamespaceMap().get(ODataServiceVersion.MEDIA_EDIT_LINK_REL) + title; rel = version.getNamespace(ODataServiceVersion.NamespaceKey.MEDIA_EDIT_LINK_REL) + title;
break; break;
} }
} }

View File

@ -70,7 +70,7 @@ public enum ODataLinkType {
*/ */
public static ODataLinkType fromString(final ODataServiceVersion version, final String rel, final String type) { public static ODataLinkType fromString(final ODataServiceVersion version, final String rel, final String type) {
if (StringUtils.isNotBlank(rel) if (StringUtils.isNotBlank(rel)
&& rel.startsWith(version.getNamespaceMap().get(ODataServiceVersion.MEDIA_EDIT_LINK_REL))) { && rel.startsWith(version.getNamespace(ODataServiceVersion.NamespaceKey.MEDIA_EDIT_LINK_REL))) {
return MEDIA_EDIT.setType(StringUtils.isBlank(type) ? "*/*" : type); return MEDIA_EDIT.setType(StringUtils.isBlank(type) ? "*/*" : type);
} }

View File

@ -18,7 +18,6 @@
*/ */
package org.apache.olingo.commons.api.edm.constants; package org.apache.olingo.commons.api.edm.constants;
import java.util.Collections;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.regex.Matcher; import java.util.regex.Matcher;
@ -36,123 +35,88 @@ public enum ODataServiceVersion {
V30("3.0"), V30("3.0"),
V40("4.0"); V40("4.0");
public enum NamespaceKey {
DATASERVICES, METADATA, SCHEME,
NAVIGATION_LINK_REL, ASSOCIATION_LINK_REL, MEDIA_EDIT_LINK_REL, DELTA_LINK_REL
}
private static final Map<NamespaceKey, String> V30_NAMESPACES = new HashMap<NamespaceKey, String>() {
private static final long serialVersionUID = 3109256773218160485L;
private static final String BASE = "http://schemas.microsoft.com/ado/2007/08/dataservices";
{
put(NamespaceKey.DATASERVICES, BASE);
put(NamespaceKey.METADATA, BASE + "/metadata");
put(NamespaceKey.SCHEME, BASE + "/scheme");
put(NamespaceKey.NAVIGATION_LINK_REL, BASE + "/related/");
put(NamespaceKey.ASSOCIATION_LINK_REL, BASE + "/relatedlinks/");
put(NamespaceKey.MEDIA_EDIT_LINK_REL, BASE + "/edit-media/");
}
};
private static final Map<NamespaceKey, String> V40_NAMESPACES = new HashMap<NamespaceKey, String>() {
private static final long serialVersionUID = 3109256773218160485L;
private static final String BASE = "http://docs.oasis-open.org/odata/ns/";
{
put(NamespaceKey.DATASERVICES, BASE + "data");
put(NamespaceKey.METADATA, BASE + "metadata");
put(NamespaceKey.SCHEME, BASE + "scheme");
put(NamespaceKey.NAVIGATION_LINK_REL, BASE + "related/");
put(NamespaceKey.ASSOCIATION_LINK_REL, BASE + "relatedlinks/");
put(NamespaceKey.MEDIA_EDIT_LINK_REL, BASE + "edit-media/");
put(NamespaceKey.DELTA_LINK_REL, BASE + "delta");
}
};
public enum JsonKey {
TYPE, ID, ETAG,
READ_LINK, EDIT_LINK, MEDIA_READ_LINK, MEDIA_EDIT_LINK, MEDIA_CONTENT_TYPE, MEDIA_ETAG,
ASSOCIATION_LINK, NAVIGATION_LINK,
COUNT, NEXT_LINK, DELTA_LINK, ERROR
}
private static final Map<JsonKey, String> V30_JSON = new HashMap<JsonKey, String>() {
private static final long serialVersionUID = 3109256773218160485L;
{
put(JsonKey.TYPE, "odata.type");
put(JsonKey.ID, "odata.id");
put(JsonKey.ETAG, "odata.etag");
put(JsonKey.READ_LINK, "odata.readLink");
put(JsonKey.EDIT_LINK, "odata.editLink");
put(JsonKey.MEDIA_READ_LINK, "odata.mediaReadLink");
put(JsonKey.MEDIA_EDIT_LINK, "odata.mediaEditLink");
put(JsonKey.MEDIA_CONTENT_TYPE, "odata.mediaContentType");
put(JsonKey.MEDIA_ETAG, "odata.mediaEtag");
put(JsonKey.ASSOCIATION_LINK, "@odata.associationLinkUrl");
put(JsonKey.NAVIGATION_LINK, "@odata.navigationLinkUrl");
put(JsonKey.COUNT, "odata.count");
put(JsonKey.NEXT_LINK, "odata.nextLink");
put(JsonKey.ERROR, "odata.error");
}
};
private static final Map<JsonKey, String> V40_JSON = new HashMap<JsonKey, String>() {
private static final long serialVersionUID = 3109256773218160485L;
{
put(JsonKey.TYPE, Constants.JSON_TYPE);
put(JsonKey.ID, Constants.JSON_ID);
put(JsonKey.ETAG, Constants.JSON_ETAG);
put(JsonKey.READ_LINK, Constants.JSON_READ_LINK);
put(JsonKey.EDIT_LINK, Constants.JSON_EDIT_LINK);
put(JsonKey.MEDIA_READ_LINK, Constants.JSON_MEDIA_READ_LINK);
put(JsonKey.MEDIA_EDIT_LINK, Constants.JSON_MEDIA_EDIT_LINK);
put(JsonKey.MEDIA_CONTENT_TYPE, Constants.JSON_MEDIA_CONTENT_TYPE);
put(JsonKey.MEDIA_ETAG, Constants.JSON_MEDIA_ETAG);
put(JsonKey.ASSOCIATION_LINK, Constants.JSON_ASSOCIATION_LINK);
put(JsonKey.NAVIGATION_LINK, Constants.JSON_NAVIGATION_LINK);
put(JsonKey.COUNT, Constants.JSON_COUNT);
put(JsonKey.NEXT_LINK, Constants.JSON_NEXT_LINK);
put(JsonKey.DELTA_LINK, Constants.JSON_DELTA_LINK);
put(JsonKey.ERROR, Constants.JSON_ERROR);
}
};
private static final Pattern DATASERVICEVERSIONPATTERN = Pattern.compile("(\\p{Digit}+\\.\\p{Digit}+)(:?;.*)?"); private static final Pattern DATASERVICEVERSIONPATTERN = Pattern.compile("(\\p{Digit}+\\.\\p{Digit}+)(:?;.*)?");
public static final String NS_DATASERVICES = "dataservices";
public static final String NS_METADATA = "metadata";
public static final String NS_SCHEME = "scheme";
public static final String NAVIGATION_LINK_REL = "navigationLinkRel";
public static final String ASSOCIATION_LINK_REL = "associationLinkRel";
public static final String MEDIA_EDIT_LINK_REL = "mediaEditLinkRel";
public static final String JSON_TYPE = "jsonType";
public static final String JSON_ID = "jsonId";
public static final String JSON_ETAG = "jsonETag";
public static final String JSON_READ_LINK = "jsonReadLink";
public static final String JSON_EDIT_LINK = "jsonEditLink";
public static final String JSON_MEDIAREAD_LINK = "jsonMediaReadLink";
public static final String JSON_MEDIAEDIT_LINK = "jsonMediaEditLink";
public static final String JSON_MEDIA_CONTENT_TYPE = "jsonMediaContentType";
public static final String JSON_MEDIA_ETAG = "jsonMediaETag";
public static final String JSON_ASSOCIATION_LINK = "jsonAssociationLink";
public static final String JSON_NAVIGATION_LINK = "jsonNavigationLink";
public final static String JSON_COUNT = "jsonCount";
public final static String JSON_NEXT_LINK = "jsonNextLink";
public final static String JSON_DELTA_LINK = "jsonDeltaLink";
public static final String JSON_ERROR = "jsonError";
private static final Map<String, String> V30_NAMESPACES = Collections.unmodifiableMap(new HashMap<String, String>() {
private static final long serialVersionUID = 3109256773218160485L;
{
put(NS_DATASERVICES, "http://schemas.microsoft.com/ado/2007/08/dataservices");
put(NS_METADATA, "http://schemas.microsoft.com/ado/2007/08/dataservices/metadata");
put(NS_SCHEME, "http://schemas.microsoft.com/ado/2007/08/dataservices/scheme");
put(NAVIGATION_LINK_REL, "http://schemas.microsoft.com/ado/2007/08/dataservices/related/");
put(ASSOCIATION_LINK_REL, "http://schemas.microsoft.com/ado/2007/08/dataservices/relatedlinks/");
put(MEDIA_EDIT_LINK_REL, "http://schemas.microsoft.com/ado/2007/08/dataservices/edit-media/");
}
});
private static final Map<String, String> V30_JSON = Collections.unmodifiableMap(new HashMap<String, String>() {
private static final long serialVersionUID = 3109256773218160485L;
{
put(JSON_TYPE, "odata.type");
put(JSON_ID, "odata.id");
put(JSON_ETAG, "odata.etag");
put(JSON_READ_LINK, "odata.readLink");
put(JSON_EDIT_LINK, "odata.editLink");
put(JSON_MEDIAREAD_LINK, "odata.mediaReadLink");
put(JSON_MEDIAEDIT_LINK, "odata.mediaEditLink");
put(JSON_MEDIA_CONTENT_TYPE, "odata.mediaContentType");
put(JSON_MEDIA_ETAG, "odata.mediaEtag");
put(JSON_ASSOCIATION_LINK, "@odata.associationLinkUrl");
put(JSON_NAVIGATION_LINK, "@odata.navigationLinkUrl");
put(JSON_COUNT, "odata.count");
put(JSON_NEXT_LINK, "odata.nextLink");
put(JSON_ERROR, "odata.error");
}
});
private static final Map<String, String> V40_NAMESPACES = Collections.unmodifiableMap(new HashMap<String, String>() {
private static final long serialVersionUID = 3109256773218160485L;
{
put(NS_METADATA, "http://docs.oasis-open.org/odata/ns/metadata");
put(NS_DATASERVICES, "http://docs.oasis-open.org/odata/ns/data");
put(NS_SCHEME, "http://docs.oasis-open.org/odata/ns/scheme");
put(NAVIGATION_LINK_REL, "http://docs.oasis-open.org/odata/ns/related/");
put(ASSOCIATION_LINK_REL, "http://docs.oasis-open.org/odata/ns/relatedlinks/");
put(MEDIA_EDIT_LINK_REL, "http://docs.oasis-open.org/odata/ns/edit-media/");
}
});
private static final Map<String, String> V40_JSON = Collections.unmodifiableMap(new HashMap<String, String>() {
private static final long serialVersionUID = 3109256773218160485L;
{
put(JSON_TYPE, Constants.JSON_TYPE);
put(JSON_ID, Constants.JSON_ID);
put(JSON_ETAG, Constants.JSON_ETAG);
put(JSON_READ_LINK, Constants.JSON_READ_LINK);
put(JSON_EDIT_LINK, Constants.JSON_EDIT_LINK);
put(JSON_MEDIAREAD_LINK, Constants.JSON_MEDIA_READ_LINK);
put(JSON_MEDIAEDIT_LINK, Constants.JSON_MEDIA_EDIT_LINK);
put(JSON_MEDIA_CONTENT_TYPE, Constants.JSON_MEDIA_CONTENT_TYPE);
put(JSON_MEDIA_ETAG, Constants.JSON_MEDIA_ETAG);
put(JSON_ASSOCIATION_LINK, Constants.JSON_ASSOCIATION_LINK);
put(JSON_NAVIGATION_LINK, Constants.JSON_NAVIGATION_LINK);
put(JSON_COUNT, Constants.JSON_COUNT);
put(JSON_NEXT_LINK, Constants.JSON_NEXT_LINK);
put(JSON_DELTA_LINK, Constants.JSON_DELTA_LINK);
put(JSON_ERROR, "error");
}
});
/** /**
* Validates format and range of a data service version string. * Validates format and range of a data service version string.
* *
@ -205,20 +169,12 @@ public enum ODataServiceVersion {
this.version = version; this.version = version;
} }
public Map<String, String> getNamespaceMap() { public String getNamespace(final NamespaceKey key) {
return this == V10 || this == V20 return this == V10 || this == V20 ? null : this == V30 ? V30_NAMESPACES.get(key) : V40_NAMESPACES.get(key);
? Collections.<String, String> emptyMap()
: this == V30
? V30_NAMESPACES
: V40_NAMESPACES;
} }
public Map<String, String> getJSONMap() { public String getJsonName(final JsonKey key) {
return this == V10 || this == V20 return this == V10 || this == V20 ? null : this == V30 ? V30_JSON.get(key) : V40_JSON.get(key);
? Collections.<String, String> emptyMap()
: this == V30
? V30_JSON
: V40_JSON;
} }
@Override @Override

View File

@ -30,13 +30,9 @@ import org.apache.olingo.commons.api.edm.EdmTypeDefinition;
import org.apache.olingo.commons.api.edm.FullQualifiedName; import org.apache.olingo.commons.api.edm.FullQualifiedName;
import org.apache.olingo.commons.api.edm.constants.ODataServiceVersion; import org.apache.olingo.commons.api.edm.constants.ODataServiceVersion;
import org.apache.olingo.commons.core.edm.primitivetype.EdmPrimitiveTypeFactory; import org.apache.olingo.commons.core.edm.primitivetype.EdmPrimitiveTypeFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class EdmTypeInfo { public class EdmTypeInfo {
private static final Logger LOG = LoggerFactory.getLogger(EdmTypeInfo.class);
public static class Builder { public static class Builder {
private String typeExpression; private String typeExpression;
@ -127,8 +123,8 @@ public class EdmTypeInfo {
try { try {
primitiveType = EdmPrimitiveTypeKind.valueOf(fullQualifiedName.getName()); primitiveType = EdmPrimitiveTypeKind.valueOf(fullQualifiedName.getName());
} catch (IllegalArgumentException e) { } catch (final IllegalArgumentException e) {
LOG.debug("{} does not appear to refer to an Edm primitive type", fullQualifiedName); primitiveType = null;
} }
if (primitiveType == null && this.edm != null) { if (primitiveType == null && this.edm != null) {
typeDefinition = this.edm.getTypeDefinition(fullQualifiedName); typeDefinition = this.edm.getTypeDefinition(fullQualifiedName);

View File

@ -33,105 +33,71 @@ abstract class AbstractAtomDealer {
protected final ODataServiceVersion version; protected final ODataServiceVersion version;
protected final String namespaceMetadata;
protected final String namespaceData;
protected final QName etagQName; protected final QName etagQName;
protected final QName metadataEtagQName; protected final QName metadataEtagQName;
protected final QName inlineQName; protected final QName inlineQName;
protected final QName actionQName; protected final QName actionQName;
protected final QName propertiesQName; protected final QName propertiesQName;
protected final QName typeQName; protected final QName typeQName;
protected final QName nullQName; protected final QName nullQName;
protected final QName elementQName; protected final QName elementQName;
protected final QName countQName; protected final QName countQName;
protected final QName uriQName; protected final QName uriQName;
protected final QName nextQName; protected final QName nextQName;
protected final QName annotationQName; protected final QName annotationQName;
protected final QName contextQName; protected final QName contextQName;
protected final QName entryRefQName; protected final QName entryRefQName;
protected final QName propertyValueQName; protected final QName propertyValueQName;
protected final QName deletedEntryQName; protected final QName deletedEntryQName;
protected final QName reasonQName; protected final QName reasonQName;
protected final QName linkQName; protected final QName linkQName;
protected final QName deletedLinkQName; protected final QName deletedLinkQName;
protected final QName errorCodeQName; protected final QName errorCodeQName;
protected final QName errorMessageQName; protected final QName errorMessageQName;
protected final QName errorTargetQName; protected final QName errorTargetQName;
public AbstractAtomDealer(final ODataServiceVersion version) { public AbstractAtomDealer(final ODataServiceVersion version) {
this.version = version; this.version = version;
etagQName = namespaceMetadata = version.getNamespace(ODataServiceVersion.NamespaceKey.METADATA);
new QName(version.getNamespaceMap().get(ODataServiceVersion.NS_METADATA), Constants.ATOM_ATTR_ETAG); namespaceData = version.getNamespace(ODataServiceVersion.NamespaceKey.DATASERVICES);
metadataEtagQName =
new QName(version.getNamespaceMap().get(ODataServiceVersion.NS_METADATA), Constants.ATOM_ATTR_METADATAETAG); etagQName = new QName(namespaceMetadata, Constants.ATOM_ATTR_ETAG);
inlineQName = metadataEtagQName = new QName(namespaceMetadata, Constants.ATOM_ATTR_METADATAETAG);
new QName(version.getNamespaceMap().get(ODataServiceVersion.NS_METADATA), Constants.ATOM_ELEM_INLINE); inlineQName = new QName(namespaceMetadata, Constants.ATOM_ELEM_INLINE);
actionQName = actionQName = new QName(namespaceMetadata, Constants.ATOM_ELEM_ACTION);
new QName(version.getNamespaceMap().get(ODataServiceVersion.NS_METADATA), Constants.ATOM_ELEM_ACTION); propertiesQName = new QName(namespaceMetadata, Constants.PROPERTIES);
propertiesQName = typeQName = new QName(namespaceMetadata, Constants.ATTR_TYPE);
new QName(version.getNamespaceMap().get(ODataServiceVersion.NS_METADATA), Constants.PROPERTIES); nullQName = new QName(namespaceMetadata, Constants.ATTR_NULL);
typeQName = new QName(version.getNamespaceMap().get(ODataServiceVersion.NS_METADATA), Constants.ATTR_TYPE); elementQName = new QName(version.compareTo(ODataServiceVersion.V40) < 0 ? namespaceData : namespaceMetadata,
nullQName = new QName(version.getNamespaceMap().get(ODataServiceVersion.NS_METADATA), Constants.ATTR_NULL); Constants.ELEM_ELEMENT);
elementQName = version.compareTo(ODataServiceVersion.V40) < 0 countQName = new QName(namespaceMetadata, Constants.ATOM_ELEM_COUNT);
? new QName(version.getNamespaceMap().get(ODataServiceVersion.NS_DATASERVICES), Constants.ELEM_ELEMENT) uriQName = new QName(namespaceData, Constants.ELEM_URI);
: new QName(version.getNamespaceMap().get(ODataServiceVersion.NS_METADATA), Constants.ELEM_ELEMENT); nextQName = new QName(namespaceData, Constants.NEXT_LINK_REL);
countQName = annotationQName = new QName(namespaceMetadata, Constants.ANNOTATION);
new QName(version.getNamespaceMap().get(ODataServiceVersion.NS_METADATA), Constants.ATOM_ELEM_COUNT); contextQName = new QName(namespaceMetadata, Constants.CONTEXT);
uriQName = entryRefQName = new QName(namespaceMetadata, Constants.ATOM_ELEM_ENTRY_REF);
new QName(version.getNamespaceMap().get(ODataServiceVersion.NS_DATASERVICES), Constants.ELEM_URI); propertyValueQName = new QName(namespaceMetadata, Constants.VALUE);
nextQName =
new QName(version.getNamespaceMap().get(ODataServiceVersion.NS_DATASERVICES), Constants.NEXT_LINK_REL);
annotationQName =
new QName(version.getNamespaceMap().get(ODataServiceVersion.NS_METADATA), Constants.ANNOTATION);
contextQName =
new QName(version.getNamespaceMap().get(ODataServiceVersion.NS_METADATA), Constants.CONTEXT);
entryRefQName =
new QName(version.getNamespaceMap().get(ODataServiceVersion.NS_METADATA), Constants.ATOM_ELEM_ENTRY_REF);
propertyValueQName =
new QName(version.getNamespaceMap().get(ODataServiceVersion.NS_METADATA), Constants.VALUE);
deletedEntryQName = new QName(Constants.NS_ATOM_TOMBSTONE, Constants.ATOM_ELEM_DELETED_ENTRY); deletedEntryQName = new QName(Constants.NS_ATOM_TOMBSTONE, Constants.ATOM_ELEM_DELETED_ENTRY);
reasonQName = reasonQName = new QName(namespaceMetadata, Constants.ELEM_REASON);
new QName(version.getNamespaceMap().get(ODataServiceVersion.NS_METADATA), Constants.ELEM_REASON); linkQName = new QName(namespaceMetadata, Constants.ATOM_ELEM_LINK);
linkQName = deletedLinkQName = new QName(namespaceMetadata, Constants.ELEM_DELETED_LINK);
new QName(version.getNamespaceMap().get(ODataServiceVersion.NS_METADATA), Constants.ATOM_ELEM_LINK);
deletedLinkQName =
new QName(version.getNamespaceMap().get(ODataServiceVersion.NS_METADATA), Constants.ELEM_DELETED_LINK);
errorCodeQName = errorCodeQName = new QName(namespaceMetadata, Constants.ERROR_CODE);
new QName(version.getNamespaceMap().get(ODataServiceVersion.NS_METADATA), Constants.ERROR_CODE); errorMessageQName = new QName(namespaceMetadata, Constants.ERROR_MESSAGE);
errorMessageQName = errorTargetQName = new QName(namespaceMetadata, Constants.ERROR_TARGET);
new QName(version.getNamespaceMap().get(ODataServiceVersion.NS_METADATA), Constants.ERROR_MESSAGE);
errorTargetQName =
new QName(version.getNamespaceMap().get(ODataServiceVersion.NS_METADATA), Constants.ERROR_TARGET);
} }
protected void namespaces(final XMLStreamWriter writer) throws XMLStreamException { protected void namespaces(final XMLStreamWriter writer) throws XMLStreamException {
writer.writeNamespace(StringUtils.EMPTY, Constants.NS_ATOM); writer.writeNamespace(StringUtils.EMPTY, Constants.NS_ATOM);
writer.writeNamespace(XMLConstants.XML_NS_PREFIX, XMLConstants.XML_NS_URI); writer.writeNamespace(XMLConstants.XML_NS_PREFIX, XMLConstants.XML_NS_URI);
writer.writeNamespace(Constants.PREFIX_METADATA, version.getNamespaceMap().get(ODataServiceVersion.NS_METADATA)); writer.writeNamespace(Constants.PREFIX_METADATA, version.getNamespace(ODataServiceVersion.NamespaceKey.METADATA));
writer.writeNamespace( writer.writeNamespace(Constants.PREFIX_DATASERVICES,
Constants.PREFIX_DATASERVICES, version.getNamespaceMap().get(ODataServiceVersion.NS_DATASERVICES)); version.getNamespace(ODataServiceVersion.NamespaceKey.DATASERVICES));
writer.writeNamespace(Constants.PREFIX_GML, Constants.NS_GML); writer.writeNamespace(Constants.PREFIX_GML, Constants.NS_GML);
writer.writeNamespace(Constants.PREFIX_GEORSS, Constants.NS_GEORSS); writer.writeNamespace(Constants.PREFIX_GEORSS, Constants.NS_GEORSS);
} }

View File

@ -54,6 +54,7 @@ import org.apache.olingo.commons.api.edm.EdmPrimitiveType;
import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeException; import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeException;
import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeKind; import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeKind;
import org.apache.olingo.commons.api.edm.constants.ODataServiceVersion; import org.apache.olingo.commons.api.edm.constants.ODataServiceVersion;
import org.apache.olingo.commons.api.edm.constants.ODataServiceVersion.NamespaceKey;
import org.apache.olingo.commons.api.edm.geo.Geospatial; import org.apache.olingo.commons.api.edm.geo.Geospatial;
import org.apache.olingo.commons.api.format.ContentType; import org.apache.olingo.commons.api.format.ContentType;
import org.apache.olingo.commons.api.serialization.ODataDeserializer; import org.apache.olingo.commons.api.serialization.ODataDeserializer;
@ -157,12 +158,12 @@ public class AtomDeserializer extends AbstractAtomDealer implements ODataDeseria
} }
if (link.getRel().startsWith( if (link.getRel().startsWith(
version.getNamespaceMap().get(ODataServiceVersion.NAVIGATION_LINK_REL))) { version.getNamespace(ODataServiceVersion.NamespaceKey.NAVIGATION_LINK_REL))) {
((LinkedComplexValue) value).getNavigationLinks().add(link); ((LinkedComplexValue) value).getNavigationLinks().add(link);
inline(reader, event.asStartElement(), link); inline(reader, event.asStartElement(), link);
} else if (link.getRel().startsWith( } else if (link.getRel().startsWith(
version.getNamespaceMap().get(ODataServiceVersion.ASSOCIATION_LINK_REL))) { version.getNamespace(ODataServiceVersion.NamespaceKey.ASSOCIATION_LINK_REL))) {
((Valuable) value).asLinkedComplex().getAssociationLinks().add(link); ((Valuable) value).asLinkedComplex().getAssociationLinks().add(link);
} }
@ -468,7 +469,7 @@ public class AtomDeserializer extends AbstractAtomDealer implements ODataDeseria
delta.setNext(URI.create(href.getValue())); delta.setNext(URI.create(href.getValue()));
} }
} }
if (Constants.DELTA_LINK_REL.equals(rel.getValue())) { if (ODataServiceVersion.V40.getNamespace(NamespaceKey.DELTA_LINK_REL).equals(rel.getValue())) {
final Attribute href = event.asStartElement().getAttributeByName(QName.valueOf(Constants.ATTR_HREF)); final Attribute href = event.asStartElement().getAttributeByName(QName.valueOf(Constants.ATTR_HREF));
if (href != null) { if (href != null) {
delta.setDeltaLink(URI.create(href.getValue())); delta.setDeltaLink(URI.create(href.getValue()));
@ -678,16 +679,16 @@ public class AtomDeserializer extends AbstractAtomDealer implements ODataDeseria
entity.setMediaETag(mediaETag.getValue()); entity.setMediaETag(mediaETag.getValue());
} }
} else if (link.getRel().startsWith( } else if (link.getRel().startsWith(
version.getNamespaceMap().get(ODataServiceVersion.NAVIGATION_LINK_REL))) { version.getNamespace(ODataServiceVersion.NamespaceKey.NAVIGATION_LINK_REL))) {
entity.getNavigationLinks().add(link); entity.getNavigationLinks().add(link);
inline(reader, event.asStartElement(), link); inline(reader, event.asStartElement(), link);
} else if (link.getRel().startsWith( } else if (link.getRel().startsWith(
version.getNamespaceMap().get(ODataServiceVersion.ASSOCIATION_LINK_REL))) { version.getNamespace(ODataServiceVersion.NamespaceKey.ASSOCIATION_LINK_REL))) {
entity.getAssociationLinks().add(link); entity.getAssociationLinks().add(link);
} else if (link.getRel().startsWith( } else if (link.getRel().startsWith(
version.getNamespaceMap().get(ODataServiceVersion.MEDIA_EDIT_LINK_REL))) { version.getNamespace(ODataServiceVersion.NamespaceKey.MEDIA_EDIT_LINK_REL))) {
final Attribute metag = event.asStartElement().getAttributeByName(etagQName); final Attribute metag = event.asStartElement().getAttributeByName(etagQName);
if (metag != null) { if (metag != null) {
@ -810,7 +811,7 @@ public class AtomDeserializer extends AbstractAtomDealer implements ODataDeseria
entitySet.setNext(URI.create(href.getValue())); entitySet.setNext(URI.create(href.getValue()));
} }
} }
if (Constants.DELTA_LINK_REL.equals(rel.getValue())) { if (ODataServiceVersion.V40.getNamespace(NamespaceKey.DELTA_LINK_REL).equals(rel.getValue())) {
final Attribute href = event.asStartElement().getAttributeByName(QName.valueOf(Constants.ATTR_HREF)); final Attribute href = event.asStartElement().getAttributeByName(QName.valueOf(Constants.ATTR_HREF));
if (href != null) { if (href != null) {
entitySet.setDeltaLink(URI.create(href.getValue())); entitySet.setDeltaLink(URI.create(href.getValue()));

View File

@ -41,6 +41,7 @@ import org.apache.olingo.commons.api.domain.ODataOperation;
import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeException; import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeException;
import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeKind; import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeKind;
import org.apache.olingo.commons.api.edm.constants.ODataServiceVersion; import org.apache.olingo.commons.api.edm.constants.ODataServiceVersion;
import org.apache.olingo.commons.api.edm.constants.ODataServiceVersion.NamespaceKey;
import org.apache.olingo.commons.api.edm.geo.Geospatial; import org.apache.olingo.commons.api.edm.geo.Geospatial;
import org.apache.olingo.commons.api.format.ContentType; import org.apache.olingo.commons.api.format.ContentType;
import org.apache.olingo.commons.api.serialization.ODataSerializer; import org.apache.olingo.commons.api.serialization.ODataSerializer;
@ -77,11 +78,9 @@ public class AtomSerializer extends AbstractAtomDealer implements ODataSerialize
throws XMLStreamException, EdmPrimitiveTypeException { throws XMLStreamException, EdmPrimitiveTypeException {
for (Object item : value) { for (Object item : value) {
if (version.compareTo(ODataServiceVersion.V40) < 0) { if (version.compareTo(ODataServiceVersion.V40) < 0) {
writer.writeStartElement(Constants.PREFIX_DATASERVICES, Constants.ELEM_ELEMENT, writer.writeStartElement(Constants.PREFIX_DATASERVICES, Constants.ELEM_ELEMENT, namespaceData);
version.getNamespaceMap().get(ODataServiceVersion.NS_DATASERVICES));
} else { } else {
writer.writeStartElement(Constants.PREFIX_METADATA, Constants.ELEM_ELEMENT, writer.writeStartElement(Constants.PREFIX_METADATA, Constants.ELEM_ELEMENT, namespaceMetadata);
version.getNamespaceMap().get(ODataServiceVersion.NS_METADATA));
} }
value(writer, valueType, kind, item); value(writer, valueType, kind, item);
writer.writeEndElement(); writer.writeEndElement();
@ -93,7 +92,7 @@ public class AtomSerializer extends AbstractAtomDealer implements ODataSerialize
final ValueType valueType, final EdmPrimitiveTypeKind kind, final Object value) final ValueType valueType, final EdmPrimitiveTypeKind kind, final Object value)
throws XMLStreamException, EdmPrimitiveTypeException { throws XMLStreamException, EdmPrimitiveTypeException {
if (value == null) { if (value == null) {
writer.writeAttribute(Constants.PREFIX_METADATA, version.getNamespaceMap().get(ODataServiceVersion.NS_METADATA), writer.writeAttribute(Constants.PREFIX_METADATA, namespaceMetadata,
Constants.ATTR_NULL, Boolean.TRUE.toString()); Constants.ATTR_NULL, Boolean.TRUE.toString());
return; return;
} }
@ -133,11 +132,9 @@ public class AtomSerializer extends AbstractAtomDealer implements ODataSerialize
throws XMLStreamException, EdmPrimitiveTypeException { throws XMLStreamException, EdmPrimitiveTypeException {
if (version.compareTo(ODataServiceVersion.V40) >= 0 && standalone) { if (version.compareTo(ODataServiceVersion.V40) >= 0 && standalone) {
writer.writeStartElement(Constants.PREFIX_METADATA, Constants.VALUE, writer.writeStartElement(Constants.PREFIX_METADATA, Constants.VALUE, namespaceData);
version.getNamespaceMap().get(ODataServiceVersion.NS_DATASERVICES));
} else { } else {
writer.writeStartElement(Constants.PREFIX_DATASERVICES, property.getName(), writer.writeStartElement(Constants.PREFIX_DATASERVICES, property.getName(), namespaceData);
version.getNamespaceMap().get(ODataServiceVersion.NS_DATASERVICES));
} }
if (standalone) { if (standalone) {
@ -148,8 +145,7 @@ public class AtomSerializer extends AbstractAtomDealer implements ODataSerialize
if (StringUtils.isNotBlank(property.getType())) { if (StringUtils.isNotBlank(property.getType())) {
typeInfo = new EdmTypeInfo.Builder().setTypeExpression(property.getType()).build(); typeInfo = new EdmTypeInfo.Builder().setTypeExpression(property.getType()).build();
if (!EdmPrimitiveTypeKind.String.getFullQualifiedName().toString().equals(typeInfo.internal())) { if (!EdmPrimitiveTypeKind.String.getFullQualifiedName().toString().equals(typeInfo.internal())) {
writer.writeAttribute(Constants.PREFIX_METADATA, writer.writeAttribute(Constants.PREFIX_METADATA, namespaceMetadata,
version.getNamespaceMap().get(ODataServiceVersion.NS_METADATA),
Constants.ATTR_TYPE, typeInfo.external(version)); Constants.ATTR_TYPE, typeInfo.external(version));
} }
} }
@ -213,8 +209,7 @@ public class AtomSerializer extends AbstractAtomDealer implements ODataSerialize
} }
if (link.getInlineEntity() != null || link.getInlineEntitySet() != null) { if (link.getInlineEntity() != null || link.getInlineEntitySet() != null) {
writer.writeStartElement(Constants.PREFIX_METADATA, Constants.ATOM_ELEM_INLINE, writer.writeStartElement(Constants.PREFIX_METADATA, Constants.ATOM_ELEM_INLINE, namespaceMetadata);
version.getNamespaceMap().get(ODataServiceVersion.NS_METADATA));
if (link.getInlineEntity() != null) { if (link.getInlineEntity() != null) {
writer.writeStartElement(Constants.ATOM_ELEM_ENTRY); writer.writeStartElement(Constants.ATOM_ELEM_ENTRY);
@ -257,8 +252,7 @@ public class AtomSerializer extends AbstractAtomDealer implements ODataSerialize
private void annotation(final XMLStreamWriter writer, final Annotation annotation, final String target) private void annotation(final XMLStreamWriter writer, final Annotation annotation, final String target)
throws XMLStreamException, EdmPrimitiveTypeException { throws XMLStreamException, EdmPrimitiveTypeException {
writer.writeStartElement(Constants.PREFIX_METADATA, Constants.ANNOTATION, writer.writeStartElement(Constants.PREFIX_METADATA, Constants.ANNOTATION, namespaceMetadata);
version.getNamespaceMap().get(ODataServiceVersion.NS_METADATA));
writer.writeAttribute(Constants.ATOM_ATTR_TERM, annotation.getTerm()); writer.writeAttribute(Constants.ATOM_ATTR_TERM, annotation.getTerm());
@ -270,8 +264,7 @@ public class AtomSerializer extends AbstractAtomDealer implements ODataSerialize
if (StringUtils.isNotBlank(annotation.getType())) { if (StringUtils.isNotBlank(annotation.getType())) {
typeInfo = new EdmTypeInfo.Builder().setTypeExpression(annotation.getType()).build(); typeInfo = new EdmTypeInfo.Builder().setTypeExpression(annotation.getType()).build();
if (!EdmPrimitiveTypeKind.String.getFullQualifiedName().toString().equals(typeInfo.internal())) { if (!EdmPrimitiveTypeKind.String.getFullQualifiedName().toString().equals(typeInfo.internal())) {
writer.writeAttribute(Constants.PREFIX_METADATA, writer.writeAttribute(Constants.PREFIX_METADATA, namespaceMetadata,
version.getNamespaceMap().get(ODataServiceVersion.NS_METADATA),
Constants.ATTR_TYPE, typeInfo.external(version)); Constants.ATTR_TYPE, typeInfo.external(version));
} }
} }
@ -289,9 +282,7 @@ public class AtomSerializer extends AbstractAtomDealer implements ODataSerialize
} }
if (serverMode && StringUtils.isNotBlank(entity.getETag())) { if (serverMode && StringUtils.isNotBlank(entity.getETag())) {
writer.writeAttribute( writer.writeAttribute(namespaceMetadata, Constants.ATOM_ATTR_ETAG, entity.getETag());
version.getNamespaceMap().get(ODataServiceVersion.NS_METADATA),
Constants.ATOM_ATTR_ETAG, entity.getETag());
} }
if (entity.getId() != null) { if (entity.getId() != null) {
@ -301,7 +292,7 @@ public class AtomSerializer extends AbstractAtomDealer implements ODataSerialize
} }
writer.writeStartElement(Constants.ATOM_ELEM_CATEGORY); writer.writeStartElement(Constants.ATOM_ELEM_CATEGORY);
writer.writeAttribute(Constants.ATOM_ATTR_SCHEME, version.getNamespaceMap().get(ODataServiceVersion.NS_SCHEME)); writer.writeAttribute(Constants.ATOM_ATTR_SCHEME, version.getNamespace(ODataServiceVersion.NamespaceKey.SCHEME));
if (StringUtils.isNotBlank(entity.getType())) { if (StringUtils.isNotBlank(entity.getType())) {
writer.writeAttribute(Constants.ATOM_ATTR_TERM, writer.writeAttribute(Constants.ATOM_ATTR_TERM,
new EdmTypeInfo.Builder().setTypeExpression(entity.getType()).build().external(version)); new EdmTypeInfo.Builder().setTypeExpression(entity.getType()).build().external(version));
@ -328,8 +319,7 @@ public class AtomSerializer extends AbstractAtomDealer implements ODataSerialize
if (serverMode) { if (serverMode) {
for (ODataOperation operation : entity.getOperations()) { for (ODataOperation operation : entity.getOperations()) {
writer.writeStartElement( writer.writeStartElement(namespaceMetadata, Constants.ATOM_ELEM_ACTION);
version.getNamespaceMap().get(ODataServiceVersion.NS_METADATA), Constants.ATOM_ELEM_ACTION);
writer.writeAttribute(Constants.ATTR_METADATA, operation.getMetadataAnchor()); writer.writeAttribute(Constants.ATTR_METADATA, operation.getMetadataAnchor());
writer.writeAttribute(Constants.ATTR_TITLE, operation.getTitle()); writer.writeAttribute(Constants.ATTR_TITLE, operation.getTitle());
writer.writeAttribute(Constants.ATTR_TARGET, operation.getTarget().toASCIIString()); writer.writeAttribute(Constants.ATTR_TARGET, operation.getTarget().toASCIIString());
@ -347,11 +337,11 @@ public class AtomSerializer extends AbstractAtomDealer implements ODataSerialize
} }
writer.writeEndElement(); writer.writeEndElement();
writer.writeStartElement(version.getNamespaceMap().get(ODataServiceVersion.NS_METADATA), Constants.PROPERTIES); writer.writeStartElement(namespaceMetadata, Constants.PROPERTIES);
properties(writer, entity.getProperties()); properties(writer, entity.getProperties());
} else { } else {
writer.writeAttribute(Constants.ATTR_TYPE, ContentType.APPLICATION_XML.toContentTypeString()); writer.writeAttribute(Constants.ATTR_TYPE, ContentType.APPLICATION_XML.toContentTypeString());
writer.writeStartElement(version.getNamespaceMap().get(ODataServiceVersion.NS_METADATA), Constants.PROPERTIES); writer.writeStartElement(namespaceMetadata, Constants.PROPERTIES);
properties(writer, entity.getProperties()); properties(writer, entity.getProperties());
writer.writeEndElement(); writer.writeEndElement();
} }
@ -364,13 +354,13 @@ public class AtomSerializer extends AbstractAtomDealer implements ODataSerialize
private void entityRef(final XMLStreamWriter writer, final Entity entity) throws XMLStreamException { private void entityRef(final XMLStreamWriter writer, final Entity entity) throws XMLStreamException {
writer.writeStartElement(Constants.ATOM_ELEM_ENTRY_REF); writer.writeStartElement(Constants.ATOM_ELEM_ENTRY_REF);
writer.writeNamespace(StringUtils.EMPTY, version.getNamespaceMap().get(ODataServiceVersion.NS_METADATA)); writer.writeNamespace(StringUtils.EMPTY, namespaceMetadata);
writer.writeAttribute(Constants.ATOM_ATTR_ID, entity.getId().toASCIIString()); writer.writeAttribute(Constants.ATOM_ATTR_ID, entity.getId().toASCIIString());
} }
private void entityRef(final XMLStreamWriter writer, final ResWrap<Entity> container) throws XMLStreamException { private void entityRef(final XMLStreamWriter writer, final ResWrap<Entity> container) throws XMLStreamException {
writer.writeStartElement(Constants.ATOM_ELEM_ENTRY_REF); writer.writeStartElement(Constants.ATOM_ELEM_ENTRY_REF);
writer.writeNamespace(StringUtils.EMPTY, version.getNamespaceMap().get(ODataServiceVersion.NS_METADATA)); writer.writeNamespace(StringUtils.EMPTY, namespaceMetadata);
addContextInfo(writer, container); addContextInfo(writer, container);
writer.writeAttribute(Constants.ATOM_ATTR_ID, container.getPayload().getId().toASCIIString()); writer.writeAttribute(Constants.ATOM_ATTR_ID, container.getPayload().getId().toASCIIString());
} }
@ -381,7 +371,7 @@ public class AtomSerializer extends AbstractAtomDealer implements ODataSerialize
if (entity.getType() == null && entity.getProperties().isEmpty()) { if (entity.getType() == null && entity.getProperties().isEmpty()) {
writer.writeStartDocument(); writer.writeStartDocument();
writer.setDefaultNamespace(version.getNamespaceMap().get(ODataServiceVersion.NS_METADATA)); writer.setDefaultNamespace(namespaceMetadata);
entityRef(writer, entity); entityRef(writer, entity);
} else { } else {
@ -403,7 +393,7 @@ public class AtomSerializer extends AbstractAtomDealer implements ODataSerialize
if (entity.getType() == null && entity.getProperties().isEmpty()) { if (entity.getType() == null && entity.getProperties().isEmpty()) {
writer.writeStartDocument(); writer.writeStartDocument();
writer.setDefaultNamespace(version.getNamespaceMap().get(ODataServiceVersion.NS_METADATA)); writer.setDefaultNamespace(namespaceMetadata);
entityRef(writer, container); entityRef(writer, container);
} else { } else {
@ -426,8 +416,7 @@ public class AtomSerializer extends AbstractAtomDealer implements ODataSerialize
} }
if (entitySet.getCount() != null) { if (entitySet.getCount() != null) {
writer.writeStartElement( writer.writeStartElement(namespaceMetadata, Constants.ATOM_ELEM_COUNT);
version.getNamespaceMap().get(ODataServiceVersion.NS_METADATA), Constants.ATOM_ELEM_COUNT);
writer.writeCharacters(Integer.toString(entitySet.getCount())); writer.writeCharacters(Integer.toString(entitySet.getCount()));
writer.writeEndElement(); writer.writeEndElement();
} }
@ -463,7 +452,7 @@ public class AtomSerializer extends AbstractAtomDealer implements ODataSerialize
} }
if (entitySet.getDeltaLink() != null) { if (entitySet.getDeltaLink() != null) {
final LinkImpl next = new LinkImpl(); final LinkImpl next = new LinkImpl();
next.setRel(Constants.DELTA_LINK_REL); next.setRel(ODataServiceVersion.V40.getNamespace(NamespaceKey.DELTA_LINK_REL));
next.setHref(entitySet.getDeltaLink().toASCIIString()); next.setHref(entitySet.getDeltaLink().toASCIIString());
links(writer, Collections.<Link> singletonList(next)); links(writer, Collections.<Link> singletonList(next));
@ -505,7 +494,7 @@ public class AtomSerializer extends AbstractAtomDealer implements ODataSerialize
writer.writeStartDocument(); writer.writeStartDocument();
writer.writeStartElement(Constants.ELEM_LINKS); writer.writeStartElement(Constants.ELEM_LINKS);
writer.writeDefaultNamespace(version.getNamespaceMap().get(ODataServiceVersion.NS_DATASERVICES)); writer.writeDefaultNamespace(namespaceData);
writer.writeStartElement(Constants.ELEM_URI); writer.writeStartElement(Constants.ELEM_URI);
writer.writeCharacters(link.getHref()); writer.writeCharacters(link.getHref());
@ -570,16 +559,12 @@ public class AtomSerializer extends AbstractAtomDealer implements ODataSerialize
((EntityImpl) container.getPayload()).setBaseURI(base); ((EntityImpl) container.getPayload()).setBaseURI(base);
} }
writer.writeAttribute( writer.writeAttribute(namespaceMetadata, Constants.CONTEXT,
version.getNamespaceMap().get(ODataServiceVersion.NS_METADATA),
Constants.CONTEXT,
container.getContextURL().getURI().toASCIIString()); container.getContextURL().getURI().toASCIIString());
} }
if (StringUtils.isNotBlank(container.getMetadataETag())) { if (StringUtils.isNotBlank(container.getMetadataETag())) {
writer.writeAttribute( writer.writeAttribute(namespaceMetadata, Constants.ATOM_ATTR_METADATAETAG,
version.getNamespaceMap().get(ODataServiceVersion.NS_METADATA),
Constants.ATOM_ATTR_METADATAETAG,
container.getMetadataETag()); container.getMetadataETag());
} }
} }

View File

@ -97,21 +97,21 @@ public class JsonDeserializer implements ODataDeserializer {
this.version = version; this.version = version;
this.serverMode = serverMode; this.serverMode = serverMode;
jsonType = version.getJSONMap().get(ODataServiceVersion.JSON_TYPE); jsonType = version.getJsonName(ODataServiceVersion.JsonKey.TYPE);
jsonId = version.getJSONMap().get(ODataServiceVersion.JSON_ID); jsonId = version.getJsonName(ODataServiceVersion.JsonKey.ID);
jsonETag = version.getJSONMap().get(ODataServiceVersion.JSON_ETAG); jsonETag = version.getJsonName(ODataServiceVersion.JsonKey.ETAG);
jsonReadLink = version.getJSONMap().get(ODataServiceVersion.JSON_READ_LINK); jsonReadLink = version.getJsonName(ODataServiceVersion.JsonKey.READ_LINK);
jsonEditLink = version.getJSONMap().get(ODataServiceVersion.JSON_EDIT_LINK); jsonEditLink = version.getJsonName(ODataServiceVersion.JsonKey.EDIT_LINK);
jsonMediaReadLink = version.getJSONMap().get(ODataServiceVersion.JSON_MEDIAREAD_LINK); jsonMediaReadLink = version.getJsonName(ODataServiceVersion.JsonKey.MEDIA_READ_LINK);
jsonMediaEditLink = version.getJSONMap().get(ODataServiceVersion.JSON_MEDIAEDIT_LINK); jsonMediaEditLink = version.getJsonName(ODataServiceVersion.JsonKey.MEDIA_EDIT_LINK);
jsonMediaContentType = version.getJSONMap().get(ODataServiceVersion.JSON_MEDIA_CONTENT_TYPE); jsonMediaContentType = version.getJsonName(ODataServiceVersion.JsonKey.MEDIA_CONTENT_TYPE);
jsonMediaETag = version.getJSONMap().get(ODataServiceVersion.JSON_MEDIA_ETAG); jsonMediaETag = version.getJsonName(ODataServiceVersion.JsonKey.MEDIA_ETAG);
jsonAssociationLink = version.getJSONMap().get(ODataServiceVersion.JSON_ASSOCIATION_LINK); jsonAssociationLink = version.getJsonName(ODataServiceVersion.JsonKey.ASSOCIATION_LINK);
jsonNavigationLink = version.getJSONMap().get(ODataServiceVersion.JSON_NAVIGATION_LINK); jsonNavigationLink = version.getJsonName(ODataServiceVersion.JsonKey.NAVIGATION_LINK);
jsonCount = version.getJSONMap().get(ODataServiceVersion.JSON_COUNT); jsonCount = version.getJsonName(ODataServiceVersion.JsonKey.COUNT);
jsonNextLink = version.getJSONMap().get(ODataServiceVersion.JSON_NEXT_LINK); jsonNextLink = version.getJsonName(ODataServiceVersion.JsonKey.NEXT_LINK);
jsonDeltaLink = version.getJSONMap().get(ODataServiceVersion.JSON_DELTA_LINK); jsonDeltaLink = version.getJsonName(ODataServiceVersion.JsonKey.DELTA_LINK);
jsonError = version.getJSONMap().get(ODataServiceVersion.JSON_ERROR); jsonError = version.getJsonName(ODataServiceVersion.JsonKey.ERROR);
} }
private JsonGeoValueDeserializer getGeoDeserializer() { private JsonGeoValueDeserializer getGeoDeserializer() {
@ -172,7 +172,7 @@ public class JsonDeserializer implements ODataDeserializer {
if (field.getKey().endsWith(jsonNavigationLink)) { if (field.getKey().endsWith(jsonNavigationLink)) {
final LinkImpl link = new LinkImpl(); final LinkImpl link = new LinkImpl();
link.setTitle(getTitle(field)); link.setTitle(getTitle(field));
link.setRel(version.getNamespaceMap().get(ODataServiceVersion.NAVIGATION_LINK_REL) + getTitle(field)); link.setRel(version.getNamespace(ODataServiceVersion.NamespaceKey.NAVIGATION_LINK_REL) + getTitle(field));
if (field.getValue().isValueNode()) { if (field.getValue().isValueNode()) {
link.setHref(field.getValue().textValue()); link.setHref(field.getValue().textValue());
@ -186,7 +186,7 @@ public class JsonDeserializer implements ODataDeserializer {
} else if (field.getKey().endsWith(jsonAssociationLink)) { } else if (field.getKey().endsWith(jsonAssociationLink)) {
final LinkImpl link = new LinkImpl(); final LinkImpl link = new LinkImpl();
link.setTitle(getTitle(field)); link.setTitle(getTitle(field));
link.setRel(version.getNamespaceMap().get(ODataServiceVersion.ASSOCIATION_LINK_REL) + getTitle(field)); link.setRel(version.getNamespace(ODataServiceVersion.NamespaceKey.ASSOCIATION_LINK_REL) + getTitle(field));
link.setHref(field.getValue().textValue()); link.setHref(field.getValue().textValue());
link.setType(ODataLinkType.ASSOCIATION.toString()); link.setType(ODataLinkType.ASSOCIATION.toString());
linked.getAssociationLinks().add(link); linked.getAssociationLinks().add(link);
@ -206,7 +206,7 @@ public class JsonDeserializer implements ODataDeserializer {
final LinkImpl link = new LinkImpl(); final LinkImpl link = new LinkImpl();
link.setTitle(getTitle(field)); link.setTitle(getTitle(field));
link.setRel(version.getNamespaceMap().get(ODataServiceVersion.NAVIGATION_LINK_REL) + getTitle(field)); link.setRel(version.getNamespace(ODataServiceVersion.NamespaceKey.NAVIGATION_LINK_REL) + getTitle(field));
link.setHref(field.getValue().textValue()); link.setHref(field.getValue().textValue());
link.setType(ODataLinkType.ENTITY_NAVIGATION.toString()); link.setType(ODataLinkType.ENTITY_NAVIGATION.toString());
linked.getNavigationLinks().add(link); linked.getNavigationLinks().add(link);
@ -218,7 +218,7 @@ public class JsonDeserializer implements ODataDeserializer {
final LinkImpl link = new LinkImpl(); final LinkImpl link = new LinkImpl();
link.setTitle(getTitle(field)); link.setTitle(getTitle(field));
link.setRel(version.getNamespaceMap().get(ODataServiceVersion.NAVIGATION_LINK_REL) + getTitle(field)); link.setRel(version.getNamespace(ODataServiceVersion.NamespaceKey.NAVIGATION_LINK_REL) + getTitle(field));
link.setHref(node.asText()); link.setHref(node.asText());
link.setType(ODataLinkType.ENTITY_SET_NAVIGATION.toString()); link.setType(ODataLinkType.ENTITY_SET_NAVIGATION.toString());
linked.getNavigationLinks().add(link); linked.getNavigationLinks().add(link);

View File

@ -155,7 +155,7 @@ public class JsonEntityDeserializer extends JsonDeserializer {
if (field.getKey().endsWith(getJSONAnnotation(jsonMediaEditLink))) { if (field.getKey().endsWith(getJSONAnnotation(jsonMediaEditLink))) {
final LinkImpl link = new LinkImpl(); final LinkImpl link = new LinkImpl();
link.setTitle(getTitle(field)); link.setTitle(getTitle(field));
link.setRel(version.getNamespaceMap().get(ODataServiceVersion.MEDIA_EDIT_LINK_REL) + getTitle(field)); link.setRel(version.getNamespace(ODataServiceVersion.NamespaceKey.MEDIA_EDIT_LINK_REL) + getTitle(field));
link.setHref(field.getValue().textValue()); link.setHref(field.getValue().textValue());
link.setType(ODataLinkType.MEDIA_EDIT.toString()); link.setType(ODataLinkType.MEDIA_EDIT.toString());
entity.getMediaEditLinks().add(link); entity.getMediaEditLinks().add(link);

View File

@ -67,17 +67,17 @@ public class JsonEntitySerializer extends JsonSerializer {
} }
if (StringUtils.isNotBlank(entity.getETag())) { if (StringUtils.isNotBlank(entity.getETag())) {
jgen.writeStringField(version.getJSONMap().get(ODataServiceVersion.JSON_ETAG), entity.getETag()); jgen.writeStringField(version.getJsonName(ODataServiceVersion.JsonKey.ETAG), entity.getETag());
} }
} }
if (StringUtils.isNotBlank(entity.getType())) { if (StringUtils.isNotBlank(entity.getType())) {
jgen.writeStringField(version.getJSONMap().get(ODataServiceVersion.JSON_TYPE), jgen.writeStringField(version.getJsonName(ODataServiceVersion.JsonKey.TYPE),
new EdmTypeInfo.Builder().setTypeExpression(entity.getType()).build().external(version)); new EdmTypeInfo.Builder().setTypeExpression(entity.getType()).build().external(version));
} }
if (entity.getId() != null) { if (entity.getId() != null) {
jgen.writeStringField(version.getJSONMap().get(ODataServiceVersion.JSON_ID), entity.getId().toASCIIString()); jgen.writeStringField(version.getJsonName(ODataServiceVersion.JsonKey.ID), entity.getId().toASCIIString());
} }
for (Annotation annotation : entity.getAnnotations()) { for (Annotation annotation : entity.getAnnotations()) {
@ -89,11 +89,11 @@ public class JsonEntitySerializer extends JsonSerializer {
} }
if (serverMode && entity.getEditLink() != null && StringUtils.isNotBlank(entity.getEditLink().getHref())) { if (serverMode && entity.getEditLink() != null && StringUtils.isNotBlank(entity.getEditLink().getHref())) {
jgen.writeStringField(version.getJSONMap().get(ODataServiceVersion.JSON_EDIT_LINK), jgen.writeStringField(version.getJsonName(ODataServiceVersion.JsonKey.EDIT_LINK),
entity.getEditLink().getHref()); entity.getEditLink().getHref());
if (entity.isMediaEntity()) { if (entity.isMediaEntity()) {
jgen.writeStringField(version.getJSONMap().get(ODataServiceVersion.JSON_MEDIAREAD_LINK), jgen.writeStringField(version.getJsonName(ODataServiceVersion.JsonKey.MEDIA_READ_LINK),
entity.getEditLink().getHref() + "/$value"); entity.getEditLink().getHref() + "/$value");
} }
} }
@ -102,7 +102,7 @@ public class JsonEntitySerializer extends JsonSerializer {
for (Link link : entity.getMediaEditLinks()) { for (Link link : entity.getMediaEditLinks()) {
if (link.getTitle() == null) { if (link.getTitle() == null) {
jgen.writeStringField(version.getJSONMap().get(ODataServiceVersion.JSON_MEDIAEDIT_LINK), link.getHref()); jgen.writeStringField(version.getJsonName(ODataServiceVersion.JsonKey.MEDIA_EDIT_LINK), link.getHref());
} }
if (link.getInlineEntity() != null) { if (link.getInlineEntity() != null) {

View File

@ -65,17 +65,17 @@ public class JsonEntitySetSerializer extends JsonSerializer {
} }
if (entitySet.getId() != null) { if (entitySet.getId() != null) {
jgen.writeStringField(version.getJSONMap().get(ODataServiceVersion.JSON_ID), entitySet.getId().toASCIIString()); jgen.writeStringField(version.getJsonName(ODataServiceVersion.JsonKey.ID), entitySet.getId().toASCIIString());
} }
jgen.writeNumberField(version.getJSONMap().get(ODataServiceVersion.JSON_COUNT), jgen.writeNumberField(version.getJsonName(ODataServiceVersion.JsonKey.COUNT),
entitySet.getCount() == null ? entitySet.getEntities().size() : entitySet.getCount()); entitySet.getCount() == null ? entitySet.getEntities().size() : entitySet.getCount());
if (serverMode) { if (serverMode) {
if (entitySet.getNext() != null) { if (entitySet.getNext() != null) {
jgen.writeStringField(version.getJSONMap().get(ODataServiceVersion.JSON_NEXT_LINK), jgen.writeStringField(version.getJsonName(ODataServiceVersion.JsonKey.NEXT_LINK),
entitySet.getNext().toASCIIString()); entitySet.getNext().toASCIIString());
} }
if (entitySet.getDeltaLink() != null) { if (entitySet.getDeltaLink() != null) {
jgen.writeStringField(version.getJSONMap().get(ODataServiceVersion.JSON_DELTA_LINK), jgen.writeStringField(version.getJsonName(ODataServiceVersion.JsonKey.DELTA_LINK),
entitySet.getDeltaLink().toASCIIString()); entitySet.getDeltaLink().toASCIIString());
} }
} }

View File

@ -60,7 +60,7 @@ public class JsonPropertySerializer extends JsonSerializer {
} }
if (StringUtils.isNotBlank(property.getType())) { if (StringUtils.isNotBlank(property.getType())) {
jgen.writeStringField(version.getJSONMap().get(ODataServiceVersion.JSON_TYPE), jgen.writeStringField(version.getJsonName(ODataServiceVersion.JsonKey.TYPE),
new EdmTypeInfo.Builder().setTypeExpression(property.getType()).build().external(version)); new EdmTypeInfo.Builder().setTypeExpression(property.getType()).build().external(version));
} }

View File

@ -192,7 +192,7 @@ public class JsonSerializer implements ODataSerializer {
if (StringUtils.isNotBlank(link.getHref())) { if (StringUtils.isNotBlank(link.getHref())) {
jgen.writeStringField( jgen.writeStringField(
link.getTitle() + StringUtils.prependIfMissing( link.getTitle() + StringUtils.prependIfMissing(
version.getJSONMap().get(ODataServiceVersion.JSON_MEDIAEDIT_LINK), "@"), version.getJsonName(ODataServiceVersion.JsonKey.MEDIA_EDIT_LINK), "@"),
link.getHref()); link.getHref());
} }
} }
@ -201,7 +201,7 @@ public class JsonSerializer implements ODataSerializer {
for (Link link : linked.getAssociationLinks()) { for (Link link : linked.getAssociationLinks()) {
if (StringUtils.isNotBlank(link.getHref())) { if (StringUtils.isNotBlank(link.getHref())) {
jgen.writeStringField( jgen.writeStringField(
link.getTitle() + version.getJSONMap().get(ODataServiceVersion.JSON_ASSOCIATION_LINK), link.getTitle() + version.getJsonName(ODataServiceVersion.JsonKey.ASSOCIATION_LINK),
link.getHref()); link.getHref());
} }
} }
@ -213,7 +213,7 @@ public class JsonSerializer implements ODataSerializer {
if (StringUtils.isNotBlank(link.getHref())) { if (StringUtils.isNotBlank(link.getHref())) {
jgen.writeStringField( jgen.writeStringField(
link.getTitle() + version.getJSONMap().get(ODataServiceVersion.JSON_NAVIGATION_LINK), link.getTitle() + version.getJsonName(ODataServiceVersion.JsonKey.NAVIGATION_LINK),
link.getHref()); link.getHref());
} }
@ -292,7 +292,7 @@ public class JsonSerializer implements ODataSerializer {
jgen.writeStartObject(); jgen.writeStartObject();
if (typeInfo != null) { if (typeInfo != null) {
jgen.writeStringField(version.getJSONMap().get(ODataServiceVersion.JSON_TYPE), typeInfo.external(version)); jgen.writeStringField(version.getJsonName(ODataServiceVersion.JsonKey.TYPE), typeInfo.external(version));
} }
for (Property property : value) { for (Property property : value) {
@ -337,7 +337,7 @@ public class JsonSerializer implements ODataSerializer {
} }
if (StringUtils.isNotBlank(type)) { if (StringUtils.isNotBlank(type)) {
jgen.writeFieldName( jgen.writeFieldName(
name + StringUtils.prependIfMissing(version.getJSONMap().get(ODataServiceVersion.JSON_TYPE), "@")); name + StringUtils.prependIfMissing(version.getJsonName(ODataServiceVersion.JsonKey.TYPE), "@"));
jgen.writeString(new EdmTypeInfo.Builder().setTypeExpression(type).build().external(version)); jgen.writeString(new EdmTypeInfo.Builder().setTypeExpression(type).build().external(version));
} }
} }

12
pom.xml
View File

@ -217,11 +217,6 @@
<artifactId>cxf-rt-rs-security-oauth2</artifactId> <artifactId>cxf-rt-rs-security-oauth2</artifactId>
<version>${cxf.version}</version> <version>${cxf.version}</version>
</dependency> </dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-rs-extension-providers</artifactId>
<version>${cxf.version}</version>
</dependency>
<dependency> <dependency>
<groupId>org.springframework</groupId> <groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId> <artifactId>spring-web</artifactId>
@ -322,7 +317,7 @@
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId> <artifactId>maven-resources-plugin</artifactId>
<version>2.6</version> <version>2.6</version>
</plugin> </plugin>
<plugin> <plugin>
<groupId>org.sonatype.plugins</groupId> <groupId>org.sonatype.plugins</groupId>
<artifactId>jarjar-maven-plugin</artifactId> <artifactId>jarjar-maven-plugin</artifactId>
@ -408,9 +403,6 @@
<configuration> <configuration>
<redirectTestOutputToFile>true</redirectTestOutputToFile> <redirectTestOutputToFile>true</redirectTestOutputToFile>
<runOrder>alphabetical</runOrder> <runOrder>alphabetical</runOrder>
<encoding>UTF-8</encoding>
<inputEncoding>UTF-8</inputEncoding>
<outputEncoding>UTF-8</outputEncoding>
<argLine>-Dfile.encoding=UTF-8</argLine> <argLine>-Dfile.encoding=UTF-8</argLine>
</configuration> </configuration>
</plugin> </plugin>
@ -421,8 +413,6 @@
<redirectTestOutputToFile>true</redirectTestOutputToFile> <redirectTestOutputToFile>true</redirectTestOutputToFile>
<runOrder>alphabetical</runOrder> <runOrder>alphabetical</runOrder>
<encoding>UTF-8</encoding> <encoding>UTF-8</encoding>
<inputEncoding>UTF-8</inputEncoding>
<outputEncoding>UTF-8</outputEncoding>
<argLine>-Dfile.encoding=UTF-8</argLine> <argLine>-Dfile.encoding=UTF-8</argLine>
</configuration> </configuration>
<executions> <executions>