Author: cziegeler
Date: Wed Oct 19 14:28:07 2016
New Revision: 1765608

URL: http://svn.apache.org/viewvc?rev=1765608&view=rev
Log:
SLING-5014 : Installer blacklist, to avoid reinstalling older bundles. Apply 
patch from Dominik Süß. Updated to latest parent pom and newer OSGi framework

Added:
    
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/BundleBlackList.java
   (with props)
    
sling/trunk/installer/it/src/test/java/org/apache/sling/installer/it/BundleInstallBlackListTest.java
   (with props)
    sling/trunk/installer/it/src/test/resources/blacklisttest/
    
sling/trunk/installer/it/src/test/resources/blacklisttest/sling_bootstrap.txt   
(with props)
    sling/trunk/installer/it/src/test/resources/blacklisttestempty/
    
sling/trunk/installer/it/src/test/resources/blacklisttestempty/sling_bootstrap.txt
   (with props)
    sling/trunk/installer/it/src/test/resources/sling_bootstrap.txt   (with 
props)
Removed:
    
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/util/PABundleRefresher.java
    sling/trunk/installer/core/src/main/java/org/osgi/
Modified:
    sling/trunk/installer/core/pom.xml
    
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/OsgiInstaller.java
    
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/ResourceChangeListener.java
    
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/UpdateHandler.java
    
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/event/InstallationEvent.java
    
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/event/InstallationListener.java
    
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/event/package-info.java
    
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/info/InfoProvider.java
    
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/info/InstallationState.java
    
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/info/Resource.java
    
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/info/ResourceGroup.java
    
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/info/package-info.java
    
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/jmx/InstallerMBean.java
    
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/jmx/package-info.java
    
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/package-info.java
    
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/tasks/InstallTaskFactory.java
    
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/tasks/InstallationContext.java
    
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/tasks/RegisteredResource.java
    
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/tasks/ResourceTransformer.java
    
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/tasks/RetryHandler.java
    
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/tasks/TaskResource.java
    
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/tasks/TaskResourceGroup.java
    
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/tasks/package-info.java
    
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/AbstractInstallTask.java
    
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/EntityResourceList.java
    
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/InstallerMBeanImpl.java
    
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/tasks/BundleInstallTask.java
    
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/tasks/BundleTaskCreator.java
    
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/tasks/BundleUpdateTask.java
    
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/tasks/TaskSupport.java
    
sling/trunk/installer/core/src/test/java/org/apache/sling/installer/core/impl/MockBundleContext.java
    sling/trunk/installer/it/pom.xml
    
sling/trunk/installer/it/src/test/java/org/apache/sling/installer/it/OsgiInstallerTestBase.java

Modified: sling/trunk/installer/core/pom.xml
URL: 
http://svn.apache.org/viewvc/sling/trunk/installer/core/pom.xml?rev=1765608&r1=1765607&r2=1765608&view=diff
==============================================================================
--- sling/trunk/installer/core/pom.xml (original)
+++ sling/trunk/installer/core/pom.xml Wed Oct 19 14:28:07 2016
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.apache.sling</groupId>
         <artifactId>sling</artifactId>
-        <version>26</version>
+        <version>29</version>
         <relativePath />
     </parent>
 
@@ -54,29 +54,8 @@
                                                <Bundle-Activator>
                                                        
org.apache.sling.installer.core.impl.Activator
                         </Bundle-Activator>
-                        <Private-Package>
-                            org.apache.sling.installer.core.impl.*
-                        </Private-Package>
-                        <Export-Package>
-                            org.apache.sling.installer.api,
-                            org.apache.sling.installer.api.info,
-                            org.apache.sling.installer.api.event,
-                            org.apache.sling.installer.api.tasks,
-                            org.apache.sling.installer.api.jmx
-                        </Export-Package>
-                                    <!-- 
-                                       As we make use of optional features 
from 4.3 if they
-                                       are available, we have to add the 
framework imports 
-                                       by hand:
-                                    -->
-                                       <Import-Package>
-                                           
org.osgi.framework;version="[1.4,2]",
-                                           
org.osgi.framework.wiring;resolution:=optional,
-                                           *
-                                       </Import-Package>
                         <Embed-Dependency>
                             
org.apache.felix.configadmin;inline="org/apache/felix/cm/file/ConfigurationHandler.*",
-                            
org.osgi.compendium;inline="org/osgi/util/tracker/*",
                             
org.apache.sling.commons.osgi;inline="org/apache/sling/commons/osgi/ManifestHeader*.*|org/apache/sling/commons/osgi/PropertiesUtil.*|org/apache/sling/commons/osgi/SortingServiceTracker.*"
                         </Embed-Dependency>
                                        </instructions>
@@ -132,12 +111,7 @@
     <dependencies>
         <dependency>
             <groupId>org.osgi</groupId>
-            <artifactId>org.osgi.core</artifactId>
-            <version>4.3.0</version>
-        </dependency>
-        <dependency>
-            <groupId>org.osgi</groupId>
-            <artifactId>org.osgi.compendium</artifactId>
+            <artifactId>osgi.core</artifactId>
         </dependency>
         <dependency>
             <groupId>org.slf4j</groupId>
@@ -153,7 +127,7 @@
         <dependency>
             <groupId>org.apache.felix</groupId>
             <artifactId>org.apache.felix.configadmin</artifactId>
-            <version>1.8.6</version>
+            <version>1.8.10</version>
             <scope>provided</scope>
         </dependency>
       <!-- Basic dependencies for Unit Tests -->

Modified: 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/OsgiInstaller.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/OsgiInstaller.java?rev=1765608&r1=1765607&r2=1765608&view=diff
==============================================================================
--- 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/OsgiInstaller.java
 (original)
+++ 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/OsgiInstaller.java
 Wed Oct 19 14:28:07 2016
@@ -18,7 +18,7 @@
  */
 package org.apache.sling.installer.api;
 
-import aQute.bnd.annotation.ProviderType;
+import org.osgi.annotation.versioning.ProviderType;
 
 /**
  * Service for installing/updating/removing installable resources

Modified: 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/ResourceChangeListener.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/ResourceChangeListener.java?rev=1765608&r1=1765607&r2=1765608&view=diff
==============================================================================
--- 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/ResourceChangeListener.java
 (original)
+++ 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/ResourceChangeListener.java
 Wed Oct 19 14:28:07 2016
@@ -22,7 +22,7 @@ import java.io.InputStream;
 import java.util.Dictionary;
 import java.util.Map;
 
-import aQute.bnd.annotation.ProviderType;
+import org.osgi.annotation.versioning.ProviderType;
 
 
 /**

Modified: 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/UpdateHandler.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/UpdateHandler.java?rev=1765608&r1=1765607&r2=1765608&view=diff
==============================================================================
--- 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/UpdateHandler.java
 (original)
+++ 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/UpdateHandler.java
 Wed Oct 19 14:28:07 2016
@@ -22,7 +22,7 @@ import java.io.InputStream;
 import java.util.Dictionary;
 import java.util.Map;
 
-import aQute.bnd.annotation.ConsumerType;
+import org.osgi.annotation.versioning.ConsumerType;
 
 
 /**

Modified: 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/event/InstallationEvent.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/event/InstallationEvent.java?rev=1765608&r1=1765607&r2=1765608&view=diff
==============================================================================
--- 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/event/InstallationEvent.java
 (original)
+++ 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/event/InstallationEvent.java
 Wed Oct 19 14:28:07 2016
@@ -18,7 +18,7 @@
  */
 package org.apache.sling.installer.api.event;
 
-import aQute.bnd.annotation.ProviderType;
+import org.osgi.annotation.versioning.ProviderType;
 
 
 /**

Modified: 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/event/InstallationListener.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/event/InstallationListener.java?rev=1765608&r1=1765607&r2=1765608&view=diff
==============================================================================
--- 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/event/InstallationListener.java
 (original)
+++ 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/event/InstallationListener.java
 Wed Oct 19 14:28:07 2016
@@ -18,7 +18,7 @@
  */
 package org.apache.sling.installer.api.event;
 
-import aQute.bnd.annotation.ConsumerType;
+import org.osgi.annotation.versioning.ConsumerType;
 
 
 /**

Modified: 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/event/package-info.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/event/package-info.java?rev=1765608&r1=1765607&r2=1765608&view=diff
==============================================================================
--- 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/event/package-info.java
 (original)
+++ 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/event/package-info.java
 Wed Oct 19 14:28:07 2016
@@ -17,8 +17,7 @@
  * under the License.
  */
 
-@Version("1.0.2")
[email protected]("1.0.3")
 package org.apache.sling.installer.api.event;
 
-import aQute.bnd.annotation.Version;
 

Modified: 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/info/InfoProvider.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/info/InfoProvider.java?rev=1765608&r1=1765607&r2=1765608&view=diff
==============================================================================
--- 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/info/InfoProvider.java
 (original)
+++ 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/info/InfoProvider.java
 Wed Oct 19 14:28:07 2016
@@ -18,7 +18,7 @@
  */
 package org.apache.sling.installer.api.info;
 
-import aQute.bnd.annotation.ProviderType;
+import org.osgi.annotation.versioning.ProviderType;
 
 
 /**

Modified: 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/info/InstallationState.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/info/InstallationState.java?rev=1765608&r1=1765607&r2=1765608&view=diff
==============================================================================
--- 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/info/InstallationState.java
 (original)
+++ 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/info/InstallationState.java
 Wed Oct 19 14:28:07 2016
@@ -21,8 +21,7 @@ package org.apache.sling.installer.api.i
 import java.util.List;
 
 import org.apache.sling.installer.api.tasks.RegisteredResource;
-
-import aQute.bnd.annotation.ProviderType;
+import org.osgi.annotation.versioning.ProviderType;
 
 /**
  * The state of the OSGi installer at a given time.

Modified: 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/info/Resource.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/info/Resource.java?rev=1765608&r1=1765607&r2=1765608&view=diff
==============================================================================
--- 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/info/Resource.java
 (original)
+++ 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/info/Resource.java
 Wed Oct 19 14:28:07 2016
@@ -22,10 +22,9 @@ import org.apache.sling.installer.api.ta
 import org.apache.sling.installer.api.tasks.RegisteredResource;
 import org.apache.sling.installer.api.tasks.ResourceState;
 import org.apache.sling.installer.api.tasks.ResourceTransformer;
+import org.osgi.annotation.versioning.ProviderType;
 import org.osgi.framework.Version;
 
-import aQute.bnd.annotation.ProviderType;
-
 
 /**
  * A resource provides all relevant information about a registered

Modified: 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/info/ResourceGroup.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/info/ResourceGroup.java?rev=1765608&r1=1765607&r2=1765608&view=diff
==============================================================================
--- 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/info/ResourceGroup.java
 (original)
+++ 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/info/ResourceGroup.java
 Wed Oct 19 14:28:07 2016
@@ -20,7 +20,7 @@ package org.apache.sling.installer.api.i
 
 import java.util.List;
 
-import aQute.bnd.annotation.ProviderType;
+import org.osgi.annotation.versioning.ProviderType;
 
 /**
  * This is a group of resources all pointing to the same artifact,

Modified: 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/info/package-info.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/info/package-info.java?rev=1765608&r1=1765607&r2=1765608&view=diff
==============================================================================
--- 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/info/package-info.java
 (original)
+++ 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/info/package-info.java
 Wed Oct 19 14:28:07 2016
@@ -17,8 +17,5 @@
  * under the License.
  */
 
-@Version("1.0.2")
[email protected]("1.0.3")
 package org.apache.sling.installer.api.info;
-
-import aQute.bnd.annotation.Version;
-

Modified: 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/jmx/InstallerMBean.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/jmx/InstallerMBean.java?rev=1765608&r1=1765607&r2=1765608&view=diff
==============================================================================
--- 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/jmx/InstallerMBean.java
 (original)
+++ 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/jmx/InstallerMBean.java
 Wed Oct 19 14:28:07 2016
@@ -19,7 +19,7 @@
 
 package org.apache.sling.installer.api.jmx;
 
-import aQute.bnd.annotation.ProviderType;
+import org.osgi.annotation.versioning.ProviderType;
 
 @ProviderType
 public interface InstallerMBean {

Modified: 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/jmx/package-info.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/jmx/package-info.java?rev=1765608&r1=1765607&r2=1765608&view=diff
==============================================================================
--- 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/jmx/package-info.java
 (original)
+++ 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/jmx/package-info.java
 Wed Oct 19 14:28:07 2016
@@ -17,8 +17,5 @@
  * under the License.
  */
 
-@Version("1.0.2")
[email protected]("1.0.3")
 package org.apache.sling.installer.api.jmx;
-
-import aQute.bnd.annotation.Version;
-

Modified: 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/package-info.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/package-info.java?rev=1765608&r1=1765607&r2=1765608&view=diff
==============================================================================
--- 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/package-info.java
 (original)
+++ 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/package-info.java
 Wed Oct 19 14:28:07 2016
@@ -17,8 +17,7 @@
  * under the License.
  */
 
-@Version("3.2.0")
[email protected]("3.2.1")
 package org.apache.sling.installer.api;
 
-import aQute.bnd.annotation.Version;
 

Modified: 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/tasks/InstallTaskFactory.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/tasks/InstallTaskFactory.java?rev=1765608&r1=1765607&r2=1765608&view=diff
==============================================================================
--- 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/tasks/InstallTaskFactory.java
 (original)
+++ 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/tasks/InstallTaskFactory.java
 Wed Oct 19 14:28:07 2016
@@ -18,7 +18,7 @@
  */
 package org.apache.sling.installer.api.tasks;
 
-import aQute.bnd.annotation.ConsumerType;
+import org.osgi.annotation.versioning.ConsumerType;
 
 /**
  * The install task factory creates a task for a given

Modified: 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/tasks/InstallationContext.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/tasks/InstallationContext.java?rev=1765608&r1=1765607&r2=1765608&view=diff
==============================================================================
--- 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/tasks/InstallationContext.java
 (original)
+++ 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/tasks/InstallationContext.java
 Wed Oct 19 14:28:07 2016
@@ -18,7 +18,7 @@
  */
 package org.apache.sling.installer.api.tasks;
 
-import aQute.bnd.annotation.ProviderType;
+import org.osgi.annotation.versioning.ProviderType;
 
 /**
  * Context for the installation tasks.

Modified: 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/tasks/RegisteredResource.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/tasks/RegisteredResource.java?rev=1765608&r1=1765607&r2=1765608&view=diff
==============================================================================
--- 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/tasks/RegisteredResource.java
 (original)
+++ 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/tasks/RegisteredResource.java
 Wed Oct 19 14:28:07 2016
@@ -22,7 +22,7 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.util.Dictionary;
 
-import aQute.bnd.annotation.ProviderType;
+import org.osgi.annotation.versioning.ProviderType;
 
 /**
  * A resource that's been registered in the OSGi controller.

Modified: 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/tasks/ResourceTransformer.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/tasks/ResourceTransformer.java?rev=1765608&r1=1765607&r2=1765608&view=diff
==============================================================================
--- 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/tasks/ResourceTransformer.java
 (original)
+++ 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/tasks/ResourceTransformer.java
 Wed Oct 19 14:28:07 2016
@@ -18,7 +18,7 @@
  */
 package org.apache.sling.installer.api.tasks;
 
-import aQute.bnd.annotation.ConsumerType;
+import org.osgi.annotation.versioning.ConsumerType;
 
 /**
  * A resource transformer transform a registered resource

Modified: 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/tasks/RetryHandler.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/tasks/RetryHandler.java?rev=1765608&r1=1765607&r2=1765608&view=diff
==============================================================================
--- 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/tasks/RetryHandler.java
 (original)
+++ 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/tasks/RetryHandler.java
 Wed Oct 19 14:28:07 2016
@@ -18,7 +18,7 @@
  */
 package org.apache.sling.installer.api.tasks;
 
-import aQute.bnd.annotation.ProviderType;
+import org.osgi.annotation.versioning.ProviderType;
 
 /**
  * The retry handler should be informed by external services

Modified: 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/tasks/TaskResource.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/tasks/TaskResource.java?rev=1765608&r1=1765607&r2=1765608&view=diff
==============================================================================
--- 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/tasks/TaskResource.java
 (original)
+++ 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/tasks/TaskResource.java
 Wed Oct 19 14:28:07 2016
@@ -18,10 +18,9 @@
  */
 package org.apache.sling.installer.api.tasks;
 
+import org.osgi.annotation.versioning.ProviderType;
 import org.osgi.framework.Version;
 
-import aQute.bnd.annotation.ProviderType;
-
 
 /**
  * A task resource is a registered resource which has been

Modified: 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/tasks/TaskResourceGroup.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/tasks/TaskResourceGroup.java?rev=1765608&r1=1765607&r2=1765608&view=diff
==============================================================================
--- 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/tasks/TaskResourceGroup.java
 (original)
+++ 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/tasks/TaskResourceGroup.java
 Wed Oct 19 14:28:07 2016
@@ -18,7 +18,7 @@
  */
 package org.apache.sling.installer.api.tasks;
 
-import aQute.bnd.annotation.ProviderType;
+import org.osgi.annotation.versioning.ProviderType;
 
 /**
  * This is a group of resources all pointing to the same artifact,

Modified: 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/tasks/package-info.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/tasks/package-info.java?rev=1765608&r1=1765607&r2=1765608&view=diff
==============================================================================
--- 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/tasks/package-info.java
 (original)
+++ 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/api/tasks/package-info.java
 Wed Oct 19 14:28:07 2016
@@ -17,8 +17,5 @@
  * under the License.
  */
 
-@Version("1.3.4")
[email protected]("1.3.5")
 package org.apache.sling.installer.api.tasks;
-
-import aQute.bnd.annotation.Version;
-

Modified: 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/AbstractInstallTask.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/AbstractInstallTask.java?rev=1765608&r1=1765607&r2=1765608&view=diff
==============================================================================
--- 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/AbstractInstallTask.java
 (original)
+++ 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/AbstractInstallTask.java
 Wed Oct 19 14:28:07 2016
@@ -23,7 +23,6 @@ import org.apache.sling.installer.api.ta
 import org.apache.sling.installer.core.impl.tasks.TaskSupport;
 import org.apache.sling.installer.core.impl.util.BundleRefresher;
 import org.osgi.framework.BundleContext;
-import org.osgi.service.startlevel.StartLevel;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -62,10 +61,6 @@ public abstract class AbstractInstallTas
         return this.support.getBundleRefresher();
     }
 
-    protected StartLevel getStartLevel() {
-        return this.support.getStartLevel();
-    }
-
     protected TaskSupport getTaskSupport() {
         return this.support;
     }

Added: 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/BundleBlackList.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/BundleBlackList.java?rev=1765608&view=auto
==============================================================================
--- 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/BundleBlackList.java
 (added)
+++ 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/BundleBlackList.java
 Wed Oct 19 14:28:07 2016
@@ -0,0 +1,104 @@
+/*
+ * 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.
+ */
+package org.apache.sling.installer.core.impl;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.Version;
+import org.osgi.framework.VersionRange;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class BundleBlackList {
+
+    private final Logger logger = LoggerFactory.getLogger(this.getClass());
+
+    public BundleBlackList(BundleContext bc) {
+        BufferedReader r = null;
+        try {
+            String launchpadFolder = bc.getProperty("sling.launchpad");
+
+            String filepath = launchpadFolder + File.separator + 
BOOTSTRAP_FILENAME;
+            logger.debug("Parsing {} for uninstall directives to be used as 
blacklist", filepath);
+
+            r = new BufferedReader(new FileReader(filepath));
+            getBlackListFromBootstrapFile(r);
+        } catch (IOException ignore) {
+            // ignore
+        } finally {
+            if (r != null) {
+                try {
+                    r.close();
+                } catch (IOException ignore) {
+                    // ignore
+                }
+            }
+        }
+    }
+
+    /**
+     * The name of the bootstrap commands file
+     */
+    public static final String BOOTSTRAP_FILENAME = "sling_bootstrap.txt";
+
+    /**
+     * Prefix for uninstalls in command files
+     */
+    private static String UNINSTALL_PREFIX = "uninstall ";
+
+    private Map<String, VersionRange> blacklistMap = new HashMap<String, 
VersionRange>();
+
+    private void getBlackListFromBootstrapFile(BufferedReader r) throws 
IOException {
+            String line = null;
+            while ((line = r.readLine()) != null) {
+                line = line.trim();
+                String bundleSymbolicName = null;
+                VersionRange versionRange = null;
+                if (line.length() > 0 && line.startsWith(UNINSTALL_PREFIX)) {
+                    final String[] s = line.split(" ");
+                    extractBlackList(bundleSymbolicName, versionRange, s, 1, 
2);
+                }
+            }
+
+    }
+
+    public boolean isBlacklisted(String symbolicName, Version version) {
+        if (blacklistMap.containsKey(symbolicName)) {
+            VersionRange range = blacklistMap.get(symbolicName);
+            return (range == null) || range.includes(version);
+        }
+        return false;
+    }
+
+    private void extractBlackList(String bundleSymbolicName, VersionRange 
versionRange, final String[] s, int posSymbolicName, int posVersionRange) {
+        if (s.length > posSymbolicName) {
+            bundleSymbolicName = s[posSymbolicName].trim();
+        }
+        if (s.length > posVersionRange) {
+            versionRange = new VersionRange(s[posVersionRange].trim());
+        }
+        blacklistMap.put(bundleSymbolicName, versionRange);
+    }
+}

Propchange: 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/BundleBlackList.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/BundleBlackList.java
------------------------------------------------------------------------------
    svn:keywords = author date id revision rev url

Modified: 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/EntityResourceList.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/EntityResourceList.java?rev=1765608&r1=1765607&r2=1765608&view=diff
==============================================================================
--- 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/EntityResourceList.java
 (original)
+++ 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/EntityResourceList.java
 Wed Oct 19 14:28:07 2016
@@ -25,6 +25,7 @@ import java.util.Collection;
 import java.util.Collections;
 import java.util.HashSet;
 import java.util.Iterator;
+import java.util.LinkedList;
 import java.util.List;
 import java.util.Set;
 
@@ -158,6 +159,20 @@ public class EntityResourceList implemen
         }
         return null;
     }
+
+    /**
+     * Return an iterator containing all active resources in the group
+     */
+    public Iterator<TaskResource> getActiveResourceIterator(){
+        synchronized ( lock ) {
+            if ( this.getActiveResource() != null && this.resources.size() > 1 
) {
+                final List<TaskResource> taskResourceList = new 
LinkedList<TaskResource>(this.resources);
+                return taskResourceList.iterator();
+            }
+        }
+        return null;
+    }
+
     /**
      * Return the first resource or null
      */

Modified: 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/InstallerMBeanImpl.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/InstallerMBeanImpl.java?rev=1765608&r1=1765607&r2=1765608&view=diff
==============================================================================
--- 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/InstallerMBeanImpl.java
 (original)
+++ 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/InstallerMBeanImpl.java
 Wed Oct 19 14:28:07 2016
@@ -35,6 +35,7 @@ public class InstallerMBeanImpl implemen
 
     //~---------------------------------------< InstallationListener >
 
+    @Override
     public void onEvent(InstallationEvent event) {
         switch (event.getType()) {
             case STARTED:
@@ -43,24 +44,31 @@ public class InstallerMBeanImpl implemen
             case SUSPENDED:
                 active = false;
                 break;
+            default:
+                // nothing to do
+                break;
         }
         lastEventTime = System.currentTimeMillis();
     }
 
     //~----------------------------------------< InstallerMBean >
 
+    @Override
     public int getActiveResourceCount() {
         return infoProvider.getInstallationState().getActiveResources().size();
     }
 
+    @Override
     public int getInstalledResourceCount() {
         return 
infoProvider.getInstallationState().getInstalledResources().size();
     }
 
+    @Override
     public boolean isActive() {
         return active;
     }
 
+    @Override
     public long getSuspendedSince() {
         return active ? -1 : lastEventTime;
     }

Modified: 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/tasks/BundleInstallTask.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/tasks/BundleInstallTask.java?rev=1765608&r1=1765607&r2=1765608&view=diff
==============================================================================
--- 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/tasks/BundleInstallTask.java
 (original)
+++ 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/tasks/BundleInstallTask.java
 Wed Oct 19 14:28:07 2016
@@ -22,7 +22,7 @@ import org.apache.sling.installer.api.ta
 import org.apache.sling.installer.api.tasks.ResourceState;
 import org.apache.sling.installer.api.tasks.TaskResourceGroup;
 import org.osgi.framework.Bundle;
-import org.osgi.service.startlevel.StartLevel;
+import org.osgi.framework.startlevel.BundleStartLevel;
 
 /**
  * Install a bundle supplied as a RegisteredResource.
@@ -48,15 +48,9 @@ public class BundleInstallTask extends A
             ctx.log("Installed bundle {} from resource {}", b, getResource());
             // optionally set the start level
             if ( startLevel > 0 ) {
-                // get the start level service (if possible) so we can set the 
initial start level
-                final StartLevel startLevelService = this.getStartLevel();
-                if (startLevelService != null) {
-                    startLevelService.setBundleStartLevel(b, startLevel);
-                    ctx.log("Set start level for bundle {} to {}", b, 
startLevel);
-                } else {
-                    this.getLogger().info("Ignoring start level {} for bundle 
{} - start level service not available.",
-                            startLevel, b);
-                }
+                final BundleStartLevel startLevelService = 
b.adapt(BundleStartLevel.class);
+                startLevelService.setStartLevel(startLevel);
+                ctx.log("Set start level for bundle {} to {}", b, startLevel);
             }
 
             // fragment?

Modified: 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/tasks/BundleTaskCreator.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/tasks/BundleTaskCreator.java?rev=1765608&r1=1765607&r2=1765608&view=diff
==============================================================================
--- 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/tasks/BundleTaskCreator.java
 (original)
+++ 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/tasks/BundleTaskCreator.java
 Wed Oct 19 14:28:07 2016
@@ -18,6 +18,8 @@
  */
 package org.apache.sling.installer.core.impl.tasks;
 
+import java.util.Iterator;
+
 import org.apache.sling.installer.api.InstallableResource;
 import org.apache.sling.installer.api.ResourceChangeListener;
 import org.apache.sling.installer.api.tasks.ChangeStateTask;
@@ -27,8 +29,11 @@ import org.apache.sling.installer.api.ta
 import org.apache.sling.installer.api.tasks.RetryHandler;
 import org.apache.sling.installer.api.tasks.TaskResource;
 import org.apache.sling.installer.api.tasks.TaskResourceGroup;
+import org.apache.sling.installer.core.impl.BundleBlackList;
+import org.apache.sling.installer.core.impl.EntityResourceList;
 import org.apache.sling.installer.core.impl.InternalService;
 import org.apache.sling.installer.core.impl.PersistentResourceList;
+import org.apache.sling.installer.core.impl.RegisteredResourceImpl;
 import org.apache.sling.installer.core.impl.Util;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.BundleEvent;
@@ -63,9 +68,12 @@ public class BundleTaskCreator
     /** The retry handler. */
     private RetryHandler retryHandler;
 
+    private BundleBlackList bundleBlacklist;
+
     /**
      * @see 
org.apache.sling.installer.core.impl.InternalService#init(org.osgi.framework.BundleContext,
 org.apache.sling.installer.api.ResourceChangeListener, RetryHandler)
      */
+    @Override
     public void init(final BundleContext bc, final ResourceChangeListener 
listener, final RetryHandler retryHandler) {
         this.bundleContext = bc;
         this.retryHandler = retryHandler;
@@ -74,18 +82,19 @@ public class BundleTaskCreator
         this.bundleContext.addFrameworkListener(this);
 
         this.taskSupport = new TaskSupport(bc);
+        this.bundleBlacklist = new BundleBlackList(bc);
     }
 
     /**
      * @see org.apache.sling.installer.core.impl.InternalService#deactivate()
      */
+    @Override
     public void deactivate() {
         if ( this.bundleContext != null ) {
             this.bundleContext.removeBundleListener(this);
             this.bundleContext.removeFrameworkListener(this);
         }
         if ( this.taskSupport != null ) {
-            this.taskSupport.deactivate();
             this.taskSupport = null;
         }
     }
@@ -93,6 +102,7 @@ public class BundleTaskCreator
     /**
      * @see 
org.osgi.framework.FrameworkListener#frameworkEvent(org.osgi.framework.FrameworkEvent)
      */
+    @Override
     public void frameworkEvent(final FrameworkEvent event) {
         if ( event.getType() == FrameworkEvent.PACKAGES_REFRESHED ) {
             logger.debug("Received FrameworkEvent triggering a retry of the 
installer: {}", event);
@@ -103,6 +113,7 @@ public class BundleTaskCreator
     /**
      * @see 
org.osgi.framework.BundleListener#bundleChanged(org.osgi.framework.BundleEvent)
      */
+    @Override
     public void bundleChanged(final BundleEvent event) {
         final int t = event.getType();
         if (t == BundleEvent.INSTALLED || t == BundleEvent.RESOLVED || t == 
BundleEvent.STARTED || t == BundleEvent.UPDATED) {
@@ -114,6 +125,7 @@ public class BundleTaskCreator
     /**
      * @see 
org.apache.sling.installer.core.impl.InternalService#getDescription()
      */
+    @Override
     public String getDescription() {
         return "Apache Sling Bundle Install Task Factory";
     }
@@ -123,7 +135,8 @@ public class BundleTaskCreator
      *
         * @see 
org.apache.sling.installer.api.tasks.InstallTaskFactory#createTask(org.apache.sling.installer.api.tasks.TaskResourceGroup)
         */
-       public InstallTask createTask(final TaskResourceGroup resourceList) {
+       @Override
+    public InstallTask createTask(final TaskResourceGroup resourceList) {
            // quick check of the resource type.
            final TaskResource toActivate = resourceList.getActiveResource();
            if ( 
toActivate.getType().equals(PersistentResourceList.RESTART_ACTIVE_BUNDLES_TYPE) 
) {
@@ -160,7 +173,20 @@ public class BundleTaskCreator
                    if ( info != null ) {
                    // if this is an uninstall, check if we have to install an 
older version
                    // in this case we should do an update instead of 
uninstall/install (!)
-                   final TaskResource second = 
resourceList.getNextActiveResource();
+                Iterator<TaskResource> candidatesIt = 
((EntityResourceList)resourceList).getActiveResourceIterator();
+                TaskResource second = null;
+                while (candidatesIt != null && second == null && 
candidatesIt.hasNext()) {
+                    TaskResource candidate = candidatesIt.next();
+                    boolean sameVersion = 
toActivate.getVersion().equals(candidate.getVersion());
+                    if (!sameVersion) {
+                        if (bundleBlacklist.isBlacklisted(symbolicName, 
candidate.getVersion())) {
+                            // blaklisted candidates should be uninstalled to 
no longer be taken into account anymore
+                            
((RegisteredResourceImpl)candidate).setState(ResourceState.UNINSTALL);
+                        } else {
+                            second = candidate;
+                        }
+                    }
+                }
                    if ( second != null &&
                        ( second.getState() == ResourceState.IGNORED || 
second.getState() == ResourceState.INSTALLED || second.getState() == 
ResourceState.INSTALL ) ) {
                     second.setAttribute(FORCE_INSTALL_VERSION, 
info.version.toString());
@@ -195,8 +221,14 @@ public class BundleTaskCreator
                                     new String[] 
{InstallTask.ASYNC_ATTR_NAME});
                 }
                    } else {
-                   // for install and update, we want the bundle with the 
highest version
-               final BundleInfo info = this.getBundleInfo(symbolicName, null);
+                final Version newVersion = new Version((String) 
toActivate.getAttribute(Constants.BUNDLE_VERSION));
+                if (bundleBlacklist.isBlacklisted(symbolicName, newVersion)) {
+                    result = new ChangeStateTask(resourceList, 
ResourceState.IGNORED);
+                } else {
+
+                    // for install and update, we want the bundle with the
+                    // highest version
+                    final BundleInfo info = this.getBundleInfo(symbolicName, 
null);
 
                    // check if we should start the bundle as we installed it 
in the previous run
                    if (info == null) {
@@ -207,7 +239,6 @@ public class BundleTaskCreator
                        } else {
                    boolean doUpdate = false;
 
-                   final Version newVersion = new 
Version((String)toActivate.getAttribute(Constants.BUNDLE_VERSION));
                            final int compare = 
info.version.compareTo(newVersion);
                     if (compare < 0) {
                         // installed version is lower -> update
@@ -243,6 +274,7 @@ public class BundleTaskCreator
                     } else {
                         logger.debug("Nothing to install for {}, same version 
{} already installed.", toActivate, newVersion);
                         result = new ChangeStateTask(resourceList, 
ResourceState.IGNORED);
+                        }
                     }
                        }
                    }

Modified: 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/tasks/BundleUpdateTask.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/tasks/BundleUpdateTask.java?rev=1765608&r1=1765607&r2=1765608&view=diff
==============================================================================
--- 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/tasks/BundleUpdateTask.java
 (original)
+++ 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/tasks/BundleUpdateTask.java
 Wed Oct 19 14:28:07 2016
@@ -24,7 +24,7 @@ import org.apache.sling.installer.api.ta
 import org.osgi.framework.Bundle;
 import org.osgi.framework.Constants;
 import org.osgi.framework.Version;
-import org.osgi.service.startlevel.StartLevel;
+import org.osgi.framework.startlevel.BundleStartLevel;
 
 /** Update a bundle from a RegisteredResource. Creates
  *  a bundleStartTask to restart the bundle if it was
@@ -49,8 +49,8 @@ public class BundleUpdateTask extends Ab
         if ( BundleUtil.isBundleActive(b) ) {
             return true;
         }
-        final StartLevel startLevelService = this.getStartLevel();
-        return startLevelService.isBundlePersistentlyStarted(b);
+        final BundleStartLevel startLevelService = 
b.adapt(BundleStartLevel.class);
+        return startLevelService.isPersistentlyStarted();
     }
 
     /**
@@ -70,7 +70,7 @@ public class BundleUpdateTask extends Ab
 
         // Do not update if same version, unless snapshot
         boolean snapshot = false;
-       final Version currentVersion = new 
Version((String)b.getHeaders().get(Constants.BUNDLE_VERSION));
+       final Version currentVersion = new 
Version(b.getHeaders().get(Constants.BUNDLE_VERSION));
        snapshot = BundleInfo.isSnapshot(newVersion);
        if (currentVersion.equals(newVersion) && !snapshot) {
            // TODO : Isn't this already checked in the task creator?
@@ -95,14 +95,12 @@ public class BundleUpdateTask extends Ab
 
             // start level handling - after update to avoid starting the bundle
             // just before the update
-            final StartLevel startLevelService = this.getStartLevel();
-            if ( startLevelService != null ) {
-                final int newStartLevel = this.getBundleStartLevel();
-                final int oldStartLevel = 
startLevelService.getBundleStartLevel(b);
-                if ( newStartLevel != oldStartLevel && newStartLevel != 0 ) {
-                    startLevelService.setBundleStartLevel(b, newStartLevel);
-                    ctx.log("Set start level for bundle {} to {}", b, 
newStartLevel);
-                }
+            final BundleStartLevel startLevelService = 
b.adapt(BundleStartLevel.class);
+            final int newStartLevel = this.getBundleStartLevel();
+            final int oldStartLevel = startLevelService.getStartLevel();
+            if ( newStartLevel != oldStartLevel && newStartLevel != 0 ) {
+                startLevelService.setStartLevel(newStartLevel);
+                ctx.log("Set start level for bundle {} to {}", b, 
newStartLevel);
             }
 
             if (reactivate) {

Modified: 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/tasks/TaskSupport.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/tasks/TaskSupport.java?rev=1765608&r1=1765607&r2=1765608&view=diff
==============================================================================
--- 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/tasks/TaskSupport.java
 (original)
+++ 
sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/tasks/TaskSupport.java
 Wed Oct 19 14:28:07 2016
@@ -19,84 +19,29 @@
 package org.apache.sling.installer.core.impl.tasks;
 
 import org.apache.sling.installer.core.impl.util.BundleRefresher;
-import org.apache.sling.installer.core.impl.util.PABundleRefresher;
 import org.apache.sling.installer.core.impl.util.WABundleRefresher;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.Constants;
 import org.osgi.framework.wiring.FrameworkWiring;
-import org.osgi.service.packageadmin.PackageAdmin;
-import org.osgi.service.startlevel.StartLevel;
-import org.osgi.util.tracker.ServiceTracker;
 
 /**
  * Support class for the tasks.
  */
 public class TaskSupport {
 
-    /** Interface of the package admin */
-    private static String PACKAGE_ADMIN_NAME = PackageAdmin.class.getName();
-
-    /** Interface of the start level */
-    private static String START_LEVEL_NAME = StartLevel.class.getName();
-
-    /** Tracker for the package admin. */
-    private final ServiceTracker packageAdminTracker;
-
-    /** Tracker for the start level service. */
-    private final ServiceTracker startLevelTracker;
-
     /** The bundle context. */
     private final BundleContext bundleContext;
 
-    /** Checked for wire admin? */
-    private Boolean checkedWireAdmin;
-
     public TaskSupport(final BundleContext bc) {
         this.bundleContext = bc;
-
-        // create and start tracker
-        this.packageAdminTracker = new ServiceTracker(bc, PACKAGE_ADMIN_NAME, 
null);
-        this.packageAdminTracker.open();
-        this.startLevelTracker = new ServiceTracker(bc, START_LEVEL_NAME, 
null);
-        this.startLevelTracker.open();
-    }
-
-    /**
-     * Deactivate this helper.
-     */
-    public void deactivate() {
-        if ( this.packageAdminTracker != null ) {
-            this.packageAdminTracker.close();
-        }
-        if ( this.startLevelTracker != null ) {
-            this.startLevelTracker.close();
-        }
     }
 
     public BundleContext getBundleContext() {
         return this.bundleContext;
     }
 
-    public StartLevel getStartLevel() {
-        return (StartLevel) this.startLevelTracker.getService();
-    }
-
     public BundleRefresher getBundleRefresher() {
-        if ( checkedWireAdmin == null ) {
-            try {
-                
this.bundleContext.getBundle(Constants.SYSTEM_BUNDLE_LOCATION).adapt(FrameworkWiring.class);
-                checkedWireAdmin = true;
-            } catch (final Throwable t) {
-                checkedWireAdmin = false;
-            }
-        }
-        if ( checkedWireAdmin.booleanValue() ) {
-            return new 
WABundleRefresher(this.bundleContext.getBundle(Constants.SYSTEM_BUNDLE_LOCATION).adapt(FrameworkWiring.class),
-                    this.bundleContext);
-        } else {
-            return new PABundleRefresher((PackageAdmin) 
this.packageAdminTracker.getService(),
-                    this.bundleContext);
-        }
+        return new 
WABundleRefresher(this.bundleContext.getBundle(Constants.SYSTEM_BUNDLE_LOCATION).adapt(FrameworkWiring.class),
+                this.bundleContext);
     }
-
 }

Modified: 
sling/trunk/installer/core/src/test/java/org/apache/sling/installer/core/impl/MockBundleContext.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/installer/core/src/test/java/org/apache/sling/installer/core/impl/MockBundleContext.java?rev=1765608&r1=1765607&r2=1765608&view=diff
==============================================================================
--- 
sling/trunk/installer/core/src/test/java/org/apache/sling/installer/core/impl/MockBundleContext.java
 (original)
+++ 
sling/trunk/installer/core/src/test/java/org/apache/sling/installer/core/impl/MockBundleContext.java
 Wed Oct 19 14:28:07 2016
@@ -34,7 +34,9 @@ import org.osgi.framework.BundleListener
 import org.osgi.framework.Filter;
 import org.osgi.framework.FrameworkListener;
 import org.osgi.framework.InvalidSyntaxException;
+import org.osgi.framework.ServiceFactory;
 import org.osgi.framework.ServiceListener;
+import org.osgi.framework.ServiceObjects;
 import org.osgi.framework.ServiceReference;
 import org.osgi.framework.ServiceRegistration;
 import org.osgi.framework.Version;
@@ -318,6 +320,18 @@ public class MockBundleContext implement
                 // TODO Auto-generated method stub
                 return null;
             }
+
+            @Override
+            public int compareTo(Bundle o) {
+                // TODO Auto-generated method stub
+                return 0;
+            }
+
+            @Override
+            public File getDataFile(String filename) {
+                // TODO Auto-generated method stub
+                return null;
+            }
         };
     }
 
@@ -383,4 +397,17 @@ public class MockBundleContext implement
         // TODO Auto-generated method stub
 
     }
+
+    @Override
+    public <S> ServiceRegistration<S> registerService(Class<S> clazz, 
ServiceFactory<S> factory,
+            Dictionary<String, ?> properties) {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    @Override
+    public <S> ServiceObjects<S> getServiceObjects(ServiceReference<S> 
reference) {
+        // TODO Auto-generated method stub
+        return null;
+    }
 }
\ No newline at end of file

Modified: sling/trunk/installer/it/pom.xml
URL: 
http://svn.apache.org/viewvc/sling/trunk/installer/it/pom.xml?rev=1765608&r1=1765607&r2=1765608&view=diff
==============================================================================
--- sling/trunk/installer/it/pom.xml (original)
+++ sling/trunk/installer/it/pom.xml Wed Oct 19 14:28:07 2016
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.apache.sling</groupId>
         <artifactId>sling</artifactId>
-        <version>26</version>
+        <version>29</version>
         <relativePath/>
     </parent>
 
@@ -54,6 +54,17 @@
     <build>
         <plugins>
             <plugin>
+                <groupId>org.apache.rat</groupId>
+                <artifactId>apache-rat-plugin</artifactId>
+                <configuration>
+                    <excludes>
+                        
<exclude>src/test/resources/blacklisttest/sling_bootstrap.txt</exclude>
+                        
<exclude>src/test/resources/blacklisttestempty/sling_bootstrap.txt</exclude>
+                        
<exclude>src/test/resources/sling_bootstrap.txt</exclude>
+                    </excludes>
+                </configuration>
+             </plugin>
+             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-surefire-plugin</artifactId>
                 <configuration>
@@ -445,18 +456,18 @@
             <scope>provided</scope>
         </dependency>          
         <dependency>
+             <groupId>org.osgi</groupId>
+             <artifactId>org.osgi.service.cm</artifactId>
+             <version>1.5.0</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
             <groupId>org.apache.sling</groupId>
             <artifactId>org.apache.sling.commons.log</artifactId>
             <version>2.1.2</version>
             <scope>provided</scope>
         </dependency>          
         <dependency>
-            <groupId>org.osgi</groupId>
-            <artifactId>org.osgi.compendium</artifactId>
-            <version>4.2.0</version>
-            <scope>provided</scope>
-        </dependency>
-        <dependency>
             <groupId>org.ops4j.pax.exam</groupId>
             <artifactId>pax-exam-container-native</artifactId>
             <version>${exam.version}</version>
@@ -489,7 +500,7 @@
         <dependency>
             <groupId>org.apache.felix</groupId>
             <artifactId>org.apache.felix.framework</artifactId>
-            <version>4.4.1</version>
+            <version>5.6.0</version>
             <scope>test</scope>
         </dependency>
         <dependency>

Added: 
sling/trunk/installer/it/src/test/java/org/apache/sling/installer/it/BundleInstallBlackListTest.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/installer/it/src/test/java/org/apache/sling/installer/it/BundleInstallBlackListTest.java?rev=1765608&view=auto
==============================================================================
--- 
sling/trunk/installer/it/src/test/java/org/apache/sling/installer/it/BundleInstallBlackListTest.java
 (added)
+++ 
sling/trunk/installer/it/src/test/java/org/apache/sling/installer/it/BundleInstallBlackListTest.java
 Wed Oct 19 14:28:07 2016
@@ -0,0 +1,243 @@
+/*
+ * 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.
+ */
+package org.apache.sling.installer.it;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import org.apache.sling.installer.api.OsgiInstaller;
+import org.apache.sling.installer.core.impl.tasks.BundleInfo;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.ops4j.pax.exam.Option;
+import org.ops4j.pax.exam.junit.PaxExam;
+import org.ops4j.pax.exam.options.FrameworkPropertyOption;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleException;
+import org.osgi.framework.ServiceRegistration;
+import org.osgi.framework.Version;
+
+@RunWith(PaxExam.class)
+public class BundleInstallBlackListTest extends OsgiInstallerTestBase {
+    
+    final String symbolicName = "osgi-installer-testbundle";
+
+    @org.ops4j.pax.exam.Configuration
+    public Option[] config() {
+        return defaultConfiguration();
+    }
+
+    @Before
+    public void setUp() throws BundleException {
+        System.setProperty("sling.launchpad",new 
File("src/test/resources/blacklisttest").getAbsolutePath());
+        updateInstallerBundle();
+    }
+
+    @After
+    public void tearDown() {
+        super.tearDown();
+        System.clearProperty("sling.launchpad");
+    }
+
+    @Test
+    public void testBlacklistBundleVersion() throws Exception {
+
+        assertNull("Test bundle must not be present before test", 
findBundle(symbolicName));
+
+        // Install first test bundle and check version
+        long bundleId = 0;
+        {
+            assertNull("Test bundle must be absent before installing", 
findBundle(symbolicName));
+            final Object listener = this.startObservingBundleEvents();
+            installer.updateResources(URL_SCHEME, getInstallableResource(
+                getTestBundle(BUNDLE_BASE_NAME + "-testbundle-1.0.jar")), 
null);
+            this.waitForBundleEvents(symbolicName + " must be installed", 
listener,
+                new BundleEvent(symbolicName, "1.0", 
org.osgi.framework.BundleEvent.INSTALLED),
+                new BundleEvent(symbolicName, "1.0", 
org.osgi.framework.BundleEvent.STARTED));
+            final Bundle b = assertBundle("After installing", symbolicName, 
"1.0", Bundle.ACTIVE);
+            bundleId = b.getBundleId();
+        }
+
+        // Try to install blacklisted version of bundle
+        {
+            final Object listener = this.startObservingBundleEvents();
+            installer.updateResources(URL_SCHEME, getInstallableResource(
+                getTestBundle(BUNDLE_BASE_NAME + "-testbundle-1.1.jar"), 
"digestA"), null);
+            sleep(150);
+            this.assertNoBundleEvents("Bundle install of blacklisted version 
should not cause any change.", listener,
+                symbolicName);
+            final Bundle b = assertBundle("After updating to 1.1", 
symbolicName, "1.0", Bundle.ACTIVE);
+            assertEquals("Bundle ID must not change after update", bundleId, 
b.getBundleId());
+        }
+
+    }
+
+    @Test
+    public void testUninstallWithBlacklistedVersions() throws Exception {
+        
+        // Reroute launchpad home containing empty blacklist for ramp up
+        System.setProperty("sling.launchpad",new 
File("src/test/resources/blacklisttestempty").getAbsolutePath());
+        updateInstallerBundle();
+
+        assertNull("Test bundle must not be present before test", 
findBundle(symbolicName));
+
+        // Install first test bundle and check version
+        long bundleId = 0;
+        {
+            assertNull("Test bundle must be absent before installing", 
findBundle(symbolicName));
+            final Object listener = this.startObservingBundleEvents();
+            installer.updateResources(URL_SCHEME, getInstallableResource(
+                getTestBundle(BUNDLE_BASE_NAME + "-testbundle-1.1.jar")), 
null);
+            this.waitForBundleEvents(symbolicName + " must be installed", 
listener,
+                new BundleEvent(symbolicName, "1.1", 
org.osgi.framework.BundleEvent.INSTALLED),
+                new BundleEvent(symbolicName, "1.1", 
org.osgi.framework.BundleEvent.STARTED));
+            final Bundle b = assertBundle("After installing", symbolicName, 
"1.1", Bundle.ACTIVE);
+            bundleId = b.getBundleId();
+        }
+
+        // Upgrade to later version, verify
+        {
+            final Object listener = this.startObservingBundleEvents();
+            installer.updateResources(URL_SCHEME, getInstallableResource(
+                getTestBundle(BUNDLE_BASE_NAME + "-testbundle-1.2.jar"), 
"digestA"), null);
+            this.waitForBundleEvents(symbolicName + " must be installed", 
listener,
+                new BundleEvent(symbolicName, "1.1", 
org.osgi.framework.BundleEvent.STOPPED),
+                new BundleEvent(symbolicName, "1.2", 
org.osgi.framework.BundleEvent.STARTED));
+            final Bundle b = assertBundle("After updating to 1.2", 
symbolicName, "1.2", Bundle.ACTIVE);
+            assertEquals("Bundle ID must not change after update", bundleId, 
b.getBundleId());
+        }
+
+        // configure blacklist bundle to ignore older version
+        System.setProperty("sling.launchpad",new 
File("src/test/resources/blacklisttest").getAbsolutePath());
+        updateInstallerBundle();
+        
+        // Try to uninstall current version and verify uninstall instead of
+        // downgrade to blacklisted version
+        {
+            final Object listener = this.startObservingBundleEvents();
+            installer.updateResources(URL_SCHEME, null, 
getNonInstallableResourceUrl(
+                getTestBundle(BUNDLE_BASE_NAME + "-testbundle-1.2.jar")));
+            this.waitForBundleEvents(symbolicName + " must be installed", 
listener,
+                new BundleEvent(symbolicName, "1.2", 
org.osgi.framework.BundleEvent.STOPPED),
+                new BundleEvent(symbolicName, "1.2", 
org.osgi.framework.BundleEvent.UNINSTALLED));
+
+            final Bundle b = findBundle(symbolicName);
+            assertNull("Testbundle must be gone", b);
+        }
+
+    }
+
+    private void updateInstallerBundle() throws BundleException {
+        
bundleContext.getServiceReference(OsgiInstaller.class).getBundle().update();
+        setupInstaller();
+    }
+
+    @Test
+    public void testUninstallWithBlacklistedIntermediateVersion() throws 
Exception {
+
+        // Reroute launchpad home containing empty blacklist for ramp up
+        System.setProperty("sling.launchpad",new 
File("src/test/resources/blacklisttestempty").getAbsolutePath());
+        updateInstallerBundle();
+
+        assertNull("Test bundle must not be present before test",
+            findBundle(symbolicName));
+
+        // Install first test bundle and check version
+        long bundleId = 0;
+        {
+            assertNull("Test bundle must be absent before installing",
+                findBundle(symbolicName));
+            final Object listener = this.startObservingBundleEvents();
+            installer.updateResources(URL_SCHEME, getInstallableResource(
+                getTestBundle(BUNDLE_BASE_NAME + "-testbundle-1.0.jar")), 
null);
+            this.waitForBundleEvents(symbolicName + " must be installed", 
listener,
+                new BundleEvent(symbolicName, "1.0",
+                    org.osgi.framework.BundleEvent.INSTALLED),
+                new BundleEvent(symbolicName, "1.0",
+                    org.osgi.framework.BundleEvent.STARTED));
+            final Bundle b = assertBundle("After installing", symbolicName, 
"1.0",
+                Bundle.ACTIVE);
+            bundleId = b.getBundleId();
+        }
+
+        // Upgrade to later version, verify
+        {
+            final Object listener = this.startObservingBundleEvents();
+            installer.updateResources(URL_SCHEME, getInstallableResource(
+                getTestBundle(BUNDLE_BASE_NAME + "-testbundle-1.1.jar"), 
"digestA"),
+                null);
+            this.waitForBundleEvents(symbolicName + " must be installed", 
listener,
+                new BundleEvent(symbolicName, "1.0",
+                    org.osgi.framework.BundleEvent.STOPPED),
+                new BundleEvent(symbolicName, "1.1",
+                    org.osgi.framework.BundleEvent.STARTED));
+            final Bundle b = assertBundle("After updating to 1.1", 
symbolicName,
+                "1.1", Bundle.ACTIVE);
+            assertEquals("Bundle ID must not change after update", bundleId,
+                b.getBundleId());
+        }
+
+        // upgrade to 3rd version
+        {
+            final Object listener = this.startObservingBundleEvents();
+            installer.updateResources(URL_SCHEME, getInstallableResource(
+                getTestBundle(BUNDLE_BASE_NAME + "-testbundle-1.2.jar"), 
"digestA"),
+                null);
+            this.waitForBundleEvents(symbolicName + " must be installed", 
listener,
+                new BundleEvent(symbolicName, "1.1",
+                    org.osgi.framework.BundleEvent.STOPPED),
+                new BundleEvent(symbolicName, "1.2",
+                    org.osgi.framework.BundleEvent.STARTED));
+            final Bundle b = assertBundle("After updating to 1.2", 
symbolicName,
+                "1.2", Bundle.ACTIVE);
+            assertEquals("Bundle ID must not change after update", bundleId,
+                b.getBundleId());
+        }
+
+        // configure blacklist bundle to ignore 1.1 version
+        // configure blacklist bundle to ignore older version
+        System.setProperty("sling.launchpad",new 
File("src/test/resources/blacklisttest").getAbsolutePath());
+        updateInstallerBundle();
+ 
+        // Try to uninstall current version and verify uninstall instead of
+        // downgrade to blacklisted version
+        {
+            final Object listener = this.startObservingBundleEvents();
+            installer.updateResources(URL_SCHEME, null, 
getNonInstallableResourceUrl(
+                getTestBundle(BUNDLE_BASE_NAME + "-testbundle-1.2.jar")));
+            this.waitForBundleEvents(symbolicName + " must be installed", 
listener,
+                new BundleEvent(symbolicName, "1.2",
+                    org.osgi.framework.BundleEvent.STOPPED),
+                new BundleEvent(symbolicName, "1.0",
+                    org.osgi.framework.BundleEvent.STARTED));
+
+            final Bundle b = assertBundle("After uninstalling 1.2", 
symbolicName,
+                "1.0", Bundle.ACTIVE);
+            assertEquals("Bundle ID must not change after update", bundleId,
+                b.getBundleId());
+        }
+
+    }
+
+}
\ No newline at end of file

Propchange: 
sling/trunk/installer/it/src/test/java/org/apache/sling/installer/it/BundleInstallBlackListTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
sling/trunk/installer/it/src/test/java/org/apache/sling/installer/it/BundleInstallBlackListTest.java
------------------------------------------------------------------------------
    svn:keywords = author date id revision rev url

Modified: 
sling/trunk/installer/it/src/test/java/org/apache/sling/installer/it/OsgiInstallerTestBase.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/installer/it/src/test/java/org/apache/sling/installer/it/OsgiInstallerTestBase.java?rev=1765608&r1=1765607&r2=1765608&view=diff
==============================================================================
--- 
sling/trunk/installer/it/src/test/java/org/apache/sling/installer/it/OsgiInstallerTestBase.java
 (original)
+++ 
sling/trunk/installer/it/src/test/java/org/apache/sling/installer/it/OsgiInstallerTestBase.java
 Wed Oct 19 14:28:07 2016
@@ -171,6 +171,7 @@ public class OsgiInstallerTestBase imple
     /**
      * @see 
org.osgi.framework.FrameworkListener#frameworkEvent(org.osgi.framework.FrameworkEvent)
      */
+    @Override
     public void frameworkEvent(FrameworkEvent event) {
         if (event.getType() == FrameworkEvent.PACKAGES_REFRESHED) {
             packageRefreshEventsCount++;
@@ -503,16 +504,16 @@ public class OsgiInstallerTestBase imple
                 ),
                 systemProperty( 
"org.ops4j.pax.logging.DefaultServiceLog.level" ).value(paxDebugLevel),
                 provision(
-                        mavenBundle("org.apache.sling", 
"org.apache.sling.commons.log", "3.0.0"),
-                        mavenBundle("org.apache.sling", 
"org.apache.sling.commons.logservice", "1.0.2"),
+                        mavenBundle("org.apache.sling", 
"org.apache.sling.commons.log", "4.0.6"),
+                        mavenBundle("org.apache.sling", 
"org.apache.sling.commons.logservice", "1.0.6"),
 
-                        mavenBundle("org.slf4j", "slf4j-api", "1.6.4"),
-                        mavenBundle("org.slf4j", "jcl-over-slf4j", "1.6.4"),
-                        mavenBundle("org.slf4j", "log4j-over-slf4j", "1.6.4"),
-
-                           mavenBundle("org.apache.felix", 
"org.apache.felix.scr", "1.8.2"),
-                           mavenBundle("org.apache.felix", 
"org.apache.felix.configadmin", "1.8.0"),
-                        mavenBundle("org.apache.felix", 
"org.apache.felix.metatype", "1.0.10"),
+                        mavenBundle("org.slf4j", "slf4j-api", "1.7.5"),
+                        mavenBundle("org.slf4j", "jcl-over-slf4j", "1.7.5"),
+                        mavenBundle("org.slf4j", "log4j-over-slf4j", "1.7.5"),
+
+                           mavenBundle("org.apache.felix", 
"org.apache.felix.scr", "2.0.6"),
+                           mavenBundle("org.apache.felix", 
"org.apache.felix.configadmin", "1.8.10"),
+                        mavenBundle("org.apache.felix", 
"org.apache.felix.metatype", "1.1.2"),
                                mavenBundle("org.apache.sling", 
"org.apache.sling.installer.core", POM_VERSION).startLevel(5),
                         mavenBundle("org.apache.sling", 
"org.apache.sling.installer.factory.configuration", 
CONFIG_VERSION).startLevel(5)
                        )
@@ -618,6 +619,7 @@ public class OsgiInstallerTestBase imple
 
         private final List<BundleEvent> events = new ArrayList<BundleEvent>();
 
+        @Override
         public void bundleChanged(org.osgi.framework.BundleEvent event) {
             synchronized ( this ) {
                 events.add(new 
BundleEvent(event.getBundle().getSymbolicName(), 
event.getBundle().getVersion().toString(), event.getType()));

Added: 
sling/trunk/installer/it/src/test/resources/blacklisttest/sling_bootstrap.txt
URL: 
http://svn.apache.org/viewvc/sling/trunk/installer/it/src/test/resources/blacklisttest/sling_bootstrap.txt?rev=1765608&view=auto
==============================================================================
--- 
sling/trunk/installer/it/src/test/resources/blacklisttest/sling_bootstrap.txt 
(added)
+++ 
sling/trunk/installer/it/src/test/resources/blacklisttest/sling_bootstrap.txt 
Wed Oct 19 14:28:07 2016
@@ -0,0 +1 @@
+uninstall osgi-installer-testbundle [1.1,1.2)
\ No newline at end of file

Propchange: 
sling/trunk/installer/it/src/test/resources/blacklisttest/sling_bootstrap.txt
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
sling/trunk/installer/it/src/test/resources/blacklisttest/sling_bootstrap.txt
------------------------------------------------------------------------------
    svn:keywords = Id

Added: 
sling/trunk/installer/it/src/test/resources/blacklisttestempty/sling_bootstrap.txt
URL: 
http://svn.apache.org/viewvc/sling/trunk/installer/it/src/test/resources/blacklisttestempty/sling_bootstrap.txt?rev=1765608&view=auto
==============================================================================
    (empty)

Propchange: 
sling/trunk/installer/it/src/test/resources/blacklisttestempty/sling_bootstrap.txt
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
sling/trunk/installer/it/src/test/resources/blacklisttestempty/sling_bootstrap.txt
------------------------------------------------------------------------------
    svn:keywords = Id

Added: sling/trunk/installer/it/src/test/resources/sling_bootstrap.txt
URL: 
http://svn.apache.org/viewvc/sling/trunk/installer/it/src/test/resources/sling_bootstrap.txt?rev=1765608&view=auto
==============================================================================
--- sling/trunk/installer/it/src/test/resources/sling_bootstrap.txt (added)
+++ sling/trunk/installer/it/src/test/resources/sling_bootstrap.txt Wed Oct 19 
14:28:07 2016
@@ -0,0 +1 @@
+uninstall osgi-installer-testbundle [1.1,1.2)
\ No newline at end of file

Propchange: sling/trunk/installer/it/src/test/resources/sling_bootstrap.txt
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: sling/trunk/installer/it/src/test/resources/sling_bootstrap.txt
------------------------------------------------------------------------------
    svn:keywords = Id


Reply via email to