<?xml version='1.0' encoding='UTF-8'?>
<!-- Schema file written by PDE -->
<schema targetNamespace="org.eclipse.jst.jsf.core" xmlns="http://www.w3.org/2001/XMLSchema">
<annotation>
      <appinfo>
         <meta.schema plugin="org.eclipse.jst.jsf.core" id="variableresolver" name="Variable Resolver"/>
      </appinfo>
      <documentation>
         Allows a third-party to define an alternative instance of the design time variable resolver.  This id can then be set on a project using DesignTimeApplicationManager.setVariableResolverProvider.  Once set on a project this id will be used to load the active design time variable resolver.
      </documentation>
   </annotation>

   <element name="extension">
      <complexType>
         <sequence>
            <element ref="variableresolver"/>
         </sequence>
         <attribute name="point" type="string" use="required">
            <annotation>
               <documentation>
                  
               </documentation>
            </annotation>
         </attribute>
         <attribute name="id" type="string">
            <annotation>
               <documentation>
                  
               </documentation>
            </annotation>
         </attribute>
         <attribute name="name" type="string">
            <annotation>
               <documentation>
                  
               </documentation>
               <appinfo>
                  <meta.attribute translatable="true"/>
               </appinfo>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="variableresolver">
      <complexType>
         <attribute name="id" type="string" use="required">
            <annotation>
               <documentation>
                  The id to be used to identify this property resolver.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="class" type="string" use="required">
            <annotation>
               <documentation>
                  The class implementing the property resolver.
               </documentation>
               <appinfo>
                  <meta.attribute kind="java" basedOn="org.eclipse.jst.jsf.designtime.el.AbstractDTVariableResolver"/>
               </appinfo>
            </annotation>
         </attribute>
         <attribute name="forRuntimeClass" type="string">
            <annotation>
               <documentation>
                  Names a class (it need not be on the class path at designtime) that this designtime variable resolver is intended to shadow.

The instance of AbstractDTVariableResolver provided by the &apos;class&apos; attribute _must_ implement the IDecorativeResolver tagging interface in order to be used in this way.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="instancePerProject" type="boolean">
            <annotation>
               <documentation>
                  Default if not specified is false.  This is backward compatible with pre-3.0 behaviour for the variableresolver extension point.

If set to false (or not set) a single instance of the variable resolver will be used for all design time managers in the workspace.  If set to true, a new instance will be created on every time this variable resolver becomes the active one on a design time application manager.

If &apos;class&apos; specifies a type that implements org.eclipse.jst.jsf.designtime.el.IInstancePerProjectResolver, then setProject will be called with the host project.  Implementing this interface is optional.
               </documentation>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <annotation>
      <appinfo>
         <meta.section type="since"/>
      </appinfo>
      <documentation>
         1.5
      </documentation>
   </annotation>

   <annotation>
      <appinfo>
         <meta.section type="examples"/>
      </appinfo>
      <documentation>
         &lt;p&gt;The following example defines a new variable resolver implemented by CustomDTVariableResolver&lt;/p&gt;

&lt;p&gt;
&lt;pre&gt;
   &lt;extension
         point=&quot;org.eclipse.jst.jsf.designtime.variableresolver&quot;&gt;
      &lt;variableresolver
            class=&quot;org.eclipse.jst.jsf.dtresolver.test.resolvers.CustomDTVariableResolver&quot;
            id=&quot;org.eclipse.jst.jsf.dtresolver.test.variableresolver1&quot;/&gt;
   &lt;/extension&gt;
&lt;/pre&gt;
&lt;/p&gt;
      </documentation>
   </annotation>



   <annotation>
      <appinfo>
         <meta.section type="copyright"/>
      </appinfo>
      <documentation>
         Copyright 2006 Oracle
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 http://www.eclipse.org/legal/epl-v10.html
      </documentation>
   </annotation>

</schema>
