<?xml version='1.0' encoding='UTF-8'?>
<!-- Schema file written by PDE -->
<schema targetNamespace="org.eclipse.jem.proxy">
<annotation>
      <appInfo>
         <meta.schema plugin="org.eclipse.jem.proxy" id="extensions" name="Proxy Extension Registration Contributors"/>
      </appInfo>
      <documentation>
         This extension point is used to supply extension registrations for proxy support. You can supply an extension registration for a specific classpath container or for a plugin.
&lt;p&gt;
Just after the registry has been started and before any contributions to the registry can be made, the extension registrations for the given registry type (such as &quot;org.eclipse.jem.REMOTE&quot;) for any paths/plugins/containers that have that match will be executed. These are used to do extension registrations (such as BaseProxyFactroyRegistry.registerBeanTypeProxyFactory(String packageName, IBeanTypeProxyFactory aFactory)). These registrations shouldn&apos;t do any actual proxy calls because at this time not all of the extensions had been run yet and it may accidently reference a package that should have an extension factory on it, but that factory has not yet been registered. Instead the contributor extension point should be used for that because at that time all of the extensions will be registered.
&lt;p&gt;
The way extension registrations work is that when a proxy vm is started, it finds all of the extensions of this extension point will be searched for those have the same container id and registry type id, and if so they will be called as an extension registration.
&lt;p&gt;
If a plugin is in the classpath of the project (in other words the project is PDE plugin development project and requires a plugin) then the extension registration with the given plugin id will be called.
&lt;p&gt;
Both container and plugin can be specified, but at least one of them must be specified. If both are specified, then this entry will be used if either the container or the plugin is found in the classpath.
      </documentation>
   </annotation>

   <element name="extension">
      <complexType>
         <sequence>
            <element ref="registration" minOccurs="0" maxOccurs="unbounded"/>
         </sequence>
         <attribute name="point" type="string" use="required">
            <annotation>
               <documentation>
                  a fully qualified identifier of the target extension point
               </documentation>
            </annotation>
         </attribute>
         <attribute name="id" type="string">
            <annotation>
               <documentation>
                  an optional identifier of the extension instance
               </documentation>
            </annotation>
         </attribute>
         <attribute name="name" type="string">
            <annotation>
               <documentation>
                  an optional name of the extension instance
               </documentation>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="registration">
      <annotation>
         <appInfo>
            <meta.element labelAttribute="class"/>
         </appInfo>
         <documentation>
            Proxy Extension factories registration contributor. Used to contribute the factory extensions based upon the registry type (e.g. &quot;org.eclipse.jem.REMOTE&quot; for remote vm registries) depending upon the container or plugin path.
         </documentation>
      </annotation>
      <complexType>
         <attribute name="registryType" type="string" use="required">
            <annotation>
               <documentation>
                  The type of the registry this extensionRegistration is for, such as &quot;org.eclipse.jem.REMOTE&quot; for the remote vm registry type.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="container" type="string">
            <annotation>
               <documentation>
                  extension registration is for a container. The value is the container id (e.g. &lt;b&gt;&quot;JRE_CONTAINER&quot;&lt;/b&gt;). This will match &quot;/JRE_CONTAINER&quot; or &quot;/JRE_CONTAINER/...&quot;. Or &lt;b&gt;&quot;JRE_CONTAINER/XYZ&quot;&lt;/b&gt; would match &quot;/JRE_CONTAINER/XYZ/...&quot;.
&lt;p&gt;
You can also use a regular expression. An expression such as &lt;b&gt;&quot;SWT_CONTAINER/.*/JFACE&quot;&lt;/b&gt; will match &quot;/SWT_CONTAINER/PDE/JFACE&quot; but will not match &quot;/SWT_CONTAINER&quot;.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="plugin" type="string">
            <annotation>
               <documentation>
                  extension registration is for a plugin. The value is the plugin id (e.g. &quot;org.eclipse.swt&quot;).
               </documentation>
            </annotation>
         </attribute>
         <attribute name="class" type="string" use="required">
            <annotation>
               <documentation>
                  the class that implements this extension registration. The class must implement IExtensionRegistration.
               </documentation>
               <appInfo>
                  <meta.attribute kind="java" basedOn="org.eclipse.jem.internal.proxy.core.IExtensionRegistration"/>
               </appInfo>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <annotation>
      <appInfo>
         <meta.section type="since"/>
      </appInfo>
      <documentation>
         1.1.0
      </documentation>
   </annotation>

   <annotation>
      <appInfo>
         <meta.section type="examples"/>
      </appInfo>
      <documentation>
         The following is an example of a contributor: 

&lt;p&gt;
&lt;pre&gt;
 &lt;extension point=&quot;org.eclipse.jem.proxy.extensions&quot;&gt;
  &lt;contributor
   registryType=&quot;org.eclipse.jem.REMOTE&quot;
   class=&quot;com.example.ExtensionRegistrationImplementation&quot;
   container=&quot;MY_CONTAINER&quot;&gt;
  &lt;/contributor&gt;
 &lt;/extension&gt;
&lt;/pre&gt;
&lt;/p&gt;
      </documentation>
   </annotation>

   <annotation>
      <appInfo>
         <meta.section type="apiInfo"/>
      </appInfo>
      <documentation>
         The &lt;samp&gt;class&lt;/samp&gt; attribute must be a fully-qualified class that implements the &lt;samp&gt;org.eclipse.jem.internal.proxy.core.IExtensionRegistration&lt;/samp&gt; interface for extension registration.
      </documentation>
   </annotation>

   <annotation>
      <appInfo>
         <meta.section type="implementation"/>
      </appInfo>
      <documentation>
         
      </documentation>
   </annotation>

   <annotation>
      <appInfo>
         <meta.section type="copyright"/>
      </appInfo>
      <documentation>
         Copyright (c) 2004 IBM Corporation and others.&lt;br&gt;
All rights reserved. This program and the accompanying materials are made 
available under the terms of the Eclipse Public License v1.0 which accompanies 
this distribution, and is available at 
&lt;a href=&quot;http://www.eclipse.org/legal/epl-v10.html&quot;&gt;http://www.eclipse.org/legal/epl-v10.html&lt;/a&gt;
      </documentation>
   </annotation>

</schema>
