Example #1
0
  /**
   * The plugin container will call this method when it has a new configuration for your managed
   * resource. Your plugin will re-configure the managed resource in your own custom way, setting
   * its configuration based on the new values of the given configuration.
   *
   * @see ConfigurationFacet#updateResourceConfiguration(ConfigurationUpdateReport)
   */
  public void updateResourceConfiguration(ConfigurationUpdateReport report) {

    resourceConfiguration = report.getConfiguration().deepCopy();

    Configuration resourceConfig = report.getConfiguration();

    ManagementView managementView = null;
    ComponentType componentType = null;
    if (this.getComponentType().equals(PluginConstants.ComponentType.VDB.NAME)) {
      componentType =
          new ComponentType(
              PluginConstants.ComponentType.VDB.TYPE, PluginConstants.ComponentType.VDB.SUBTYPE);
    } else {
      report.setStatus(ConfigurationUpdateStatus.FAILURE);
      report.setErrorMessage("Update not implemented for the component type."); // $NON-NLS-1$
    }

    ManagedComponent managedComponent = null;
    report.setStatus(ConfigurationUpdateStatus.SUCCESS);
    try {

      managementView = getConnection().getManagementView();
      managedComponent = managementView.getComponent(this.name, componentType);
      Map<String, ManagedProperty> managedProperties = managedComponent.getProperties();

      ProfileServiceUtil.convertConfigurationToManagedProperties(
          managedProperties, resourceConfig, resourceContext.getResourceType(), null);

      try {
        managementView.updateComponent(managedComponent);
      } catch (Exception e) {
        LOG.error(
            "Unable to update component [" //$NON-NLS-1$
                + managedComponent.getName()
                + "] of type " //$NON-NLS-1$
                + componentType
                + ".",
            e); //$NON-NLS-1$
        report.setStatus(ConfigurationUpdateStatus.FAILURE);
        report.setErrorMessageFromThrowable(e);
      }
    } catch (Exception e) {
      LOG.error("Unable to process update request", e); // $NON-NLS-1$
      report.setStatus(ConfigurationUpdateStatus.FAILURE);
      report.setErrorMessageFromThrowable(e);
    }
  }
  /**
   * Test adding a new tx-connection-factory deployment with xa enabled
   *
   * @throws Exception
   */
  public void testAddTxXAConnectionFactory() throws Exception {
    String jndiName = "TestTxCf";
    Map<String, MetaValue> propValues = new HashMap<String, MetaValue>();

    addCommonCfProperties(
        propValues, jndiName, "jms-ra.rar", "org.jboss.resource.adapter.jms.JmsConnectionFactory");

    Map<String, String> xaProps = new HashMap<String, String>();
    xaProps.put("SessionDefaultType", "javax.jms.Topic");
    xaProps.put("SessionDefaultType.type", "java.lang.String");
    xaProps.put("JmsProviderAdapterJNDI", "java:/DefaultJMSProvider");
    xaProps.put("JmsProviderAdapterJNDI.type", "java.lang.String");
    MetaValue metaValue = this.compositeValueMap(xaProps);

    propValues.put("config-property", metaValue);

    propValues.put("xa-transaction", SimpleValueSupport.wrap(Boolean.TRUE));
    propValues.put("xa-resource-timeout", SimpleValueSupport.wrap(new Integer(256)));
    propValues.put("interleaving", SimpleValueSupport.wrap(Boolean.TRUE));

    // todo: how to set the specific domain?
    // ApplicationManagedSecurityMetaData secDomain = new ApplicationManagedSecurityMetaData();
    // props.get("security-domain").setValue(secDomain);

    createComponentTest(
        "TxConnectionFactoryTemplate",
        propValues,
        "testTxXACf",
        new ComponentType("ConnectionFactory", "Tx"),
        jndiName);
    // Query the interleaving
    ManagementView mgtView = getManagementView();
    ComponentType type = new ComponentType("ConnectionFactory", "Tx");
    ManagedComponent txcf = mgtView.getComponent(jndiName, type);
    assertNotNull(txcf);
    ManagedProperty interleaving = txcf.getProperty("interleaving");
    assertNotNull("interleaving", interleaving);
    MetaValue interleavingMV = interleaving.getValue();
    assertNotNull("interleaving.value", interleavingMV);
    assertEquals(SimpleValueSupport.wrap(Boolean.TRUE), interleavingMV);
  }
  /**
   * Test adding a new hsql DataSource deployment
   *
   * @throws Exception
   */
  public void testAddXADataSource() throws Exception {
    String jndiName = "TestXaDs";
    Map<String, MetaValue> propValues = new HashMap<String, MetaValue>();

    addCommonDsProperties(propValues, jndiName, "jboss-xa-jdbc.rar", "javax.sql.DataSource");

    propValues.put("xa-datasource-class", SimpleValueSupport.wrap("org.hsqldb.jdbcDriver"));
    propValues.put("xa-resource-timeout", SimpleValueSupport.wrap(new Integer(256)));
    propValues.put("interleaving", SimpleValueSupport.wrap(true));

    HashMap<String, String> xaPropValues = new HashMap<String, String>();
    xaPropValues.put("URL", "jdbc:hsqldb");
    xaPropValues.put("User", "sa");
    xaPropValues.put("Password", "");

    // MetaValue metaValue = getMetaValueFactory().create(xaPropValues, getMapType());
    MetaValue metaValue = this.compositeValueMap(xaPropValues);
    propValues.put("xa-datasource-properties", metaValue);

    createComponentTest(
        "XADataSourceTemplate",
        propValues,
        "testXaDs",
        KnownComponentTypes.DataSourceTypes.XA.getType(),
        jndiName);

    // Query the interleaving
    ManagementView mgtView = getManagementView();
    ComponentType type = KnownComponentTypes.DataSourceTypes.XA.getType();
    ManagedComponent txcf = mgtView.getComponent(jndiName, type);
    assertNotNull(txcf);
    ManagedProperty interleaving = txcf.getProperty("interleaving");
    assertNotNull("interleaving", interleaving);
    MetaValue interleavingMV = interleaving.getValue();
    assertNotNull("interleaving.value", interleavingMV);
    assertEquals(
        "interleaving.value is true", SimpleValueSupport.wrap(Boolean.TRUE), interleavingMV);
  }