blob: 04d5ef0351ea91cf73c4e53eac1eaf458ee6e20a [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.olingo.fit.proxy.opentype;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import org.apache.olingo.client.api.EdmEnabledODataClient;
import org.apache.olingo.commons.api.edm.constants.ODataServiceVersion;
import org.apache.olingo.ext.proxy.AbstractService;
import org.apache.olingo.ext.proxy.api.AbstractTerm;
import org.apache.olingo.fit.proxy.opentype.opentypesservice.types.AccountInfo;
import org.apache.olingo.fit.proxy.opentype.opentypesservice.types.Color;
import org.apache.olingo.fit.proxy.opentype.opentypesservice.types.ContactDetails;
import org.apache.olingo.fit.proxy.opentype.opentypesservice.types.IndexedRow;
import org.apache.olingo.fit.proxy.opentype.opentypesservice.types.Row;
import org.apache.olingo.fit.proxy.opentype.opentypesservice.types.RowIndex;
public class Service<C extends EdmEnabledODataClient> extends AbstractService<C> {
// CHECKSTYLE:OFF (Maven checkstyle)
private static final String COMPRESSED_METADATA =
"H4sIAAAAAAAAAK1Ya2wUVRS+3d2+n6EVtahIjGgCzFIoUKgWS7c0q9tSu4WQAprbnbvbkXk5c3fZJTyCUX6gRhFfDRGUCCoCGlBCNP5Af4gmxgTQ8Euif4WEREKM+sNz57E7090uM9U/TffsPeee853vnseeuI4qdQ11KVqKwypOTBBOEQU5pXAJUSAy5RKKRjjCS1xWErlMJ7dxMDZIKOYxxVFJFeOHP15y8M870wGEshpa6c1M77hONZygDlvn3u/a0Pj96aMBVBFDITiYpWhBDMyFTXNh01zYNAdCIQyHwmAt3A+Hu+HyZf4uB7UoJVJw46/XJnsu32ABqIBEh2ck2L0Mgg8/aou8t+kAb7hep5Ek0YicIDpFLbFncAaH01QQwzFBp8zLJb69zPY1o52ji9qvBFAghhoYWnGiZQTjiqXeMIo4lLpjqDpDNF1QZIpmmS6KWE6F41QD/e7ss2gXCuqeswlQOM0zSFY9vvfJzYmFlw1IqnUwIGGdma0CBFb5Q8Bp++vrz604+UPvfgOJWQ4kNpjxsCtqY+gOCWcjpb80g1NZpltZ5BxLDteraTjHMpTdc/HeyW/xO0FUEUUhXdhOsipCqGJbiP0FpaWeMYkbUTM02l948afQ2W+2BlA9oAEhgTMmGpBOLMsKBV/HRZbOZgdjBrEKqWqxDoDOgKakVVuxviDP20oocBvJjuZUYsuawTWB5vog11iQiUbRSm+MyXSG+92q4Ey9ac15QS2R05JLkEzLrhArKdGkvD8UjkZIUpCFwhkgRac/UpjgHvvyze/O7wjtNuhQiUXBJBkwoFbGEtHBHHFmnaLFg0JCU3QlSblRwJtbx2jC2fTi1qlENmKxmdNpGGyC5CODAqxGTJVMLwgYgoCv+tpXyCHjTtfrK1bP3XLsjwCqGkOzsF0V8mkYQzWK5XRJTtSMY52wby1g2mScEVLGkWENNDUq5DNXp7ol/gu6w/nmCzvPbrl+z8NmQWfpcGSCoiaDVvC6of4Loo6QH6AbDEGD7rnmA65WtDkG6uqWL3reaNt7zPCtCDQIe7m/sG3bv8dvPtjx6rlXAqgW8iKnRZE96zFUnZaFhMITVr1JEqdFugGLaTsltVCtYkRO0QmKWh3lOCpTkjKeXQE+OK1qJCHY9ewB4L2ewCKxPoR0TeApWljqjSuSBCHmH3mKKOH4SDTC7FObIGZ6KipUeCtNawVNp1aeCK8yWR30I26NIGMtVzo985Ch2xjDU1VnMVV4bmRUkMi6ZFIntKyJWrd6ja1eVik0sD4aKZwfSAt82fOtw2a/5q3LmG+GeiNTNz2N4PKxhtbkKCncyT6VPV8XF1Iy4fNatUwrflu1qoiSBjYV0mB+Lq8Th9Q7dczPZXUq4xOKRgueAQ07lpfVCMIR1/mlS8oDFlPklEtheXGdNTXaKarvTSSUtEyjclKBFuyjTNjl10kqg9NDWHJiYow9ZT2uYXT2pAV+a+gR7zOku8Wy4jQ0/5eG9r/ubg2gyhhqNKcFkENOyrT+OrMxx0n+ULPdht26dbrBAOoodo/6nEjdLt/YN3/ZjY5L6wMoNIZmW+VtyhnoXCLenospmAfz/TKrijz0pqdJlhKZt5v21C6BEIDdEjFN5o3NqP96LOj5jACQLBenrx15e1P0UkMABcfQXYKcENM8icrWdBBREmkJbJTMSHtRo81B3eRtzjDgV8wEePBs29xPDp6OXl5rjD11hZFsGhgp6vQ79XAjyjZ41/C3+MHlBYWheK1ndIemA4WhfajlwOb7Ii/fNOIKqZhOWBFVUaylCHXFFALndNNH0yUBRtuZxBmVeaAhqrH/LROxuzZ542DQELB1ymO68xy0R8ALJ5MPPbV/8d9AwpJM8znSeRxFe4tGzZbPW6/Ef7sFo2jlNKNo7QTWoS4SLLnG0qkzaHAryVG0bPo9hDlSWO+NC54gxuRmLqdzzLwD+VTvK5nLTnVXV/f+I9wlYwJssEDKjZCkBZO5Ahcz3eO8OVwwyG5ru3ron4snf75VvKdMfatQ8AJR3g+/bN8c3Qos3GYEMtV3QCszKE94E80ZVgo/K5FLsMPx7IxkMuGekqE9f1tkCkla/R/KEUtXz67+1Lv7Fp0wdq78GF96vVLkCIF2SigKe9ur11kK7FcYFWsUOprFhdnWT0dUwCJ0O/a8BDnfuB0zuoYe8/eGi8PcMHn+zEtz7u8BRo6hpoTZW/VRo8yWaMRWuS2xpBXnfoYk8sToMgNmthQTvK+H/davGCz/u18+Pv7V8OTR/2s9tG0vUI/M/WDB5KfGqFSZFHFKBxJIRBq3ppoq96rXlIaHoYk5uGDUvaChEu3F+y9Tg8aNLNLjP0YPH8y8hqeN1OfPMqblq28NfTbn5LwzZh93BFSZya+9dhsPjhDYVys6Sr/rU7CODGgE7kMV0+wUp9gCBlbhRIklAvT7FFHRimnqp8Y6zAU7ucVF8n8Bw1KQnkUXAAA=";
private static final String METADATA_ETAG = null;
// CHECKSTYLE:ON (Maven checkstyle)
private static final Map<String, Service<?>> SERVICES = new ConcurrentHashMap<String, Service<?>>();
@SuppressWarnings("unchecked")
private static <C extends EdmEnabledODataClient> Service<C> getInstance(
final ODataServiceVersion version, final String serviceRoot, final boolean transactional) {
if (!SERVICES.containsKey(serviceRoot)) {
final Service<C> instance = new Service<C>(COMPRESSED_METADATA, METADATA_ETAG,
version, serviceRoot, transactional);
SERVICES.put(serviceRoot, instance);
}
return (Service<C>) SERVICES.get(serviceRoot);
}
/**
* Gives an OData 4.0 instance for given service root, operating in transactions (with batch requests).
*
* @param serviceRoot OData service root
* @return OData 4.0 instance for given service root, operating in transactions (with batch requests)
*/
public static Service<EdmEnabledODataClient> getV4(
final String serviceRoot) {
return getV4(serviceRoot, true);
}
/**
* Gives an OData 4.0 instance for given service root.
*
* @param serviceRoot OData service root
* @param transactional whether operating in transactions (with batch requests) or not
* @return OData 4.0 instance for given service root
*/
public static Service<EdmEnabledODataClient> getV4(
final String serviceRoot, final boolean transactional) {
return getInstance(ODataServiceVersion.V40, serviceRoot, transactional);
}
private final Map<String, Class<?>> entityTypes = new HashMap<String, Class<?>>();
private final Map<String, Class<?>> complexTypes = new HashMap<String, Class<?>>();
private final Map<String, Class<?>> enumTypes = new HashMap<String, Class<?>>();
private final Map<String, Class<? extends AbstractTerm>> terms = new HashMap<String, Class<? extends AbstractTerm>>();
public Service(final String compressedMetadata, final String metadataETag,
final ODataServiceVersion version, final String serviceRoot, final boolean transactional) {
super(compressedMetadata, metadataETag, version, serviceRoot, transactional);
// CHECKSTYLE:OFF (Maven checkstyle)
entityTypes.put("Microsoft.Test.OData.Services.OpenTypesServiceV4.Row",
Row.class);
entityTypes
.put(
"Microsoft.Test.OData.Services.OpenTypesServiceV4.IndexedRow",
IndexedRow.class);
entityTypes.put("Microsoft.Test.OData.Services.OpenTypesServiceV4.RowIndex",
RowIndex.class);
complexTypes
.put(
"Microsoft.Test.OData.Services.OpenTypesServiceV4.AccountInfo",
AccountInfo.class);
complexTypes
.put(
"Microsoft.Test.OData.Services.OpenTypesServiceV4.ContactDetails",
ContactDetails.class);
enumTypes.put("Microsoft.Test.OData.Services.OpenTypesServiceV4.Color",
Color.class);
// CHECKSTYLE:ON (Maven checkstyle)
}
@Override
public Class<?> getEntityTypeClass(final String name) {
return entityTypes.get(name);
}
@Override
public Class<?> getComplexTypeClass(final String name) {
return complexTypes.get(name);
}
@Override
public Class<?> getEnumTypeClass(final String name) {
return enumTypes.get(name);
}
@Override
public Class<? extends AbstractTerm> getTermClass(final String name) {
return terms.get(name);
}
}