/*
* Copyright 2015 Red Hat, Inc. and/or its affiliates.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
*
* 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.kie.scanner;
import org.drools.compiler.kie.builder.impl.InternalKieScanner;
import org.drools.compiler.kie.builder.impl.KieRepositoryImpl;
import org.kie.api.Service;
import org.kie.api.builder.KieScannerFactoryService;
import org.kie.internal.utils.ClassLoaderResolver;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceRegistration;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Hashtable;
public class Activator implements BundleActivator {
protected static final transient Logger logger = LoggerFactory.getLogger(Activator.class);
private ServiceRegistration scannerReg;
private ServiceRegistration classResolverReg;
@Override
public void start(BundleContext context) throws Exception {
logger.info( "registering kiescanner services" );
KieScannerFactoryService scannerFactoryService = new KieScannerFactoryServiceImpl();
KieRepositoryImpl.setInternalKieScanner( (InternalKieScanner) scannerFactoryService.newKieScanner() );
this.scannerReg = context.registerService( new String[]{ KieScannerFactoryService.class.getName(), Service.class.getName() },
scannerFactoryService,
new Hashtable() );
this.classResolverReg = context.registerService( new String[]{ ClassLoaderResolver.class.getName(), Service.class.getName() },
new MavenClassLoaderResolver(),
new Hashtable() );
logger.info( "kiescanner services registered" );
}
@Override
public void stop(BundleContext context) throws Exception {
this.scannerReg.unregister();
this.classResolverReg.unregister();
}
}