Fixed bug in swapped callback of AbstractDecorator. Instead of really swapping it re-added the old service instead of the new one.

git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@1328364 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/AbstractDecorator.java b/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/AbstractDecorator.java
index 991fe90..34078bf 100644
--- a/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/AbstractDecorator.java
+++ b/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/AbstractDecorator.java
@@ -221,7 +221,11 @@
     public void swapped(ServiceReference oldRef, Object oldService, ServiceReference newRef, Object newService) {
         synchronized (m_services) {
         	Component service = (Component) m_services.remove(oldRef);
-        	m_services.put(newRef, service);
+            if (service == null) {
+                throw new IllegalStateException("Service should not be null here.");
+            }
+        	Component newComponent = createService(new Object[] { newRef, newService });
+        	m_services.put(newRef, newComponent);
         }
     }