You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by gn...@apache.org on 2015/06/12 10:32:09 UTC

[1/2] karaf git commit: [KARAF-3776] Support Karaf 4 feature repositories in a degraded mode

Repository: karaf
Updated Branches:
  refs/heads/karaf-3.0.x b56bd92f3 -> 858be8c6b


[KARAF-3776] Support Karaf 4 feature repositories in a degraded mode

Project: http://git-wip-us.apache.org/repos/asf/karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/7b51d2d0
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/7b51d2d0
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/7b51d2d0

Branch: refs/heads/karaf-3.0.x
Commit: 7b51d2d06459db425f61edaed301ea14cdc34df5
Parents: b56bd92
Author: Guillaume Nodet <gn...@gmail.com>
Authored: Thu Jun 11 17:59:08 2015 +0200
Committer: Guillaume Nodet <gn...@gmail.com>
Committed: Thu Jun 11 17:59:08 2015 +0200

----------------------------------------------------------------------
 .../karaf/features/FeaturesNamespaces.java      |   6 +-
 .../internal/FeatureValidationUtil.java         |  10 +-
 .../karaf/features/internal/model/JaxbUtil.java |  53 ++-
 .../karaf/features/karaf-features-1.3.0.xsd     | 321 +++++++++++++++++++
 4 files changed, 384 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf/blob/7b51d2d0/features/core/src/main/java/org/apache/karaf/features/FeaturesNamespaces.java
----------------------------------------------------------------------
diff --git a/features/core/src/main/java/org/apache/karaf/features/FeaturesNamespaces.java b/features/core/src/main/java/org/apache/karaf/features/FeaturesNamespaces.java
index d108b63..de2facb 100644
--- a/features/core/src/main/java/org/apache/karaf/features/FeaturesNamespaces.java
+++ b/features/core/src/main/java/org/apache/karaf/features/FeaturesNamespaces.java
@@ -26,7 +26,8 @@ public interface FeaturesNamespaces {
     String URI_1_0_0 = "http://karaf.apache.org/xmlns/features/v1.0.0";
     String URI_1_1_0 = "http://karaf.apache.org/xmlns/features/v1.1.0";
     String URI_1_2_0 = "http://karaf.apache.org/xmlns/features/v1.2.0";
-	String URI_1_2_1 = "http://karaf.apache.org/xmlns/features/v1.2.1";
+    String URI_1_2_1 = "http://karaf.apache.org/xmlns/features/v1.2.1";
+    String URI_1_3_0 = "http://karaf.apache.org/xmlns/features/v1.3.0";
 
 	String URI_CURRENT = URI_1_2_1;
 
@@ -34,7 +35,8 @@ public interface FeaturesNamespaces {
     QName FEATURES_1_0_0 = new QName(URI_1_0_0, "features");
     QName FEATURES_1_1_0 = new QName(URI_1_1_0, "features");
     QName FEATURES_1_2_0 = new QName(URI_1_2_0, "features");
-	QName FEATURES_1_2_1 = new QName(URI_1_2_1, "features");
+    QName FEATURES_1_2_1 = new QName(URI_1_2_1, "features");
+    QName FEATURES_1_3_0 = new QName(URI_1_3_0, "features");
 
 	QName FEATURES_CURRENT = FEATURES_1_2_1;
 

http://git-wip-us.apache.org/repos/asf/karaf/blob/7b51d2d0/features/core/src/main/java/org/apache/karaf/features/internal/FeatureValidationUtil.java
----------------------------------------------------------------------
diff --git a/features/core/src/main/java/org/apache/karaf/features/internal/FeatureValidationUtil.java b/features/core/src/main/java/org/apache/karaf/features/internal/FeatureValidationUtil.java
index 449c461..4ce2a86 100644
--- a/features/core/src/main/java/org/apache/karaf/features/internal/FeatureValidationUtil.java
+++ b/features/core/src/main/java/org/apache/karaf/features/internal/FeatureValidationUtil.java
@@ -45,6 +45,7 @@ public class FeatureValidationUtil {
     public static final QName FEATURES_1_1 = new QName("http://karaf.apache.org/xmlns/features/v1.1.0", "features");
     public static final QName FEATURES_1_2 = new QName("http://karaf.apache.org/xmlns/features/v1.2.0", "features");
     public static final QName FEATURES_1_2_1 = new QName("http://karaf.apache.org/xmlns/features/v1.2.1", "features");
+    public static final QName FEATURES_1_3 = new QName("http://karaf.apache.org/xmlns/features/v1.3.0", "features");
     private static final Logger LOGGER = LoggerFactory.getLogger(FeatureValidationUtil.class);
 
     /**
@@ -71,9 +72,12 @@ public class FeatureValidationUtil {
         } else if (FeaturesNamespaces.FEATURES_1_2_0.equals(name)) {
 			LOGGER.debug("validating with schema version 1.2.0");
 			validate(doc, "/org/apache/karaf/features/karaf-features-1.2.0.xsd");
-		} else if (FeaturesNamespaces.FEATURES_1_2_1.equals(name)) {
-			LOGGER.debug("validating with schema version 1.2.1");
-			validate(doc, "/org/apache/karaf/features/karaf-features-1.2.1.xsd");
+        } else if (FeaturesNamespaces.FEATURES_1_2_1.equals(name)) {
+            LOGGER.debug("validating with schema version 1.2.1");
+            validate(doc, "/org/apache/karaf/features/karaf-features-1.2.1.xsd");
+        } else if (FeaturesNamespaces.FEATURES_1_3_0.equals(name)) {
+            LOGGER.debug("validating with schema version 1.3.0");
+            validate(doc, "/org/apache/karaf/features/karaf-features-1.3.0.xsd");
         }
         else {
             throw new IllegalArgumentException("Unrecognized root element: " + name);

http://git-wip-us.apache.org/repos/asf/karaf/blob/7b51d2d0/features/core/src/main/java/org/apache/karaf/features/internal/model/JaxbUtil.java
----------------------------------------------------------------------
diff --git a/features/core/src/main/java/org/apache/karaf/features/internal/model/JaxbUtil.java b/features/core/src/main/java/org/apache/karaf/features/internal/model/JaxbUtil.java
index 39c057a..fa4011d 100644
--- a/features/core/src/main/java/org/apache/karaf/features/internal/model/JaxbUtil.java
+++ b/features/core/src/main/java/org/apache/karaf/features/internal/model/JaxbUtil.java
@@ -41,6 +41,7 @@ import org.xml.sax.InputSource;
 import org.xml.sax.SAXException;
 import org.xml.sax.XMLFilter;
 import org.xml.sax.XMLReader;
+import org.xml.sax.helpers.AttributesImpl;
 import org.xml.sax.helpers.XMLFilterImpl;
 
 public class JaxbUtil {
@@ -101,7 +102,7 @@ public class JaxbUtil {
             }
         });
 
-        XMLFilter xmlFilter = new NoSourceAndNamespaceFilter(parser.getXMLReader());
+        XMLFilter xmlFilter = new NoSourceAndNamespaceFilter(new SchemaTranslator(parser.getXMLReader()));
         xmlFilter.setContentHandler(unmarshaller.getUnmarshallerHandler());
 
         SAXSource source = new SAXSource(xmlFilter, inputSource);
@@ -117,6 +118,56 @@ public class JaxbUtil {
         }
     }
 
+    /*
+     * Translate 1.3.0 into 1.2.1 format
+     */
+    public static class SchemaTranslator extends XMLFilterImpl {
+
+        int skip;
+
+        public SchemaTranslator(XMLReader parent) {
+            super(parent);
+        }
+
+        @Override
+        public void startElement(String uri, String localName, String qName, Attributes atts) throws SAXException {
+            if (FeaturesNamespaces.URI_1_3_0.equals(uri)) {
+                if (skip == 0) {
+                    if ("capability".equals(localName)
+                            || "requirement".equals(localName)
+                            || "library".equals(localName)
+                            || "scoping".equals(localName)) {
+                        skip++;
+                    } else {
+                        if ("feature".equals(localName)) {
+                            AttributesImpl atts2 = new AttributesImpl(atts);
+                            atts2.addAttribute("", "resolver", "resolver", "CDATA", "(obr)");
+                            atts = atts2;
+                        }
+                        super.startElement(uri, localName, qName, atts);
+                    }
+                } else {
+                    skip++;
+                }
+            } else {
+                super.startElement(uri, localName, qName, atts);
+            }
+        }
+
+        @Override
+        public void endElement(String uri, String localName, String qName) throws SAXException {
+            if (FeaturesNamespaces.URI_1_3_0.equals(uri)) {
+                if (skip == 0) {
+                    super.endElement(uri, localName, qName);
+                } else {
+                    skip--;
+                }
+            } else {
+                super.endElement(uri, localName, qName);
+            }
+        }
+    }
+
     /**
      * Provides an empty inputsource for the entity resolver.
      * Converts all elements to the features namespace to make old feature files

http://git-wip-us.apache.org/repos/asf/karaf/blob/7b51d2d0/features/core/src/main/resources/org/apache/karaf/features/karaf-features-1.3.0.xsd
----------------------------------------------------------------------
diff --git a/features/core/src/main/resources/org/apache/karaf/features/karaf-features-1.3.0.xsd b/features/core/src/main/resources/org/apache/karaf/features/karaf-features-1.3.0.xsd
new file mode 100644
index 0000000..4fc5141
--- /dev/null
+++ b/features/core/src/main/resources/org/apache/karaf/features/karaf-features-1.3.0.xsd
@@ -0,0 +1,321 @@
+<?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.
+
+-->
+<xs:schema elementFormDefault="qualified"
+    targetNamespace="http://karaf.apache.org/xmlns/features/v1.3.0"
+    xmlns:tns="http://karaf.apache.org/xmlns/features/v1.3.0"
+    xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+    <xs:annotation>
+        <xs:documentation><![CDATA[
+Karaf features mechanism. For documentation please visit the
+<a href="http://karaf.apache.org/">Karaf website</a>.
+        ]]></xs:documentation>
+    </xs:annotation>
+
+    <xs:complexType name="features">
+        <xs:annotation>
+            <xs:documentation><![CDATA[
+Root element of Feature definition. It contains an required attribute for
+designating from which repository this feature should be loaded. The Karaf
+shell will show the repository name when displaying information about the feature.
+            ]]></xs:documentation>
+        </xs:annotation>
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+            <xs:element name="repository" type="xs:anyURI">
+                <xs:annotation>
+                    <xs:documentation><![CDATA[
+Additional repositories where dependencies are stored.
+                    ]]></xs:documentation>
+                </xs:annotation>
+            </xs:element>
+            <xs:element name="feature" type="tns:feature">
+                <xs:annotation>
+                    <xs:documentation><![CDATA[
+Feature definition.
+                    ]]></xs:documentation>
+                </xs:annotation>
+            </xs:element>
+        </xs:choice>
+        <xs:attribute name="name" type="xs:string" use="required"/>
+    </xs:complexType>
+
+    <xs:complexType name="feature">
+        <xs:annotation>
+            <xs:documentation><![CDATA[
+Definition of the Feature.
+            ]]></xs:documentation>
+        </xs:annotation>
+        <xs:sequence>
+            <xs:choice minOccurs="0" maxOccurs="unbounded">
+                <xs:element name="details" minOccurs="0" type="xs:string">
+                    <xs:annotation>
+                        <xs:documentation><![CDATA[
+    The help text shown for this feature when using feature:info console command.
+                        ]]>
+                        </xs:documentation>
+                    </xs:annotation>
+                </xs:element>
+                <xs:element name="config" type="tns:config" />
+                <xs:element name="configfile" type="tns:configFile" />
+                <xs:element name="feature" type="tns:dependency" />
+                <xs:element name="bundle" type="tns:bundle" />
+                <xs:element name="conditional" type="tns:conditional" />
+                <xs:element name="requirement" type="tns:requirement" />
+                <xs:element name="capability" type="tns:capability" />
+                <xs:element name="library" type="tns:library" />
+            </xs:choice>
+            <xs:element name="scoping" minOccurs="0" maxOccurs="1" type="tns:scoping" />
+        </xs:sequence>
+        <xs:attribute name="name" type="tns:featureName" use="required" />
+        <xs:attribute name="version" type="xs:string" default="0.0.0" />
+        <xs:attribute name="description" type="xs:string" />
+        <xs:attribute name="install" type="tns:install">
+            <xs:annotation>
+                <xs:documentation><![CDATA[
+Marks if the feaute will be automatically started when thrown to the deploy folder.
+                ]]>
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="start-level" type="xs:int">
+             <xs:annotation>
+                <xs:documentation><![CDATA[
+Set this attribute to have an OSGi start level for this feature different
+from the default start level defined in Karaf's config.properties.
+                ]]>
+                </xs:documentation>
+             </xs:annotation>
+         </xs:attribute>
+        <xs:attribute name="hidden" type="xs:boolean" default="false" />
+    </xs:complexType>
+
+    <xs:complexType name="conditional">
+        <xs:annotation>
+            <xs:documentation><![CDATA[
+Definition of the Conditional.
+            ]]></xs:documentation>
+        </xs:annotation>
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+            <xs:element name="config" type="tns:config" />
+            <xs:element name="configfile" type="tns:configFile" />
+            <xs:element name="feature" type="tns:dependency" />
+            <xs:element name="bundle" type="tns:bundle" />
+            <xs:element name="condition" type="tns:dependency" minOccurs="0" maxOccurs="1" />
+        </xs:choice>
+    </xs:complexType>
+
+
+    <xs:complexType name="bundle">
+        <xs:annotation>
+            <xs:documentation><![CDATA[
+Deployable element to install.
+            ]]></xs:documentation>
+        </xs:annotation>
+        <xs:simpleContent>
+            <xs:extension base="xs:anyURI">
+                <xs:attribute name="start-level" type="xs:int">
+                    <xs:annotation>
+                        <xs:documentation><![CDATA[
+Set this attribute to have an OSGi start level for this bundle different
+from the default start level defined in the Karaf's config.properties.
+                        ]]>
+                        </xs:documentation>
+                    </xs:annotation>
+                </xs:attribute>
+                <xs:attribute name="start" type="xs:boolean" default="true">
+                    <xs:annotation>
+                        <xs:documentation><![CDATA[
+If false, leaves bundle in resolved state rather than the default active state.
+                        ]]>
+                        </xs:documentation>
+                    </xs:annotation>
+                </xs:attribute>
+                <xs:attribute name="dependency" type="xs:boolean">
+                    <xs:annotation>
+                        <xs:documentation><![CDATA[
+Mark this bundle as a dependency for the resolver.
+                        ]]>
+                        </xs:documentation>
+                    </xs:annotation>
+                </xs:attribute>
+            </xs:extension>
+        </xs:simpleContent>
+    </xs:complexType>
+
+    <xs:complexType name="dependency">
+        <xs:annotation>
+            <xs:documentation><![CDATA[
+Dependency of feature.
+            ]]></xs:documentation>
+        </xs:annotation>
+        <xs:simpleContent>
+            <xs:extension base="tns:featureName">
+                <xs:attribute name="version" type="xs:string" default="0.0.0" />
+                <xs:attribute name="prerequisite" type="xs:boolean" default="false"/>
+                <xs:attribute name="dependency" type="xs:boolean" default="false"/>
+            </xs:extension>
+        </xs:simpleContent>
+    </xs:complexType>
+
+    <xs:complexType name="config">
+        <xs:annotation>
+            <xs:documentation><![CDATA[
+Configuration entries which should be created during feature installation. This
+configuration may be used with OSGi Configuration Admin. The element content is
+read in as a properties file.
+            ]]></xs:documentation>
+        </xs:annotation>
+        <xs:simpleContent>
+            <xs:extension base="xs:string">
+                <xs:attribute name="name" type="xs:string" use="required" />
+                <xs:attribute name="append" type="xs:boolean" use="optional">
+                	<xs:annotation>
+                		<xs:documentation><![CDATA[
+Optional flag to append unknown values to the configuration.                 		
+                		]]>
+                		</xs:documentation>
+                	</xs:annotation>
+                </xs:attribute>
+            </xs:extension>
+        </xs:simpleContent>
+    </xs:complexType>
+
+    <xs:complexType name="configFile">
+        <xs:annotation>
+            <xs:documentation><![CDATA[
+Additional configuration files which should be created during feature installation.
+            ]]></xs:documentation>
+        </xs:annotation>
+        <xs:simpleContent>
+            <xs:extension base="xs:anyURI">
+                <xs:attribute name="finalname" type="xs:string" use="required">
+                    <xs:annotation>
+                        <xs:documentation><![CDATA[
+The final destination path and name for the configuration file.
+                        ]]></xs:documentation>
+                    </xs:annotation>
+                </xs:attribute>
+                <xs:attribute name="override" type="xs:boolean">
+                    <xs:annotation>
+                        <xs:documentation><![CDATA[
+If the configFile already exists at the finalname location, whether or not to replace it.
+                        ]]></xs:documentation>
+                    </xs:annotation>
+                </xs:attribute>
+
+            </xs:extension>
+        </xs:simpleContent>
+    </xs:complexType>
+
+    <xs:complexType name="requirement">
+        <xs:annotation>
+            <xs:documentation><![CDATA[
+Additional requirements of this feature.
+            ]]></xs:documentation>
+        </xs:annotation>
+        <xs:simpleContent>
+            <xs:extension base="xs:string">
+                <xs:attribute name="prerequisite" type="xs:boolean" default="false"/>
+            </xs:extension>
+        </xs:simpleContent>
+    </xs:complexType>
+
+    <xs:complexType name="capability">
+        <xs:annotation>
+            <xs:documentation><![CDATA[
+Additional capability of this feature.
+            ]]></xs:documentation>
+        </xs:annotation>
+        <xs:simpleContent>
+            <xs:extension base="xs:string">
+            </xs:extension>
+        </xs:simpleContent>
+    </xs:complexType>
+
+    <xs:complexType name="library">
+        <xs:annotation>
+            <xs:documentation><![CDATA[
+Additional capability of this feature.
+            ]]></xs:documentation>
+        </xs:annotation>
+        <xs:simpleContent>
+            <xs:extension base="xs:string">
+                <xs:attribute name="type" type="tns:libraryType" default="default"/>
+                <xs:attribute name="export" type="xs:boolean" default="false"/>
+                <xs:attribute name="delegate" type="xs:boolean" default="false"/>
+            </xs:extension>
+        </xs:simpleContent>
+    </xs:complexType>
+
+    <xs:simpleType name="libraryType">
+        <xs:restriction base="xs:string">
+            <xs:enumeration value="default"/>
+            <xs:enumeration value="endorsed"/>
+            <xs:enumeration value="extension"/>
+            <xs:enumeration value="boot"/>
+        </xs:restriction>
+    </xs:simpleType>
+
+    <xs:complexType name="scoping">
+        <xs:annotation>
+            <xs:documentation><![CDATA[
+Scoping definition for this feature.
+            ]]></xs:documentation>
+        </xs:annotation>
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+            <xs:element name="import" type="tns:scopeFilter"/>
+            <xs:element name="export" type="tns:scopeFilter"/>
+        </xs:choice>
+        <xs:attribute name="acceptDependencies" type="xs:boolean"/>
+    </xs:complexType>
+
+    <xs:complexType name="scopeFilter">
+        <xs:simpleContent>
+            <xs:extension base="xs:string">
+                <xs:attribute name="namespace"  type="xs:string" use="required"/>
+            </xs:extension>
+        </xs:simpleContent>
+    </xs:complexType>
+
+    <xs:simpleType name="featureName">
+        <xs:annotation>
+            <xs:documentation><![CDATA[
+Feature name should be non empty string.
+            ]]></xs:documentation>
+        </xs:annotation>
+        <xs:restriction base="xs:string">
+            <xs:minLength value="1" />
+        </xs:restriction>
+    </xs:simpleType>
+
+    <xs:simpleType name="install">
+        <xs:annotation>
+            <xs:documentation><![CDATA[
+Installation mode. Can be either manual or auto. Specifies whether the feature should be automatically installed when
+dropped inside the deploy folder. Note: This attribute doesn't affect feature descriptors that are installed from the
+command line or as part of the org.apache.karaf.features.cfg.
+            ]]></xs:documentation>
+        </xs:annotation>
+        <xs:restriction base="xs:string">
+            <xs:minLength value="1" />
+        </xs:restriction>
+    </xs:simpleType>
+    <xs:element name="features" type="tns:features" />
+
+</xs:schema>


[2/2] karaf git commit: [KARAF-3780] Support for pax-web 4.x

Posted by gn...@apache.org.
[KARAF-3780] Support for pax-web 4.x

Project: http://git-wip-us.apache.org/repos/asf/karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/858be8c6
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/858be8c6
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/858be8c6

Branch: refs/heads/karaf-3.0.x
Commit: 858be8c6b6d1fee36b706e58ed19e43d87166616
Parents: 7b51d2d
Author: Guillaume Nodet <gn...@gmail.com>
Authored: Thu Jun 11 18:01:16 2015 +0200
Committer: Guillaume Nodet <gn...@gmail.com>
Committed: Thu Jun 11 18:01:16 2015 +0200

----------------------------------------------------------------------
 http/core/pom.xml           | 1 +
 webconsole/console/pom.xml  | 2 +-
 webconsole/features/pom.xml | 1 +
 webconsole/gogo/pom.xml     | 1 +
 webconsole/http/pom.xml     | 2 ++
 webconsole/instance/pom.xml | 1 +
 6 files changed, 7 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf/blob/858be8c6/http/core/pom.xml
----------------------------------------------------------------------
diff --git a/http/core/pom.xml b/http/core/pom.xml
index d162b53..9b8f07a 100644
--- a/http/core/pom.xml
+++ b/http/core/pom.xml
@@ -78,6 +78,7 @@
                 <configuration>
                     <instructions>
                     	<Import-Package>
+                            javax.servlet;version="[2.6,4)",
                     		org.ops4j.pax.web.service.spi;version="[3.1,5)",
                     		*
                     	</Import-Package>

http://git-wip-us.apache.org/repos/asf/karaf/blob/858be8c6/webconsole/console/pom.xml
----------------------------------------------------------------------
diff --git a/webconsole/console/pom.xml b/webconsole/console/pom.xml
index 21a5f72..f2e354d 100644
--- a/webconsole/console/pom.xml
+++ b/webconsole/console/pom.xml
@@ -135,7 +135,7 @@
                             org.osgi.service.metatype;resolution:=optional,
                             org.osgi.service.prefs;resolution:=optional,
                             javax.portlet;resolution:=optional,
-                            javax.servlet.*,
+                            javax.servlet.*;version="[2.6,4)",
                             !org.apache.felix.bundlerepository,
                             !org.osgi.service.obr,
                             !org.osgi.service.cm,

http://git-wip-us.apache.org/repos/asf/karaf/blob/858be8c6/webconsole/features/pom.xml
----------------------------------------------------------------------
diff --git a/webconsole/features/pom.xml b/webconsole/features/pom.xml
index 807457c..68cf5f2 100644
--- a/webconsole/features/pom.xml
+++ b/webconsole/features/pom.xml
@@ -98,6 +98,7 @@
                 <configuration>
                     <instructions>
                         <Import-Package>
+                            javax.servlet.*;version="[2.6,4)",
                             org.apache.aries.blueprint,
 			                org.apache.felix.webconsole*;version="[3,5)",
                             org.json,

http://git-wip-us.apache.org/repos/asf/karaf/blob/858be8c6/webconsole/gogo/pom.xml
----------------------------------------------------------------------
diff --git a/webconsole/gogo/pom.xml b/webconsole/gogo/pom.xml
index d550645..eb7fda7 100644
--- a/webconsole/gogo/pom.xml
+++ b/webconsole/gogo/pom.xml
@@ -113,6 +113,7 @@
                 <configuration>
                     <instructions>
                         <Import-Package>
+                            javax.servlet.*;version="[2.6,4)",
                             jline;version="[${jline.version}, ${jline.version}]",
                             org.apache.aries.blueprint,
 			                org.apache.felix.webconsole*;version="[3,5)",

http://git-wip-us.apache.org/repos/asf/karaf/blob/858be8c6/webconsole/http/pom.xml
----------------------------------------------------------------------
diff --git a/webconsole/http/pom.xml b/webconsole/http/pom.xml
index 50afc75..068f282 100644
--- a/webconsole/http/pom.xml
+++ b/webconsole/http/pom.xml
@@ -103,11 +103,13 @@
                 <configuration>
                     <instructions>
                         <Import-Package>
+                            javax.servlet.*;version="[2.6,4)",
                             org.apache.aries.blueprint,
 			                org.apache.felix.webconsole*;version="[3,5)",
                             org.json,
                             org.osgi.service.blueprint.container,
                             org.osgi.service.blueprint.reflect,
+                            org.ops4j.pax.web.service.spi*;version="[3.2,5)",
                             *
                         </Import-Package>
                     </instructions>

http://git-wip-us.apache.org/repos/asf/karaf/blob/858be8c6/webconsole/instance/pom.xml
----------------------------------------------------------------------
diff --git a/webconsole/instance/pom.xml b/webconsole/instance/pom.xml
index 4638c11..045a735 100644
--- a/webconsole/instance/pom.xml
+++ b/webconsole/instance/pom.xml
@@ -107,6 +107,7 @@
 				<configuration>
 					<instructions>
 						<Import-Package>
+							javax.servlet.*;version="[2.6,4)",
 							org.apache.aries.blueprint,
 							org.apache.felix.webconsole*;version="[3,5)",
                             org.json,