<?xml version="1.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.

-->

<chapter xmlns="http://docbook.org/ns/docbook" version="5.0" xml:id="Java-Broker-Management-Managing-Entities">
  <title>Managing Entities</title>
  <para>This section describes how to manage entities within the Broker. The principles underlying
    entity management are the same regardless of entity type. For this reason, this section begins
    with a general description that applies to all.</para>
  <para>Since not all channels support the management of all entity type, this section commences
    with a table showing which entity type is supported by each channel.</para>

  <section xml:id="Java-Broker-Management-Managing-Entities-General">
    <title>General Description</title>
    <para>The following description applies to all entities within the Broker regardless of their
      type.</para>
    <para>
      <itemizedlist>
        <listitem>
          <para>All entities have a parent, and may have children. The parent of the Broker is
            called the System Context. It has no parent.</para>
        </listitem>
        <listitem>
          <para>Entities have one or more attributes. For example a <literal>name</literal>, an
              <literal>id</literal> or a <literal>maximumQueueDepth</literal></para>
        </listitem>
        <listitem>
          <para>Entities can be durable or non-durable. Durable entities survive a restart.
            Non-durable entities will not.</para>
        </listitem>
        <listitem>
          <para>Attributes may have a default value. If an attribute value is not specified the
            default value is used.</para>
        </listitem>
        <listitem>
          <para>Attributes values can be expressed as a simple value (e.g. <literal>myName</literal>
            or <literal>1234</literal>), in terms of context variables
              (e.g.<literal>${foo}</literal> or <literal>/data/${foo}/</literal>).</para>
        </listitem>
        <listitem>
          <para>Each entity has zero or more context variables.</para>
        </listitem>
        <listitem>
          <para>The System Context entity (the ultimate ancestor of all object) has a context too.
            It is read only and is populated with all Java System Properties. Thus it can be
            influenced from the Broker's external environment. See <link linkend="Java-Broker-Appendix-Environment-Variables-Qpid-Opts">QPID_OPTS </link>
            environment variable.</para>
        </listitem>
        <listitem>
          <para>When resolving an attribute's value, if the value contains a variable
              (e.g.<literal>${foo}</literal>), the variable is first resolved using the entity's own
            context variables. If the entity has no definition for the context variable, the
            entity's parent is tried, then its grandparent and so forth, all the way until the
            SystemContext is reached.</para>
        </listitem>
        <listitem>
          <para>Some entities support state and have a lifecycle.</para>
        </listitem>
      </itemizedlist>
    </para>
    <para>What follows now is a section dedicated to each entity type. For each entity type key
      features are described along with the entities key attributes, key context variables, details
      of the entities lifecycle and any other operations.</para>
  </section>
  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="management/managing/Java-Broker-Management-Managing-Entities-Matrix.xml"/>
  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="management/managing/Java-Broker-Management-Managing-Broker.xml"/>
  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="management/managing/Java-Broker-Management-Managing-VirtualhostNodes.xml"/>
  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="management/managing/Java-Broker-Management-Managing-Virtualhosts.xml"/>
  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="management/managing/Java-Broker-Management-Managing-RemoteReplicationNodes.xml"/>
  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="management/managing/Java-Broker-Management-Managing-Exchanges.xml"/>
  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="management/managing/Java-Broker-Management-Managing-Queues.xml"/>
  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="management/managing/Java-Broker-Management-Managing-Consumers.xml"/>
  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="management/managing/Java-Broker-Management-Managing-Ports.xml"/>
  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="management/managing/Java-Broker-Management-Managing-Authentication-Providers.xml"/>
  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="management/managing/Java-Broker-Management-Managing-Keystores.xml"/>
  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="management/managing/Java-Broker-Management-Managing-Truststores.xml"/>
  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="management/managing/Java-Broker-Management-Managing-Group-Providers.xml"/>
  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="management/managing/Java-Broker-Management-Managing-Access-Control-Providers.xml"/>
  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="management/managing/Java-Broker-Management-Managing-Plugins-HTTP.xml"/>
</chapter>
