<?xml version='1.0' encoding='UTF-8'?>
<!-- Schema file written by PDE -->
<schema targetNamespace="org.eclipse.equinox.http.registry">
<annotation>
      <appInfo>
         <meta.schema plugin="org.eclipse.equinox.http.registry" id="servlets" name="Http Service Servlets"/>
      </appInfo>
      <documentation>
         This extension mimics and borrows the semantics of the OSGi HttpService registerServlet method.
      </documentation>
   </annotation>

   <element name="extension">
      <complexType>
         <sequence>
            <element ref="serviceSelector" minOccurs="0" maxOccurs="1"/>
            <element ref="servlet" minOccurs="1" maxOccurs="unbounded"/>
         </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="servlet">
      <annotation>
         <appInfo>
            <meta.element labelAttribute="alias"/>
         </appInfo>
      </annotation>
      <complexType>
         <sequence>
            <element ref="init-param" minOccurs="0" maxOccurs="unbounded"/>
         </sequence>
         <attribute name="class" type="string" use="required">
            <annotation>
               <documentation>
                  The equivalent of the OSGi Http Services &quot;servlet&quot; in registerServlet. The Servlet is instantiated by the Extension Point provider and must be an instance of javax.servlet.Servlet
               </documentation>
               <appInfo>
                  <meta.attribute kind="java" basedOn="javax.servlet.Servlet"/>
               </appInfo>
            </annotation>
         </attribute>
         <attribute name="alias" type="string" use="required">
            <annotation>
               <documentation>
                  The equivalent of the OSGi Http Services &quot;alias&quot; in registerServlet.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="httpcontextId" type="string">
            <annotation>
               <documentation>
                  The equivalent of the OSGi Http Services httpcontext in registerResource. The httpcontextId is matched against the &quot;httpcontexts&quot; extension for a matching id. If this attribute is not provided the OSGi Http Service&apos;s DefaultHttpContext semantics are used.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="load-on-startup" type="boolean">
            <annotation>
               <documentation>
                  Determines if the Servlet should be initialized immediately.
               </documentation>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="init-param">
      <annotation>
         <appInfo>
            <meta.element labelAttribute="name"/>
         </appInfo>
         <documentation>
            Similar to the Servlet Specification and its deployment descriptor&apos;s init-param elements.
         </documentation>
      </annotation>
      <complexType>
         <attribute name="name" type="string" use="required">
            <annotation>
               <documentation>
                  The initial parameter&apos;s name
               </documentation>
            </annotation>
         </attribute>
         <attribute name="value" type="string" use="required">
            <annotation>
               <documentation>
                  The initial parameter&apos;s value
               </documentation>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="serviceSelector">
      <complexType>
         <attribute name="filter" type="string">
            <annotation>
               <documentation>
                  The serviceSelector allow filtering of the HttpService instances with which to register servlets.
               </documentation>
            </annotation>
         </attribute>
         <attribute name="class" type="string">
            <annotation>
               <documentation>
                  If used the class must be an instance of org.osgi.framework.Filter
               </documentation>
               <appInfo>
                  <meta.attribute kind="java" basedOn="org.osgi.framework.Filter"/>
               </appInfo>
            </annotation>
         </attribute>
      </complexType>
   </element>

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

   <annotation>
      <appInfo>
         <meta.section type="examples"/>
      </appInfo>
      <documentation>
         The following is an example of the &lt;code&gt;servlets&lt;/code&gt; extension:
&lt;pre&gt;
     &lt;extension
           id=&quot;testServlet&quot;
           point=&quot;org.eclipse.equinox.http.registry.servlets&quot;&gt;
        &lt;servlet
              alias=&quot;/sp_test&quot;
              class=&quot;org.eclipse.equinox.http.registry.internal.TestServlet&quot;&gt;
           &lt;init-param
                 name=&quot;testParam&quot;
                 value=&quot;test param value&quot;&gt;
           &lt;/init-param&gt;
        &lt;/servlet&gt;
     &lt;/extension&gt;
&lt;/pre&gt;

This equivalent to the OSGi Http Service&apos;s registerServlet method.
      </documentation>
   </annotation>

   <annotation>
      <appInfo>
         <meta.section type="apiInfo"/>
      </appInfo>
      <documentation>
         Servlets must be an instance of javax.servlet.Servlet
      </documentation>
   </annotation>

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

   <annotation>
      <appInfo>
         <meta.section type="copyright"/>
      </appInfo>
      <documentation>
         Copyright (c) 2005-2007 Cognos Incorporated, IBM Corporation and others
&lt;br&gt;

This program and the accompanying materials are made 
available under the terms of the Eclipse Public License 2.0 which 
accompanies this distribution, and is available at 
&lt;a href=&quot;https://www.eclipse.org/legal/epl-2.0&quot;&gt;https://www.eclipse.org/legal/epl-v20.html&lt;/a&gt;/

SPDX-License-Identifier: EPL-2.0.
&lt;br&gt;
Contributors:&lt;br&gt;
Cognos Incorporated - initial API and implementation&lt;br&gt;
IBM Corporation - bug fixes and enhancements&lt;br&gt;
      </documentation>
   </annotation>

</schema>
