<?xml version="1.0" encoding="UTF-8"?>

<!-- $Id: ra.xml 76819 2008-08-08 11:04:20Z jesper.pedersen $ -->

<connector xmlns="http://xmlns.jcp.org/xml/ns/javaee"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
           http://xmlns.jcp.org/xml/ns/javaee/connector_1_7.xsd "
           version="1.7">

   <description>ActiveMQ Artemis Resource Adapter</description>
   <display-name>ArtemisRA</display-name>
   <vendor-name>Apache Software Foundation</vendor-name>
   <eis-type>JMS 2.0 Server</eis-type>
   <resourceadapter-version>1.0</resourceadapter-version>

   <license>
      <description>
         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.
      </description>
      <license-required>true</license-required>
   </license>

   <resourceadapter>
      <resourceadapter-class>org.apache.activemq.artemis.ra.ActiveMQResourceAdapter</resourceadapter-class>
      <config-property>
         <description>
            The transport type. Multiple connectors can be configured by using a comma separated list,
            i.e. org.apache.activemq.artemis.core.remoting.impl.invm.InVMConnectorFactory,org.apache.activemq.artemis.core.remoting.impl.invm.InVMConnectorFactory.
         </description>
         <config-property-name>ConnectorClassName</config-property-name>
         <config-property-type>java.lang.String</config-property-type>
         <config-property-value>org.apache.activemq.artemis.core.remoting.impl.netty.NettyConnectorFactory</config-property-value>
      </config-property>
      <config-property>
         <description>The transport configuration. These values must be in the form of key=val;key=val;,
            if multiple connectors are used then each set must be separated by a comma i.e. host=host1;port=61616,host=host2;port=61617.
            Each set of params maps to the connector classname specified.
         </description>
         <config-property-name>ConnectionParameters</config-property-name>
         <config-property-type>java.lang.String</config-property-type>
         <config-property-value>host=localhost;port=61616</config-property-value>
      </config-property>

     <!-- <config-property>
        <description>Does we support HA</description>
        <config-property-name>HA</config-property-name>
        <config-property-type>java.lang.Boolean</config-property-type>
      </config-property>
      <config-property>
        <description>Use A local Transaction instead of XA?</description>
        <config-property-name>UseLocalTx</config-property-name>
        <config-property-type>java.lang.Boolean</config-property-type>
      </config-property>
      <config-property>
        <description>The user name used to login to the JMS server</description>
        <config-property-name>UserName</config-property-name>
        <config-property-type>java.lang.String</config-property-type>
      </config-property>
      <config-property>
        <description>The password used to login to the JMS server</description>
        <config-property-name>Password</config-property-name>
        <config-property-type>java.lang.String</config-property-type>
      </config-property>
      <config-property>
        <description>The jndi params to use to look up the jms resources if local jndi is not to be used</description>
        <config-property-name>JndiParams</config-property-name>
        <config-property-type>java.lang.String</config-property-type>
      </config-property>
      <config-property>
        <description>The jGroups File name</description>
        <config-property-name>JgroupsFile</config-property-name>
        <config-property-type>java.lang.String</config-property-type>
      </config-property>
      <config-property>
        <description>The name of the channel used on this configuration</description>
        <config-property-name>JgroupsChannelName</config-property-name>
        <config-property-type>java.lang.Integer</config-property-type>
      </config-property>
      <config-property>
        <description>The discovery group address</description>
        <config-property-name>DiscoveryAddress</config-property-name>
        <config-property-type>java.lang.String</config-property-type>
      </config-property>
      <config-property>
        <description>The discovery group port</description>
        <config-property-name>DiscoveryPort</config-property-name>
        <config-property-type>java.lang.Integer</config-property-type>
      </config-property>
      <config-property>
        <description>The discovery refresh timeout</description>
        <config-property-name>DiscoveryRefreshTimeout</config-property-name>
        <config-property-type>java.lang.Long</config-property-type>
      </config-property>
      <config-property>
        <description>The discovery initial wait timeout</description>
        <config-property-name>DiscoveryInitialWaitTimeout</config-property-name>
        <config-property-type>java.lang.Long</config-property-type>
      </config-property>
      <config-property>
        <description>The load balancing policy class name</description>
        <config-property-name>LoadBalancingPolicyClassName</config-property-name>
        <config-property-type>java.lang.String</config-property-type>
      </config-property>
      <config-property>
        <description>The client failure check period</description>
        <config-property-name>ClientFailureCheckPeriod</config-property-name>
        <config-property-type>java.lang.Long</config-property-type>
      </config-property>
      <config-property>
        <description>The connection TTL</description>
        <config-property-name>ConnectionTTL</config-property-name>
        <config-property-type>java.lang.Long</config-property-type>
      </config-property>
      <config-property>
        <description>The call timeout</description>
        <config-property-name>CallTimeout</config-property-name>
        <config-property-type>java.lang.Long</config-property-type>
      </config-property>
      <config-property>
        <description>The dups ok batch size</description>
        <config-property-name>DupsOKBatchSize</config-property-name>
        <config-property-type>java.lang.Integer</config-property-type>
      </config-property>
      <config-property>
        <description>The transaction batch size</description>
        <config-property-name>TransactionBatchSize</config-property-name>
        <config-property-type>java.lang.Integer</config-property-type>
      </config-property>
      <config-property>
        <description>The consumer window size</description>
        <config-property-name>ConsumerWindowSize</config-property-name>
        <config-property-type>java.lang.Integer</config-property-type>
      </config-property>
      <config-property>
        <description>The consumer max rate</description>
        <config-property-name>ConsumerMaxRate</config-property-name>
        <config-property-type>java.lang.Integer</config-property-type>
      </config-property>
      <config-property>
        <description>The confirmation window size</description>
        <config-property-name>ConfirmationWindowSize</config-property-name>
        <config-property-type>java.lang.Integer</config-property-type>
      </config-property>
      <config-property>
        <description>The min large message size</description>
        <config-property-name>MinLargeMessageSize</config-property-name>
        <config-property-type>java.lang.Integer</config-property-type>
      </config-property>
      <config-property>
        <description>The block on acknowledge</description>
        <config-property-name>BlockOnAcknowledge</config-property-name>
        <config-property-type>java.lang.Boolean</config-property-type>
      </config-property>
      <config-property>
        <description>The block on non durable send</description>
        <config-property-name>BlockOnNonDurableSend</config-property-name>
        <config-property-type>java.lang.Boolean</config-property-type>
      </config-property>
      <config-property>
        <description>The block on durable send</description>
        <config-property-name>BlockOnDurableSend</config-property-name>
        <config-property-type>java.lang.Boolean</config-property-type>
      </config-property>
      <config-property>
        <description>The auto group</description>
        <config-property-name>AutoGroup</config-property-name>
        <config-property-type>java.lang.Boolean</config-property-type>
      </config-property>
      <config-property>
        <description>The pre acknowledge</description>
        <config-property-name>PreAcknowledge</config-property-name>
        <config-property-type>java.lang.Boolean</config-property-type>
      </config-property>
      <config-property>
        <description>The retry interval</description>
        <config-property-name>RetryInterval</config-property-name>
        <config-property-type>java.lang.Long</config-property-type>
      </config-property>
      <config-property>
        <description>The retry interval multiplier</description>
        <config-property-name>RetryIntervalMultiplier</config-property-name>
        <config-property-type>java.lang.Double</config-property-type>
      </config-property>
      <config-property>
        <description>The client id</description>
        <config-property-name>ClientID</config-property-name>
        <config-property-type>java.lang.String</config-property-type>
      </config-property>
      <config-property>
        <description>Whether the password is cleartext or encrypted, default false</description>
        <config-property-name>UseMaskedPassword</config-property-name>
        <config-property-type>java.lang.Boolean</config-property-type>
      </config-property>
      <config-property>
        <description>The class definition (full qualified name and its properties) used to encrypt the password</description>
        <config-property-name>PasswordCodec</config-property-name>
        <config-property-type>java.lang.String</config-property-type>
      </config-property>
      <config-property>
        <description>Cache destinations per session</description>
        <config-property-name>CacheDestinations</config-property-name>
        <config-property-type>java.lang.Boolean</config-property-type>
      </config-property>-->

      <outbound-resourceadapter>
         <connection-definition>
            <managedconnectionfactory-class>org.apache.activemq.artemis.ra.ActiveMQRAManagedConnectionFactory</managedconnectionfactory-class>

            <config-property>
               <description>The default session type</description>
               <config-property-name>SessionDefaultType</config-property-name>
               <config-property-type>java.lang.String</config-property-type>
               <config-property-value>javax.jms.Queue</config-property-value>
            </config-property>
            <config-property>
               <description>Whether or not to participate in a JTA transaction, this is used if the RA does not have access to the Transaction Manager</description>
               <config-property-name>InJtaTransaction</config-property-name>
               <config-property-type>java.lang.Boolean</config-property-type>
               <config-property-value>true</config-property-value>
            </config-property>
            <config-property>
               <description>Try to obtain a lock within specified number of seconds; less than or equal to 0 disable this functionality</description>
               <config-property-name>UseTryLock</config-property-name>
               <config-property-type>java.lang.Integer</config-property-type>
               <config-property-value>0</config-property-value>
            </config-property>

            <connectionfactory-interface>org.apache.activemq.artemis.ra.ActiveMQRAConnectionFactory</connectionfactory-interface>
            <connectionfactory-impl-class>org.apache.activemq.artemis.ra.ActiveMQRAConnectionFactoryImpl</connectionfactory-impl-class>
            <connection-interface>javax.jms.Session</connection-interface>
            <connection-impl-class>org.apache.activemq.artemis.ra.ActiveMQRASession</connection-impl-class>
         </connection-definition>
         <transaction-support>XATransaction</transaction-support>
         <authentication-mechanism>
            <authentication-mechanism-type>BasicPassword</authentication-mechanism-type>
            <credential-interface>javax.resource.spi.security.PasswordCredential</credential-interface>
         </authentication-mechanism>
         <reauthentication-support>false</reauthentication-support>
      </outbound-resourceadapter>

      <inbound-resourceadapter>
         <messageadapter>
            <messagelistener>
               <messagelistener-type>javax.jms.MessageListener</messagelistener-type>
               <activationspec>
                  <activationspec-class>org.apache.activemq.artemis.ra.inflow.ActiveMQActivationSpec</activationspec-class>
                  <required-config-property>
                      <config-property-name>destination</config-property-name>
                  </required-config-property>
               </activationspec>
            </messagelistener>
         </messageadapter>
      </inbound-resourceadapter>
      <adminobject>
         <adminobject-interface>javax.jms.Queue</adminobject-interface>
         <adminobject-class>org.apache.activemq.artemis.jms.client.ActiveMQQueue</adminobject-class>
         <config-property>
            <config-property-name>Address</config-property-name>
            <config-property-type>java.lang.String</config-property-type>
         </config-property>
      </adminobject>
      <adminobject>
         <adminobject-interface>javax.jms.Topic</adminobject-interface>
         <adminobject-class>org.apache.activemq.artemis.jms.client.ActiveMQTopic</adminobject-class>
         <config-property>
            <config-property-name>Address</config-property-name>
            <config-property-type>java.lang.String</config-property-type>
         </config-property>
      </adminobject>
      <adminobject>
         <adminobject-interface>javax.jms.ConnectionFactory</adminobject-interface>
         <adminobject-class>org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory</adminobject-class>
         <config-property>
            <config-property-name>BrokerURL</config-property-name>
            <config-property-type>java.lang.String</config-property-type>
         </config-property>
      </adminobject>
      <adminobject>
         <adminobject-interface>javax.jms.XAConnectionFactory</adminobject-interface>
         <adminobject-class>org.apache.activemq.artemis.jms.client.ActiveMQXAConnectionFactory</adminobject-class>
         <config-property>
            <config-property-name>BrokerURL</config-property-name>
            <config-property-type>java.lang.String</config-property-type>
         </config-property>
      </adminobject>
   </resourceadapter>
</connector>
