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

<xs:schema xmlns:mule="http://www.mulesoft.org/schema/mule/core" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified" targetNamespace="http://www.mulesoft.org/schema/mule/bridgetable">
  <xs:import namespace="http://www.w3.org/XML/1998/namespace"></xs:import>
  <xs:import schemaLocation="http://www.springframework.org/schema/beans/spring-beans-3.0.xsd" namespace="http://www.springframework.org/schema/beans"></xs:import>
  <xs:import schemaLocation="http://www.mulesoft.org/schema/mule/core/current/mule.xsd" namespace="http://www.mulesoft.org/schema/mule/core"></xs:import>
  <xs:import schemaLocation="http://www.mulesoft.org/schema/mule/devkit/current/mule-devkit.xsd" namespace="http://www.mulesoft.org/schema/mule/devkit"></xs:import>
  <xs:simpleType name="integerType">
    <xs:union>
      <xs:simpleType>
        <xs:restriction base="xs:integer"></xs:restriction>
      </xs:simpleType>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:pattern value="(\#\[[^\]]+\]|\$\{[^\}]+\})"></xs:pattern>
        </xs:restriction>
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>
  <xs:simpleType name="decimalType">
    <xs:union>
      <xs:simpleType>
        <xs:restriction base="xs:decimal"></xs:restriction>
      </xs:simpleType>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:pattern value="(\#\[[^\]]+\]|\$\{[^\}]+\})"></xs:pattern>
        </xs:restriction>
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>
  <xs:simpleType name="floatType">
    <xs:union>
      <xs:simpleType>
        <xs:restriction base="xs:float"></xs:restriction>
      </xs:simpleType>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:pattern value="(\#\[[^\]]+\]|\$\{[^\}]+\})"></xs:pattern>
        </xs:restriction>
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>
  <xs:simpleType name="doubleType">
    <xs:union>
      <xs:simpleType>
        <xs:restriction base="xs:double"></xs:restriction>
      </xs:simpleType>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:pattern value="(\#\[[^\]]+\]|\$\{[^\}]+\})"></xs:pattern>
        </xs:restriction>
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>
  <xs:simpleType name="dateTimeType">
    <xs:union>
      <xs:simpleType>
        <xs:restriction base="xs:dateTime"></xs:restriction>
      </xs:simpleType>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:pattern value="(\#\[[^\]]+\]|\$\{[^\}]+\})"></xs:pattern>
        </xs:restriction>
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>
  <xs:simpleType name="longType">
    <xs:union>
      <xs:simpleType>
        <xs:restriction base="xs:long"></xs:restriction>
      </xs:simpleType>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:pattern value="(\#\[[^\]]+\]|\$\{[^\}]+\})"></xs:pattern>
        </xs:restriction>
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>
  <xs:simpleType name="byteType">
    <xs:union>
      <xs:simpleType>
        <xs:restriction base="xs:byte"></xs:restriction>
      </xs:simpleType>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:pattern value="(\#\[[^\]]+\]|\$\{[^\}]+\})"></xs:pattern>
        </xs:restriction>
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>
  <xs:simpleType name="booleanType">
    <xs:union>
      <xs:simpleType>
        <xs:restriction base="xs:boolean"></xs:restriction>
      </xs:simpleType>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:pattern value="(\#\[[^\]]+\]|\$\{[^\}]+\})"></xs:pattern>
        </xs:restriction>
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>
  <xs:simpleType name="anyUriType">
    <xs:union>
      <xs:simpleType>
        <xs:restriction base="xs:anyURI"></xs:restriction>
      </xs:simpleType>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:pattern value="(\#\[[^\]]+\]|\$\{[^\}]+\})"></xs:pattern>
        </xs:restriction>
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>
  <xs:simpleType name="charType">
    <xs:union>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:minLength value="1"></xs:minLength>
          <xs:maxLength value="1"></xs:maxLength>
        </xs:restriction>
      </xs:simpleType>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:pattern value="(\#\[[^\]]+\]|\$\{[^\}]+\})"></xs:pattern>
        </xs:restriction>
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>
  <xs:complexType name="XmlType">
    <xs:sequence>
      <xs:any maxOccurs="unbounded" minOccurs="0" processContents="lax"></xs:any>
    </xs:sequence>
    <xs:attribute name="ref" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation>The reference object for this parameter</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>
  <xs:element xmlns:devkit="http://www.mulesoft.org/schema/mule/devkit" xmlns:mule="http://www.mulesoft.org/schema/mule/core" name="config" substitutionGroup="mule:abstract-extension" devkit:javaClass="org.mule.module.config.BridgeTableModuleLifecycleAdapter">
    <xs:complexType>
      <xs:complexContent>
        <xs:extension base="mule:abstractExtensionType">
          <xs:annotation>
            <xs:documentation>&lt;p&gt;
This connector offers the functionality of a &lt;b&gt;bridge table&lt;/b&gt; (a.k.a. junction table, cross-reference table, join table,
map table, intersection table, linking table, many-to-many resolver, link table, pairing table, pivot table,
look-up table, or association table) to offer mapping of two values (keys)
&lt;/p&gt;
&lt;p&gt;
Basically it supports inserting two keys (key1 and key2) and perform direct and reverse lookups:
&lt;ul&gt;
&lt;li&gt;Direct Lookup: Providing key1 you can retrieve the value of key2&lt;/li&gt;
&lt;li&gt;Reverse Lookup: Providing key2 you can retrieve the value of key1&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;b&gt;The relationship cardinality between key1 and key2 is 1 to 1.&lt;/b&gt; This means that there can only be
one value of key2 linked to a value of key1 (and vicecersa).
&lt;/p&gt;
&lt;p&gt;
The module exposes opertations to insert, update, delete and list keys too.
&lt;/p&gt;</xs:documentation>
          </xs:annotation>
          <xs:attribute name="name" use="optional" type="xs:string">
            <xs:annotation>
              <xs:documentation>Give a name to this configuration so it can be later referenced by config-ref.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="tableName" use="required" type="xs:string">
            <xs:annotation>
              <xs:documentation>Name of the bridge table. For example if bridge table is implemented in a Database, this will be the
name of the relational table</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute xmlns="http://www.mulesoft.org/schema/mule/bridgetable" name="type" default="DEFAULT_VOLATILE" use="optional" type="TypeEnumType">
            <xs:annotation>
              <xs:documentation>Type or concreate implementation of the bridge table. Supported types are:
&lt;ul&gt;
&lt;li&gt;DATA_SOURCE: Implementation that receives a Data Source object and uses Database tables through JDBC&lt;/i&gt;
&lt;/ul&gt;</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="dataSource-ref" use="optional" type="xs:string">
            <xs:annotation>
              <xs:documentation>When the type is &lt;b&gt;DATA_SOURCE&lt;/b&gt; this is the reference to the DataSource object that should be pre-configured
before it can be used in this module. The name of this attribute is &lt;code&gt;dataSource-ref&lt;/code&gt;</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute xmlns="http://www.mulesoft.org/schema/mule/bridgetable" name="autoCreateTable" default="false" use="optional" type="booleanType">
            <xs:annotation>
              <xs:documentation>If the bridge table doesn't exist it will be created automatically if this flag is set to &lt;i&gt;true&lt;/i&gt;.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute xmlns="http://www.mulesoft.org/schema/mule/bridgetable" name="key1Type" default="STRING" use="optional" type="KeyTypeEnumType">
            <xs:annotation>
              <xs:documentation>Data type of key1. This will be used to create the correct structure type. For example, if the
implementation is done with a database then this attribute will be used to define the correct
column type (STRING =&gt; varchar)</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="key1Name" default="key1" use="optional" type="xs:string">
            <xs:annotation>
              <xs:documentation>Descriptive name for key1. This value may be used as a database table column name, so it needs
to be a valid as so.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="key2Name" default="key2" use="optional" type="xs:string">
            <xs:annotation>
              <xs:documentation>Descriptive name for key2. This value may be used as a database table column name, so it needs
to be a valid as so.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute xmlns="http://www.mulesoft.org/schema/mule/bridgetable" name="key2Type" default="STRING" use="optional" type="KeyTypeEnumType">
            <xs:annotation>
              <xs:documentation>Data type of key2. This will be used to create the correct structure type. For example, if the
implementation is done with a database then this attribute will be used to define the correct
column type (STRING =&gt; varchar)</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute xmlns="http://www.mulesoft.org/schema/mule/bridgetable" name="allowEmptyKeys" default="false" use="optional" type="booleanType">
            <xs:annotation>
              <xs:documentation>Whether empty keys are allowed. An empty key is null or the empty string ("").</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute xmlns="http://www.mulesoft.org/schema/mule/bridgetable" name="returnValueAsString" default="false" use="optional" type="booleanType">
            <xs:annotation>
              <xs:documentation>Whether all values should be returned as strings or not.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element xmlns="http://www.mulesoft.org/schema/mule/bridgetable" xmlns:mule="http://www.mulesoft.org/schema/mule/core" name="insert" substitutionGroup="mule:abstract-message-processor" type="InsertType">
    <xs:annotation>
      <xs:documentation>Insert the mapping: key1 &lt;=&gt; key2.
&lt;p/&gt;</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="InsertType">
    <xs:complexContent>
      <xs:extension xmlns:mule="http://www.mulesoft.org/schema/mule/core" base="mule:abstractMessageProcessorType">
        <xs:attribute name="config-ref" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Specify which configuration to use for this invocation.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="key1" use="required" type="xs:string">
          <xs:annotation>
            <xs:documentation>The value for key1</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="key2" use="required" type="xs:string">
          <xs:annotation>
            <xs:documentation>The value for key2</xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element xmlns="http://www.mulesoft.org/schema/mule/bridgetable" xmlns:mule="http://www.mulesoft.org/schema/mule/core" name="upsert-by-key1" substitutionGroup="mule:abstract-message-processor" type="UpsertByKey1Type">
    <xs:annotation>
      <xs:documentation>Update or insert the mapping: key1 &lt;=&gt; key2.
If key1 already existed in the database, then the value for key2 is updated, if not
the mapping will be inserted.
&lt;p/&gt;</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="UpsertByKey1Type">
    <xs:complexContent>
      <xs:extension xmlns:mule="http://www.mulesoft.org/schema/mule/core" base="mule:abstractMessageProcessorType">
        <xs:attribute name="config-ref" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Specify which configuration to use for this invocation.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="key1" use="required" type="xs:string">
          <xs:annotation>
            <xs:documentation>The value for key1</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="key2" use="required" type="xs:string">
          <xs:annotation>
            <xs:documentation>The new value for key2</xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element xmlns="http://www.mulesoft.org/schema/mule/bridgetable" xmlns:mule="http://www.mulesoft.org/schema/mule/core" name="upsert-by-key2" substitutionGroup="mule:abstract-message-processor" type="UpsertByKey2Type">
    <xs:annotation>
      <xs:documentation>Update or insert the mapping: key2 &lt;=&gt; key1.
If key2 already existed in the database, then the value for key1 is updated, if not
the mapping will be inserted.
&lt;p/&gt;</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="UpsertByKey2Type">
    <xs:complexContent>
      <xs:extension xmlns:mule="http://www.mulesoft.org/schema/mule/core" base="mule:abstractMessageProcessorType">
        <xs:attribute name="config-ref" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Specify which configuration to use for this invocation.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="key1" use="required" type="xs:string">
          <xs:annotation>
            <xs:documentation>The new value for key1</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="key2" use="required" type="xs:string">
          <xs:annotation>
            <xs:documentation>The value for key2</xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element xmlns="http://www.mulesoft.org/schema/mule/bridgetable" xmlns:mule="http://www.mulesoft.org/schema/mule/core" name="update-by-key1" substitutionGroup="mule:abstract-message-processor" type="UpdateByKey1Type">
    <xs:annotation>
      <xs:documentation>Update the mapping: key1 &lt;=&gt; key2
&lt;p/&gt;</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="UpdateByKey1Type">
    <xs:complexContent>
      <xs:extension xmlns:mule="http://www.mulesoft.org/schema/mule/core" base="mule:abstractMessageProcessorType">
        <xs:attribute name="config-ref" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Specify which configuration to use for this invocation.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="key1" use="required" type="xs:string">
          <xs:annotation>
            <xs:documentation>The value for key1</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="newKey2" use="required" type="xs:string">
          <xs:annotation>
            <xs:documentation>The new value for key2</xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element xmlns="http://www.mulesoft.org/schema/mule/bridgetable" xmlns:mule="http://www.mulesoft.org/schema/mule/core" name="update-by-key2" substitutionGroup="mule:abstract-message-processor" type="UpdateByKey2Type">
    <xs:annotation>
      <xs:documentation>Update the mapping: key2 &lt;=&gt; key1
&lt;p/&gt;</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="UpdateByKey2Type">
    <xs:complexContent>
      <xs:extension xmlns:mule="http://www.mulesoft.org/schema/mule/core" base="mule:abstractMessageProcessorType">
        <xs:attribute name="config-ref" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Specify which configuration to use for this invocation.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="key2" use="required" type="xs:string">
          <xs:annotation>
            <xs:documentation>The value for key2</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="newKey1" use="required" type="xs:string">
          <xs:annotation>
            <xs:documentation>The new value for key1</xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element xmlns="http://www.mulesoft.org/schema/mule/bridgetable" xmlns:mule="http://www.mulesoft.org/schema/mule/core" name="remove-by-key1" substitutionGroup="mule:abstract-message-processor" type="RemoveByKey1Type">
    <xs:annotation>
      <xs:documentation>Remove the mapping: key1 &lt;=&gt; key2
&lt;p/&gt;</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="RemoveByKey1Type">
    <xs:complexContent>
      <xs:extension xmlns:mule="http://www.mulesoft.org/schema/mule/core" base="mule:abstractMessageProcessorType">
        <xs:attribute name="config-ref" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Specify which configuration to use for this invocation.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="key1" use="required" type="xs:string">
          <xs:annotation>
            <xs:documentation>The value of key1 to delete</xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element xmlns="http://www.mulesoft.org/schema/mule/bridgetable" xmlns:mule="http://www.mulesoft.org/schema/mule/core" name="remove-by-key2" substitutionGroup="mule:abstract-message-processor" type="RemoveByKey2Type">
    <xs:annotation>
      <xs:documentation>Remove the mapping: key2 &lt;=&gt; key1
&lt;p/&gt;</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="RemoveByKey2Type">
    <xs:complexContent>
      <xs:extension xmlns:mule="http://www.mulesoft.org/schema/mule/core" base="mule:abstractMessageProcessorType">
        <xs:attribute name="config-ref" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Specify which configuration to use for this invocation.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="key2" use="required" type="xs:string">
          <xs:annotation>
            <xs:documentation>The value of key2 to delete</xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element xmlns="http://www.mulesoft.org/schema/mule/bridgetable" xmlns:mule="http://www.mulesoft.org/schema/mule/core" name="retrieve-by-key1" substitutionGroup="mule:abstract-message-processor" type="RetrieveByKey1Type">
    <xs:annotation>
      <xs:documentation>Retrieves the value of key2 associated with key1.
&lt;p/&gt;</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="RetrieveByKey1Type">
    <xs:complexContent>
      <xs:extension xmlns:mule="http://www.mulesoft.org/schema/mule/core" base="mule:abstractMessageProcessorType">
        <xs:attribute name="config-ref" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Specify which configuration to use for this invocation.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="key1" use="required" type="xs:string">
          <xs:annotation>
            <xs:documentation>The value of key1 to retrieve</xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element xmlns="http://www.mulesoft.org/schema/mule/bridgetable" xmlns:mule="http://www.mulesoft.org/schema/mule/core" name="retrieve-by-key2" substitutionGroup="mule:abstract-message-processor" type="RetrieveByKey2Type">
    <xs:annotation>
      <xs:documentation>Retrieves the value of key1 associated with key2.
&lt;p/&gt;</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="RetrieveByKey2Type">
    <xs:complexContent>
      <xs:extension xmlns:mule="http://www.mulesoft.org/schema/mule/core" base="mule:abstractMessageProcessorType">
        <xs:attribute name="config-ref" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Specify which configuration to use for this invocation.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="key2" use="required" type="xs:string">
          <xs:annotation>
            <xs:documentation>The value of key2 to retrieve</xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element xmlns="http://www.mulesoft.org/schema/mule/bridgetable" xmlns:mule="http://www.mulesoft.org/schema/mule/core" name="contains-key1" substitutionGroup="mule:abstract-message-processor" type="ContainsKey1Type">
    <xs:annotation>
      <xs:documentation>Checks whether key1 exists in the bridge table
&lt;p/&gt;</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="ContainsKey1Type">
    <xs:complexContent>
      <xs:extension xmlns:mule="http://www.mulesoft.org/schema/mule/core" base="mule:abstractMessageProcessorType">
        <xs:attribute name="config-ref" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Specify which configuration to use for this invocation.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="key1" use="required" type="xs:string">
          <xs:annotation>
            <xs:documentation>The value of key1 to check</xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element xmlns="http://www.mulesoft.org/schema/mule/bridgetable" xmlns:mule="http://www.mulesoft.org/schema/mule/core" name="contains-key2" substitutionGroup="mule:abstract-message-processor" type="ContainsKey2Type">
    <xs:annotation>
      <xs:documentation>Checks whether key2 exists in the bridge table
&lt;p/&gt;</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="ContainsKey2Type">
    <xs:complexContent>
      <xs:extension xmlns:mule="http://www.mulesoft.org/schema/mule/core" base="mule:abstractMessageProcessorType">
        <xs:attribute name="config-ref" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Specify which configuration to use for this invocation.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="key2" use="required" type="xs:string">
          <xs:annotation>
            <xs:documentation>The value of key2 to check</xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element xmlns="http://www.mulesoft.org/schema/mule/bridgetable" xmlns:mule="http://www.mulesoft.org/schema/mule/core" name="keys1" substitutionGroup="mule:abstract-message-processor" type="Keys1Type">
    <xs:annotation>
      <xs:documentation>Returns all the values for key1
&lt;p/&gt;</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="Keys1Type">
    <xs:complexContent>
      <xs:extension xmlns:mule="http://www.mulesoft.org/schema/mule/core" base="mule:abstractMessageProcessorType">
        <xs:attribute name="config-ref" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Specify which configuration to use for this invocation.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element xmlns="http://www.mulesoft.org/schema/mule/bridgetable" xmlns:mule="http://www.mulesoft.org/schema/mule/core" name="keys2" substitutionGroup="mule:abstract-message-processor" type="Keys2Type">
    <xs:annotation>
      <xs:documentation>Returns all the values for key2
&lt;p/&gt;</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="Keys2Type">
    <xs:complexContent>
      <xs:extension xmlns:mule="http://www.mulesoft.org/schema/mule/core" base="mule:abstractMessageProcessorType">
        <xs:attribute name="config-ref" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Specify which configuration to use for this invocation.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:simpleType name="TypeEnumType">
    <xs:union>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="DEFAULT_VOLATILE"></xs:enumeration>
          <xs:enumeration value="DEFAULT_PERSISTENT"></xs:enumeration>
          <xs:enumeration value="DATA_SOURCE"></xs:enumeration>
        </xs:restriction>
      </xs:simpleType>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:pattern value="\#\[[^\]]+\]"></xs:pattern>
        </xs:restriction>
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>
  <xs:simpleType name="KeyTypeEnumType">
    <xs:union>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="STRING"></xs:enumeration>
          <xs:enumeration value="INT_NUMBER"></xs:enumeration>
          <xs:enumeration value="LONG_NUMBER"></xs:enumeration>
          <xs:enumeration value="DECIMAL_NUMBER"></xs:enumeration>
        </xs:restriction>
      </xs:simpleType>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:pattern value="\#\[[^\]]+\]"></xs:pattern>
        </xs:restriction>
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>
</xs:schema>