Repository: jclouds-labs Updated Branches: refs/heads/master 0cbcf181c -> d7bc430c6
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/d7bc430c/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/admin/AdminQueryApi.java ---------------------------------------------------------------------- diff --git a/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/admin/AdminQueryApi.java b/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/admin/AdminQueryApi.java index ec8dbdb..e25f8be 100644 --- a/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/admin/AdminQueryApi.java +++ b/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/admin/AdminQueryApi.java @@ -16,98 +16,101 @@ */ package org.jclouds.vcloud.director.v1_5.features.admin; +import javax.ws.rs.Consumes; +import javax.ws.rs.GET; +import javax.ws.rs.Path; + +import org.jclouds.rest.annotations.JAXBResponseParser; +import org.jclouds.rest.annotations.QueryParams; +import org.jclouds.rest.annotations.RequestFilters; import org.jclouds.vcloud.director.v1_5.domain.RoleReferences; import org.jclouds.vcloud.director.v1_5.domain.query.QueryResultRecords; import org.jclouds.vcloud.director.v1_5.features.QueryApi; +import org.jclouds.vcloud.director.v1_5.filters.AddVCloudAuthorizationAndCookieToRequest; -/** - * Provides synchronous access to {@link AdminQuery} objects. - * - * @see AdminQueryAsyncApi - */ +@RequestFilters(AddVCloudAuthorizationAndCookieToRequest.class) public interface AdminQueryApi extends QueryApi { - + /** - * Retrieves a list of {@link Group}s for organization the org admin belongs to by using REST API general QueryHandler - * + * Retrieves a list of {@link Group}s for organization the org admin belongs to by using REST API general + * QueryHandler + * * <pre> * GET /admin/groups/query * </pre> - * - * @see #queryAll(String) */ + @GET + @Path("/admin/groups/query") + @Consumes + @JAXBResponseParser QueryResultRecords groupsQueryAll(); - /** @see #queryAll() */ - QueryResultRecords groupsQuery(String filter); - /** * Retrieves a list of {@link Org}s by using REST API general QueryHandler. * * <pre> * GET /admin/orgs/query * </pre> - * - * @see #queryAll(String) */ + @GET + @Path("/admin/orgs/query") + @Consumes + @JAXBResponseParser QueryResultRecords orgsQueryAll(); - /** @see #queryAll() */ - QueryResultRecords orgsQuery(String filter); - /** * Retrieves a list of {@link Right}s by using REST API general QueryHandler. * * <pre> * GET /admin/rights/query * </pre> - * - * @see #queryAll(String) */ + @GET + @Path("/admin/rights/query") + @Consumes + @JAXBResponseParser QueryResultRecords rightsQueryAll(); - /** @see #queryAll() */ - QueryResultRecords rightsQuery(String filter); - /** * Retrieves a list of {@link Role}s by using REST API general QueryHandler. * * <pre> * GET /admin/roles/query * </pre> - * - * @see #queryAll(String) */ + @GET + @Path("/admin/roles/query") + @Consumes + @JAXBResponseParser QueryResultRecords rolesQueryAll(); - /** @see #queryAll() */ - QueryResultRecords rolesQuery(String filter); - /** * Retrieves a list of {@link RoleReference}s by using REST API general QueryHandler. * * <pre> * GET /admin/roles/query?format=references * </pre> - * - * @see #rolesQueryAll(String) */ + @GET + @Path("/admin/roles/query") + @Consumes + @QueryParams(keys = { "format" }, values = { "references" }) + @JAXBResponseParser RoleReferences roleReferencesQueryAll(); - + /** * Retrieves a list of {@link User}s by using REST API general QueryHandler. * * <pre> * GET /admin/strandedUsers/query * </pre> - * - * @see #queryAll(String) */ + @GET + @Path("/admin/strandedUsers/query") + @Consumes + @JAXBResponseParser QueryResultRecords strandedUsersQueryAll(); - /** @see #queryAll() */ - QueryResultRecords strandedUsersQuery(String filter); - /** * Retrieves a list of {@link User}s by using REST API general QueryHandler. * @@ -117,11 +120,12 @@ public interface AdminQueryApi extends QueryApi { * * @see #queryAll(String) */ + @GET + @Path("/admin/users/query") + @Consumes + @JAXBResponseParser QueryResultRecords usersQueryAll(); - /** @see #queryAll() */ - QueryResultRecords usersQuery(String filter); - /** * Retrieves a list of {@link Vdc}s by using REST API general QueryHandler. * @@ -131,8 +135,9 @@ public interface AdminQueryApi extends QueryApi { * * @see #queryAll(String) */ + @GET + @Path("/admin/vdcs/query") + @Consumes + @JAXBResponseParser QueryResultRecords vdcsQueryAll(); - - /** @see #queryAll() */ - QueryResultRecords vdcsQuery(String filter); } http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/d7bc430c/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/admin/AdminQueryAsyncApi.java ---------------------------------------------------------------------- diff --git a/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/admin/AdminQueryAsyncApi.java b/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/admin/AdminQueryAsyncApi.java deleted file mode 100644 index 98f6d6d..0000000 --- a/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/admin/AdminQueryAsyncApi.java +++ /dev/null @@ -1,132 +0,0 @@ -/* - * 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.vcloud.director.v1_5.features.admin; - -import javax.ws.rs.Consumes; -import javax.ws.rs.GET; -import javax.ws.rs.Path; -import javax.ws.rs.QueryParam; - -import org.jclouds.rest.annotations.JAXBResponseParser; -import org.jclouds.rest.annotations.QueryParams; -import org.jclouds.rest.annotations.RequestFilters; -import org.jclouds.vcloud.director.v1_5.domain.RoleReferences; -import org.jclouds.vcloud.director.v1_5.domain.query.QueryResultRecords; -import org.jclouds.vcloud.director.v1_5.features.QueryAsyncApi; -import org.jclouds.vcloud.director.v1_5.filters.AddVCloudAuthorizationAndCookieToRequest; - -import com.google.common.util.concurrent.ListenableFuture; - -/** - * Provides asynchronous access to {@link AdminQuery} objects. - * - * @see AdminQueryApi - */ -@RequestFilters(AddVCloudAuthorizationAndCookieToRequest.class) -public interface AdminQueryAsyncApi extends QueryAsyncApi { - - @GET - @Path("/admin/groups/query") - @Consumes - @JAXBResponseParser - ListenableFuture<QueryResultRecords> groupsQueryAll(); - - @GET - @Path("/admin/groups/query") - @Consumes - @JAXBResponseParser - ListenableFuture<QueryResultRecords> groupsQuery(@QueryParam("filter") String filter); - - @GET - @Path("/admin/orgs/query") - @Consumes - @JAXBResponseParser - ListenableFuture<QueryResultRecords> orgsQueryAll(); - - @GET - @Path("/admin/orgs/query") - @Consumes - @JAXBResponseParser - ListenableFuture<QueryResultRecords> orgsQuery(@QueryParam("filter") String filter); - - @GET - @Path("/admin/rights/query") - @Consumes - @JAXBResponseParser - ListenableFuture<QueryResultRecords> rightsQueryAll(); - - @GET - @Path("/admin/rights/query") - @Consumes - @JAXBResponseParser - ListenableFuture<QueryResultRecords> rightsQuery(@QueryParam("filter") String filter); - - @GET - @Path("/admin/roles/query") - @Consumes - @JAXBResponseParser - ListenableFuture<QueryResultRecords> rolesQueryAll(); - - @GET - @Path("/admin/roles/query") - @Consumes - @JAXBResponseParser - ListenableFuture<QueryResultRecords> rolesQuery(@QueryParam("filter") String filter); - - @GET - @Path("/admin/roles/query") - @Consumes - @QueryParams(keys = { "format" }, values = { "references" }) - @JAXBResponseParser - ListenableFuture<RoleReferences> roleReferencesQueryAll(); - - @GET - @Path("/admin/strandedUsers/query") - @Consumes - @JAXBResponseParser - ListenableFuture<QueryResultRecords> strandedUsersQueryAll(); - - @GET - @Path("/admin/strandedUsers/query") - @Consumes - @JAXBResponseParser - ListenableFuture<QueryResultRecords> strandedUsersQuery(@QueryParam("filter") String filter); - - @GET - @Path("/admin/users/query") - @Consumes - @JAXBResponseParser - ListenableFuture<QueryResultRecords> usersQueryAll(); - - @GET - @Path("/admin/users/query") - @Consumes - @JAXBResponseParser - ListenableFuture<QueryResultRecords> usersQuery(@QueryParam("filter") String filter); - - @GET - @Path("/admin/vdcs/query") - @Consumes - @JAXBResponseParser - ListenableFuture<QueryResultRecords> vdcsQueryAll(); - - @GET - @Path("/admin/vdcs/query") - @Consumes - @JAXBResponseParser - ListenableFuture<QueryResultRecords> vdcsQuery(@QueryParam("filter") String filter); -} http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/d7bc430c/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/admin/AdminVdcApi.java ---------------------------------------------------------------------- diff --git a/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/admin/AdminVdcApi.java b/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/admin/AdminVdcApi.java index efa3795..ae18e8f 100644 --- a/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/admin/AdminVdcApi.java +++ b/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/admin/AdminVdcApi.java @@ -16,17 +16,30 @@ */ package org.jclouds.vcloud.director.v1_5.features.admin; +import static org.jclouds.Fallbacks.NullOnNotFoundOr404; + import java.net.URI; +import javax.ws.rs.Consumes; +import javax.ws.rs.DELETE; +import javax.ws.rs.GET; +import javax.ws.rs.POST; +import javax.ws.rs.PUT; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; + +import org.jclouds.rest.annotations.EndpointParam; +import org.jclouds.rest.annotations.Fallback; +import org.jclouds.rest.annotations.JAXBResponseParser; +import org.jclouds.rest.annotations.RequestFilters; +import org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType; import org.jclouds.vcloud.director.v1_5.domain.AdminVdc; import org.jclouds.vcloud.director.v1_5.domain.Task; import org.jclouds.vcloud.director.v1_5.features.VdcApi; +import org.jclouds.vcloud.director.v1_5.filters.AddVCloudAuthorizationAndCookieToRequest; +import org.jclouds.vcloud.director.v1_5.functions.URNToAdminHref; -/** - * Provides synchronous access to {@link AdminVdc}. - * - * @see AdminVdcAsyncApi - */ +@RequestFilters(AddVCloudAuthorizationAndCookieToRequest.class) public interface AdminVdcApi extends VdcApi { /** @@ -39,42 +52,80 @@ public interface AdminVdcApi extends VdcApi { * @return the admin vDC or null if not found */ @Override - AdminVdc get(String vdcUrn); + @GET + @Consumes + @JAXBResponseParser + @Fallback(NullOnNotFoundOr404.class) + AdminVdc get(@EndpointParam(parser = URNToAdminHref.class) String vdcUrn); @Override - AdminVdc get(URI vdcAdminHref); + @GET + @Consumes + @JAXBResponseParser + @Fallback(NullOnNotFoundOr404.class) + AdminVdc get(@EndpointParam URI vdcAdminHref); /** * Modifies a Virtual Data Center. Virtual Data Center could be enabled or disabled. * Additionally it could have one of these states FAILED_CREATION(-1), NOT_READY(0), * READY(1), UNKNOWN(1) and UNRECOGNIZED(3). */ - Task edit(String vdcUrn, AdminVdc vdc); - - Task edit(URI vdcAdminHref, AdminVdc vdc); + @PUT + @Consumes + @Produces(VCloudDirectorMediaType.ADMIN_VDC) + @JAXBResponseParser + Task edit(@EndpointParam(parser = URNToAdminHref.class) String vdcUrn, AdminVdc vdc); + + @PUT + @Consumes + @Produces(VCloudDirectorMediaType.ADMIN_VDC) + @JAXBResponseParser + Task edit(@EndpointParam URI vdcAdminHref, AdminVdc vdc); /** * Deletes a Virtual Data Center. The Virtual Data Center should be disabled when remove is issued. * Otherwise error code 400 Bad Request is returned. */ // TODO Saw what exception, instead of 400 - Task remove(String vdcUrn); + @DELETE + @Consumes + @JAXBResponseParser + Task remove(@EndpointParam(parser = URNToAdminHref.class) String vdcUrn); - Task remove(URI vdcAdminHref); + @DELETE + @Consumes + @JAXBResponseParser + Task remove(@EndpointParam URI vdcAdminHref); /** * Enables a Virtual Data Center. This operation enables disabled Virtual Data Center. * If it is already enabled this operation has no effect. */ - void enable(String vdcUrn); - - void enable(URI vdcAdminHref); + @POST + @Consumes + @Path("/action/enable") + @JAXBResponseParser + void enable(@EndpointParam(parser = URNToAdminHref.class) String vdcUrn); + + @POST + @Consumes + @Path("/action/enable") + @JAXBResponseParser + void enable(@EndpointParam URI vdcAdminHref); /** * Disables a Virtual Data Center. If the Virtual Data Center is disabled this operation does not * have an effect. */ - void disable(String vdcUrn); + @POST + @Consumes + @Path("/action/disable") + @JAXBResponseParser + void disable(@EndpointParam(parser = URNToAdminHref.class) String vdcUrn); - void disable(URI vdcAdminHref); + @POST + @Consumes + @Path("/action/disable") + @JAXBResponseParser + void disable(@EndpointParam URI vdcAdminHref); } http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/d7bc430c/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/admin/AdminVdcAsyncApi.java ---------------------------------------------------------------------- diff --git a/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/admin/AdminVdcAsyncApi.java b/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/admin/AdminVdcAsyncApi.java deleted file mode 100644 index 74ac1d9..0000000 --- a/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/admin/AdminVdcAsyncApi.java +++ /dev/null @@ -1,137 +0,0 @@ -/* - * 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.vcloud.director.v1_5.features.admin; - -import java.net.URI; - -import javax.ws.rs.Consumes; -import javax.ws.rs.DELETE; -import javax.ws.rs.GET; -import javax.ws.rs.POST; -import javax.ws.rs.PUT; -import javax.ws.rs.Path; -import javax.ws.rs.Produces; - -import org.jclouds.Fallbacks.NullOnNotFoundOr404; -import org.jclouds.rest.annotations.EndpointParam; -import org.jclouds.rest.annotations.Fallback; -import org.jclouds.rest.annotations.JAXBResponseParser; -import org.jclouds.rest.annotations.RequestFilters; -import org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType; -import org.jclouds.vcloud.director.v1_5.domain.AdminVdc; -import org.jclouds.vcloud.director.v1_5.domain.Task; -import org.jclouds.vcloud.director.v1_5.features.VdcAsyncApi; -import org.jclouds.vcloud.director.v1_5.filters.AddVCloudAuthorizationAndCookieToRequest; -import org.jclouds.vcloud.director.v1_5.functions.URNToAdminHref; - -import com.google.common.util.concurrent.ListenableFuture; - -/** - * @see AdminVdcApi - */ -@RequestFilters(AddVCloudAuthorizationAndCookieToRequest.class) -public interface AdminVdcAsyncApi extends VdcAsyncApi { - /** - * @see AdminVdcApi#get(String) - */ - @Override - @GET - @Consumes - @JAXBResponseParser - @Fallback(NullOnNotFoundOr404.class) - ListenableFuture<AdminVdc> get(@EndpointParam(parser = URNToAdminHref.class) String vdcUrn); - - /** - * @see AdminVdcApi#edit(String, AdminVdc) - */ - @PUT - @Consumes - @Produces(VCloudDirectorMediaType.ADMIN_VDC) - @JAXBResponseParser - ListenableFuture<Task> edit(@EndpointParam(parser = URNToAdminHref.class) String vdcUrn, AdminVdc vdc); - - /** - * @see AdminVdcApi#remove(String) - */ - @DELETE - @Consumes - @JAXBResponseParser - ListenableFuture<Task> remove(@EndpointParam(parser = URNToAdminHref.class) String vdcUrn); - - /** - * @see AdminVdcApi#enable(String) - */ - @POST - @Consumes - @Path("/action/enable") - @JAXBResponseParser - ListenableFuture<Void> enable(@EndpointParam(parser = URNToAdminHref.class) String vdcUrn); - - /** - * @see AdminVdcApi#disable(String) - */ - @POST - @Consumes - @Path("/action/disable") - @JAXBResponseParser - ListenableFuture<Void> disable(@EndpointParam(parser = URNToAdminHref.class) String vdcUrn); - - /** - * @see AdminVdcApi#get(URI) - */ - @Override - @GET - @Consumes - @JAXBResponseParser - @Fallback(NullOnNotFoundOr404.class) - ListenableFuture<AdminVdc> get(@EndpointParam URI vdcAdminHref); - - /** - * @see AdminVdcApi#edit(URI, AdminVdc) - */ - @PUT - @Consumes - @Produces(VCloudDirectorMediaType.ADMIN_VDC) - @JAXBResponseParser - ListenableFuture<Task> edit(@EndpointParam URI vdcAdminHref, AdminVdc vdc); - - /** - * @see AdminVdcApi#remove(URI) - */ - @DELETE - @Consumes - @JAXBResponseParser - ListenableFuture<Task> remove(@EndpointParam URI vdcAdminHref); - - /** - * @see AdminVdcApi#enable(URI) - */ - @POST - @Consumes - @Path("/action/enable") - @JAXBResponseParser - ListenableFuture<Void> enable(@EndpointParam URI vdcAdminHref); - - /** - * @see AdminVdcApi#disable(URI) - */ - @POST - @Consumes - @Path("/action/disable") - @JAXBResponseParser - ListenableFuture<Void> disable(@EndpointParam URI vdcAdminHref); -} http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/d7bc430c/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/admin/GroupApi.java ---------------------------------------------------------------------- diff --git a/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/admin/GroupApi.java b/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/admin/GroupApi.java index 36292ed..892ff08 100644 --- a/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/admin/GroupApi.java +++ b/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/admin/GroupApi.java @@ -16,14 +16,31 @@ */ package org.jclouds.vcloud.director.v1_5.features.admin; +import static org.jclouds.Fallbacks.NullOnNotFoundOr404; +import static org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType.GROUP; + import java.net.URI; + +import javax.ws.rs.Consumes; +import javax.ws.rs.DELETE; +import javax.ws.rs.GET; +import javax.ws.rs.POST; +import javax.ws.rs.PUT; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; + +import org.jclouds.rest.annotations.BinderParam; +import org.jclouds.rest.annotations.EndpointParam; +import org.jclouds.rest.annotations.Fallback; +import org.jclouds.rest.annotations.JAXBResponseParser; +import org.jclouds.rest.annotations.RequestFilters; +import org.jclouds.rest.binders.BindToXMLPayload; import org.jclouds.vcloud.director.v1_5.domain.Group; +import org.jclouds.vcloud.director.v1_5.filters.AddVCloudAuthorizationAndCookieToRequest; +import org.jclouds.vcloud.director.v1_5.functions.URNToAdminHref; +import org.jclouds.vcloud.director.v1_5.functions.URNToHref; -/** - * Provides synchronous access to {@link Group} objects. - * - * @see GroupAsyncApi - */ +@RequestFilters(AddVCloudAuthorizationAndCookieToRequest.class) public interface GroupApi { /** @@ -33,12 +50,23 @@ public interface GroupApi { * POST /admin/org/{id}/groups * </pre> * - * @param orgUrn the admin org to add the group in - * @return the addd group + * @param adminUrn the admin org to add the group in + * @return the added group */ - Group addGroupToOrg(Group group, String orgUrn); - - Group addGroupToOrg(Group group, URI orgHref); + @POST + @Path("/groups") + @Consumes(GROUP) + @Produces(GROUP) + @JAXBResponseParser + Group addGroupToOrg(@BinderParam(BindToXMLPayload.class) Group group, + @EndpointParam(parser = URNToAdminHref.class) String adminUrn); + + @POST + @Path("/groups") + @Consumes(GROUP) + @Produces(GROUP) + @JAXBResponseParser + Group addGroupToOrg(@BinderParam(BindToXMLPayload.class) Group group, @EndpointParam URI adminUrn); /** * Retrieves a group. @@ -47,12 +75,20 @@ public interface GroupApi { * GET /admin/group/{id} * </pre> * - * @param groupString the reference for the group + * @param groupUrn the reference for the group * @return a group */ - Group get(String groupUrn); + @GET + @Consumes + @JAXBResponseParser + @Fallback(NullOnNotFoundOr404.class) + Group get(@EndpointParam(parser = URNToHref.class) String groupUrn); - Group get(URI groupHref); + @GET + @Consumes + @JAXBResponseParser + @Fallback(NullOnNotFoundOr404.class) + Group get(@EndpointParam URI groupUri); /** * Modifies a group. @@ -63,9 +99,18 @@ public interface GroupApi { * * @return the edited group */ - Group edit(String groupUrn, Group group); + @PUT + @Consumes(GROUP) + @Produces(GROUP) + @JAXBResponseParser + Group edit(@EndpointParam(parser = URNToHref.class) String groupUrn, + @BinderParam(BindToXMLPayload.class) Group group); - Group edit(URI groupHref, Group group); + @PUT + @Consumes(GROUP) + @Produces(GROUP) + @JAXBResponseParser + Group edit(@EndpointParam URI groupUrn, @BinderParam(BindToXMLPayload.class) Group group); /** * Deletes a group. @@ -74,8 +119,13 @@ public interface GroupApi { * DELETE /admin/group/{id} * </pre> */ - void remove(String groupUrn); - - void remove(URI groupHref); + @DELETE + @Consumes + @JAXBResponseParser + void remove(@EndpointParam(parser = URNToHref.class) String groupUrn); + @DELETE + @Consumes + @JAXBResponseParser + void remove(@EndpointParam URI groupUrn); } http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/d7bc430c/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/admin/GroupAsyncApi.java ---------------------------------------------------------------------- diff --git a/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/admin/GroupAsyncApi.java b/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/admin/GroupAsyncApi.java deleted file mode 100644 index 49830ba..0000000 --- a/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/admin/GroupAsyncApi.java +++ /dev/null @@ -1,123 +0,0 @@ -/* - * 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.vcloud.director.v1_5.features.admin; - -import java.net.URI; - -import javax.ws.rs.Consumes; -import javax.ws.rs.DELETE; -import javax.ws.rs.GET; -import javax.ws.rs.POST; -import javax.ws.rs.PUT; -import javax.ws.rs.Path; -import javax.ws.rs.Produces; - -import org.jclouds.Fallbacks.NullOnNotFoundOr404; -import org.jclouds.rest.annotations.BinderParam; -import org.jclouds.rest.annotations.EndpointParam; -import org.jclouds.rest.annotations.Fallback; -import org.jclouds.rest.annotations.JAXBResponseParser; -import org.jclouds.rest.annotations.RequestFilters; -import org.jclouds.rest.binders.BindToXMLPayload; -import org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType; -import org.jclouds.vcloud.director.v1_5.domain.Group; -import org.jclouds.vcloud.director.v1_5.filters.AddVCloudAuthorizationAndCookieToRequest; -import org.jclouds.vcloud.director.v1_5.functions.URNToAdminHref; -import org.jclouds.vcloud.director.v1_5.functions.URNToHref; - -import com.google.common.util.concurrent.ListenableFuture; - -/** - * @see GroupApi - */ -@RequestFilters(AddVCloudAuthorizationAndCookieToRequest.class) -public interface GroupAsyncApi { - - /** - * @see GroupApi#addGroupToOrg(Group, String) - */ - @POST - @Path("/groups") - @Consumes(VCloudDirectorMediaType.GROUP) - @Produces(VCloudDirectorMediaType.GROUP) - @JAXBResponseParser - ListenableFuture<Group> addGroupToOrg(@BinderParam(BindToXMLPayload.class) Group group, - @EndpointParam(parser = URNToAdminHref.class) String adminUrn); - - /** - * @see GroupApi#get(String) - */ - @GET - @Consumes - @JAXBResponseParser - @Fallback(NullOnNotFoundOr404.class) - ListenableFuture<Group> get(@EndpointParam(parser = URNToHref.class) String groupUri); - - /** - * @see GroupApi#edit(String, Group) - */ - @PUT - @Consumes(VCloudDirectorMediaType.GROUP) - @Produces(VCloudDirectorMediaType.GROUP) - @JAXBResponseParser - ListenableFuture<Group> edit(@EndpointParam(parser = URNToHref.class) String groupUrn, - @BinderParam(BindToXMLPayload.class) Group group); - - /** - * @see GroupApi#remove(String) - */ - @DELETE - @Consumes - @JAXBResponseParser - ListenableFuture<Void> remove(@EndpointParam(parser = URNToHref.class) String groupUrn); - - /** - * @see GroupApi#addGroupToOrg(Group, URI) - */ - @POST - @Path("/groups") - @Consumes(VCloudDirectorMediaType.GROUP) - @Produces(VCloudDirectorMediaType.GROUP) - @JAXBResponseParser - ListenableFuture<Group> addGroupToOrg(@BinderParam(BindToXMLPayload.class) Group group, @EndpointParam URI adminUrn); - - /** - * @see GroupApi#get(URI) - */ - @GET - @Consumes - @JAXBResponseParser - @Fallback(NullOnNotFoundOr404.class) - ListenableFuture<Group> get(@EndpointParam URI groupUri); - - /** - * @see GroupApi#edit(URI, Group) - */ - @PUT - @Consumes(VCloudDirectorMediaType.GROUP) - @Produces(VCloudDirectorMediaType.GROUP) - @JAXBResponseParser - ListenableFuture<Group> edit(@EndpointParam URI groupUrn, @BinderParam(BindToXMLPayload.class) Group group); - - /** - * @see GroupApi#remove(URI) - */ - @DELETE - @Consumes - @JAXBResponseParser - ListenableFuture<Void> remove(@EndpointParam URI groupUrn); -} http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/d7bc430c/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/admin/UserApi.java ---------------------------------------------------------------------- diff --git a/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/admin/UserApi.java b/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/admin/UserApi.java index 63cec6c..fc5a583 100644 --- a/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/admin/UserApi.java +++ b/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/admin/UserApi.java @@ -16,14 +16,31 @@ */ package org.jclouds.vcloud.director.v1_5.features.admin; +import static org.jclouds.Fallbacks.NullOnNotFoundOr404; +import static org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType.USER; + import java.net.URI; + +import javax.ws.rs.Consumes; +import javax.ws.rs.DELETE; +import javax.ws.rs.GET; +import javax.ws.rs.POST; +import javax.ws.rs.PUT; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; + +import org.jclouds.rest.annotations.BinderParam; +import org.jclouds.rest.annotations.EndpointParam; +import org.jclouds.rest.annotations.Fallback; +import org.jclouds.rest.annotations.JAXBResponseParser; +import org.jclouds.rest.annotations.RequestFilters; +import org.jclouds.rest.binders.BindToXMLPayload; import org.jclouds.vcloud.director.v1_5.domain.User; +import org.jclouds.vcloud.director.v1_5.filters.AddVCloudAuthorizationAndCookieToRequest; +import org.jclouds.vcloud.director.v1_5.functions.URNToAdminHref; +import org.jclouds.vcloud.director.v1_5.functions.URNToHref; -/** - * Provides synchronous access to {@link User} objects. - * - * @see UserAsyncApi - */ +@RequestFilters(AddVCloudAuthorizationAndCookieToRequest.class) public interface UserApi { /** @@ -37,9 +54,19 @@ public interface UserApi { * the urn for the org * @return the addd user */ - User addUserToOrg(User user, String orgUrn); + @POST + @Path("/users") + @Consumes(USER) + @Produces(USER) + @JAXBResponseParser User addUserToOrg(@BinderParam(BindToXMLPayload.class) User user, + @EndpointParam(parser = URNToAdminHref.class) String orgUrn); - User addUserToOrg(User user, URI orgAdminHref); + @POST + @Path("/users") + @Consumes(USER) + @Produces(USER) + @JAXBResponseParser + User addUserToOrg(@BinderParam(BindToXMLPayload.class) User user, @EndpointParam URI orgAdminHref); /** * Retrieves a user. This entity could be enabled or disabled. @@ -52,9 +79,17 @@ public interface UserApi { * the reference for the user * @return a user */ - User get(String userUrn); + @GET + @Consumes + @JAXBResponseParser + @Fallback(NullOnNotFoundOr404.class) + User get(@EndpointParam(parser = URNToHref.class) String userUrn); - User get(URI userHref); + @GET + @Consumes + @JAXBResponseParser + @Fallback(NullOnNotFoundOr404.class) + User get(@EndpointParam URI userHref); /** * Modifies a user. The user object could be enabled or disabled. Note: the lock status cannot be @@ -68,9 +103,17 @@ public interface UserApi { * the reference for the user * @return the modified user */ - User edit(String userUrn, User user); - - User edit(URI userHref, User user); + @PUT + @Consumes(USER) + @Produces(USER) + @JAXBResponseParser + User edit(@EndpointParam(parser = URNToHref.class) String userUrn, @BinderParam(BindToXMLPayload.class) User user); + + @PUT + @Consumes(USER) + @Produces(USER) + @JAXBResponseParser + User edit(@EndpointParam URI userHref, @BinderParam(BindToXMLPayload.class) User user); /** * Deletes a user. Enabled and disabled users could be removed. @@ -79,9 +122,15 @@ public interface UserApi { * DELETE /admin/catalog/{id} * </pre> */ - void remove(String userUrn); - - void remove(URI userHref); + @DELETE + @Consumes + @JAXBResponseParser + void remove(@EndpointParam(parser = URNToHref.class) String userUrn); + + @DELETE + @Consumes + @JAXBResponseParser + void remove(@EndpointParam URI userHref); /** * Unlocks a user. @@ -90,7 +139,15 @@ public interface UserApi { * POST /admin/user/{id}/action/unlock * </pre> */ - void unlock(String userUrn); + @POST + @Path("/action/unlock") + @Consumes + @JAXBResponseParser + void unlock(@EndpointParam(parser = URNToHref.class) String userUrn); - void unlock(URI userHref); + @POST + @Path("/action/unlock") + @Consumes + @JAXBResponseParser + void unlock(@EndpointParam URI userHref); } http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/d7bc430c/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/admin/UserAsyncApi.java ---------------------------------------------------------------------- diff --git a/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/admin/UserAsyncApi.java b/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/admin/UserAsyncApi.java deleted file mode 100644 index b66026a..0000000 --- a/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/admin/UserAsyncApi.java +++ /dev/null @@ -1,142 +0,0 @@ -/* - * 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.vcloud.director.v1_5.features.admin; - -import java.net.URI; - -import javax.ws.rs.Consumes; -import javax.ws.rs.DELETE; -import javax.ws.rs.GET; -import javax.ws.rs.POST; -import javax.ws.rs.PUT; -import javax.ws.rs.Path; -import javax.ws.rs.Produces; - -import org.jclouds.Fallbacks.NullOnNotFoundOr404; -import org.jclouds.rest.annotations.BinderParam; -import org.jclouds.rest.annotations.EndpointParam; -import org.jclouds.rest.annotations.Fallback; -import org.jclouds.rest.annotations.JAXBResponseParser; -import org.jclouds.rest.annotations.RequestFilters; -import org.jclouds.rest.binders.BindToXMLPayload; -import org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType; -import org.jclouds.vcloud.director.v1_5.domain.User; -import org.jclouds.vcloud.director.v1_5.filters.AddVCloudAuthorizationAndCookieToRequest; -import org.jclouds.vcloud.director.v1_5.functions.URNToAdminHref; -import org.jclouds.vcloud.director.v1_5.functions.URNToHref; - -import com.google.common.util.concurrent.ListenableFuture; - -/** - * @see UserApi - */ -@RequestFilters(AddVCloudAuthorizationAndCookieToRequest.class) -public interface UserAsyncApi { - - /** - * @see UserApi#addUserToOrg(User, String) - */ - @POST - @Path("/users") - @Consumes(VCloudDirectorMediaType.USER) - @Produces(VCloudDirectorMediaType.USER) - @JAXBResponseParser - ListenableFuture<User> addUserToOrg(@BinderParam(BindToXMLPayload.class) User user, - @EndpointParam(parser = URNToAdminHref.class) String orgUrn); - - /** - * @see UserApi#addUserToOrg(User, URI) - */ - @POST - @Path("/users") - @Consumes(VCloudDirectorMediaType.USER) - @Produces(VCloudDirectorMediaType.USER) - @JAXBResponseParser - ListenableFuture<User> addUserToOrg(@BinderParam(BindToXMLPayload.class) User user, - @EndpointParam URI orgAdminHref); - - /** - * @see UserApi#get(String) - */ - @GET - @Consumes - @JAXBResponseParser - @Fallback(NullOnNotFoundOr404.class) - ListenableFuture<User> get(@EndpointParam(parser = URNToHref.class) String userUrn); - - /** - * @see UserApi#get(URI) - */ - @GET - @Consumes - @JAXBResponseParser - @Fallback(NullOnNotFoundOr404.class) - ListenableFuture<User> get(@EndpointParam URI userHref); - - /** - * @see UserApi#edit(String, User) - */ - @PUT - @Consumes(VCloudDirectorMediaType.USER) - @Produces(VCloudDirectorMediaType.USER) - @JAXBResponseParser - ListenableFuture<User> edit(@EndpointParam(parser = URNToHref.class) String userUrn, - @BinderParam(BindToXMLPayload.class) User user); - - /** - * @see UserApi#edit(URI, User) - */ - @PUT - @Consumes(VCloudDirectorMediaType.USER) - @Produces(VCloudDirectorMediaType.USER) - @JAXBResponseParser - ListenableFuture<User> edit(@EndpointParam URI userHref, @BinderParam(BindToXMLPayload.class) User user); - - /** - * @see UserApi#remove(String) - */ - @DELETE - @Consumes - @JAXBResponseParser - ListenableFuture<Void> remove(@EndpointParam(parser = URNToHref.class) String userUrn); - - /** - * @see UserApi#remove(URI) - */ - @DELETE - @Consumes - @JAXBResponseParser - ListenableFuture<Void> remove(@EndpointParam URI userHref); - - /** - * @see UserApi#unlock(String) - */ - @POST - @Path("/action/unlock") - @Consumes - @JAXBResponseParser - ListenableFuture<Void> unlock(@EndpointParam(parser = URNToHref.class) String userUrn); - - /** - * @see UserApi#unlock(URI) - */ - @POST - @Path("/action/unlock") - @Consumes - @JAXBResponseParser - ListenableFuture<Void> unlock(@EndpointParam URI userHref); -} http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/d7bc430c/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/internal/VCloudDirectorContextImpl.java ---------------------------------------------------------------------- diff --git a/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/internal/VCloudDirectorContextImpl.java b/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/internal/VCloudDirectorContextImpl.java index 54717f3..a417597 100644 --- a/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/internal/VCloudDirectorContextImpl.java +++ b/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/internal/VCloudDirectorContextImpl.java @@ -24,35 +24,31 @@ import org.jclouds.domain.Credentials; import org.jclouds.lifecycle.Closer; import org.jclouds.location.Provider; import org.jclouds.providers.ProviderMetadata; -import org.jclouds.rest.RestContext; +import org.jclouds.rest.ApiContext; import org.jclouds.rest.Utils; -import org.jclouds.rest.internal.RestContextImpl; +import org.jclouds.rest.internal.ApiContextImpl; import org.jclouds.vcloud.director.v1_5.VCloudDirectorContext; import org.jclouds.vcloud.director.v1_5.admin.VCloudDirectorAdminApi; -import org.jclouds.vcloud.director.v1_5.admin.VCloudDirectorAdminAsyncApi; import org.jclouds.vcloud.director.v1_5.user.VCloudDirectorApi; -import org.jclouds.vcloud.director.v1_5.user.VCloudDirectorAsyncApi; import com.google.common.base.Supplier; import com.google.inject.Injector; import com.google.inject.TypeLiteral; @Singleton -public class VCloudDirectorContextImpl extends RestContextImpl<VCloudDirectorApi, VCloudDirectorAsyncApi> implements - VCloudDirectorContext { - private final RestContext<VCloudDirectorAdminApi, VCloudDirectorAdminAsyncApi> adminContext; +public class VCloudDirectorContextImpl extends ApiContextImpl<VCloudDirectorApi> implements VCloudDirectorContext { + private final ApiContext<VCloudDirectorAdminApi> adminContext; @Inject VCloudDirectorContextImpl(@Name String name, ProviderMetadata providerMetadata, @Provider Supplier<Credentials> creds, Utils utils, Closer closer, Injector injector, - RestContext<VCloudDirectorAdminApi, VCloudDirectorAdminAsyncApi> adminContext) { - super(name, providerMetadata, creds, utils, closer, injector, TypeLiteral.get(VCloudDirectorApi.class), - TypeLiteral.get(VCloudDirectorAsyncApi.class)); + ApiContext<VCloudDirectorAdminApi> adminContext) { + super(name, providerMetadata, creds, utils, closer, injector, TypeLiteral.get(VCloudDirectorApi.class)); this.adminContext = adminContext; } @Override - public RestContext<VCloudDirectorAdminApi, VCloudDirectorAdminAsyncApi> getAdminContext() { + public ApiContext<VCloudDirectorAdminApi> getAdminContext() { return adminContext; } } http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/d7bc430c/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/login/SessionApi.java ---------------------------------------------------------------------- diff --git a/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/login/SessionApi.java b/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/login/SessionApi.java index 4d03f84..272789b 100644 --- a/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/login/SessionApi.java +++ b/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/login/SessionApi.java @@ -17,29 +17,42 @@ package org.jclouds.vcloud.director.v1_5.login; import java.net.URI; + +import javax.ws.rs.Consumes; +import javax.ws.rs.DELETE; +import javax.ws.rs.GET; +import javax.ws.rs.HeaderParam; +import javax.ws.rs.POST; + +import org.jclouds.rest.annotations.EndpointParam; +import org.jclouds.rest.annotations.JAXBResponseParser; +import org.jclouds.rest.annotations.MapBinder; +import org.jclouds.rest.annotations.PayloadParam; +import org.jclouds.rest.annotations.ResponseParser; +import org.jclouds.vcloud.director.v1_5.binders.BindUserOrgAndPasswordAsBasicAuthorizationHeader; import org.jclouds.vcloud.director.v1_5.domain.Session; import org.jclouds.vcloud.director.v1_5.domain.SessionWithToken; +import org.jclouds.vcloud.director.v1_5.parsers.SessionWithTokenFromXMLAndHeader; -/** - * Provides synchronous access to Session. - * <p/> - * - * @see SessionAsyncApi - */ public interface SessionApi { - /** - * TODO - */ - SessionWithToken loginUserInOrgWithPassword(URI loginUrl, String user, String org, String password); + @POST + @Consumes + @ResponseParser(SessionWithTokenFromXMLAndHeader.class) + @MapBinder(BindUserOrgAndPasswordAsBasicAuthorizationHeader.class) + SessionWithToken loginUserInOrgWithPassword(@EndpointParam URI loginUrl, + @PayloadParam("user") String user, @PayloadParam("org") String org, + @PayloadParam("password") String password); - /** - * TODO - */ - Session getSessionWithToken(URI session, String authenticationToken); + @GET + @Consumes + @JAXBResponseParser + Session getSessionWithToken(@EndpointParam URI session, + @HeaderParam("x-vcloud-authorization") String authenticationToken); - /** - * TODO - */ - void logoutSessionWithToken(URI session, String authenticationToken); + @DELETE + @Consumes + @JAXBResponseParser + void logoutSessionWithToken(@EndpointParam URI session, + @HeaderParam("x-vcloud-authorization") String authenticationToken); } http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/d7bc430c/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/login/SessionAsyncApi.java ---------------------------------------------------------------------- diff --git a/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/login/SessionAsyncApi.java b/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/login/SessionAsyncApi.java deleted file mode 100644 index fa9b487..0000000 --- a/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/login/SessionAsyncApi.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * 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.vcloud.director.v1_5.login; - -import java.net.URI; - -import javax.ws.rs.Consumes; -import javax.ws.rs.DELETE; -import javax.ws.rs.GET; -import javax.ws.rs.HeaderParam; -import javax.ws.rs.POST; - -import org.jclouds.rest.annotations.EndpointParam; -import org.jclouds.rest.annotations.JAXBResponseParser; -import org.jclouds.rest.annotations.MapBinder; -import org.jclouds.rest.annotations.PayloadParam; -import org.jclouds.rest.annotations.ResponseParser; -import org.jclouds.vcloud.director.v1_5.binders.BindUserOrgAndPasswordAsBasicAuthorizationHeader; -import org.jclouds.vcloud.director.v1_5.domain.Session; -import org.jclouds.vcloud.director.v1_5.domain.SessionWithToken; -import org.jclouds.vcloud.director.v1_5.parsers.SessionWithTokenFromXMLAndHeader; - -import com.google.common.util.concurrent.ListenableFuture; - -/** - * Provides asynchronous access to Session via their REST API. - * <p/> - * - * @see SessionApi - */ -public interface SessionAsyncApi { - - /** - * @see SessionApi#loginUserInOrgWithPassword - */ - @POST - @Consumes - @ResponseParser(SessionWithTokenFromXMLAndHeader.class) - @MapBinder(BindUserOrgAndPasswordAsBasicAuthorizationHeader.class) - ListenableFuture<SessionWithToken> loginUserInOrgWithPassword(@EndpointParam URI loginUrl, - @PayloadParam("user") String user, @PayloadParam("org") String org, - @PayloadParam("password") String password); - - /** - * @see SessionApi#getSessionWithToken - */ - @GET - @Consumes - @JAXBResponseParser - ListenableFuture<Session> getSessionWithToken(@EndpointParam URI session, - @HeaderParam("x-vcloud-authorization") String authenticationToken); - - /** - * @see SessionApi#logoutSessionWithToken - */ - @DELETE - @Consumes - @JAXBResponseParser - ListenableFuture<Void> logoutSessionWithToken(@EndpointParam URI session, - @HeaderParam("x-vcloud-authorization") String authenticationToken); -} http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/d7bc430c/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/user/VCloudDirectorApi.java ---------------------------------------------------------------------- diff --git a/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/user/VCloudDirectorApi.java b/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/user/VCloudDirectorApi.java index ba9e856..a4f98d9 100644 --- a/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/user/VCloudDirectorApi.java +++ b/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/user/VCloudDirectorApi.java @@ -16,10 +16,21 @@ */ package org.jclouds.vcloud.director.v1_5.user; +import static org.jclouds.Fallbacks.NullOnNotFoundOr404; + +import java.io.Closeable; import java.net.URI; +import javax.ws.rs.Consumes; +import javax.ws.rs.GET; +import javax.ws.rs.Path; +import javax.ws.rs.PathParam; + import org.jclouds.rest.annotations.Delegate; import org.jclouds.rest.annotations.EndpointParam; +import org.jclouds.rest.annotations.Fallback; +import org.jclouds.rest.annotations.JAXBResponseParser; +import org.jclouds.rest.annotations.RequestFilters; import org.jclouds.vcloud.director.v1_5.domain.Entity; import org.jclouds.vcloud.director.v1_5.domain.Session; import org.jclouds.vcloud.director.v1_5.features.CatalogApi; @@ -34,16 +45,13 @@ import org.jclouds.vcloud.director.v1_5.features.VAppApi; import org.jclouds.vcloud.director.v1_5.features.VAppTemplateApi; import org.jclouds.vcloud.director.v1_5.features.VdcApi; import org.jclouds.vcloud.director.v1_5.features.VmApi; +import org.jclouds.vcloud.director.v1_5.filters.AddVCloudAuthorizationAndCookieToRequest; import org.jclouds.vcloud.director.v1_5.functions.URNToHref; import com.google.inject.Provides; -/** - * Provides synchronous access to VCloudDirector. - * - * @see VCloudDirectorAsyncApi - */ -public interface VCloudDirectorApi { +@RequestFilters(AddVCloudAuthorizationAndCookieToRequest.class) +public interface VCloudDirectorApi extends Closeable { /** * Redirects to the URL of an entity with the given VCD ID. @@ -52,7 +60,12 @@ public interface VCloudDirectorApi { * GET /entity/{id} * </pre> */ - Entity resolveEntity(String urn); + @GET + @Path("/entity/{id}") + @Consumes + @JAXBResponseParser + @Fallback(NullOnNotFoundOr404.class) + Entity resolveEntity(@PathParam("id") String id); /** * @return the current login session @@ -61,7 +74,7 @@ public interface VCloudDirectorApi { Session getCurrentSession(); /** - * @return asynchronous access to query features + * @return synchronous access to query features */ @Delegate QueryApi getQueryApi(); http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/d7bc430c/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/user/VCloudDirectorAsyncApi.java ---------------------------------------------------------------------- diff --git a/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/user/VCloudDirectorAsyncApi.java b/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/user/VCloudDirectorAsyncApi.java deleted file mode 100644 index 70fc600..0000000 --- a/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/user/VCloudDirectorAsyncApi.java +++ /dev/null @@ -1,150 +0,0 @@ -/* - * 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.vcloud.director.v1_5.user; - -import java.net.URI; - -import javax.ws.rs.Consumes; -import javax.ws.rs.GET; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; - -import org.jclouds.Fallbacks.NullOnNotFoundOr404; -import org.jclouds.rest.annotations.Delegate; -import org.jclouds.rest.annotations.EndpointParam; -import org.jclouds.rest.annotations.Fallback; -import org.jclouds.rest.annotations.JAXBResponseParser; -import org.jclouds.rest.annotations.RequestFilters; -import org.jclouds.vcloud.director.v1_5.domain.Entity; -import org.jclouds.vcloud.director.v1_5.domain.Session; -import org.jclouds.vcloud.director.v1_5.features.CatalogAsyncApi; -import org.jclouds.vcloud.director.v1_5.features.MetadataAsyncApi; -import org.jclouds.vcloud.director.v1_5.features.NetworkAsyncApi; -import org.jclouds.vcloud.director.v1_5.features.OrgAsyncApi; -import org.jclouds.vcloud.director.v1_5.features.QueryAsyncApi; -import org.jclouds.vcloud.director.v1_5.features.TaskAsyncApi; -import org.jclouds.vcloud.director.v1_5.features.UploadAsyncApi; -import org.jclouds.vcloud.director.v1_5.features.VAppAsyncApi; -import org.jclouds.vcloud.director.v1_5.features.VAppTemplateAsyncApi; -import org.jclouds.vcloud.director.v1_5.features.VdcAsyncApi; -import org.jclouds.vcloud.director.v1_5.features.VmAsyncApi; -import org.jclouds.vcloud.director.v1_5.filters.AddVCloudAuthorizationAndCookieToRequest; -import org.jclouds.vcloud.director.v1_5.functions.URNToHref; - -import com.google.common.util.concurrent.ListenableFuture; -import com.google.inject.Provides; - -/** - * Provides asynchronous access to VCloudDirector via their REST API. - * - * @see VCloudDirectorApi - */ -@RequestFilters(AddVCloudAuthorizationAndCookieToRequest.class) -public interface VCloudDirectorAsyncApi { - - /** - * @see VCloudDirectorApi#resolveEntity(String) - */ - @GET - @Path("/entity/{id}") - @Consumes - @JAXBResponseParser - @Fallback(NullOnNotFoundOr404.class) - ListenableFuture<Entity> resolveEntity(@PathParam("id") String id); - - /** - * - * @return the current login session - */ - @Provides - Session getCurrentSession(); - - /** - * @return asynchronous access to query features - */ - @Delegate - QueryAsyncApi getQueryApi(); - - /** - * @return asynchronous access to {@link Org} features - */ - @Delegate - OrgAsyncApi getOrgApi(); - - /** - * @return asynchronous access to {@link Task} features - */ - @Delegate - TaskAsyncApi getTaskApi(); - - /** - * @return asynchronous access to {@link Network} features - */ - @Delegate - NetworkAsyncApi getNetworkApi(); - - /** - * @return asynchronous access to {@link Catalog} features - */ - @Delegate - CatalogAsyncApi getCatalogApi(); - - /** - * @return asynchronous access to {@link Media} features - */ - @Delegate - CatalogAsyncApi getMediaApi(); - - /** - * @return asynchronous access to {@link Vdc} features - */ - @Delegate - VdcAsyncApi getVdcApi(); - - /** - * @return asynchronous access to Upload features - */ - @Delegate - UploadAsyncApi getUploadApi(); - - /** - * @return asynchronous access to {@link VApp} features - */ - @Delegate - VAppAsyncApi getVAppApi(); - - /** - * @return asynchronous access to {@link VAppTemplate} features - */ - @Delegate - VAppTemplateAsyncApi getVAppTemplateApi(); - - /** - * @return asynchronous access to {@link Vm} features - */ - @Delegate - VmAsyncApi getVmApi(); - - /** - * @return asynchronous access to {@link Metadata} features - */ - @Delegate - MetadataAsyncApi getMetadataApi(@EndpointParam(parser = URNToHref.class) String urn); - - @Delegate - MetadataAsyncApi getMetadataApi(@EndpointParam URI href); -} http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/d7bc430c/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/VCloudDirectorApiMetadataTest.java ---------------------------------------------------------------------- diff --git a/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/VCloudDirectorApiMetadataTest.java b/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/VCloudDirectorApiMetadataTest.java index 7d03e12..201b1db 100644 --- a/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/VCloudDirectorApiMetadataTest.java +++ b/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/VCloudDirectorApiMetadataTest.java @@ -17,7 +17,7 @@ package org.jclouds.vcloud.director.v1_5; import org.jclouds.View; -import org.jclouds.rest.internal.BaseRestApiMetadataTest; +import org.jclouds.apis.internal.BaseApiMetadataTest; import org.testng.annotations.Test; import com.google.common.collect.ImmutableSet; @@ -25,7 +25,7 @@ import com.google.common.reflect.TypeToken; @Test(groups = "unit", testName = "VCloudDirectorApiMetadataTest") //TODO: BaseComputeServiceApiMetadataTest -public class VCloudDirectorApiMetadataTest extends BaseRestApiMetadataTest { +public class VCloudDirectorApiMetadataTest extends BaseApiMetadataTest { public VCloudDirectorApiMetadataTest() { super(new VCloudDirectorApiMetadata(), ImmutableSet.<TypeToken<? extends View>>of()); http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/d7bc430c/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/internal/BaseVCloudDirectorApiLiveTest.java ---------------------------------------------------------------------- diff --git a/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/internal/BaseVCloudDirectorApiLiveTest.java b/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/internal/BaseVCloudDirectorApiLiveTest.java index d522bea..b3576ad 100644 --- a/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/internal/BaseVCloudDirectorApiLiveTest.java +++ b/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/internal/BaseVCloudDirectorApiLiveTest.java @@ -55,13 +55,11 @@ import org.jclouds.apis.BaseContextLiveTest; import org.jclouds.date.DateService; import org.jclouds.io.Payloads; import org.jclouds.logging.Logger; -import org.jclouds.rest.RestContext; +import org.jclouds.rest.ApiContext; import org.jclouds.vcloud.director.testng.FormatApiResultsListener; -import org.jclouds.vcloud.director.v1_5.VCloudDirectorApiMetadata; import org.jclouds.vcloud.director.v1_5.VCloudDirectorContext; import org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType; import org.jclouds.vcloud.director.v1_5.admin.VCloudDirectorAdminApi; -import org.jclouds.vcloud.director.v1_5.admin.VCloudDirectorAdminAsyncApi; import org.jclouds.vcloud.director.v1_5.domain.Catalog; import org.jclouds.vcloud.director.v1_5.domain.Checks; import org.jclouds.vcloud.director.v1_5.domain.Link; @@ -130,7 +128,7 @@ public abstract class BaseVCloudDirectorApiLiveTest extends BaseContextLiveTest< public Predicate<Task> retryTaskSuccess; public Predicate<Task> retryTaskSuccessLong; - protected RestContext<VCloudDirectorAdminApi, VCloudDirectorAdminAsyncApi> adminContext; + protected ApiContext<VCloudDirectorAdminApi> adminContext; protected Session adminSession; protected Session session; @@ -207,8 +205,7 @@ public abstract class BaseVCloudDirectorApiLiveTest extends BaseContextLiveTest< return getRoleReferenceFor(name, adminContext); } - public static Reference getRoleReferenceFor(String name, - RestContext<VCloudDirectorAdminApi, VCloudDirectorAdminAsyncApi> adminContext) { + public static Reference getRoleReferenceFor(String name, ApiContext<VCloudDirectorAdminApi> adminContext) { RoleReferences roles = adminContext.getApi().getQueryApi().roleReferencesQueryAll(); // backend in a builder to strip out unwanted xml cruft that the api chokes on return Reference.builder().fromReference(find(roles.getReferences(), ReferencePredicates.nameEquals(name))) @@ -739,7 +736,7 @@ public abstract class BaseVCloudDirectorApiLiveTest extends BaseContextLiveTest< @Override protected TypeToken<VCloudDirectorContext> contextType() { - return VCloudDirectorApiMetadata.CONTEXT_TOKEN; + return TypeToken.of(VCloudDirectorContext.class); } } http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/d7bc430c/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/internal/BaseVCloudDirectorRestApiExpectTest.java ---------------------------------------------------------------------- diff --git a/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/internal/BaseVCloudDirectorRestApiExpectTest.java b/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/internal/BaseVCloudDirectorRestApiExpectTest.java deleted file mode 100644 index 9104486..0000000 --- a/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/internal/BaseVCloudDirectorRestApiExpectTest.java +++ /dev/null @@ -1,23 +0,0 @@ -/* - * 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.vcloud.director.v1_5.internal; - -import org.jclouds.vcloud.director.v1_5.user.VCloudDirectorApi; - -public abstract class BaseVCloudDirectorRestApiExpectTest extends BaseVCloudDirectorExpectTest<VCloudDirectorApi> { - -} http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/d7bc430c/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/login/SessionApiExpectTest.java ---------------------------------------------------------------------- diff --git a/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/login/SessionApiExpectTest.java b/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/login/SessionApiExpectTest.java index b59441f..183e8cc 100644 --- a/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/login/SessionApiExpectTest.java +++ b/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/login/SessionApiExpectTest.java @@ -20,10 +20,10 @@ import static org.testng.Assert.assertEquals; import java.net.URI; -import org.jclouds.apis.ApiMetadata; import org.jclouds.http.HttpRequest; import org.jclouds.http.HttpResponse; -import org.jclouds.rest.AnonymousRestApiMetadata; +import org.jclouds.providers.AnonymousProviderMetadata; +import org.jclouds.providers.ProviderMetadata; import org.jclouds.rest.internal.BaseRestApiExpectTest; import org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType; import org.jclouds.vcloud.director.v1_5.domain.Link; @@ -119,8 +119,7 @@ public class SessionApiExpectTest extends BaseRestApiExpectTest<SessionApi> { } @Override - protected ApiMetadata createApiMetadata() { - return AnonymousRestApiMetadata.forClientMappedToAsyncClient(SessionApi.class, SessionAsyncApi.class) - .toBuilder().defaultEndpoint("https://vcloudbeta.bluelock.com/api").build(); + protected ProviderMetadata createProviderMetadata() { + return AnonymousProviderMetadata.forApiOnEndpoint(SessionApi.class, "https://vcloudbeta.bluelock.com/api"); } } http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/d7bc430c/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/login/SessionApiLiveTest.java ---------------------------------------------------------------------- diff --git a/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/login/SessionApiLiveTest.java b/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/login/SessionApiLiveTest.java index 761012b..e59757d 100644 --- a/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/login/SessionApiLiveTest.java +++ b/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/login/SessionApiLiveTest.java @@ -26,9 +26,8 @@ import org.jclouds.ContextBuilder; import org.jclouds.apis.BaseContextLiveTest; import org.jclouds.providers.AnonymousProviderMetadata; import org.jclouds.providers.ProviderMetadata; -import org.jclouds.rest.RestContext; +import org.jclouds.rest.ApiContext; import org.jclouds.vcloud.director.testng.FormatApiResultsListener; -import org.jclouds.vcloud.director.v1_5.VCloudDirectorConstants; import org.jclouds.vcloud.director.v1_5.domain.SessionWithToken; import org.testng.annotations.BeforeGroups; import org.testng.annotations.Listeners; @@ -42,7 +41,7 @@ import com.google.common.reflect.TypeToken; */ @Listeners(FormatApiResultsListener.class) @Test(groups = { "live", "user" }, testName = "SessionApiLiveTest") -public class SessionApiLiveTest extends BaseContextLiveTest<RestContext<SessionApi, SessionAsyncApi>> { +public class SessionApiLiveTest extends BaseContextLiveTest<ApiContext<SessionApi>> { public SessionApiLiveTest() { provider = "vcloud-director"; @@ -84,13 +83,14 @@ public class SessionApiLiveTest extends BaseContextLiveTest<RestContext<SessionA } @Override - protected TypeToken<RestContext<SessionApi, SessionAsyncApi>> contextType() { - return VCloudDirectorConstants.SESSION_CONTEXT_TYPE; + protected TypeToken<ApiContext<SessionApi>> contextType() { + return new TypeToken<ApiContext<SessionApi>>() { + }; } @Override protected ProviderMetadata createProviderMetadata() { - return AnonymousProviderMetadata.forClientMappedToAsyncClientOnEndpoint(SessionApi.class, SessionAsyncApi.class, endpoint); + return AnonymousProviderMetadata.forApiOnEndpoint(SessionApi.class, endpoint); } @Override
