/**
 * Broadcast group resource definition
 *
 * @author <a href="http://jmesnil.net">Jeff Mesnil</a> (c) 2012 Red Hat Inc.
 */
public class BroadcastGroupDefinition extends SimpleResourceDefinition {

  public static final PathElement PATH = PathElement.pathElement(CommonAttributes.BROADCAST_GROUP);

  public static final PrimitiveListAttributeDefinition CONNECTOR_REFS =
      PrimitiveListAttributeDefinition.Builder.of(CONNECTORS, STRING)
          .setAllowNull(true)
          .setValidator(new StringLengthValidator(1))
          .setXmlName(CONNECTOR_REF_STRING)
          .setAttributeMarshaller(new AttributeMarshallers.WrappedListAttributeMarshaller(null))
          // disallow expressions since the attribute references other configuration items
          .setAllowExpression(false)
          .setRestartAllServices()
          .build();

  public static final SimpleAttributeDefinition BROADCAST_PERIOD =
      create("broadcast-period", LONG)
          .setDefaultValue(new ModelNode(HornetQDefaultConfiguration.DEFAULT_BROADCAST_PERIOD))
          .setMeasurementUnit(MILLISECONDS)
          .setAllowNull(true)
          .setAllowExpression(true)
          .setRestartAllServices()
          .build();

  public static final AttributeDefinition[] ATTRIBUTES = {
    JGROUPS_STACK,
    JGROUPS_CHANNEL,
    SOCKET_BINDING,
    LOCAL_BIND_ADDRESS,
    LOCAL_BIND_PORT,
    GROUP_ADDRESS,
    GROUP_PORT,
    BROADCAST_PERIOD,
    CONNECTOR_REFS
  };

  public static final AttributeDefinition[] NEW_ATTRIBUTES_ADDED_AFTER_1_1_0 = {
    JGROUPS_CHANNEL, JGROUPS_STACK
  };

  public static final AttributeDefinition[] ATTRIBUTES_WITH_EXPRESSION_AFTER_1_1_0 = {
    BROADCAST_PERIOD
  };

  public static final String GET_CONNECTOR_PAIRS_AS_JSON = "get-connector-pairs-as-json";

  private final boolean registerRuntimeOnly;

  public BroadcastGroupDefinition(boolean registerRuntimeOnly) {
    super(
        PATH,
        MessagingExtension.getResourceDescriptionResolver(CommonAttributes.BROADCAST_GROUP),
        BroadcastGroupAdd.INSTANCE,
        BroadcastGroupRemove.INSTANCE);
    this.registerRuntimeOnly = registerRuntimeOnly;
  }

  @Override
  public void registerAttributes(ManagementResourceRegistration registry) {
    super.registerAttributes(registry);
    for (AttributeDefinition attr : ATTRIBUTES) {
      if (registerRuntimeOnly || !attr.getFlags().contains(STORAGE_RUNTIME)) {
        registry.registerReadWriteAttribute(
            attr, null, BroadcastGroupWriteAttributeHandler.INSTANCE);
      }
    }

    if (registerRuntimeOnly) {
      BroadcastGroupControlHandler.INSTANCE.registerAttributes(registry);
    }
  }

  @Override
  public void registerOperations(ManagementResourceRegistration registry) {
    if (registerRuntimeOnly) {
      BroadcastGroupControlHandler.INSTANCE.registerOperations(
          registry, getResourceDescriptionResolver());

      SimpleOperationDefinition op =
          new SimpleOperationDefinitionBuilder(
                  GET_CONNECTOR_PAIRS_AS_JSON, getResourceDescriptionResolver())
              .withFlags(
                  EnumSet.of(OperationEntry.Flag.READ_ONLY, OperationEntry.Flag.RUNTIME_ONLY))
              .setReplyType(STRING)
              .build();
      registry.registerOperationHandler(op, BroadcastGroupControlHandler.INSTANCE);
    }
    super.registerOperations(registry);
  }
}
示例#2
0
/** @author @author <a href="mailto:[email protected]">Stefano Maestri</a> */
public class Constants {

  public static final String RESOURCEADAPTER_NAME = "resource-adapter";

  static final String RESOURCEADAPTERS_NAME = "resource-adapters";

  public static final String IRONJACAMAR_NAME = "ironjacamar";

  public static final String STATISTICS_NAME = "statistics";

  public static final String CONNECTIONDEFINITIONS_NAME = "connection-definitions";

  private static final String CLASS_NAME_NAME = "class-name";

  static final String POOL_NAME_NAME = "pool-name";

  private static final String USE_JAVA_CONTEXT_NAME = "use-java-context";

  private static final String ENABLED_NAME = "enabled";

  private static final String JNDINAME_NAME = "jndi-name";

  private static final String ALLOCATION_RETRY_NAME = "allocation-retry";

  private static final String ALLOCATION_RETRY_WAIT_MILLIS_NAME = "allocation-retry-wait-millis";

  private static final String XA_RESOURCE_TIMEOUT_NAME = "xa-resource-timeout";

  private static final String USETRYLOCK_NAME = "use-try-lock";

  private static final String SECURITY_DOMAIN_AND_APPLICATION_NAME =
      "security-domain-and-application";

  private static final String SECURITY_DOMAIN_NAME = "security-domain";

  private static final String APPLICATION_NAME = "security-application";

  private static final String USE_CCM_NAME = "use-ccm";

  private static final String CONFIG_PROPERTIES_NAME = "config-properties";

  private static final String CONFIG_PROPERTY_VALUE_NAME = "value";

  private static final String ARCHIVE_NAME = "archive";

  private static final String BOOTSTRAPCONTEXT_NAME = "bootstrap-context";

  private static final String TRANSACTIONSUPPORT_NAME = "transaction-support";

  private static final String BEANVALIDATIONGROUPS_NAME = "beanvalidationgroups";

  static final String ADMIN_OBJECTS_NAME = "admin-objects";

  private static final String INTERLEAVING_NAME = "interleaving";

  private static final String NOTXSEPARATEPOOL_NAME = "no-tx-separate-pool";

  private static final String PAD_XID_NAME = "pad-xid";

  private static final String SAME_RM_OVERRIDE_NAME = "same-rm-override";

  private static final String WRAP_XA_RESOURCE_NAME = "wrap-xa-resource";

  private static final String RECOVERY_USERNAME_NAME = "recovery-username";

  private static final String RECOVERY_PASSWORD_NAME = "recovery-password";

  private static final String RECOVERY_SECURITY_DOMAIN_NAME = "recovery-security-domain";

  private static final String RECOVERLUGIN_CLASSNAME_NAME = "recovery-plugin-class-name";

  private static final String RECOVERLUGIN_PROPERTIES_NAME = "recovery-plugin-properties";

  private static final String NO_RECOVERY_NAME = "no-recovery";

  public static final String ACTIVATE = "activate";

  public static final String FLUSH_ALL_CONNECTION_IN_POOL = "flush-all-connection-in-pool";

  public static final String FLUSH_IDLE_CONNECTION_IN_POOL = "flush-idle-connection-in-pool";

  public static final String TEST_CONNECTION_IN_POOL = "test-connection-in-pool";

  public static final String CLEAR_STATISTICS = "clear-statistics";

  static final SimpleAttributeDefinition CLASS_NAME =
      new SimpleAttributeDefinition(
          CLASS_NAME_NAME,
          CommonConnDef.Attribute.CLASS_NAME.getLocalName(),
          new ModelNode(),
          ModelType.STRING,
          false,
          true,
          MeasurementUnit.NONE);

  static SimpleAttributeDefinition JNDINAME =
      new SimpleAttributeDefinition(
          JNDINAME_NAME,
          CommonConnDef.Attribute.JNDI_NAME.getLocalName(),
          new ModelNode(),
          ModelType.STRING,
          true,
          true,
          MeasurementUnit.NONE);

  public static final SimpleAttributeDefinition CONFIG_PROPERTIES =
      new SimpleAttributeDefinition(
          CONFIG_PROPERTIES_NAME,
          CommonConnDef.Tag.CONFIG_PROPERTY.getLocalName(),
          new ModelNode(),
          ModelType.STRING,
          true,
          true,
          MeasurementUnit.NONE);

  static final SimpleAttributeDefinition CONFIG_PROPERTY_VALUE =
      new SimpleAttributeDefinition(
          CONFIG_PROPERTY_VALUE_NAME,
          CommonConnDef.Tag.CONFIG_PROPERTY.getLocalName(),
          new ModelNode(),
          ModelType.STRING,
          true,
          true,
          MeasurementUnit.NONE);

  static final SimpleAttributeDefinition ARCHIVE =
      new SimpleAttributeDefinition(
          ARCHIVE_NAME,
          ResourceAdapter.Tag.ARCHIVE.getLocalName(),
          new ModelNode(),
          ModelType.STRING,
          false,
          true,
          MeasurementUnit.NONE);

  static final SimpleAttributeDefinition BOOTSTRAP_CONTEXT =
      new SimpleAttributeDefinition(
          BOOTSTRAPCONTEXT_NAME,
          ResourceAdapter.Tag.BOOTSTRAP_CONTEXT.getLocalName(),
          new ModelNode(),
          ModelType.STRING,
          true,
          true,
          MeasurementUnit.NONE);

  static final SimpleAttributeDefinition TRANSACTION_SUPPORT =
      new SimpleAttributeDefinition(
          TRANSACTIONSUPPORT_NAME,
          ResourceAdapter.Tag.TRANSACTION_SUPPORT.getLocalName(),
          new ModelNode(),
          ModelType.STRING,
          true,
          true,
          MeasurementUnit.NONE,
          new EnumValidator<TransactionSupportEnum>(TransactionSupportEnum.class, true, true));

  static final PrimitiveListAttributeDefinition BEANVALIDATION_GROUPS =
      PrimitiveListAttributeDefinition.Builder.of(BEANVALIDATIONGROUPS_NAME, ModelType.STRING)
          .setXmlName(ResourceAdapter.Tag.BEAN_VALIDATION_GROUP.getLocalName())
          .setAllowNull(true)
          .setAllowExpression(true)
          .build();

  static final SimpleAttributeDefinition BEANVALIDATIONGROUP =
      new SimpleAttributeDefinition(
          BEANVALIDATIONGROUPS_NAME,
          ResourceAdapter.Tag.BEAN_VALIDATION_GROUP.getLocalName(),
          new ModelNode(),
          ModelType.STRING,
          true,
          true,
          MeasurementUnit.NONE);

  static SimpleAttributeDefinition USE_JAVA_CONTEXT =
      new SimpleAttributeDefinition(
          USE_JAVA_CONTEXT_NAME,
          DataSource.Attribute.USE_JAVA_CONTEXT.getLocalName(),
          new ModelNode().set(Defaults.USE_JAVA_CONTEXT),
          ModelType.BOOLEAN,
          true,
          true,
          MeasurementUnit.NONE);

  static SimpleAttributeDefinition ENABLED =
      new SimpleAttributeDefinition(
          ENABLED_NAME,
          DataSource.Attribute.ENABLED.getLocalName(),
          new ModelNode().set(Defaults.ENABLED),
          ModelType.BOOLEAN,
          true,
          true,
          MeasurementUnit.NONE);

  static SimpleAttributeDefinition SECURITY_DOMAIN =
      new SimpleAttributeDefinitionBuilder(SECURITY_DOMAIN_NAME, ModelType.STRING)
          .setXmlName(CommonSecurity.Tag.SECURITY_DOMAIN.getLocalName())
          .setAllowExpression(true)
          .setAllowNull(true)
          .setAlternatives(SECURITY_DOMAIN_AND_APPLICATION_NAME, APPLICATION_NAME)
          .build();

  static final SimpleAttributeDefinition SECURITY_DOMAIN_AND_APPLICATION =
      new SimpleAttributeDefinitionBuilder(SECURITY_DOMAIN_AND_APPLICATION_NAME, ModelType.STRING)
          .setXmlName(CommonSecurity.Tag.SECURITY_DOMAIN_AND_APPLICATION.getLocalName())
          .setAllowExpression(true)
          .setAllowNull(true)
          .setAlternatives(SECURITY_DOMAIN_NAME, APPLICATION_NAME)
          .build();

  static final SimpleAttributeDefinition APPLICATION =
      new SimpleAttributeDefinitionBuilder(APPLICATION_NAME, ModelType.BOOLEAN)
          .setXmlName(CommonSecurity.Tag.APPLICATION.getLocalName())
          .setDefaultValue(new ModelNode(Defaults.APPLICATION_MANAGED_SECURITY))
          .setAllowExpression(true)
          .setAllowNull(true)
          .setMeasurementUnit(MeasurementUnit.NONE)
          .setAlternatives(SECURITY_DOMAIN_NAME, SECURITY_DOMAIN_AND_APPLICATION_NAME)
          .build();

  static SimpleAttributeDefinition ALLOCATION_RETRY =
      new SimpleAttributeDefinition(
          ALLOCATION_RETRY_NAME,
          TimeOut.Tag.ALLOCATION_RETRY.getLocalName(),
          new ModelNode(),
          ModelType.INT,
          true,
          true,
          MeasurementUnit.NONE);

  static SimpleAttributeDefinition ALLOCATION_RETRY_WAIT_MILLIS =
      new SimpleAttributeDefinition(
          ALLOCATION_RETRY_WAIT_MILLIS_NAME,
          TimeOut.Tag.ALLOCATION_RETRY_WAIT_MILLIS.getLocalName(),
          new ModelNode(),
          ModelType.LONG,
          true,
          true,
          MeasurementUnit.NONE);

  static SimpleAttributeDefinition USETRYLOCK =
      new SimpleAttributeDefinition(
          USETRYLOCK_NAME,
          TimeOut.Tag.USE_TRY_LOCK.getLocalName(),
          new ModelNode(),
          ModelType.LONG,
          true,
          true,
          MeasurementUnit.NONE);

  static SimpleAttributeDefinition USE_CCM =
      new SimpleAttributeDefinition(
          USE_CCM_NAME,
          DataSource.Attribute.USE_CCM.getLocalName(),
          new ModelNode().set(Defaults.USE_CCM),
          ModelType.BOOLEAN,
          true,
          true,
          MeasurementUnit.NONE);

  static SimpleAttributeDefinition INTERLEAVING =
      new SimpleAttributeDefinition(
          INTERLEAVING_NAME,
          CommonXaPool.Tag.INTERLEAVING.getLocalName(),
          new ModelNode().set(Defaults.INTERLEAVING),
          ModelType.BOOLEAN,
          true,
          true,
          MeasurementUnit.NONE);

  static SimpleAttributeDefinition NOTXSEPARATEPOOL =
      new SimpleAttributeDefinition(
          NOTXSEPARATEPOOL_NAME,
          CommonXaPool.Tag.NO_TX_SEPARATE_POOLS.getLocalName(),
          new ModelNode().set(Defaults.NO_TX_SEPARATE_POOL),
          ModelType.BOOLEAN,
          true,
          true,
          MeasurementUnit.NONE);

  static SimpleAttributeDefinition PAD_XID =
      new SimpleAttributeDefinition(
          PAD_XID_NAME,
          CommonXaPool.Tag.PAD_XID.getLocalName(),
          new ModelNode().set(Defaults.PAD_XID),
          ModelType.BOOLEAN,
          true,
          true,
          MeasurementUnit.NONE);

  static SimpleAttributeDefinition SAME_RM_OVERRIDE =
      new SimpleAttributeDefinitionBuilder(SAME_RM_OVERRIDE_NAME, ModelType.BOOLEAN)
          .setAllowNull(true)
          .setAllowExpression(true)
          .setXmlName(CommonXaPool.Tag.IS_SAME_RM_OVERRIDE.getLocalName())
          // .setDefaultValue(new ModelNode(Defaults.IS_SAME_RM_OVERRIDE)) //this is wrong, it
          // should not be null
          .setDefaultValue(new ModelNode(false))
          .build();

  static SimpleAttributeDefinition WRAP_XA_RESOURCE =
      new SimpleAttributeDefinition(
          WRAP_XA_RESOURCE_NAME,
          CommonXaPool.Tag.WRAP_XA_RESOURCE.getLocalName(),
          new ModelNode().set(Defaults.WRAP_XA_RESOURCE),
          ModelType.BOOLEAN,
          true,
          true,
          MeasurementUnit.NONE);

  static SimpleAttributeDefinition XA_RESOURCE_TIMEOUT =
      new SimpleAttributeDefinition(
          XA_RESOURCE_TIMEOUT_NAME,
          TimeOut.Tag.XA_RESOURCE_TIMEOUT.getLocalName(),
          new ModelNode(),
          ModelType.INT,
          true,
          true,
          MeasurementUnit.NONE);

  static SimpleAttributeDefinition RECOVERY_USERNAME =
      new SimpleAttributeDefinition(
          RECOVERY_USERNAME_NAME,
          Credential.Tag.USER_NAME.getLocalName(),
          new ModelNode(),
          ModelType.STRING,
          true,
          true,
          MeasurementUnit.NONE);

  static SimpleAttributeDefinition RECOVERY_PASSWORD =
      new SimpleAttributeDefinition(
          RECOVERY_PASSWORD_NAME,
          Credential.Tag.PASSWORD.getLocalName(),
          new ModelNode(),
          ModelType.STRING,
          true,
          true,
          MeasurementUnit.NONE);

  static SimpleAttributeDefinition RECOVERY_SECURITY_DOMAIN =
      new SimpleAttributeDefinition(
          RECOVERY_SECURITY_DOMAIN_NAME,
          Credential.Tag.SECURITY_DOMAIN.getLocalName(),
          new ModelNode(),
          ModelType.STRING,
          true,
          true,
          MeasurementUnit.NONE);

  static SimpleAttributeDefinition NO_RECOVERY =
      new SimpleAttributeDefinition(
          NO_RECOVERY_NAME,
          Recovery.Attribute.NO_RECOVERY.getLocalName(),
          new ModelNode(false),
          ModelType.BOOLEAN,
          true,
          true,
          MeasurementUnit.NONE);

  static SimpleAttributeDefinition RECOVERLUGIN_CLASSNAME =
      new SimpleAttributeDefinition(
          RECOVERLUGIN_CLASSNAME_NAME,
          org.jboss.jca.common.api.metadata.common.Extension.Attribute.CLASS_NAME.getLocalName(),
          new ModelNode(),
          ModelType.STRING,
          true,
          true,
          MeasurementUnit.NONE);

  static SimpleMapAttributeDefinition RECOVERLUGIN_PROPERTIES =
      new SimpleMapAttributeDefinition.Builder(RECOVERLUGIN_PROPERTIES_NAME, true)
          .setAllowExpression(true)
          .setXmlName(
              org.jboss.jca.common.api.metadata.common.Extension.Tag.CONFIG_PROPERTY.getLocalName())
          .build();
}