You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by jo...@apache.org on 2015/01/16 03:29:37 UTC
[20/51] [partial] incubator-nifi git commit: Reworked overall
directory structure to make releasing nifi vs maven plugis easier
http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/300952a9/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/entity/UserEntity.java
----------------------------------------------------------------------
diff --git a/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/entity/UserEntity.java b/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/entity/UserEntity.java
deleted file mode 100644
index 963e853..0000000
--- a/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/entity/UserEntity.java
+++ /dev/null
@@ -1,45 +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.apache.nifi.web.api.entity;
-
-import javax.xml.bind.annotation.XmlRootElement;
-import org.apache.nifi.web.api.dto.UserDTO;
-
-/**
- * A serialized representation of this class can be placed in the entity body of
- * a request or response to or from the API. This particular entity holds a
- * reference to a UserDTO.
- */
-@XmlRootElement(name = "userEntity")
-public class UserEntity extends Entity {
-
- private UserDTO user;
-
- /**
- * The UserDTO that is being serialized.
- *
- * @return The UserDTO object
- */
- public UserDTO getUser() {
- return user;
- }
-
- public void setUser(UserDTO user) {
- this.user = user;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/300952a9/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/entity/UserGroupEntity.java
----------------------------------------------------------------------
diff --git a/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/entity/UserGroupEntity.java b/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/entity/UserGroupEntity.java
deleted file mode 100644
index a6542c8..0000000
--- a/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/entity/UserGroupEntity.java
+++ /dev/null
@@ -1,45 +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.apache.nifi.web.api.entity;
-
-import javax.xml.bind.annotation.XmlRootElement;
-import org.apache.nifi.web.api.dto.UserGroupDTO;
-
-/**
- * A serialized representation of this class can be placed in the entity body of
- * a request or response to or from the API. This particular entity holds a
- * reference to a UserGroupDTO.
- */
-@XmlRootElement(name = "userGroupEntity")
-public class UserGroupEntity extends Entity {
-
- private UserGroupDTO userGroup;
-
- /**
- * The UserGroupDTO that is being serialized.
- *
- * @return The UserGroupDTO object
- */
- public UserGroupDTO getUserGroup() {
- return userGroup;
- }
-
- public void setUserGroup(UserGroupDTO userGroup) {
- this.userGroup = userGroup;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/300952a9/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/entity/UserSearchResultsEntity.java
----------------------------------------------------------------------
diff --git a/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/entity/UserSearchResultsEntity.java b/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/entity/UserSearchResultsEntity.java
deleted file mode 100644
index baffe15..0000000
--- a/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/entity/UserSearchResultsEntity.java
+++ /dev/null
@@ -1,61 +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.apache.nifi.web.api.entity;
-
-import java.util.List;
-import javax.xml.bind.annotation.XmlRootElement;
-import org.apache.nifi.web.api.dto.search.UserGroupSearchResultDTO;
-import org.apache.nifi.web.api.dto.search.UserSearchResultDTO;
-
-/**
- * A serialized representation of this class can be placed in the entity body of
- * a request or response to or from the API. This particular entity holds a
- * reference to UserSearchResultDTOs and UserGroupSearchResultDTOs.
- */
-@XmlRootElement(name = "userSearchResultsEntity")
-public class UserSearchResultsEntity {
-
- private List<UserSearchResultDTO> userResults;
- private List<UserGroupSearchResultDTO> userGroupResults;
-
- /**
- * The user search results.
- *
- * @return
- */
- public List<UserSearchResultDTO> getUserResults() {
- return userResults;
- }
-
- public void setUserResults(List<UserSearchResultDTO> userResults) {
- this.userResults = userResults;
- }
-
- /**
- * The user group search results.
- *
- * @return
- */
- public List<UserGroupSearchResultDTO> getUserGroupResults() {
- return userGroupResults;
- }
-
- public void setUserGroupResults(List<UserGroupSearchResultDTO> userGroupResults) {
- this.userGroupResults = userGroupResults;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/300952a9/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/entity/UsersEntity.java
----------------------------------------------------------------------
diff --git a/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/entity/UsersEntity.java b/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/entity/UsersEntity.java
deleted file mode 100644
index 2d11d1f..0000000
--- a/nar-bundles/framework-bundle/framework/client-dto/src/main/java/org/apache/nifi/web/api/entity/UsersEntity.java
+++ /dev/null
@@ -1,64 +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.apache.nifi.web.api.entity;
-
-import java.util.Collection;
-import java.util.Date;
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
-import org.apache.nifi.web.api.dto.UserDTO;
-import org.apache.nifi.web.api.dto.util.TimeAdapter;
-
-/**
- * A serialized representation of this class can be placed in the entity body of
- * a request or response to or from the API. This particular entity holds a
- * reference to a collection of UserDTO.
- */
-@XmlRootElement(name = "usersEntity")
-public class UsersEntity extends Entity {
-
- private Collection<UserDTO> users;
- private Date generated;
-
- /**
- * The collection of UserDTOs that are being serialized.
- *
- * @return The UserDTO object
- */
- public Collection<UserDTO> getUsers() {
- return users;
- }
-
- public void setUsers(Collection<UserDTO> users) {
- this.users = users;
- }
-
- /**
- * When this content was generated.
- *
- * @return
- */
- @XmlJavaTypeAdapter(TimeAdapter.class)
- public Date getGenerated() {
- return generated;
- }
-
- public void setGenerated(Date generated) {
- this.generated = generated;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/300952a9/nar-bundles/framework-bundle/framework/cluster-authorization-provider/.gitignore
----------------------------------------------------------------------
diff --git a/nar-bundles/framework-bundle/framework/cluster-authorization-provider/.gitignore b/nar-bundles/framework-bundle/framework/cluster-authorization-provider/.gitignore
deleted file mode 100755
index ea8c4bf..0000000
--- a/nar-bundles/framework-bundle/framework/cluster-authorization-provider/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/target
http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/300952a9/nar-bundles/framework-bundle/framework/cluster-authorization-provider/pom.xml
----------------------------------------------------------------------
diff --git a/nar-bundles/framework-bundle/framework/cluster-authorization-provider/pom.xml b/nar-bundles/framework-bundle/framework/cluster-authorization-provider/pom.xml
deleted file mode 100644
index b8960c3..0000000
--- a/nar-bundles/framework-bundle/framework/cluster-authorization-provider/pom.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- 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.
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.apache.nifi</groupId>
- <artifactId>nifi-framework-parent</artifactId>
- <version>0.0.1-SNAPSHOT</version>
- </parent>
-
- <artifactId>cluster-authorization-provider</artifactId>
- <name>NiFi Framework Cluster Authority Provider</name>
- <dependencies>
- <dependency>
- <groupId>org.apache.nifi</groupId>
- <artifactId>nifi-api</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.nifi</groupId>
- <artifactId>file-authorization-provider</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.nifi</groupId>
- <artifactId>framework-cluster-protocol</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.nifi</groupId>
- <artifactId>framework-cluster</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.nifi</groupId>
- <artifactId>nifi-socket-utils</artifactId>
- </dependency>
- </dependencies>
-</project>
http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/300952a9/nar-bundles/framework-bundle/framework/cluster-authorization-provider/src/main/java/org/apache/nifi/cluster/authorization/ClusterManagerAuthorizationProvider.java
----------------------------------------------------------------------
diff --git a/nar-bundles/framework-bundle/framework/cluster-authorization-provider/src/main/java/org/apache/nifi/cluster/authorization/ClusterManagerAuthorizationProvider.java b/nar-bundles/framework-bundle/framework/cluster-authorization-provider/src/main/java/org/apache/nifi/cluster/authorization/ClusterManagerAuthorizationProvider.java
deleted file mode 100644
index 2b3b38c..0000000
--- a/nar-bundles/framework-bundle/framework/cluster-authorization-provider/src/main/java/org/apache/nifi/cluster/authorization/ClusterManagerAuthorizationProvider.java
+++ /dev/null
@@ -1,225 +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.apache.nifi.cluster.authorization;
-
-import java.io.IOException;
-import java.net.InetSocketAddress;
-import java.net.Socket;
-import org.apache.nifi.authorization.AuthorityProvider;
-import org.apache.nifi.authorization.AuthorityProviderConfigurationContext;
-import org.apache.nifi.authorization.AuthorityProviderInitializationContext;
-import org.apache.nifi.authorization.FileAuthorizationProvider;
-import org.apache.nifi.authorization.annotation.AuthorityProviderContext;
-import org.apache.nifi.authorization.exception.ProviderCreationException;
-import org.apache.nifi.authorization.exception.ProviderDestructionException;
-import org.apache.nifi.cluster.authorization.protocol.message.DoesDnExistMessage;
-import org.apache.nifi.cluster.authorization.protocol.message.GetAuthoritiesMessage;
-import org.apache.nifi.cluster.authorization.protocol.message.GetGroupForUserMessage;
-import org.apache.nifi.cluster.authorization.protocol.message.ProtocolMessage;
-import static org.apache.nifi.cluster.authorization.protocol.message.ProtocolMessage.MessageType.DOES_DN_EXIST;
-import static org.apache.nifi.cluster.authorization.protocol.message.ProtocolMessage.MessageType.GET_AUTHORITIES;
-import static org.apache.nifi.cluster.authorization.protocol.message.ProtocolMessage.MessageType.GET_GROUP_FOR_USER;
-import org.apache.nifi.cluster.authorization.protocol.message.jaxb.JaxbProtocolUtils;
-import org.apache.nifi.cluster.manager.impl.WebClusterManager;
-import org.apache.nifi.cluster.protocol.ProtocolContext;
-import org.apache.nifi.cluster.protocol.ProtocolMessageMarshaller;
-import org.apache.nifi.cluster.protocol.ProtocolMessageUnmarshaller;
-import org.apache.nifi.cluster.protocol.jaxb.JaxbProtocolContext;
-import org.apache.nifi.io.socket.ServerSocketConfiguration;
-import org.apache.nifi.io.socket.SocketListener;
-import org.apache.nifi.io.socket.SocketUtils;
-import org.apache.nifi.io.socket.multicast.DiscoverableService;
-import org.apache.nifi.io.socket.multicast.DiscoverableServiceImpl;
-import org.apache.nifi.logging.NiFiLog;
-import org.apache.nifi.util.NiFiProperties;
-import static org.apache.nifi.util.NiFiProperties.CLUSTER_MANAGER_ADDRESS;
-import org.apache.nifi.util.StringUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.BeansException;
-import org.springframework.context.ApplicationContext;
-import org.springframework.context.ApplicationContextAware;
-
-/**
- * Provides authorities for the NCM in clustered environments. Communication
- * occurs over TCP/IP sockets. All method calls are deferred to the
- * FileAuthorizationProvider.
- */
-public class ClusterManagerAuthorizationProvider extends FileAuthorizationProvider implements AuthorityProvider, ApplicationContextAware {
-
- public static final String AUTHORITY_PROVIDER_SERVIVE_NAME = "cluster-authority-provider";
-
- private static final Logger logger = new NiFiLog(LoggerFactory.getLogger(ClusterManagerAuthorizationProvider.class));
- private static final String CLUSTER_MANAGER_AUTHORITY_PROVIDER_PORT = "Authority Provider Port";
- private static final String CLUSTER_MANAGER_AUTHORITY_PROVIDER_THREADS = "Authority Provider Threads";
- private static final int DEFAULT_CLUSTER_MANAGER_AUTHORITY_PROVIDER_THREADS = 10;
-
- private WebClusterManager clusterManager;
- private ProtocolContext<ProtocolMessage> authorityProviderProtocolContext;
- private SocketListener socketListener;
- private NiFiProperties properties;
- private ApplicationContext applicationContext;
-
- @Override
- public void initialize(final AuthorityProviderInitializationContext initializationContext) throws ProviderCreationException {
- super.initialize(initializationContext);
- }
-
- @Override
- public void onConfigured(final AuthorityProviderConfigurationContext configurationContext) throws ProviderCreationException {
- super.onConfigured(configurationContext);
-
- // get the socket address of the cluster authority provider
- final InetSocketAddress clusterAuthorityProviderAddress = getClusterManagerAuthorityProviderAddress(configurationContext);
-
- // get the cluster manager
- clusterManager = applicationContext.getBean("clusterManager", WebClusterManager.class);
-
- // if using multicast, then the authority provider's service is broadcasted
- if (properties.getClusterProtocolUseMulticast()) {
-
- // create the authority provider service for discovery
- final DiscoverableService clusterAuthorityProviderService = new DiscoverableServiceImpl(AUTHORITY_PROVIDER_SERVIVE_NAME, clusterAuthorityProviderAddress);
-
- // register the authority provider service with the cluster manager
- clusterManager.addBroadcastedService(clusterAuthorityProviderService);
- }
-
- // get the number of protocol listening thread
- final int numThreads = getClusterManagerAuthorityProviderThreads(configurationContext);
-
- // the server socket configuration
- final ServerSocketConfiguration configuration = applicationContext.getBean("protocolServerSocketConfiguration", ServerSocketConfiguration.class);
-
- // the authority provider listens for node messages
- socketListener = new SocketListener(numThreads, clusterAuthorityProviderAddress.getPort(), configuration) {
- @Override
- public void dispatchRequest(final Socket socket) {
- ClusterManagerAuthorizationProvider.this.dispatchRequest(socket);
- }
- };
-
- // start the socket listener
- if (socketListener != null && !socketListener.isRunning()) {
- try {
- socketListener.start();
- } catch (final IOException ioe) {
- throw new ProviderCreationException("Failed to start Cluster Manager Authorization Provider due to: " + ioe, ioe);
- }
- }
-
- // initialize the protocol context
- authorityProviderProtocolContext = new JaxbProtocolContext<ProtocolMessage>(JaxbProtocolUtils.JAXB_CONTEXT);
- }
-
- @Override
- public void preDestruction() throws ProviderDestructionException {
- if (socketListener != null && socketListener.isRunning()) {
- try {
- socketListener.stop();
- } catch (final IOException ioe) {
- throw new ProviderDestructionException("Failed to stop Cluster Manager Authorization Provider due to: " + ioe, ioe);
- }
- }
- super.preDestruction();
- }
-
- private int getClusterManagerAuthorityProviderThreads(final AuthorityProviderConfigurationContext configurationContext) {
- try {
- return Integer.parseInt(configurationContext.getProperty(CLUSTER_MANAGER_AUTHORITY_PROVIDER_THREADS));
- } catch (NumberFormatException nfe) {
- return DEFAULT_CLUSTER_MANAGER_AUTHORITY_PROVIDER_THREADS;
- }
- }
-
- private InetSocketAddress getClusterManagerAuthorityProviderAddress(final AuthorityProviderConfigurationContext configurationContext) {
- try {
- String socketAddress = properties.getProperty(CLUSTER_MANAGER_ADDRESS);
- if (StringUtils.isBlank(socketAddress)) {
- socketAddress = "localhost";
- }
- return InetSocketAddress.createUnresolved(socketAddress, getClusterManagerAuthorityProviderPort(configurationContext));
- } catch (Exception ex) {
- throw new RuntimeException("Invalid manager authority provider address/port due to: " + ex, ex);
- }
- }
-
- private Integer getClusterManagerAuthorityProviderPort(final AuthorityProviderConfigurationContext configurationContext) {
- final String authorityProviderPort = configurationContext.getProperty(CLUSTER_MANAGER_AUTHORITY_PROVIDER_PORT);
- if (authorityProviderPort == null || authorityProviderPort.trim().isEmpty()) {
- throw new ProviderCreationException("The authority provider port must be specified.");
- }
-
- return Integer.parseInt(authorityProviderPort);
- }
-
- private void dispatchRequest(final Socket socket) {
- try {
- // unmarshall message
- final ProtocolMessageUnmarshaller<ProtocolMessage> unmarshaller = authorityProviderProtocolContext.createUnmarshaller();
- final ProtocolMessage request = unmarshaller.unmarshal(socket.getInputStream());
- final ProtocolMessage response = request;
-
- try {
- switch (request.getType()) {
- case DOES_DN_EXIST: {
- final DoesDnExistMessage castedMsg = (DoesDnExistMessage) request;
- castedMsg.setResponse(doesDnExist(castedMsg.getDn()));
- break;
- }
- case GET_AUTHORITIES: {
- final GetAuthoritiesMessage castedMsg = (GetAuthoritiesMessage) request;
- castedMsg.setResponse(getAuthorities(castedMsg.getDn()));
- break;
- }
- case GET_GROUP_FOR_USER: {
- final GetGroupForUserMessage castedMsg = (GetGroupForUserMessage) request;
- castedMsg.setResponse(getGroupForUser(castedMsg.getDn()));
- break;
- }
- default: {
- throw new Exception("Unsupported Message Type: " + request.getType());
- }
- }
- } catch (final Exception ex) {
- response.setExceptionClass(ex.getClass().getName());
- response.setExceptionMessage(ex.getMessage());
- }
-
- final ProtocolMessageMarshaller<ProtocolMessage> marshaller = authorityProviderProtocolContext.createMarshaller();
- marshaller.marshal(response, socket.getOutputStream());
-
- } catch (final Exception e) {
- logger.warn("Failed processing Socket Authorization Provider protocol message due to " + e, e);
- } finally {
- SocketUtils.closeQuietly(socket);
- }
- }
-
- @Override
- @AuthorityProviderContext
- public void setApplicationContext(final ApplicationContext applicationContext) throws BeansException {
- this.applicationContext = applicationContext;
- }
-
- @Override
- @AuthorityProviderContext
- public void setNiFiProperties(NiFiProperties properties) {
- super.setNiFiProperties(properties);
- this.properties = properties;
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/300952a9/nar-bundles/framework-bundle/framework/cluster-authorization-provider/src/main/java/org/apache/nifi/cluster/authorization/NodeAuthorizationProvider.java
----------------------------------------------------------------------
diff --git a/nar-bundles/framework-bundle/framework/cluster-authorization-provider/src/main/java/org/apache/nifi/cluster/authorization/NodeAuthorizationProvider.java b/nar-bundles/framework-bundle/framework/cluster-authorization-provider/src/main/java/org/apache/nifi/cluster/authorization/NodeAuthorizationProvider.java
deleted file mode 100644
index 840422f..0000000
--- a/nar-bundles/framework-bundle/framework/cluster-authorization-provider/src/main/java/org/apache/nifi/cluster/authorization/NodeAuthorizationProvider.java
+++ /dev/null
@@ -1,389 +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.apache.nifi.cluster.authorization;
-
-import org.apache.nifi.cluster.authorization.protocol.message.DoesDnExistMessage;
-import org.apache.nifi.cluster.authorization.protocol.message.GetAuthoritiesMessage;
-import org.apache.nifi.cluster.authorization.protocol.message.ProtocolMessage;
-import java.io.IOException;
-import java.net.InetSocketAddress;
-import java.net.Socket;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.TimeUnit;
-import org.apache.nifi.authorization.Authority;
-import org.apache.nifi.authorization.AuthorityProvider;
-import org.apache.nifi.authorization.AuthorityProviderConfigurationContext;
-import org.apache.nifi.authorization.AuthorityProviderInitializationContext;
-import org.apache.nifi.authorization.DownloadAuthorization;
-import org.apache.nifi.authorization.annotation.AuthorityProviderContext;
-import org.apache.nifi.authorization.exception.AuthorityAccessException;
-import org.apache.nifi.authorization.exception.IdentityAlreadyExistsException;
-import org.apache.nifi.authorization.exception.ProviderCreationException;
-import org.apache.nifi.authorization.exception.ProviderDestructionException;
-import org.apache.nifi.authorization.exception.UnknownIdentityException;
-import org.apache.nifi.cluster.authorization.protocol.message.GetGroupForUserMessage;
-import org.apache.nifi.cluster.authorization.protocol.message.jaxb.JaxbProtocolUtils;
-import org.apache.nifi.io.socket.SocketConfiguration;
-import org.apache.nifi.io.socket.SocketUtils;
-import org.apache.nifi.io.socket.multicast.DiscoverableService;
-import org.apache.nifi.cluster.protocol.ProtocolContext;
-import org.apache.nifi.cluster.protocol.ProtocolMessageMarshaller;
-import org.apache.nifi.cluster.protocol.ProtocolMessageUnmarshaller;
-import org.apache.nifi.cluster.protocol.impl.ClusterServiceDiscovery;
-import org.apache.nifi.cluster.protocol.impl.ClusterServiceLocator;
-import org.apache.nifi.cluster.protocol.jaxb.JaxbProtocolContext;
-import org.apache.nifi.io.socket.multicast.DiscoverableServiceImpl;
-import org.apache.nifi.io.socket.multicast.MulticastConfiguration;
-import org.apache.nifi.logging.NiFiLog;
-import org.apache.nifi.util.NiFiProperties;
-import static org.apache.nifi.util.NiFiProperties.CLUSTER_NODE_UNICAST_MANAGER_ADDRESS;
-import org.apache.nifi.util.StringUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.BeansException;
-import org.springframework.context.ApplicationContext;
-import org.springframework.context.ApplicationContextAware;
-
-/**
- * Provides authorities for nodes in clustered environments. Communication
- * occurs over TCP/IP sockets. All method calls are communicated to the cluster
- * manager provider via socket.
- */
-public class NodeAuthorizationProvider implements AuthorityProvider, ApplicationContextAware {
-
- private static final Logger logger = new NiFiLog(LoggerFactory.getLogger(NodeAuthorizationProvider.class));
- private static final String CLUSTER_NODE_MANAGER_AUTHORITY_PROVIDER_PORT = "Cluster Manager Authority Provider Port";
-
- private ProtocolContext<ProtocolMessage> authorityProviderProtocolContext;
- private SocketConfiguration socketConfiguration;
- private ClusterServiceLocator serviceLocator;
- private ApplicationContext applicationContext;
- private NiFiProperties properties;
-
- @Override
- public void initialize(AuthorityProviderInitializationContext initializationContext) throws ProviderCreationException {
- }
-
- @Override
- public void onConfigured(final AuthorityProviderConfigurationContext configurationContext) throws ProviderCreationException {
- // TODO clear user cache?
-
- // if using multicast, then the authority provider's service is broadcasted
- if (properties.getClusterProtocolUseMulticast()) {
- // create the service discovery
- final ClusterServiceDiscovery serviceDiscovery = new ClusterServiceDiscovery(
- ClusterManagerAuthorizationProvider.AUTHORITY_PROVIDER_SERVIVE_NAME,
- properties.getClusterProtocolMulticastAddress(),
- applicationContext.getBean("protocolMulticastConfiguration", MulticastConfiguration.class),
- applicationContext.getBean("protocolContext", ProtocolContext.class));
-
- // create service location configuration
- final ClusterServiceLocator.AttemptsConfig config = new ClusterServiceLocator.AttemptsConfig();
- config.setNumAttempts(3);
- config.setTimeBetweenAttempts(1);
- config.setTimeBetweenAttempsUnit(TimeUnit.SECONDS);
-
- serviceLocator = new ClusterServiceLocator(serviceDiscovery);
- serviceLocator.setAttemptsConfig(config);
- } else {
- final InetSocketAddress serviceAddress = getClusterNodeManagerAuthorityProviderAddress(configurationContext);
- final DiscoverableService service = new DiscoverableServiceImpl(ClusterManagerAuthorizationProvider.AUTHORITY_PROVIDER_SERVIVE_NAME, serviceAddress);
- serviceLocator = new ClusterServiceLocator(service);
- }
-
- try {
- // start the service locator
- serviceLocator.start();
- } catch (final IOException ioe) {
- throw new ProviderCreationException(ioe);
- }
-
- // the socket configuration
- socketConfiguration = applicationContext.getBean("protocolSocketConfiguration", SocketConfiguration.class);
-
- // initialize the protocol context
- authorityProviderProtocolContext = new JaxbProtocolContext<ProtocolMessage>(JaxbProtocolUtils.JAXB_CONTEXT);
- }
-
- private InetSocketAddress getClusterNodeManagerAuthorityProviderAddress(final AuthorityProviderConfigurationContext configurationContext) {
- try {
- String socketAddress = properties.getProperty(CLUSTER_NODE_UNICAST_MANAGER_ADDRESS);
- if (StringUtils.isBlank(socketAddress)) {
- socketAddress = "localhost";
- }
- return InetSocketAddress.createUnresolved(socketAddress, getClusterNodeManagerAuthorityProviderPort(configurationContext));
- } catch (Exception ex) {
- throw new ProviderCreationException("Invalid cluster manager authority provider address/port due to: " + ex, ex);
- }
- }
-
- private Integer getClusterNodeManagerAuthorityProviderPort(final AuthorityProviderConfigurationContext configurationContext) {
- final String nodeAuthorityProviderPort = configurationContext.getProperty(CLUSTER_NODE_MANAGER_AUTHORITY_PROVIDER_PORT);
- if (nodeAuthorityProviderPort == null || nodeAuthorityProviderPort.trim().isEmpty()) {
- throw new ProviderCreationException("The cluster manager authority provider port must be specified.");
- }
-
- return Integer.parseInt(nodeAuthorityProviderPort);
- }
-
- @Override
- public void setAuthorities(String dn, Set<Authority> authorities) throws AuthorityAccessException {
- throw new AuthorityAccessException("Nodes are not allowed to set user authorities.");
- }
-
- @Override
- public void addUser(String dn, String group) throws IdentityAlreadyExistsException, AuthorityAccessException {
- throw new AuthorityAccessException("Nodes are not allowed to add users.");
- }
-
- @Override
- public boolean doesDnExist(String dn) throws AuthorityAccessException {
- // create message
- final DoesDnExistMessage msg = new DoesDnExistMessage();
- msg.setDn(dn);
-
- Socket socket = null;
- try {
-
- final InetSocketAddress socketAddress = getServiceAddress();
- if (socketAddress == null) {
- throw new AuthorityAccessException("Cluster Authority Provider's address is not known.");
- }
-
- try {
- // create a socket
- socket = SocketUtils.createSocket(socketAddress, socketConfiguration);
- } catch (final IOException ioe) {
- throw new AuthorityAccessException("Failed to create socket due to: " + ioe, ioe);
- }
-
- try {
- // marshal message to output stream
- final ProtocolMessageMarshaller marshaller = authorityProviderProtocolContext.createMarshaller();
- marshaller.marshal(msg, socket.getOutputStream());
- } catch (final IOException ioe) {
- throw new AuthorityAccessException("Failed marshalling '" + msg.getType() + "' protocol message due to: " + ioe, ioe);
- }
-
- try {
-
- // unmarshall response and return
- final ProtocolMessageUnmarshaller<ProtocolMessage> unmarshaller = authorityProviderProtocolContext.createUnmarshaller();
- final DoesDnExistMessage response = (DoesDnExistMessage) unmarshaller.unmarshal(socket.getInputStream());
-
- // check if there was an exception
- if (response.wasException()) {
- throw new AuthorityAccessException(response.getExceptionMessage());
- }
-
- // return provider's response
- return response.getResponse();
-
- } catch (final IOException ioe) {
- throw new AuthorityAccessException("Failed unmarshalling '" + msg.getType() + "' response protocol message due to: " + ioe, ioe);
- }
-
- } finally {
- SocketUtils.closeQuietly(socket);
- }
- }
-
- @Override
- public Set<Authority> getAuthorities(String dn) throws UnknownIdentityException, AuthorityAccessException {
- // create message
- final GetAuthoritiesMessage msg = new GetAuthoritiesMessage();
- msg.setDn(dn);
-
- Socket socket = null;
- try {
-
- final InetSocketAddress socketAddress = getServiceAddress();
- if (socketAddress == null) {
- throw new AuthorityAccessException("Cluster Authority Provider's address is not known.");
- }
-
- try {
- // create a socket
- socket = SocketUtils.createSocket(socketAddress, socketConfiguration);
- } catch (final IOException ioe) {
- throw new AuthorityAccessException("Failed to create socket due to: " + ioe, ioe);
- }
-
- try {
- // marshal message to output stream
- final ProtocolMessageMarshaller marshaller = authorityProviderProtocolContext.createMarshaller();
- marshaller.marshal(msg, socket.getOutputStream());
- } catch (final IOException ioe) {
- throw new AuthorityAccessException("Failed marshalling '" + msg.getType() + "' protocol message due to: " + ioe, ioe);
- }
-
- try {
-
- // unmarshall response and return
- final ProtocolMessageUnmarshaller<ProtocolMessage> unmarshaller = authorityProviderProtocolContext.createUnmarshaller();
- final GetAuthoritiesMessage response = (GetAuthoritiesMessage) unmarshaller.unmarshal(socket.getInputStream());
-
- // check if there was an exception
- if (response.wasException()) {
- if (isException(UnknownIdentityException.class, response)) {
- throw new UnknownIdentityException(response.getExceptionMessage());
- } else {
- throw new AuthorityAccessException(response.getExceptionMessage());
- }
- }
-
- // return provider's response
- return response.getResponse();
-
- } catch (final IOException ioe) {
- throw new AuthorityAccessException("Failed unmarshalling '" + msg.getType() + "' response protocol message due to: " + ioe, ioe);
- }
-
- } finally {
- SocketUtils.closeQuietly(socket);
- }
- }
-
- @Override
- public Set<String> getUsers(Authority authority) throws AuthorityAccessException {
- throw new AuthorityAccessException("Nodes are not allowed to get users for a given authority.");
- }
-
- @Override
- public void revokeUser(String dn) throws UnknownIdentityException, AuthorityAccessException {
- throw new AuthorityAccessException("Nodes are not allowed to revoke users.");
- }
-
- @Override
- public void setUsersGroup(Set<String> dns, String group) throws UnknownIdentityException, AuthorityAccessException {
- throw new AuthorityAccessException("Nodes are not allowed to set user groups.");
- }
-
- @Override
- public void ungroupUser(String dn) throws UnknownIdentityException, AuthorityAccessException {
- throw new AuthorityAccessException("Nodes are not allowed to ungroup users.");
- }
-
- @Override
- public void ungroup(String group) throws AuthorityAccessException {
- throw new AuthorityAccessException("Nodes are not allowed to ungroup.");
- }
-
- @Override
- public DownloadAuthorization authorizeDownload(List<String> dnChain, Map<String, String> attributes) throws UnknownIdentityException, AuthorityAccessException {
- return DownloadAuthorization.approved();
- }
-
- @Override
- public String getGroupForUser(String dn) throws UnknownIdentityException, AuthorityAccessException {
- // create message
- final GetGroupForUserMessage msg = new GetGroupForUserMessage();
- msg.setDn(dn);
-
- Socket socket = null;
- try {
-
- final InetSocketAddress socketAddress = getServiceAddress();
- if (socketAddress == null) {
- throw new AuthorityAccessException("Cluster Authority Provider's address is not known.");
- }
-
- try {
- // create a socket
- socket = SocketUtils.createSocket(socketAddress, socketConfiguration);
- } catch (final IOException ioe) {
- throw new AuthorityAccessException("Failed to create socket due to: " + ioe, ioe);
- }
-
- try {
- // marshal message to output stream
- final ProtocolMessageMarshaller marshaller = authorityProviderProtocolContext.createMarshaller();
- marshaller.marshal(msg, socket.getOutputStream());
- } catch (final IOException ioe) {
- throw new AuthorityAccessException("Failed marshalling '" + msg.getType() + "' protocol message due to: " + ioe, ioe);
- }
-
- try {
-
- // unmarshall response and return
- final ProtocolMessageUnmarshaller<ProtocolMessage> unmarshaller = authorityProviderProtocolContext.createUnmarshaller();
- final GetGroupForUserMessage response = (GetGroupForUserMessage) unmarshaller.unmarshal(socket.getInputStream());
-
- // check if there was an exception
- if (response.wasException()) {
- if (isException(UnknownIdentityException.class, response)) {
- throw new UnknownIdentityException(response.getExceptionMessage());
- } else {
- throw new AuthorityAccessException(response.getExceptionMessage());
- }
- }
-
- return response.getResponse();
- } catch (final IOException ioe) {
- throw new AuthorityAccessException("Failed unmarshalling '" + msg.getType() + "' response protocol message due to: " + ioe, ioe);
- }
-
- } finally {
- SocketUtils.closeQuietly(socket);
- }
- }
-
- @Override
- public void revokeGroup(String group) throws UnknownIdentityException, AuthorityAccessException {
- throw new AuthorityAccessException("Nodes are not allowed to revoke groups.");
- }
-
- @Override
- public void preDestruction() throws ProviderDestructionException {
- try {
- if (serviceLocator != null && serviceLocator.isRunning()) {
- serviceLocator.stop();
- }
- } catch (final IOException ioe) {
- throw new ProviderDestructionException(ioe);
- }
- }
-
- @Override
- @AuthorityProviderContext
- public void setApplicationContext(final ApplicationContext applicationContext) throws BeansException {
- this.applicationContext = applicationContext;
- }
-
- @AuthorityProviderContext
- public void setNiFiProperties(NiFiProperties properties) {
- this.properties = properties;
- }
-
- private InetSocketAddress getServiceAddress() {
- final DiscoverableService service = serviceLocator.getService();
- if (service != null) {
- return service.getServiceAddress();
- }
- return null;
- }
-
- private boolean isException(final Class<? extends Exception> exception, final ProtocolMessage protocolMessage) {
- if (protocolMessage.wasException()) {
- return exception.getName().equals(protocolMessage.getExceptionClass());
- } else {
- return false;
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/300952a9/nar-bundles/framework-bundle/framework/cluster-authorization-provider/src/main/java/org/apache/nifi/cluster/authorization/protocol/message/DoesDnExistMessage.java
----------------------------------------------------------------------
diff --git a/nar-bundles/framework-bundle/framework/cluster-authorization-provider/src/main/java/org/apache/nifi/cluster/authorization/protocol/message/DoesDnExistMessage.java b/nar-bundles/framework-bundle/framework/cluster-authorization-provider/src/main/java/org/apache/nifi/cluster/authorization/protocol/message/DoesDnExistMessage.java
deleted file mode 100644
index 38d0dd8..0000000
--- a/nar-bundles/framework-bundle/framework/cluster-authorization-provider/src/main/java/org/apache/nifi/cluster/authorization/protocol/message/DoesDnExistMessage.java
+++ /dev/null
@@ -1,56 +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.apache.nifi.cluster.authorization.protocol.message;
-
-import javax.xml.bind.annotation.XmlRootElement;
-import org.apache.nifi.cluster.authorization.protocol.message.ProtocolMessage.MessageType;
-
-/**
- * @author unattributed
- */
-@XmlRootElement(name = "doesDnExistMessage")
-public class DoesDnExistMessage extends ProtocolMessage {
-
- private String dn;
-
- private boolean response;
-
- public DoesDnExistMessage() {
- }
-
- @Override
- public MessageType getType() {
- return MessageType.DOES_DN_EXIST;
- }
-
- public String getDn() {
- return dn;
- }
-
- public void setDn(String dn) {
- this.dn = dn;
- }
-
- public boolean getResponse() {
- return response;
- }
-
- public void setResponse(boolean response) {
- this.response = response;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/300952a9/nar-bundles/framework-bundle/framework/cluster-authorization-provider/src/main/java/org/apache/nifi/cluster/authorization/protocol/message/GetAuthoritiesMessage.java
----------------------------------------------------------------------
diff --git a/nar-bundles/framework-bundle/framework/cluster-authorization-provider/src/main/java/org/apache/nifi/cluster/authorization/protocol/message/GetAuthoritiesMessage.java b/nar-bundles/framework-bundle/framework/cluster-authorization-provider/src/main/java/org/apache/nifi/cluster/authorization/protocol/message/GetAuthoritiesMessage.java
deleted file mode 100644
index 347163f..0000000
--- a/nar-bundles/framework-bundle/framework/cluster-authorization-provider/src/main/java/org/apache/nifi/cluster/authorization/protocol/message/GetAuthoritiesMessage.java
+++ /dev/null
@@ -1,58 +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.apache.nifi.cluster.authorization.protocol.message;
-
-import java.util.HashSet;
-import java.util.Set;
-import javax.xml.bind.annotation.XmlRootElement;
-import org.apache.nifi.authorization.Authority;
-
-/**
- * @author unattributed
- */
-@XmlRootElement(name = "getAuthoritiesMessage")
-public class GetAuthoritiesMessage extends ProtocolMessage {
-
- private String dn;
-
- private Set<Authority> response = new HashSet<>();
-
- public GetAuthoritiesMessage() {
- }
-
- @Override
- public MessageType getType() {
- return MessageType.GET_AUTHORITIES;
- }
-
- public String getDn() {
- return dn;
- }
-
- public void setDn(String dn) {
- this.dn = dn;
- }
-
- public Set<Authority> getResponse() {
- return response;
- }
-
- public void setResponse(Set<Authority> response) {
- this.response = response;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/300952a9/nar-bundles/framework-bundle/framework/cluster-authorization-provider/src/main/java/org/apache/nifi/cluster/authorization/protocol/message/GetGroupForUserMessage.java
----------------------------------------------------------------------
diff --git a/nar-bundles/framework-bundle/framework/cluster-authorization-provider/src/main/java/org/apache/nifi/cluster/authorization/protocol/message/GetGroupForUserMessage.java b/nar-bundles/framework-bundle/framework/cluster-authorization-provider/src/main/java/org/apache/nifi/cluster/authorization/protocol/message/GetGroupForUserMessage.java
deleted file mode 100644
index 717f244..0000000
--- a/nar-bundles/framework-bundle/framework/cluster-authorization-provider/src/main/java/org/apache/nifi/cluster/authorization/protocol/message/GetGroupForUserMessage.java
+++ /dev/null
@@ -1,55 +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.apache.nifi.cluster.authorization.protocol.message;
-
-import javax.xml.bind.annotation.XmlRootElement;
-
-/**
- * @author unattributed
- */
-@XmlRootElement(name = "getGroupForUserMessage")
-public class GetGroupForUserMessage extends ProtocolMessage {
-
- private String dn;
-
- private String response;
-
- public GetGroupForUserMessage() {
- }
-
- @Override
- public MessageType getType() {
- return MessageType.GET_GROUP_FOR_USER;
- }
-
- public String getDn() {
- return dn;
- }
-
- public void setDn(String dn) {
- this.dn = dn;
- }
-
- public String getResponse() {
- return response;
- }
-
- public void setResponse(String response) {
- this.response = response;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/300952a9/nar-bundles/framework-bundle/framework/cluster-authorization-provider/src/main/java/org/apache/nifi/cluster/authorization/protocol/message/ProtocolMessage.java
----------------------------------------------------------------------
diff --git a/nar-bundles/framework-bundle/framework/cluster-authorization-provider/src/main/java/org/apache/nifi/cluster/authorization/protocol/message/ProtocolMessage.java b/nar-bundles/framework-bundle/framework/cluster-authorization-provider/src/main/java/org/apache/nifi/cluster/authorization/protocol/message/ProtocolMessage.java
deleted file mode 100644
index 102142a..0000000
--- a/nar-bundles/framework-bundle/framework/cluster-authorization-provider/src/main/java/org/apache/nifi/cluster/authorization/protocol/message/ProtocolMessage.java
+++ /dev/null
@@ -1,57 +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.apache.nifi.cluster.authorization.protocol.message;
-
-/**
- * @author unattributed
- */
-public abstract class ProtocolMessage {
-
- private String exceptionClass;
- private String exceptionMessage;
-
- public static enum MessageType {
-
- DOES_DN_EXIST,
- GET_AUTHORITIES,
- GET_USERS,
- GET_GROUP_FOR_USER
- }
-
- public abstract MessageType getType();
-
- public boolean wasException() {
- return exceptionClass != null;
- }
-
- public String getExceptionMessage() {
- return exceptionMessage;
- }
-
- public void setExceptionMessage(final String exceptionMessage) {
- this.exceptionMessage = exceptionMessage;
- }
-
- public String getExceptionClass() {
- return exceptionClass;
- }
-
- public void setExceptionClass(String exceptionClass) {
- this.exceptionClass = exceptionClass;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/300952a9/nar-bundles/framework-bundle/framework/cluster-authorization-provider/src/main/java/org/apache/nifi/cluster/authorization/protocol/message/jaxb/JaxbProtocolUtils.java
----------------------------------------------------------------------
diff --git a/nar-bundles/framework-bundle/framework/cluster-authorization-provider/src/main/java/org/apache/nifi/cluster/authorization/protocol/message/jaxb/JaxbProtocolUtils.java b/nar-bundles/framework-bundle/framework/cluster-authorization-provider/src/main/java/org/apache/nifi/cluster/authorization/protocol/message/jaxb/JaxbProtocolUtils.java
deleted file mode 100644
index 97a1bc7..0000000
--- a/nar-bundles/framework-bundle/framework/cluster-authorization-provider/src/main/java/org/apache/nifi/cluster/authorization/protocol/message/jaxb/JaxbProtocolUtils.java
+++ /dev/null
@@ -1,42 +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.apache.nifi.cluster.authorization.protocol.message.jaxb;
-
-import javax.xml.bind.JAXBContext;
-import javax.xml.bind.JAXBException;
-
-/**
- * @author unattributed
- */
-public final class JaxbProtocolUtils {
-
- public static final String JAXB_CONTEXT_PATH = ObjectFactory.class.getPackage().getName();
-
- public static final JAXBContext JAXB_CONTEXT = initializeJaxbContext();
-
- /**
- * Load the JAXBContext version.
- */
- private static JAXBContext initializeJaxbContext() {
- try {
- return JAXBContext.newInstance(JAXB_CONTEXT_PATH);
- } catch (JAXBException e) {
- throw new RuntimeException("Unable to create JAXBContext.");
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/300952a9/nar-bundles/framework-bundle/framework/cluster-authorization-provider/src/main/java/org/apache/nifi/cluster/authorization/protocol/message/jaxb/ObjectFactory.java
----------------------------------------------------------------------
diff --git a/nar-bundles/framework-bundle/framework/cluster-authorization-provider/src/main/java/org/apache/nifi/cluster/authorization/protocol/message/jaxb/ObjectFactory.java b/nar-bundles/framework-bundle/framework/cluster-authorization-provider/src/main/java/org/apache/nifi/cluster/authorization/protocol/message/jaxb/ObjectFactory.java
deleted file mode 100644
index 5cde335..0000000
--- a/nar-bundles/framework-bundle/framework/cluster-authorization-provider/src/main/java/org/apache/nifi/cluster/authorization/protocol/message/jaxb/ObjectFactory.java
+++ /dev/null
@@ -1,45 +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.apache.nifi.cluster.authorization.protocol.message.jaxb;
-
-import javax.xml.bind.annotation.XmlRegistry;
-import org.apache.nifi.cluster.authorization.protocol.message.DoesDnExistMessage;
-import org.apache.nifi.cluster.authorization.protocol.message.GetAuthoritiesMessage;
-import org.apache.nifi.cluster.authorization.protocol.message.GetGroupForUserMessage;
-
-/**
- * @author unattributed
- */
-@XmlRegistry
-public class ObjectFactory {
-
- public ObjectFactory() {
- }
-
- public DoesDnExistMessage createDoesDnExistMessage() {
- return new DoesDnExistMessage();
- }
-
- public GetAuthoritiesMessage createGetAuthoritiesMessage() {
- return new GetAuthoritiesMessage();
- }
-
- public GetGroupForUserMessage createGetGroupForUserMessage() {
- return new GetGroupForUserMessage();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/300952a9/nar-bundles/framework-bundle/framework/cluster-authorization-provider/src/main/resources/META-INF/services/org.apache.nifi.authorization.AuthorityProvider
----------------------------------------------------------------------
diff --git a/nar-bundles/framework-bundle/framework/cluster-authorization-provider/src/main/resources/META-INF/services/org.apache.nifi.authorization.AuthorityProvider b/nar-bundles/framework-bundle/framework/cluster-authorization-provider/src/main/resources/META-INF/services/org.apache.nifi.authorization.AuthorityProvider
deleted file mode 100644
index 56f4c3e..0000000
--- a/nar-bundles/framework-bundle/framework/cluster-authorization-provider/src/main/resources/META-INF/services/org.apache.nifi.authorization.AuthorityProvider
+++ /dev/null
@@ -1,16 +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.
-org.apache.nifi.cluster.authorization.ClusterManagerAuthorizationProvider
-org.apache.nifi.cluster.authorization.NodeAuthorizationProvider
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/300952a9/nar-bundles/framework-bundle/framework/cluster-protocol/.gitignore
----------------------------------------------------------------------
diff --git a/nar-bundles/framework-bundle/framework/cluster-protocol/.gitignore b/nar-bundles/framework-bundle/framework/cluster-protocol/.gitignore
deleted file mode 100755
index ea8c4bf..0000000
--- a/nar-bundles/framework-bundle/framework/cluster-protocol/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/target
http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/300952a9/nar-bundles/framework-bundle/framework/cluster-protocol/pom.xml
----------------------------------------------------------------------
diff --git a/nar-bundles/framework-bundle/framework/cluster-protocol/pom.xml b/nar-bundles/framework-bundle/framework/cluster-protocol/pom.xml
deleted file mode 100644
index 5351085..0000000
--- a/nar-bundles/framework-bundle/framework/cluster-protocol/pom.xml
+++ /dev/null
@@ -1,69 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- 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.
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.apache.nifi</groupId>
- <artifactId>nifi-framework-parent</artifactId>
- <version>0.0.1-SNAPSHOT</version>
- </parent>
- <artifactId>framework-cluster-protocol</artifactId>
- <packaging>jar</packaging>
- <name>NiFi Framework Cluster Protocol</name>
- <description>The messaging protocol for clustered NiFi</description>
- <dependencies>
-
- <!-- application dependencies -->
- <dependency>
- <groupId>org.apache.nifi</groupId>
- <artifactId>nifi-api</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.nifi</groupId>
- <artifactId>nifi-properties</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.nifi</groupId>
- <artifactId>nifi-logging-utils</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.nifi</groupId>
- <artifactId>nifi-socket-utils</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.nifi</groupId>
- <artifactId>nifi-security</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.nifi</groupId>
- <artifactId>core-api</artifactId>
- </dependency>
-
- <!-- spring dependencies -->
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-core</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-beans</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-context</artifactId>
- </dependency>
- </dependencies>
-</project>
http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/300952a9/nar-bundles/framework-bundle/framework/cluster-protocol/src/main/java/org/apache/nifi/cluster/protocol/ClusterManagerProtocolSender.java
----------------------------------------------------------------------
diff --git a/nar-bundles/framework-bundle/framework/cluster-protocol/src/main/java/org/apache/nifi/cluster/protocol/ClusterManagerProtocolSender.java b/nar-bundles/framework-bundle/framework/cluster-protocol/src/main/java/org/apache/nifi/cluster/protocol/ClusterManagerProtocolSender.java
deleted file mode 100644
index fa1547f..0000000
--- a/nar-bundles/framework-bundle/framework/cluster-protocol/src/main/java/org/apache/nifi/cluster/protocol/ClusterManagerProtocolSender.java
+++ /dev/null
@@ -1,69 +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.apache.nifi.cluster.protocol;
-
-import org.apache.nifi.cluster.protocol.message.DisconnectMessage;
-import org.apache.nifi.cluster.protocol.message.FlowRequestMessage;
-import org.apache.nifi.cluster.protocol.message.FlowResponseMessage;
-import org.apache.nifi.cluster.protocol.message.PrimaryRoleAssignmentMessage;
-import org.apache.nifi.cluster.protocol.message.ReconnectionRequestMessage;
-import org.apache.nifi.cluster.protocol.message.ReconnectionResponseMessage;
-import org.apache.nifi.reporting.BulletinRepository;
-
-/**
- * An interface for sending protocol messages from the cluster manager to nodes.
- *
- * @author unattributed
- */
-public interface ClusterManagerProtocolSender {
-
- /**
- * Sends a "flow request" message to a node.
- * @param msg a message
- * @return the response
- * @throws ProtocolException if communication failed
- */
- FlowResponseMessage requestFlow(FlowRequestMessage msg) throws ProtocolException;
-
- /**
- * Sends a "reconnection request" message to a node.
- * @param msg a message
- * @return
- * @throws ProtocolException if communication failed
- */
- ReconnectionResponseMessage requestReconnection(ReconnectionRequestMessage msg) throws ProtocolException;
-
- /**
- * Sends a "disconnection request" message to a node.
- * @param msg a message
- * @throws ProtocolException if communication failed
- */
- void disconnect(DisconnectMessage msg) throws ProtocolException;
-
- /**
- * Sends an "assign primary role" message to a node.
- * @param msg a message
- * @throws ProtocolException if communication failed
- */
- void assignPrimaryRole(PrimaryRoleAssignmentMessage msg) throws ProtocolException;
-
- /**
- * Sets the {@link BulletinRepository} that can be used to report bulletins
- * @param bulletinRepository
- */
- void setBulletinRepository(final BulletinRepository bulletinRepository);
-}
http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/300952a9/nar-bundles/framework-bundle/framework/cluster-protocol/src/main/java/org/apache/nifi/cluster/protocol/ConnectionRequest.java
----------------------------------------------------------------------
diff --git a/nar-bundles/framework-bundle/framework/cluster-protocol/src/main/java/org/apache/nifi/cluster/protocol/ConnectionRequest.java b/nar-bundles/framework-bundle/framework/cluster-protocol/src/main/java/org/apache/nifi/cluster/protocol/ConnectionRequest.java
deleted file mode 100644
index 1b5d007..0000000
--- a/nar-bundles/framework-bundle/framework/cluster-protocol/src/main/java/org/apache/nifi/cluster/protocol/ConnectionRequest.java
+++ /dev/null
@@ -1,44 +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.apache.nifi.cluster.protocol;
-
-import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
-import org.apache.nifi.cluster.protocol.jaxb.message.ConnectionRequestAdapter;
-
-/**
- * A node's request to connect to the cluster. The request contains a proposed
- * identifier.
- *
- * @author unattributed
- */
-@XmlJavaTypeAdapter(ConnectionRequestAdapter.class)
-public class ConnectionRequest {
-
- private final NodeIdentifier proposedNodeIdentifier;
-
- public ConnectionRequest(final NodeIdentifier proposedNodeIdentifier) {
- if(proposedNodeIdentifier == null) {
- throw new IllegalArgumentException("Proposed node identifier may not be null.");
- }
- this.proposedNodeIdentifier = proposedNodeIdentifier;
- }
-
- public NodeIdentifier getProposedNodeIdentifier() {
- return proposedNodeIdentifier;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/300952a9/nar-bundles/framework-bundle/framework/cluster-protocol/src/main/java/org/apache/nifi/cluster/protocol/ConnectionResponse.java
----------------------------------------------------------------------
diff --git a/nar-bundles/framework-bundle/framework/cluster-protocol/src/main/java/org/apache/nifi/cluster/protocol/ConnectionResponse.java b/nar-bundles/framework-bundle/framework/cluster-protocol/src/main/java/org/apache/nifi/cluster/protocol/ConnectionResponse.java
deleted file mode 100644
index 7a5ff2b..0000000
--- a/nar-bundles/framework-bundle/framework/cluster-protocol/src/main/java/org/apache/nifi/cluster/protocol/ConnectionResponse.java
+++ /dev/null
@@ -1,141 +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.apache.nifi.cluster.protocol;
-
-import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
-
-import org.apache.nifi.cluster.protocol.jaxb.message.ConnectionResponseAdapter;
-
-/**
- * The cluster manager's response to a node's connection request. If the manager
- * has a current copy of the data flow, then it is returned with a node identifier
- * to the node. Otherwise, the manager will provide a "try again in X seconds"
- * response to the node in hopes that a current data flow will be available upon
- * subsequent requests.
- *
- * @author unattributed
- */
-@XmlJavaTypeAdapter(ConnectionResponseAdapter.class)
-public class ConnectionResponse {
-
- private final boolean blockedByFirewall;
- private final int tryLaterSeconds;
- private final NodeIdentifier nodeIdentifier;
- private final StandardDataFlow dataFlow;
- private final boolean primary;
- private final Integer managerRemoteInputPort;
- private final Boolean managerRemoteCommsSecure;
- private final String instanceId;
-
- private volatile String clusterManagerDN;
-
- public ConnectionResponse(final NodeIdentifier nodeIdentifier, final StandardDataFlow dataFlow, final boolean primary,
- final Integer managerRemoteInputPort, final Boolean managerRemoteCommsSecure, final String instanceId) {
- if(nodeIdentifier == null) {
- throw new IllegalArgumentException("Node identifier may not be empty or null.");
- } else if(dataFlow == null) {
- throw new IllegalArgumentException("DataFlow may not be null.");
- }
- this.nodeIdentifier = nodeIdentifier;
- this.dataFlow = dataFlow;
- this.tryLaterSeconds = 0;
- this.blockedByFirewall = false;
- this.primary = primary;
- this.managerRemoteInputPort = managerRemoteInputPort;
- this.managerRemoteCommsSecure = managerRemoteCommsSecure;
- this.instanceId = instanceId;
- }
-
- public ConnectionResponse(final int tryLaterSeconds) {
- if(tryLaterSeconds <= 0) {
- throw new IllegalArgumentException("Try-Later seconds may not be nonnegative: " + tryLaterSeconds);
- }
- this.dataFlow = null;
- this.nodeIdentifier = null;
- this.tryLaterSeconds = tryLaterSeconds;
- this.blockedByFirewall = false;
- this.primary = false;
- this.managerRemoteInputPort = null;
- this.managerRemoteCommsSecure = null;
- this.instanceId = null;
- }
-
- private ConnectionResponse() {
- this.dataFlow = null;
- this.nodeIdentifier = null;
- this.tryLaterSeconds = 0;
- this.blockedByFirewall = true;
- this.primary = false;
- this.managerRemoteInputPort = null;
- this.managerRemoteCommsSecure = null;
- this.instanceId = null;
- }
-
- public static ConnectionResponse createBlockedByFirewallResponse() {
- return new ConnectionResponse();
- }
-
- public boolean isPrimary() {
- return primary;
- }
-
- public boolean shouldTryLater() {
- return tryLaterSeconds > 0;
- }
-
- public boolean isBlockedByFirewall() {
- return blockedByFirewall;
- }
-
- public int getTryLaterSeconds() {
- return tryLaterSeconds;
- }
-
- public StandardDataFlow getDataFlow() {
- return dataFlow;
- }
-
- public NodeIdentifier getNodeIdentifier() {
- return nodeIdentifier;
- }
-
- public Integer getManagerRemoteInputPort() {
- return managerRemoteInputPort;
- }
-
- public Boolean isManagerRemoteCommsSecure() {
- return managerRemoteCommsSecure;
- }
-
- public String getInstanceId() {
- return instanceId;
- }
-
- public void setClusterManagerDN(final String dn) {
- this.clusterManagerDN = dn;
- }
-
- /**
- * Returns the DN of the NCM, if it is available or <code>null</code> otherwise.
- *
- * @return
- */
- public String getClusterManagerDN() {
- return clusterManagerDN;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/300952a9/nar-bundles/framework-bundle/framework/cluster-protocol/src/main/java/org/apache/nifi/cluster/protocol/Heartbeat.java
----------------------------------------------------------------------
diff --git a/nar-bundles/framework-bundle/framework/cluster-protocol/src/main/java/org/apache/nifi/cluster/protocol/Heartbeat.java b/nar-bundles/framework-bundle/framework/cluster-protocol/src/main/java/org/apache/nifi/cluster/protocol/Heartbeat.java
deleted file mode 100644
index 67324a1..0000000
--- a/nar-bundles/framework-bundle/framework/cluster-protocol/src/main/java/org/apache/nifi/cluster/protocol/Heartbeat.java
+++ /dev/null
@@ -1,68 +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.apache.nifi.cluster.protocol;
-
-import java.util.Date;
-import javax.xml.bind.annotation.XmlTransient;
-import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
-import org.apache.nifi.cluster.protocol.jaxb.message.HeartbeatAdapter;
-
-/**
- * A heartbeat for indicating the status of a node to the cluster.
- * @author unattributed
- */
-@XmlJavaTypeAdapter(HeartbeatAdapter.class)
-public class Heartbeat {
-
- private final NodeIdentifier nodeIdentifier;
- private final boolean primary;
- private final boolean connected;
- private final long createdTimestamp;
- private final byte[] payload;
-
- public Heartbeat(final NodeIdentifier nodeIdentifier, final boolean primary, final boolean connected, final byte[] payload) {
- if(nodeIdentifier == null) {
- throw new IllegalArgumentException("Node Identifier may not be null.");
- }
- this.nodeIdentifier = nodeIdentifier;
- this.primary = primary;
- this.connected = connected;
- this.payload = payload;
- this.createdTimestamp = new Date().getTime();
- }
-
- public NodeIdentifier getNodeIdentifier() {
- return nodeIdentifier;
- }
-
- public byte[] getPayload() {
- return payload;
- }
-
- public boolean isPrimary() {
- return primary;
- }
-
- public boolean isConnected() {
- return connected;
- }
-
- @XmlTransient
- public long getCreatedTimestamp() {
- return createdTimestamp;
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/300952a9/nar-bundles/framework-bundle/framework/cluster-protocol/src/main/java/org/apache/nifi/cluster/protocol/NodeBulletins.java
----------------------------------------------------------------------
diff --git a/nar-bundles/framework-bundle/framework/cluster-protocol/src/main/java/org/apache/nifi/cluster/protocol/NodeBulletins.java b/nar-bundles/framework-bundle/framework/cluster-protocol/src/main/java/org/apache/nifi/cluster/protocol/NodeBulletins.java
deleted file mode 100644
index a120524..0000000
--- a/nar-bundles/framework-bundle/framework/cluster-protocol/src/main/java/org/apache/nifi/cluster/protocol/NodeBulletins.java
+++ /dev/null
@@ -1,44 +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.apache.nifi.cluster.protocol;
-
-import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
-import org.apache.nifi.cluster.protocol.jaxb.message.NodeBulletinsAdapter;
-
-/**
- *
- */
-@XmlJavaTypeAdapter(NodeBulletinsAdapter.class)
-public class NodeBulletins {
-
- private final NodeIdentifier nodeIdentifier;
- private final byte[] payload;
-
- public NodeBulletins(NodeIdentifier nodeIdentifier, byte[] payload) {
- this.nodeIdentifier = nodeIdentifier;
- this.payload = payload;
- }
-
- public NodeIdentifier getNodeIdentifier() {
- return nodeIdentifier;
- }
-
- public byte[] getPayload() {
- return payload;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/300952a9/nar-bundles/framework-bundle/framework/cluster-protocol/src/main/java/org/apache/nifi/cluster/protocol/NodeIdentifier.java
----------------------------------------------------------------------
diff --git a/nar-bundles/framework-bundle/framework/cluster-protocol/src/main/java/org/apache/nifi/cluster/protocol/NodeIdentifier.java b/nar-bundles/framework-bundle/framework/cluster-protocol/src/main/java/org/apache/nifi/cluster/protocol/NodeIdentifier.java
deleted file mode 100644
index 1893186..0000000
--- a/nar-bundles/framework-bundle/framework/cluster-protocol/src/main/java/org/apache/nifi/cluster/protocol/NodeIdentifier.java
+++ /dev/null
@@ -1,172 +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.apache.nifi.cluster.protocol;
-
-import org.apache.commons.lang3.StringUtils;
-
-/**
- * A node identifier denoting the coordinates of a flow controller that is connected
- * to a cluster. Nodes provide an external public API interface and an internal private
- * interface for communicating with the cluster.
- *
- * The external API interface and internal protocol each require an IP or hostname
- * as well as a port for communicating.
- *
- * This class overrides hashCode and equals and considers two instances to be
- * equal if they have the equal IDs.
- *
- * @author unattributed
- * @Immutable
- * @Threadsafe
- */
-public class NodeIdentifier {
-
- /** the unique identifier for the node */
- private final String id;
-
- /** the IP or hostname to use for sending requests to the node's external interface */
- private final String apiAddress;
-
- /** the port to use use for sending requests to the node's external interface */
- private final int apiPort;
-
- /** the IP or hostname to use for sending requests to the node's internal interface */
- private final String socketAddress;
-
- /** the port to use use for sending requests to the node's internal interface */
- private final int socketPort;
-
- private final String nodeDn;
-
- public NodeIdentifier(final String id, final String apiAddress, final int apiPort, final String socketAddress, final int socketPort) {
- this(id, apiAddress, apiPort, socketAddress, socketPort, null);
- }
-
- public NodeIdentifier(final String id, final String apiAddress, final int apiPort, final String socketAddress, final int socketPort, final String dn) {
-
- if(StringUtils.isBlank(id)) {
- throw new IllegalArgumentException("Node ID may not be empty or null.");
- } else if(StringUtils.isBlank(apiAddress)) {
- throw new IllegalArgumentException("Node API address may not be empty or null.");
- } else if(StringUtils.isBlank(socketAddress)) {
- throw new IllegalArgumentException("Node socket address may not be empty or null.");
- }
-
- validatePort(apiPort);
- validatePort(socketPort);
-
- this.id = id;
- this.apiAddress = apiAddress;
- this.apiPort = apiPort;
- this.socketAddress = socketAddress;
- this.socketPort = socketPort;
- this.nodeDn = dn;
- }
-
- public String getId() {
- return id;
- }
-
- public String getDN() {
- return nodeDn;
- }
-
- public String getApiAddress() {
- return apiAddress;
- }
-
- public int getApiPort() {
- return apiPort;
- }
-
- public String getSocketAddress() {
- return socketAddress;
- }
-
- public int getSocketPort() {
- return socketPort;
- }
-
- private void validatePort(final int port) {
- if(port < 1 || port > 65535) {
- throw new IllegalArgumentException("Port must be inclusively in the range [1, 65535]. Port given: " + port);
- }
- }
-
- /**
- * Compares the id of two node identifiers for equality.
- *
- * @param obj a node identifier
- *
- * @return true if the id is equal; false otherwise
- */
- @Override
- public boolean equals(Object obj) {
- if (obj == null) {
- return false;
- }
- if (getClass() != obj.getClass()) {
- return false;
- }
- final NodeIdentifier other = (NodeIdentifier) obj;
- if ((this.id == null) ? (other.id != null) : !this.id.equals(other.id)) {
- return false;
- }
- return true;
- }
-
- /**
- * Compares API address/port and socket address/port for equality. The
- * id is not used for comparison.
- *
- * @param other a node identifier
- *
- * @return true if API address/port and socket address/port are equal; false
- * otherwise
- */
- public boolean logicallyEquals(final NodeIdentifier other) {
- if(other == null) {
- return false;
- }
- if ((this.apiAddress == null) ? (other.apiAddress != null) : !this.apiAddress.equals(other.apiAddress)) {
- return false;
- }
- if(this.apiPort != other.apiPort) {
- return false;
- }
- if ((this.socketAddress == null) ? (other.socketAddress != null) : !this.socketAddress.equals(other.socketAddress)) {
- return false;
- }
- if(this.socketPort != other.socketPort) {
- return false;
- }
- return true;
- }
-
- @Override
- public int hashCode() {
- int hash = 7;
- hash = 31 * hash + (this.id != null ? this.id.hashCode() : 0);
- return hash;
- }
-
- @Override
- public String toString() {
- return "[" + "id=" + id + ", apiAddress=" + apiAddress + ", apiPort=" + apiPort + ", socketAddress=" + socketAddress + ", socketPort=" + socketPort + ']';
- }
-
-}