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}