<?xml version="1.0" encoding="UTF-8"?>
<!--
    * 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.    
-->
<feature
      id="org.apache.tuscany.sca.feature.core"
      label="Apache Tuscany SCA Eclipse Tools Core"
      version="${tuscany.eclipse.version}"
      provider-name="Apache Software Foundation"
      plugin="org.apache.tuscany.sca.core">

   <description url="http://tuscany.apache.org">
      Apache Tuscany SCA Eclipse Tools Core
   </description>

   <copyright>
Copyright (c) 2005 - 2010 The Apache Software Foundation

This product includes software developed at
The Apache Software Foundation (http://www.apache.org/).
   </copyright>

   <license url="LICENSE">
Licensed to the Apache Software Foundation (ASF) under one or more contributor license
agreements. See the LICENSE and NOTICE files 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 &quot;License&quot;);
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 &quot;AS IS&quot; 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.

APACHE TUSCANY SCA SUBCOMPONENTS:

Apache Tuscany SCA for Java includes a number of subcomponents with separate copyright
notices and license terms. Your use of these subcomponents is subject to the terms and
conditions of the licenses shown in the LICENSE file contained in this distribution
and also available at

http://www.apache.org/dist/tuscany/java/sca/${pom.version}/tuscany-sca-${pom.version}-updatesite/LICENSE
   </license>

   <requires>
      <import plugin="org.eclipse.ui.ide"/>
      <import plugin="org.eclipse.core.resources"/>
      <import plugin="org.eclipse.core.runtime"/>
      <import plugin="org.eclipse.core.jobs"/>
      <import plugin="org.eclipse.debug.core"/>
      <import plugin="org.eclipse.debug.ui"/>
      <import plugin="org.eclipse.jdt.core"/>
      <import plugin="org.eclipse.jdt.debug.ui"/>
      <import plugin="org.eclipse.jdt.launching"/>
      <import plugin="org.eclipse.jdt.ui"/>
      <import plugin="org.eclipse.jface"/>
      <import plugin="org.eclipse.swt"/>
      <import plugin="org.eclipse.osgi"/>
   </requires>

   <plugin
         id="org.apache.tuscany.sca.core"
         download-size="0"
         install-size="0"
         version="${tuscany.eclipse.version}"
         unpack="false"/>

</feature>
