package com.thinkbiganalytics.nifi.v1.rest.client; /*- * #%L * thinkbig-nifi-rest-client-v1 * %% * Copyright (C) 2017 ThinkBig Analytics * %% * 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. * #L% */ import com.thinkbiganalytics.nifi.rest.client.NiFiPortsRestClient; import com.thinkbiganalytics.nifi.rest.client.NifiComponentNotFoundException; import com.thinkbiganalytics.nifi.rest.support.NifiConstants; import org.apache.nifi.web.api.dto.PortDTO; import org.apache.nifi.web.api.dto.RevisionDTO; import org.apache.nifi.web.api.entity.PortEntity; import javax.annotation.Nonnull; import javax.ws.rs.NotFoundException; /** * Implements a {@link NiFiPortsRestClient} for communicating with NiFi v1.0. */ public class NiFiPortsRestClientV1 implements NiFiPortsRestClient { /** * REST client for communicating with NiFi */ private final NiFiRestClientV1 client; /** * Constructs a {@code NiFiPortsRestClientV1} with the specified NiFi REST client. * * @param client the REST client */ public NiFiPortsRestClientV1(@Nonnull final NiFiRestClientV1 client) { this.client = client; } @Nonnull @Override public PortDTO updateInputPort(@Nonnull final String processGroupId, @Nonnull final PortDTO inputPort) { // Get revision final PortEntity current; try { current = client.get("/input-ports/" + inputPort.getId(), null, PortEntity.class); } catch (NotFoundException e) { throw new NifiComponentNotFoundException(inputPort.getId(), NifiConstants.NIFI_COMPONENT_TYPE.INPUT_PORT, e); } // Update input port final PortEntity entity = new PortEntity(); entity.setComponent(inputPort); final RevisionDTO revision = new RevisionDTO(); revision.setVersion(current.getRevision().getVersion()); entity.setRevision(revision); try { return client.put("/input-ports/" + inputPort.getId(), entity, PortEntity.class).getComponent(); } catch (final NotFoundException e) { throw new NifiComponentNotFoundException(inputPort.getId(), NifiConstants.NIFI_COMPONENT_TYPE.INPUT_PORT, e); } } @Nonnull @Override public PortDTO updateOutputPort(@Nonnull final String processGroupId, @Nonnull final PortDTO outputPort) { // Get revision final PortEntity current; try { current = client.get("/output-ports/" + outputPort.getId(), null, PortEntity.class); } catch (NotFoundException e) { throw new NifiComponentNotFoundException(outputPort.getId(), NifiConstants.NIFI_COMPONENT_TYPE.OUTPUT_PORT, e); } // Update output port final PortEntity entity = new PortEntity(); entity.setComponent(outputPort); final RevisionDTO revision = new RevisionDTO(); revision.setVersion(current.getRevision().getVersion()); entity.setRevision(revision); try { return client.put("/output-ports/" + outputPort.getId(), entity, PortEntity.class).getComponent(); } catch (final NotFoundException e) { throw new NifiComponentNotFoundException(outputPort.getId(), NifiConstants.NIFI_COMPONENT_TYPE.OUTPUT_PORT, e); } } }