Juan Hernandez has uploaded a new change for review. Change subject: restapi: Generic external provider ......................................................................
restapi: Generic external provider This patch adds a generic external provider class, to be used by the existing and future external provider classes. Change-Id: I040b0edc6d734337d238db4e90c3167fad0e39e8 Related-To: https://bugzilla.redhat.com/1132259 Signed-off-by: Juan Hernandez <[email protected]> --- M backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/ExternalProviderResource.java A backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/AbstractBackendExternalProviderResource.java M backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/externalhostproviders/BackendExternalHostProviderResource.java 3 files changed, 92 insertions(+), 66 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/59/34759/1 diff --git a/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/ExternalProviderResource.java b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/ExternalProviderResource.java index 236934f..7ec6352 100644 --- a/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/ExternalProviderResource.java +++ b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/ExternalProviderResource.java @@ -23,10 +23,10 @@ import org.ovirt.engine.api.model.Action; import org.ovirt.engine.api.model.Actionable; -import org.ovirt.engine.api.model.BaseResource; +import org.ovirt.engine.api.model.ExternalProvider; @Produces({ApiMediaType.APPLICATION_XML, ApiMediaType.APPLICATION_JSON, ApiMediaType.APPLICATION_X_YAML}) -public interface ExternalProviderResource<R extends BaseResource> extends UpdatableResource<R> { +public interface ExternalProviderResource<R extends ExternalProvider> extends UpdatableResource<R> { @Path("certificates") public ExternalProviderCertificatesResource getCertificates(); diff --git a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/AbstractBackendExternalProviderResource.java b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/AbstractBackendExternalProviderResource.java new file mode 100644 index 0000000..33e56fe --- /dev/null +++ b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/AbstractBackendExternalProviderResource.java @@ -0,0 +1,85 @@ +/* +* Copyright (c) 2014 Red Hat, Inc. +* +* Licensed 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.ovirt.engine.api.restapi.resource; + +import org.ovirt.engine.api.model.Action; +import org.ovirt.engine.api.model.ExternalProvider; +import org.ovirt.engine.api.resource.ExternalProviderCertificatesResource; +import org.ovirt.engine.api.resource.ExternalProviderResource; +import org.ovirt.engine.core.common.action.ProviderParameters; +import org.ovirt.engine.core.common.action.VdcActionParametersBase; +import org.ovirt.engine.core.common.action.VdcActionType; +import org.ovirt.engine.core.common.businessentities.Provider; +import org.ovirt.engine.core.common.queries.IdQueryParameters; +import org.ovirt.engine.core.common.queries.VdcQueryType; +import org.ovirt.engine.core.compat.Guid; + +import javax.ws.rs.core.Response; + +public abstract class AbstractBackendExternalProviderResource<R extends ExternalProvider> + extends AbstractBackendActionableResource<R, Provider> + implements ExternalProviderResource<R> { + public AbstractBackendExternalProviderResource(String id, Class<R> modelType, String... subCollections) { + super(id, modelType, Provider.class, subCollections); + } + + @Override + public R get() { + return performGet(VdcQueryType.GetProviderById, new IdQueryParameters(guid)); + } + + @Override + public R update(R incoming) { + return performUpdate( + incoming, + new QueryIdResolver<Guid>(VdcQueryType.GetProviderById, IdQueryParameters.class), + VdcActionType.UpdateProvider, + new UpdateParametersProvider() + ); + } + + protected class UpdateParametersProvider implements ParametersProvider<R, Provider> { + @Override + public VdcActionParametersBase getParameters(R incoming, Provider entity) { + return new ProviderParameters(map(incoming, entity)); + } + } + + @Override + protected R doPopulate(R model, Provider entity) { + return model; + } + + @Override + public Response testConnectivity(Action action) { + Provider provider = BackendExternalProviderHelper.getProvider(this, id); + ProviderParameters parameters = new ProviderParameters(provider); + return performAction(VdcActionType.TestProviderConnectivity, parameters); + } + + @Override + public Response importCertificates(Action action) { + Provider provider = BackendExternalProviderHelper.getProvider(this, id); + ProviderParameters parameters = new ProviderParameters(provider); + return performAction(VdcActionType.ImportProviderCertificateChain, parameters); + } + + @Override + public ExternalProviderCertificatesResource getCertificates() { + return inject(new BackendExternalProviderCertificatesResource(id)); + } +} diff --git a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/externalhostproviders/BackendExternalHostProviderResource.java b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/externalhostproviders/BackendExternalHostProviderResource.java index c437beb..2db3947 100644 --- a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/externalhostproviders/BackendExternalHostProviderResource.java +++ b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/externalhostproviders/BackendExternalHostProviderResource.java @@ -18,78 +18,19 @@ import static org.ovirt.engine.api.restapi.resource.externalhostproviders.BackendExternalHostProvidersResource.SUB_COLLECTIONS; -import javax.ws.rs.core.Response; - -import org.ovirt.engine.api.model.Action; import org.ovirt.engine.api.model.ExternalHostProvider; -import org.ovirt.engine.api.resource.ExternalProviderCertificatesResource; import org.ovirt.engine.api.resource.externalhostproviders.ExternalComputeResourcesResource; import org.ovirt.engine.api.resource.externalhostproviders.ExternalDiscoveredHostsResource; import org.ovirt.engine.api.resource.externalhostproviders.ExternalHostGroupsResource; import org.ovirt.engine.api.resource.externalhostproviders.ExternalHostProviderResource; import org.ovirt.engine.api.resource.externalhostproviders.ExternalHostsResource; -import org.ovirt.engine.api.restapi.resource.AbstractBackendActionableResource; -import org.ovirt.engine.api.restapi.resource.BackendExternalProviderCertificatesResource; -import org.ovirt.engine.api.restapi.resource.BackendExternalProviderHelper; -import org.ovirt.engine.core.common.action.ProviderParameters; -import org.ovirt.engine.core.common.action.VdcActionParametersBase; -import org.ovirt.engine.core.common.action.VdcActionType; -import org.ovirt.engine.core.common.businessentities.Provider; -import org.ovirt.engine.core.common.queries.IdQueryParameters; -import org.ovirt.engine.core.common.queries.VdcQueryType; -import org.ovirt.engine.core.compat.Guid; +import org.ovirt.engine.api.restapi.resource.AbstractBackendExternalProviderResource; -public class BackendExternalHostProviderResource extends - AbstractBackendActionableResource<ExternalHostProvider, Provider> implements - ExternalHostProviderResource { +public class BackendExternalHostProviderResource + extends AbstractBackendExternalProviderResource<ExternalHostProvider> + implements ExternalHostProviderResource { public BackendExternalHostProviderResource(String id) { - super(id, ExternalHostProvider.class, Provider.class, SUB_COLLECTIONS); - } - - @Override - public ExternalHostProvider get() { - return performGet(VdcQueryType.GetProviderById, new IdQueryParameters(guid)); - } - - @Override - public ExternalHostProvider update(ExternalHostProvider incoming) { - return performUpdate( - incoming, - new QueryIdResolver<Guid>(VdcQueryType.GetProviderById, IdQueryParameters.class), - VdcActionType.UpdateProvider, - new UpdateParametersProvider() - ); - } - - protected class UpdateParametersProvider implements ParametersProvider<ExternalHostProvider, Provider> { - @Override - public VdcActionParametersBase getParameters(ExternalHostProvider incoming, Provider entity) { - return new ProviderParameters(map(incoming, entity)); - } - } - - @Override - protected ExternalHostProvider doPopulate(ExternalHostProvider model, Provider entity) { - return model; - } - - @Override - public Response testConnectivity(Action action) { - Provider provider = BackendExternalProviderHelper.getProvider(this, id); - ProviderParameters parameters = new ProviderParameters(provider); - return performAction(VdcActionType.TestProviderConnectivity, parameters); - } - - @Override - public Response importCertificates(Action action) { - Provider provider = BackendExternalProviderHelper.getProvider(this, id); - ProviderParameters parameters = new ProviderParameters(provider); - return performAction(VdcActionType.ImportProviderCertificateChain, parameters); - } - - @Override - public ExternalProviderCertificatesResource getCertificates() { - return inject(new BackendExternalProviderCertificatesResource(id)); + super(id, ExternalHostProvider.class, SUB_COLLECTIONS); } @Override -- To view, visit http://gerrit.ovirt.org/34759 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I040b0edc6d734337d238db4e90c3167fad0e39e8 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Juan Hernandez <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
