blob: fbecf1965b512cb5336b67a76469ba6bf532bd75 [file] [log] [blame]
/*
*
* 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.qpid.server.model;
import java.net.SocketAddress;
import java.security.AccessControlException;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.Map;
import org.apache.qpid.server.logging.LogRecorder;
import org.apache.qpid.server.logging.RootMessageLogger;
import org.apache.qpid.server.configuration.updater.TaskExecutor;
import org.apache.qpid.server.security.SecurityManager;
import org.apache.qpid.server.security.SubjectCreator;
import org.apache.qpid.server.virtualhost.VirtualHostRegistry;
public interface Broker extends ConfiguredObject
{
String BUILD_VERSION = "buildVersion";
String BYTES_RETAINED = "bytesRetained";
String OPERATING_SYSTEM = "operatingSystem";
String PLATFORM = "platform";
String PROCESS_PID = "processPid";
String PRODUCT_VERSION = "productVersion";
String SUPPORTED_STORE_TYPES = "supportedStoreTypes";
String CREATED = "created";
String DURABLE = "durable";
String ID = "id";
String LIFETIME_POLICY = "lifetimePolicy";
String NAME = "name";
String STATE = "state";
String TIME_TO_LIVE = "timeToLive";
String UPDATED = "updated";
String DEFAULT_AUTHENTICATION_PROVIDER = "defaultAuthenticationProvider";
String DEFAULT_VIRTUAL_HOST = "defaultVirtualHost";
String ALERT_THRESHOLD_MESSAGE_AGE = "alertThresholdMessageAge";
String ALERT_THRESHOLD_MESSAGE_COUNT = "alertThresholdMessageCount";
String ALERT_THRESHOLD_QUEUE_DEPTH = "alertThresholdQueueDepth";
String ALERT_THRESHOLD_MESSAGE_SIZE = "alertThresholdMessageSize";
String ALERT_REPEAT_GAP = "alertRepeatGap";
String FLOW_CONTROL_SIZE_BYTES = "queueFlowControlSizeBytes";
String FLOW_CONTROL_RESUME_SIZE_BYTES = "queueFlowResumeSizeBytes";
String MAXIMUM_DELIVERY_ATTEMPTS = "maximumDeliveryAttempts";
String DEAD_LETTER_QUEUE_ENABLED = "deadLetterQueueEnabled";
String HOUSEKEEPING_CHECK_PERIOD = "housekeepingCheckPeriod";
String SESSION_COUNT_LIMIT = "sessionCountLimit";
String HEART_BEAT_DELAY = "heartBeatDelay";
String STATISTICS_REPORTING_PERIOD = "statisticsReportingPeriod";
String STATISTICS_REPORTING_RESET_ENABLED = "statisticsReportingResetEnabled";
/*
* A temporary attribute to pass the path to ACL file.
* TODO: It should be a part of AuthorizationProvider.
*/
String ACL_FILE = "aclFile";
/*
* A temporary attributes to set the broker default key/trust stores.
* TODO: Remove them after adding a full support to configure KeyStore/TrustStore via management layers.
*/
String KEY_STORE_PATH = "keyStorePath";
String KEY_STORE_PASSWORD = "keyStorePassword";
String KEY_STORE_CERT_ALIAS = "keyStoreCertAlias";
String TRUST_STORE_PATH = "trustStorePath";
String TRUST_STORE_PASSWORD = "trustStorePassword";
/*
* A temporary attributes to set the broker group file.
* TODO: Remove them after adding a full support to configure authorization providers via management layers.
*/
String GROUP_FILE = "groupFile";
// Attributes
Collection<String> AVAILABLE_ATTRIBUTES =
Collections.unmodifiableList(
Arrays.asList(BUILD_VERSION,
BYTES_RETAINED,
OPERATING_SYSTEM,
PLATFORM,
PROCESS_PID,
PRODUCT_VERSION,
SUPPORTED_STORE_TYPES,
CREATED,
DURABLE,
ID,
LIFETIME_POLICY,
NAME,
STATE,
TIME_TO_LIVE,
UPDATED,
DEFAULT_AUTHENTICATION_PROVIDER,
DEFAULT_VIRTUAL_HOST,
ALERT_THRESHOLD_MESSAGE_AGE,
ALERT_THRESHOLD_MESSAGE_COUNT,
ALERT_THRESHOLD_QUEUE_DEPTH,
ALERT_THRESHOLD_MESSAGE_SIZE,
ALERT_REPEAT_GAP,
FLOW_CONTROL_SIZE_BYTES,
FLOW_CONTROL_RESUME_SIZE_BYTES,
MAXIMUM_DELIVERY_ATTEMPTS,
DEAD_LETTER_QUEUE_ENABLED,
HOUSEKEEPING_CHECK_PERIOD,
SESSION_COUNT_LIMIT,
HEART_BEAT_DELAY,
STATISTICS_REPORTING_PERIOD,
STATISTICS_REPORTING_RESET_ENABLED,
ACL_FILE,
KEY_STORE_PATH,
KEY_STORE_PASSWORD,
KEY_STORE_CERT_ALIAS,
TRUST_STORE_PATH,
TRUST_STORE_PASSWORD,
GROUP_FILE
));
//children
Collection < VirtualHost > getVirtualHosts();
Collection<Port> getPorts();
Collection<AuthenticationProvider> getAuthenticationProviders();
VirtualHost createVirtualHost(String name, State initialState, boolean durable,
LifetimePolicy lifetime, long ttl, Map<String, Object> attributes)
throws AccessControlException, IllegalArgumentException;
AuthenticationProvider getDefaultAuthenticationProvider();
Collection<GroupProvider> getGroupProviders();
/**
* A temporary hack to expose root message logger via broker instance.
* TODO We need a better way to do operational logging, for example, via logging listeners
*/
RootMessageLogger getRootMessageLogger();
/**
* A temporary hack to expose security manager via broker instance.
* TODO We need to add and implement an authorization provider configured object instead
*/
SecurityManager getSecurityManager();
/**
* TODO: A temporary hack to expose log recorder via broker instance.
*/
LogRecorder getLogRecorder();
VirtualHost findVirtualHostByName(String name);
/**
* Get the SubjectCreator for the given socket address.
* TODO: move the authentication related functionality into host aliases and AuthenticationProviders
*
* @param address The (listening) socket address for which the AuthenticationManager is required
*/
SubjectCreator getSubjectCreator(SocketAddress localAddress);
Collection<KeyStore> getKeyStores();
Collection<TrustStore> getTrustStores();
/*
* TODO: Remove this method. Eventually the broker will become a registry.
*/
VirtualHostRegistry getVirtualHostRegistry();
KeyStore getDefaultKeyStore();
TrustStore getDefaultTrustStore();
TaskExecutor getTaskExecutor();
}