@Test(expected = UninheritableFlowException.class) public void testSynchronizeFlowWhenAuthorizationsAreDifferent() { final String authFingerprint = "<authorizations></authorizations>"; final DataFlow proposedDataFlow = Mockito.mock(DataFlow.class); when(proposedDataFlow.getAuthorizerFingerprint()).thenReturn(authFingerprint.getBytes(StandardCharsets.UTF_8)); controller.synchronize(standardFlowSynchronizer, proposedDataFlow); assertNotEquals(authFingerprint, authorizer.getFingerprint()); }
public void synchronize(final FlowSynchronizer synchronizer, final DataFlow dataFlow) throws FlowSerializationException, FlowSynchronizationException, UninheritableFlowException { writeLock.lock(); try { LOG.debug("Synchronizing controller with proposed flow"); synchronizer.sync(this, dataFlow, encryptor); LOG.info("Successfully synchronized controller with proposed flow"); } finally { writeLock.unlock(); } }
FlowController implements EventAccess, ControllerServiceProvider, ReportingTaskProvider,
    QueueProvider, Authorizable, ProvenanceAuthorizableFactory, NodeTypeProvider, IdentifierLookup { public void synchronize(final FlowSynchronizer synchronizer, final DataFlow dataFlow) throws FlowSerializationException, FlowSynchronizationException, UninheritableFlowException { writeLock.lock(); try { LOG.debug("Synchronizing controller with proposed flow"); synchronizer.sync(this, dataFlow, encryptor); LOG.info("Successfully synchronized controller with proposed flow"); } finally { writeLock.unlock(); } } }
FlowController implements EventAccess, ControllerServiceProvider, ReportingTaskProvider,
    QueueProvider, Authorizable, ProvenanceAuthorizableFactory, NodeTypeProvider, IdentifierLookup { public void synchronize(final FlowSynchronizer synchronizer, final DataFlow dataFlow) throws FlowSerializationException, FlowSynchronizationException, UninheritableFlowException { writeLock.lock(); try { LOG.debug("Synchronizing controller with proposed flow"); synchronizer.sync(this, dataFlow, encryptor); LOG.info("Successfully synchronized controller with proposed flow"); } finally { writeLock.unlock(); } } private  FlowController(
            final FlowFileEventRepository flowFileEventRepo,
            final NiFiProperties nifiProperties,
            final Authorizer authorizer,
            final AuditService auditService,
            final StringEncryptor encryptor,
            final boolean configuredForClustering,
            final NodeProtocolSender protocolSender,
            final BulletinRepository bulletinRepo,
            final ClusterCoordinator clusterCoordinator,
            final HeartbeatMonitor heartbeatMonitor,
            final LeaderElectionManager leaderElectionManager,
            final VariableRegistry variableRegistry); }
FlowController implements EventAccess, ControllerServiceProvider, ReportingTaskProvider,
    QueueProvider, Authorizable, ProvenanceAuthorizableFactory, NodeTypeProvider, IdentifierLookup { public void synchronize(final FlowSynchronizer synchronizer, final DataFlow dataFlow) throws FlowSerializationException, FlowSynchronizationException, UninheritableFlowException { writeLock.lock(); try { LOG.debug("Synchronizing controller with proposed flow"); synchronizer.sync(this, dataFlow, encryptor); LOG.info("Successfully synchronized controller with proposed flow"); } finally { writeLock.unlock(); } } private  FlowController(
            final FlowFileEventRepository flowFileEventRepo,
            final NiFiProperties nifiProperties,
            final Authorizer authorizer,
            final AuditService auditService,
            final StringEncryptor encryptor,
            final boolean configuredForClustering,
            final NodeProtocolSender protocolSender,
            final BulletinRepository bulletinRepo,
            final ClusterCoordinator clusterCoordinator,
            final HeartbeatMonitor heartbeatMonitor,
            final LeaderElectionManager leaderElectionManager,
            final VariableRegistry variableRegistry); static FlowController createStandaloneInstance(
            final FlowFileEventRepository flowFileEventRepo,
            final NiFiProperties properties,
            final Authorizer authorizer,
            final AuditService auditService,
            final StringEncryptor encryptor,
            final BulletinRepository bulletinRepo,
            final VariableRegistry variableRegistry); static FlowController createClusteredInstance(
            final FlowFileEventRepository flowFileEventRepo,
            final NiFiProperties properties,
            final Authorizer authorizer,
            final AuditService auditService,
            final StringEncryptor encryptor,
            final NodeProtocolSender protocolSender,
            final BulletinRepository bulletinRepo,
            final ClusterCoordinator clusterCoordinator,
            final HeartbeatMonitor heartbeatMonitor,
            final LeaderElectionManager leaderElectionManager,
            final VariableRegistry variableRegistry); @Override Authorizable getParentAuthorizable(); @Override Resource getResource(); void initializeFlow(); void onFlowInitialized(final boolean startDelayedComponents); Connection createConnection(final String id, final String name, final Connectable source, final Connectable destination, final Collection<String> relationshipNames); Label createLabel(final String id, final String text); Funnel createFunnel(final String id); Port createLocalInputPort(String id, String name); Port createLocalOutputPort(String id, String name); ProcessGroup createProcessGroup(final String id); ProcessorNode createProcessor(final String type, final String id); ProcessorNode createProcessor(final String type, String id, final boolean firstTimeAdded); ExtensionManager getExtensionManager(); String getInstanceId(); Heartbeater getHeartbeater(); BulletinRepository getBulletinRepository(); SnippetManager getSnippetManager(); StateManagerProvider getStateManagerProvider(); Authorizer getAuthorizer(); Port createRemoteInputPort(String id, String name); Port createRemoteOutputPort(String id, String name); RemoteProcessGroup createRemoteProcessGroup(final String id, final String uris); ProcessGroup getRootGroup(); String getName(); void setName(final String name); String getComments(); void setComments(final String comments); boolean isTerminated(); void shutdown(final boolean kill); void serialize(final FlowSerializer serializer, final OutputStream os); void synchronize(final FlowSynchronizer synchronizer, final DataFlow dataFlow); int getMaxTimerDrivenThreadCount(); int getMaxEventDrivenThreadCount(); void setMaxTimerDrivenThreadCount(final int maxThreadCount); void setMaxEventDrivenThreadCount(final int maxThreadCount); String getRootGroupId(); SystemDiagnostics getSystemDiagnostics(); void updateProcessGroup(final ProcessGroupDTO dto); void instantiateSnippet(final ProcessGroup group, final FlowSnippetDTO dto); void verifyComponentTypesInSnippet(final FlowSnippetDTO templateContents); boolean areGroupsSame(final String id1, final String id2); FlowFilePrioritizer createPrioritizer(final String type); PortDTO updateInputPort(final String parentGroupId, final PortDTO dto); PortDTO updateOutputPort(final String parentGroupId, final PortDTO dto); @SuppressWarnings("rawtypes") Set<Class> getFlowFileProcessorClasses(); @SuppressWarnings("rawtypes") Set<Class> getFlowFileComparatorClasses(); ProcessGroup getGroup(final String id); @Override ProcessGroupStatus getControllerStatus(); @Override ProcessGroupStatus getGroupStatus(final String groupId); ProcessGroupStatus getGroupStatus(final String groupId, final NiFiUser user); ProcessGroupStatus getGroupStatus(final String groupId, final RepositoryStatusReport statusReport); ProcessGroupStatus getGroupStatus(final String groupId, final RepositoryStatusReport statusReport, final NiFiUser user); ProcessGroupStatus getGroupStatus(final ProcessGroup group, final RepositoryStatusReport statusReport, final Predicate<Authorizable> isAuthorized); void startProcessor(final String parentGroupId, final String processorId); boolean isInitialized(); void startConnectable(final Connectable connectable); void startTransmitting(final RemoteGroupPort remoteGroupPort); void stopProcessor(final String parentGroupId, final String processorId); void stopAllProcessors(); void startProcessGroup(final String groupId); void stopProcessGroup(final String groupId); ReportingTaskNode createReportingTask(final String type); ReportingTaskNode createReportingTask(final String type, final boolean firstTimeAdded); @Override ReportingTaskNode createReportingTask(final String type, final String id, final boolean firstTimeAdded); ReportingTaskNode createReportingTask(final String type, final String id, final boolean firstTimeAdded, final boolean register); @Override ReportingTaskNode getReportingTaskNode(final String taskId); @Override void startReportingTask(final ReportingTaskNode reportingTaskNode); @Override void stopReportingTask(final ReportingTaskNode reportingTaskNode); @Override void removeReportingTask(final ReportingTaskNode reportingTaskNode); @Override Set<ReportingTaskNode> getAllReportingTasks(); @Override ControllerServiceNode createControllerService(final String type, final String id, final boolean firstTimeAdded); @Override void enableReportingTask(final ReportingTaskNode reportingTaskNode); @Override void disableReportingTask(final ReportingTaskNode reportingTaskNode); @Override Set<ConfiguredComponent> disableReferencingServices(final ControllerServiceNode serviceNode); @Override Set<ConfiguredComponent> enableReferencingServices(final ControllerServiceNode serviceNode); @Override Set<ConfiguredComponent> scheduleReferencingComponents(final ControllerServiceNode serviceNode); @Override Set<ConfiguredComponent> unscheduleReferencingComponents(final ControllerServiceNode serviceNode); @Override void enableControllerService(final ControllerServiceNode serviceNode); @Override void enableControllerServices(final Collection<ControllerServiceNode> serviceNodes); @Override void disableControllerService(final ControllerServiceNode serviceNode); @Override void verifyCanEnableReferencingServices(final ControllerServiceNode serviceNode); @Override void verifyCanScheduleReferencingComponents(final ControllerServiceNode serviceNode); @Override void verifyCanDisableReferencingServices(final ControllerServiceNode serviceNode); @Override void verifyCanStopReferencingComponents(final ControllerServiceNode serviceNode); @Override ControllerService getControllerService(final String serviceIdentifier); @Override ControllerService getControllerServiceForComponent(final String serviceIdentifier, final String componentId); @Override Set<String> getControllerServiceIdentifiers(final Class<? extends ControllerService> serviceType); @Override ControllerServiceNode getControllerServiceNode(final String serviceIdentifier); Set<ControllerServiceNode> getRootControllerServices(); void addRootControllerService(final ControllerServiceNode serviceNode); ControllerServiceNode getRootControllerService(final String serviceIdentifier); void removeRootControllerService(final ControllerServiceNode service); @Override boolean isControllerServiceEnabled(final ControllerService service); @Override boolean isControllerServiceEnabled(final String serviceIdentifier); @Override boolean isControllerServiceEnabling(final String serviceIdentifier); @Override String getControllerServiceName(final String serviceIdentifier); @Override void removeControllerService(final ControllerServiceNode serviceNode); @Override Set<ControllerServiceNode> getAllControllerServices(); List<Counter> getCounters(); Counter resetCounter(final String identifier); QueueSize getTotalFlowFileCount(final ProcessGroup group); int getActiveThreadCount(); void startHeartbeating(); void suspendHeartbeats(); void resumeHeartbeats(); void stopHeartbeating(); boolean isHeartbeating(); int getHeartbeatDelaySeconds(); NodeIdentifier getNodeId(); void setNodeId(final NodeIdentifier nodeId); @Override boolean isClustered(); boolean isConfiguredForClustering(); void setClustered(final boolean clustered, final String clusterInstanceId); @Override boolean isPrimary(); void setPrimary(final boolean primary); ContentAvailability getContentAvailability(final ProvenanceEventRecord event); InputStream getContent(final ProvenanceEventRecord provEvent, final ContentDirection direction, final String requestor, final String requestUri); InputStream getContent(final FlowFileRecord flowFile, final String requestor, final String requestUri); ProvenanceEventRecord replayFlowFile(final long provenanceEventRecordId, final NiFiUser user); ProvenanceEventRecord replayFlowFile(final ProvenanceEventRecord event, final NiFiUser user); @Override List<String> getComponentIdentifiers(); @Override @SuppressWarnings("rawtypes") List<String> getComponentTypes(); @Override List<String> getQueueIdentifiers(); boolean isConnected(); void setConnectionStatus(final NodeConnectionStatus connectionStatus); void heartbeat(); @Override List<ProvenanceEventRecord> getProvenanceEvents(final long firstEventId, final int maxRecords); @Override Authorizable createLocalDataAuthorizable(final String componentId); @Override Authorizable createRemoteDataAuthorizable(String remoteGroupPortId); @Override List<Action> getFlowChanges(final int firstActionId, final int maxActions); Integer getRemoteSiteListeningPort(); Integer getRemoteSiteListeningHttpPort(); Boolean isRemoteSiteCommsSecure(); ProcessScheduler getProcessScheduler(); @Override Set<String> getControllerServiceIdentifiers(final Class<? extends ControllerService> serviceType, final String groupId); @Override ProvenanceRepository getProvenanceRepository(); StatusHistoryDTO getConnectionStatusHistory(final String connectionId); StatusHistoryDTO getConnectionStatusHistory(final String connectionId, final Date startTime, final Date endTime, final int preferredDataPoints); StatusHistoryDTO getProcessorStatusHistory(final String processorId); StatusHistoryDTO getProcessorStatusHistory(final String processorId, final Date startTime, final Date endTime, final int preferredDataPoints); StatusHistoryDTO getProcessGroupStatusHistory(final String processGroupId); StatusHistoryDTO getProcessGroupStatusHistory(final String processGroupId, final Date startTime, final Date endTime, final int preferredDataPoints); StatusHistoryDTO getRemoteProcessGroupStatusHistory(final String remoteGroupId); StatusHistoryDTO getRemoteProcessGroupStatusHistory(final String remoteGroupId, final Date startTime, final Date endTime, final int preferredDataPoints); @Override Collection<FlowFileQueue> getAllQueues(); }
FlowController implements EventAccess, ControllerServiceProvider, ReportingTaskProvider,
    QueueProvider, Authorizable, ProvenanceAuthorizableFactory, NodeTypeProvider, IdentifierLookup { public void synchronize(final FlowSynchronizer synchronizer, final DataFlow dataFlow) throws FlowSerializationException, FlowSynchronizationException, UninheritableFlowException { writeLock.lock(); try { LOG.debug("Synchronizing controller with proposed flow"); synchronizer.sync(this, dataFlow, encryptor); LOG.info("Successfully synchronized controller with proposed flow"); } finally { writeLock.unlock(); } } private  FlowController(
            final FlowFileEventRepository flowFileEventRepo,
            final NiFiProperties nifiProperties,
            final Authorizer authorizer,
            final AuditService auditService,
            final StringEncryptor encryptor,
            final boolean configuredForClustering,
            final NodeProtocolSender protocolSender,
            final BulletinRepository bulletinRepo,
            final ClusterCoordinator clusterCoordinator,
            final HeartbeatMonitor heartbeatMonitor,
            final LeaderElectionManager leaderElectionManager,
            final VariableRegistry variableRegistry); static FlowController createStandaloneInstance(
            final FlowFileEventRepository flowFileEventRepo,
            final NiFiProperties properties,
            final Authorizer authorizer,
            final AuditService auditService,
            final StringEncryptor encryptor,
            final BulletinRepository bulletinRepo,
            final VariableRegistry variableRegistry); static FlowController createClusteredInstance(
            final FlowFileEventRepository flowFileEventRepo,
            final NiFiProperties properties,
            final Authorizer authorizer,
            final AuditService auditService,
            final StringEncryptor encryptor,
            final NodeProtocolSender protocolSender,
            final BulletinRepository bulletinRepo,
            final ClusterCoordinator clusterCoordinator,
            final HeartbeatMonitor heartbeatMonitor,
            final LeaderElectionManager leaderElectionManager,
            final VariableRegistry variableRegistry); @Override Authorizable getParentAuthorizable(); @Override Resource getResource(); void initializeFlow(); void onFlowInitialized(final boolean startDelayedComponents); Connection createConnection(final String id, final String name, final Connectable source, final Connectable destination, final Collection<String> relationshipNames); Label createLabel(final String id, final String text); Funnel createFunnel(final String id); Port createLocalInputPort(String id, String name); Port createLocalOutputPort(String id, String name); ProcessGroup createProcessGroup(final String id); ProcessorNode createProcessor(final String type, final String id); ProcessorNode createProcessor(final String type, String id, final boolean firstTimeAdded); ExtensionManager getExtensionManager(); String getInstanceId(); Heartbeater getHeartbeater(); BulletinRepository getBulletinRepository(); SnippetManager getSnippetManager(); StateManagerProvider getStateManagerProvider(); Authorizer getAuthorizer(); Port createRemoteInputPort(String id, String name); Port createRemoteOutputPort(String id, String name); RemoteProcessGroup createRemoteProcessGroup(final String id, final String uris); ProcessGroup getRootGroup(); String getName(); void setName(final String name); String getComments(); void setComments(final String comments); boolean isTerminated(); void shutdown(final boolean kill); void serialize(final FlowSerializer serializer, final OutputStream os); void synchronize(final FlowSynchronizer synchronizer, final DataFlow dataFlow); int getMaxTimerDrivenThreadCount(); int getMaxEventDrivenThreadCount(); void setMaxTimerDrivenThreadCount(final int maxThreadCount); void setMaxEventDrivenThreadCount(final int maxThreadCount); String getRootGroupId(); SystemDiagnostics getSystemDiagnostics(); void updateProcessGroup(final ProcessGroupDTO dto); void instantiateSnippet(final ProcessGroup group, final FlowSnippetDTO dto); void verifyComponentTypesInSnippet(final FlowSnippetDTO templateContents); boolean areGroupsSame(final String id1, final String id2); FlowFilePrioritizer createPrioritizer(final String type); PortDTO updateInputPort(final String parentGroupId, final PortDTO dto); PortDTO updateOutputPort(final String parentGroupId, final PortDTO dto); @SuppressWarnings("rawtypes") Set<Class> getFlowFileProcessorClasses(); @SuppressWarnings("rawtypes") Set<Class> getFlowFileComparatorClasses(); ProcessGroup getGroup(final String id); @Override ProcessGroupStatus getControllerStatus(); @Override ProcessGroupStatus getGroupStatus(final String groupId); ProcessGroupStatus getGroupStatus(final String groupId, final NiFiUser user); ProcessGroupStatus getGroupStatus(final String groupId, final RepositoryStatusReport statusReport); ProcessGroupStatus getGroupStatus(final String groupId, final RepositoryStatusReport statusReport, final NiFiUser user); ProcessGroupStatus getGroupStatus(final ProcessGroup group, final RepositoryStatusReport statusReport, final Predicate<Authorizable> isAuthorized); void startProcessor(final String parentGroupId, final String processorId); boolean isInitialized(); void startConnectable(final Connectable connectable); void startTransmitting(final RemoteGroupPort remoteGroupPort); void stopProcessor(final String parentGroupId, final String processorId); void stopAllProcessors(); void startProcessGroup(final String groupId); void stopProcessGroup(final String groupId); ReportingTaskNode createReportingTask(final String type); ReportingTaskNode createReportingTask(final String type, final boolean firstTimeAdded); @Override ReportingTaskNode createReportingTask(final String type, final String id, final boolean firstTimeAdded); ReportingTaskNode createReportingTask(final String type, final String id, final boolean firstTimeAdded, final boolean register); @Override ReportingTaskNode getReportingTaskNode(final String taskId); @Override void startReportingTask(final ReportingTaskNode reportingTaskNode); @Override void stopReportingTask(final ReportingTaskNode reportingTaskNode); @Override void removeReportingTask(final ReportingTaskNode reportingTaskNode); @Override Set<ReportingTaskNode> getAllReportingTasks(); @Override ControllerServiceNode createControllerService(final String type, final String id, final boolean firstTimeAdded); @Override void enableReportingTask(final ReportingTaskNode reportingTaskNode); @Override void disableReportingTask(final ReportingTaskNode reportingTaskNode); @Override Set<ConfiguredComponent> disableReferencingServices(final ControllerServiceNode serviceNode); @Override Set<ConfiguredComponent> enableReferencingServices(final ControllerServiceNode serviceNode); @Override Set<ConfiguredComponent> scheduleReferencingComponents(final ControllerServiceNode serviceNode); @Override Set<ConfiguredComponent> unscheduleReferencingComponents(final ControllerServiceNode serviceNode); @Override void enableControllerService(final ControllerServiceNode serviceNode); @Override void enableControllerServices(final Collection<ControllerServiceNode> serviceNodes); @Override void disableControllerService(final ControllerServiceNode serviceNode); @Override void verifyCanEnableReferencingServices(final ControllerServiceNode serviceNode); @Override void verifyCanScheduleReferencingComponents(final ControllerServiceNode serviceNode); @Override void verifyCanDisableReferencingServices(final ControllerServiceNode serviceNode); @Override void verifyCanStopReferencingComponents(final ControllerServiceNode serviceNode); @Override ControllerService getControllerService(final String serviceIdentifier); @Override ControllerService getControllerServiceForComponent(final String serviceIdentifier, final String componentId); @Override Set<String> getControllerServiceIdentifiers(final Class<? extends ControllerService> serviceType); @Override ControllerServiceNode getControllerServiceNode(final String serviceIdentifier); Set<ControllerServiceNode> getRootControllerServices(); void addRootControllerService(final ControllerServiceNode serviceNode); ControllerServiceNode getRootControllerService(final String serviceIdentifier); void removeRootControllerService(final ControllerServiceNode service); @Override boolean isControllerServiceEnabled(final ControllerService service); @Override boolean isControllerServiceEnabled(final String serviceIdentifier); @Override boolean isControllerServiceEnabling(final String serviceIdentifier); @Override String getControllerServiceName(final String serviceIdentifier); @Override void removeControllerService(final ControllerServiceNode serviceNode); @Override Set<ControllerServiceNode> getAllControllerServices(); List<Counter> getCounters(); Counter resetCounter(final String identifier); QueueSize getTotalFlowFileCount(final ProcessGroup group); int getActiveThreadCount(); void startHeartbeating(); void suspendHeartbeats(); void resumeHeartbeats(); void stopHeartbeating(); boolean isHeartbeating(); int getHeartbeatDelaySeconds(); NodeIdentifier getNodeId(); void setNodeId(final NodeIdentifier nodeId); @Override boolean isClustered(); boolean isConfiguredForClustering(); void setClustered(final boolean clustered, final String clusterInstanceId); @Override boolean isPrimary(); void setPrimary(final boolean primary); ContentAvailability getContentAvailability(final ProvenanceEventRecord event); InputStream getContent(final ProvenanceEventRecord provEvent, final ContentDirection direction, final String requestor, final String requestUri); InputStream getContent(final FlowFileRecord flowFile, final String requestor, final String requestUri); ProvenanceEventRecord replayFlowFile(final long provenanceEventRecordId, final NiFiUser user); ProvenanceEventRecord replayFlowFile(final ProvenanceEventRecord event, final NiFiUser user); @Override List<String> getComponentIdentifiers(); @Override @SuppressWarnings("rawtypes") List<String> getComponentTypes(); @Override List<String> getQueueIdentifiers(); boolean isConnected(); void setConnectionStatus(final NodeConnectionStatus connectionStatus); void heartbeat(); @Override List<ProvenanceEventRecord> getProvenanceEvents(final long firstEventId, final int maxRecords); @Override Authorizable createLocalDataAuthorizable(final String componentId); @Override Authorizable createRemoteDataAuthorizable(String remoteGroupPortId); @Override List<Action> getFlowChanges(final int firstActionId, final int maxActions); Integer getRemoteSiteListeningPort(); Integer getRemoteSiteListeningHttpPort(); Boolean isRemoteSiteCommsSecure(); ProcessScheduler getProcessScheduler(); @Override Set<String> getControllerServiceIdentifiers(final Class<? extends ControllerService> serviceType, final String groupId); @Override ProvenanceRepository getProvenanceRepository(); StatusHistoryDTO getConnectionStatusHistory(final String connectionId); StatusHistoryDTO getConnectionStatusHistory(final String connectionId, final Date startTime, final Date endTime, final int preferredDataPoints); StatusHistoryDTO getProcessorStatusHistory(final String processorId); StatusHistoryDTO getProcessorStatusHistory(final String processorId, final Date startTime, final Date endTime, final int preferredDataPoints); StatusHistoryDTO getProcessGroupStatusHistory(final String processGroupId); StatusHistoryDTO getProcessGroupStatusHistory(final String processGroupId, final Date startTime, final Date endTime, final int preferredDataPoints); StatusHistoryDTO getRemoteProcessGroupStatusHistory(final String remoteGroupId); StatusHistoryDTO getRemoteProcessGroupStatusHistory(final String remoteGroupId, final Date startTime, final Date endTime, final int preferredDataPoints); @Override Collection<FlowFileQueue> getAllQueues(); static final String DEFAULT_FLOWFILE_REPO_IMPLEMENTATION; static final String DEFAULT_CONTENT_REPO_IMPLEMENTATION; static final String DEFAULT_PROVENANCE_REPO_IMPLEMENTATION; static final String DEFAULT_SWAP_MANAGER_IMPLEMENTATION; static final String DEFAULT_COMPONENT_STATUS_REPO_IMPLEMENTATION; static final String SCHEDULE_MINIMUM_NANOSECONDS; static final String GRACEFUL_SHUTDOWN_PERIOD; static final long DEFAULT_GRACEFUL_SHUTDOWN_SECONDS; static final int METRICS_RESERVOIR_SIZE; static final String ROOT_GROUP_ID_ALIAS; static final String DEFAULT_ROOT_GROUP_NAME; static final double DEFAULT_POSITION_SCALE_FACTOR_X; static final double DEFAULT_POSITION_SCALE_FACTOR_Y; }