001package ca.uhn.fhir.rest.method;
002
003/*
004 * #%L
005 * HAPI FHIR - Core Library
006 * %%
007 * Copyright (C) 2014 - 2016 University Health Network
008 * %%
009 * Licensed under the Apache License, Version 2.0 (the "License");
010 * you may not use this file except in compliance with the License.
011 * You may obtain a copy of the License at
012 * 
013 *      http://www.apache.org/licenses/LICENSE-2.0
014 * 
015 * Unless required by applicable law or agreed to in writing, software
016 * distributed under the License is distributed on an "AS IS" BASIS,
017 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
018 * See the License for the specific language governing permissions and
019 * limitations under the License.
020 * #L%
021 */
022
023import java.lang.reflect.Method;
024import java.util.Collections;
025import java.util.Set;
026
027import ca.uhn.fhir.context.FhirContext;
028import ca.uhn.fhir.model.api.IResource;
029import ca.uhn.fhir.rest.annotation.Create;
030import ca.uhn.fhir.rest.api.RequestTypeEnum;
031import ca.uhn.fhir.rest.api.RestOperationTypeEnum;
032import ca.uhn.fhir.rest.client.BaseHttpClientInvocation;
033
034public class CreateMethodBinding extends BaseOutcomeReturningMethodBindingWithResourceParam {
035
036        public CreateMethodBinding(Method theMethod, FhirContext theContext, Object theProvider) {
037                super(theMethod, theContext, Create.class, theProvider);
038        }
039
040        @Override
041        public RestOperationTypeEnum getRestOperationType() {
042                return RestOperationTypeEnum.CREATE;
043        }
044
045        @Override
046        protected Set<RequestTypeEnum> provideAllowableRequestTypes() {
047                return Collections.singleton(RequestTypeEnum.POST);
048        }
049        
050        @Override
051        protected BaseHttpClientInvocation createClientInvocation(Object[] theArgs, IResource theResource) {
052                FhirContext context = getContext();
053
054                BaseHttpClientInvocation retVal = MethodUtil.createCreateInvocation(theResource, context);
055
056                if (theArgs != null) {
057                        for (int idx = 0; idx < theArgs.length; idx++) {
058                                IParameter nextParam = getParameters().get(idx);
059                                nextParam.translateClientArgumentIntoQueryArgument(getContext(), theArgs[idx], null, null);
060                        }
061                }
062
063                return retVal;
064        }
065
066        @Override
067        protected String getMatchingOperation() {
068                return null;
069        }
070
071}