JCLOUDS-376: PATCH HTTP request implementation

This commit is contained in:
Ignacio Mulas 2013-11-12 15:44:49 +01:00 committed by Ignasi Barrera
parent 6e78115295
commit d8ce79cecf
2 changed files with 97 additions and 0 deletions

View File

@ -0,0 +1,36 @@
/*
* 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.jclouds.rest.annotations;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import javax.ws.rs.HttpMethod;
/**
* Implements the PATCH HTTP request type
*
* @author Ignacio Mulas
*
*/
@Target({ ElementType.METHOD })
@Retention(RetentionPolicy.RUNTIME)
@HttpMethod("PATCH")
public @interface PATCH {
}

View File

@ -0,0 +1,61 @@
/*
* 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.jclouds.rest.annotationparsing;
import static org.jclouds.providers.AnonymousProviderMetadata.forApiOnEndpoint;
import static org.testng.Assert.assertEquals;
import java.io.Closeable;
import javax.ws.rs.Path;
import org.jclouds.http.HttpRequest;
import org.jclouds.http.HttpResponse;
import org.jclouds.providers.ProviderMetadata;
import org.jclouds.rest.annotations.PATCH;
import org.jclouds.rest.internal.BaseRestClientExpectTest;
import org.testng.annotations.Test;
/**
* Tests the use of the {@link PATCH} annotation.
*
* @author Ignacio Mulas
*
*/
@Test(groups = "unit", testName = "PATCHAnnotationExpectTest")
public class PATCHAnnotationExpectTest extends
BaseRestClientExpectTest<PATCHAnnotationExpectTest.TestPATCHAnnotationApi> {
interface TestPATCHAnnotationApi extends Closeable {
@PATCH
@Path("/PATCH/annotation")
HttpResponse method();
}
@Test
public void testPATCHAnnotation() {
HttpResponse response = HttpResponse.builder().statusCode(200).build();
TestPATCHAnnotationApi testPATCH = requestSendsResponse(
HttpRequest.builder().method("PATCH").endpoint("http://mock/PATCH/annotation").build(), response);
assertEquals(testPATCH.method(), response, "PATCH");
}
@Override
public ProviderMetadata createProviderMetadata() {
return forApiOnEndpoint(TestPATCHAnnotationApi.class, "http://mock");
}
}