All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.apache.camel.component.fhir.api.ExtraParameters Maven / Gradle / Ivy

/*
 * 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.camel.component.fhir.api;

import java.util.List;
import java.util.Map;

import ca.uhn.fhir.rest.api.CacheControlDirective;
import ca.uhn.fhir.rest.api.EncodingEnum;
import ca.uhn.fhir.rest.api.SummaryEnum;
import ca.uhn.fhir.rest.gclient.IClientExecutable;
import org.hl7.fhir.instance.model.api.IBaseResource;

/**
 * Encapsulates a list of extra parameters that are valid for all Camel FHIR APIs.
 */
public enum ExtraParameters {

    /**
     * Will encode the request to JSON
     */
    ENCODE_JSON("encodeJson"),

    /**
     * Will encode the request to XML
     */
    ENCODE_XML("encodeXml"),

    /**
     * Sets the Cache-Control header value, which advises the server (or any cache in front of it) how to
     * behave in terms of cached requests"
     */
    CACHE_CONTROL_DIRECTIVE("cacheControlDirective"),

    /**
     * Request that the server return subsetted resources, containing only the elements specified in the given
     * parameters. For example: subsetElements("name", "identifier") requests that the server only return
     * the "name" and "identifier" fields in the returned resource, and omit any others.
     */
    SUBSET_ELEMENTS("subsetElements"),

    ENCODING_ENUM("encodingEnum"),

    /**
     * Explicitly specify a custom structure type to attempt to use when parsing the response. This is useful for
     * invocations where the response is a Bundle/Parameters containing nested resources, and you want to use specific
     * custom structures for those nested resources.
     * 

* See Profiles and Extensions for more * information on using custom structures *

*/ PREFER_RESPONSE_TYPE("preferredResponseType"), /** * Explicitly specify a custom structure type to attempt to use when parsing the response. This is useful for * invocations where the response is a Bundle/Parameters containing nested resources, and you want to use specific * custom structures for those nested resources. *

* See Profiles and Extensions for more * information on using custom structures *

*/ PREFER_RESPONSE_TYPES("preferredResponseTypes"), /** * Pretty print the request */ PRETTY_PRINT("prettyPrint"), /** * Request that the server modify the response using the _summary param */ SUMMARY_ENUM("summaryEnum"); private final String param; private final String headerName; ExtraParameters(String param) { this.param = param; this.headerName = "CamelFhir." + param; } public String getParam() { return param; } public String getHeaderName() { return headerName; } static > void process(Map extraParameters, T clientExecutable) { if (extraParameters == null) { return; } for (Map.Entry entry : extraParameters.entrySet()) { switch (entry.getKey()) { case ENCODE_JSON: Boolean encode = (Boolean) extraParameters.get(ENCODE_JSON); if (Boolean.TRUE.equals(encode)) { clientExecutable.encodedJson(); } break; case ENCODE_XML: Boolean encodeXml = (Boolean) extraParameters.get(ENCODE_XML); if (Boolean.TRUE.equals(encodeXml)) { clientExecutable.encodedXml(); } break; case CACHE_CONTROL_DIRECTIVE: CacheControlDirective cacheControlDirective = (CacheControlDirective) extraParameters.get(CACHE_CONTROL_DIRECTIVE); clientExecutable.cacheControl(cacheControlDirective); break; case SUBSET_ELEMENTS: String[] subsetElements = (String[]) extraParameters.get(SUBSET_ELEMENTS); clientExecutable.elementsSubset(subsetElements); break; case ENCODING_ENUM: EncodingEnum encodingEnum = (EncodingEnum) extraParameters.get(ENCODING_ENUM); clientExecutable.encoded(encodingEnum); break; case PREFER_RESPONSE_TYPE: Class type = (Class) extraParameters.get(PREFER_RESPONSE_TYPE); clientExecutable.preferResponseType(type); break; case PREFER_RESPONSE_TYPES: List> types = (List>) extraParameters.get(PREFER_RESPONSE_TYPES); clientExecutable.preferResponseTypes(types); break; case PRETTY_PRINT: Boolean prettyPrint = (Boolean) extraParameters.get(PRETTY_PRINT); if (Boolean.TRUE.equals(prettyPrint)) { clientExecutable.prettyPrint(); } break; case SUMMARY_ENUM: SummaryEnum summary = (SummaryEnum) extraParameters.get(SUMMARY_ENUM); clientExecutable.summaryMode(summary); break; default: throw new IllegalArgumentException("Unsupported FHIR extra parameter parameter: " + entry.getKey()); } } } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy