/**
 * Copyright 2010 JBoss Inc
 *
 * Licensed 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.drools.osgi.core;

import java.util.Hashtable;
import java.util.concurrent.Callable;

import org.drools.KnowledgeBaseFactoryService;
import org.drools.Service;
import org.drools.builder.KnowledgeBuilderFactoryService;
import org.drools.impl.KnowledgeBaseFactoryServiceImpl;
import org.drools.io.ResourceFactoryService;
import org.drools.io.impl.ResourceFactoryServiceImpl;
import org.drools.util.ServiceRegistry;
import org.drools.util.ServiceRegistryImpl;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceReference;
import org.osgi.framework.ServiceRegistration;
import org.osgi.util.tracker.ServiceTracker;
import org.osgi.util.tracker.ServiceTrackerCustomizer;

public class Activator
    implements
    BundleActivator {
    private ServiceRegistration resourceReg;
    private ServiceRegistration kbaseReg;

    public void start(BundleContext bc) throws Exception {
        System.out.println( "registering core  services" );
        this.resourceReg = bc.registerService( new String[]{ResourceFactoryService.class.getName(), Service.class.getName()},
                                               new ResourceFactoryServiceImpl(),
                                               new Hashtable() );
        
        this.kbaseReg = bc.registerService( new String[]{KnowledgeBaseFactoryService.class.getName(), Service.class.getName()},
                                            new KnowledgeBaseFactoryServiceImpl(),
                                            new Hashtable() );

        System.out.println( "core services registered" );
    }

    public void stop(BundleContext bc) throws Exception {
        this.kbaseReg.unregister();
        this.resourceReg.unregister();
    }

}

@@ -655,25 +655,26 @@
 va.util.
-Hashtable
+Dictionary
 ;%0D%0Aimpor
@@ -689,23 +689,13 @@
 til.
-concurrent.Call
+Hasht
 able
@@ -779,67 +779,8 @@
 e;%0D%0A
-import org.drools.builder.KnowledgeBuilderFactoryService;%0D%0A
 impo
@@ -951,36 +951,171 @@
 .drools.
-util.ServiceRegistry
+marshalling.MarshallerProvider;%0D%0Aimport org.drools.marshalling.impl.MarshallerProviderImpl;%0D%0Aimport org.drools.osgi.api.Activator.BundleContextInstantiator
 ;%0D%0Aimpor
@@ -1588,16 +1588,72 @@
 aseReg;%0D
+%0A    private ServiceRegistration marshallerProviderReg;%0D
 %0A%0D%0A    p
@@ -2329,24 +2329,250 @@
 ble() );%0D%0A%0D%0A
+        this.marshallerProviderReg = bc.registerService( new String%5B%5D%7BMarshallerProvider.class.getName(), Service.class.getName()%7D,%0D%0A                new MarshallerProviderImpl(),%0D%0A                new Hashtable() );%0D%0A        %0D%0A
         Syst
@@ -2763,20 +2763,74 @@
 ter();%0D%0A
+        this.marshallerProviderReg.unregister();%0D%0A
     %7D%0D%0A
+    
 %0D%0A%7D%0D%0A

make MarshallerProvider available over OSGi