Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * 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.
  */
 
 /*
  * 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.util;
 
 import java.util.Map;
 
This is an internal class, not for public consumption.
 
 public class ServiceRegistryImpl
     implements
     ServiceRegistry {
     private static ServiceRegistry instance = new ServiceRegistryImpl();
 
     protected static final transient Logger logger = LoggerFactory.getLogger(ServiceRegistryImpl.class);
 
     private Map<StringCallable< ? >> registry        = new HashMap<StringCallable< ? >>();
     private Map<StringCallable< ? >> defaultServices = new HashMap<StringCallable< ? >>();
 
     public static synchronized ServiceRegistry getInstance() {
         return .;
     }
 
     public ServiceRegistryImpl() {
         init();
     }
 
     /* (non-Javadoc)
      * @see org.drools.util.internal.ServiceRegistry#registerLocator(java.lang.String, java.util.concurrent.Callable)
      */
     public synchronized void registerLocator(Class clsCallable cal) {
         this..putcls.getName(),
                            cal );
     }
 
     /* (non-Javadoc)
      * @see org.drools.util.internal.ServiceRegistry#unregisterLocator(java.lang.String)
      */
     public synchronized void unregisterLocator(Class cls) {
         this..removecls.getName() );
     }
     
     synchronized void registerInstance(Service serviceMap map) {
         //this.context.getProperties().put( "org.dr, value )
         .info"regInstance : " + map );
         String[] values = ( String[] ) map.get"objectClass" );
 
         for ( String v : values ) {
             .infov );
         }
        // logger.info( "register : " + service );
         this..putservice.getClass().getInterfaces()[0].getName(),
                            new ReturnInstance<Service>( service ) );
         
 
 //        
 //        BundleContext bc = this.context.getBundleContext();
 //        ServiceReference confAdminRef = bc.getServiceReference( ConfigurationAdmin.class.getName() );
 //        ConfigurationAdmin admin = ( ConfigurationAdmin ) bc.getService( confAdminRef );
//        
//        try {
//            Configuration conf = admin.getConfiguration( (String) confAdminRef.getProperty( "service.id" ) );
//            Dictionary properties = conf.getProperties();
//            properties.put( values[0], "true" );
//            conf.update( properties );
//        } catch ( IOException e ) {
//            logger.error("error", e);
//        }
    }
    /* (non-Javadoc)
     * @see org.drools.util.internal.ServiceRegistry#unregisterLocator(java.lang.String)
     */
    synchronized void unregisterInstance(Service serviceMap map) {
        .info"unregister : " + map );
        String name = service.getClass().getInterfaces()[0].getName();
        this..removename );
        this..putname,
                           this..getname ) );
    }
    
//    ConfigurationAdmin confAdmin;
//    synchronized void setConfigurationAdmin(ConfigurationAdmin confAdmin) {
//        this.confAdmin = confAdmin;
//        logger.info( "ConfAdmin : " + this.confAdmin );
//    }
//    
//    synchronized void unsetConfigurationAdmin(ConfigurationAdmin confAdmin) {
//        this.confAdmin = null;
//    }
    
//    private ComponentContext context;
//    void activate(ComponentContext context) {
//        logger.info( "reg comp" + context.getProperties() );
//        this.context = context;
//        
//       
//        
//      BundleContext bc = this.context.getBundleContext();
//      
//      ServiceReference confAdminRef = bc.getServiceReference( ConfigurationAdmin.class.getName() );
//      ConfigurationAdmin admin = ( ConfigurationAdmin ) bc.getService( confAdminRef );
//      logger.info( "conf admin : " + admin );
//        //context.
//    //    log = (LogService) context.locateService("LOG");
//        }
//    void deactivate(ComponentContext context ){
//        
//    }
    public synchronized <T> T get(Class<T> cls) {
        Callable< ? > cal = this..getcls.getName() );
        if ( cal != null ) {
            try {
                return cls.castcal.call() );
            } catch ( Exception e ) {
                throw new IllegalArgumentException"Unable to instantiate service for Class '" + (cls != null ? cls.getName() : null) + "'",
                                                    e );
            }
        } else {
            cal = this..getcls.getName() );
            try {
                return cls.castcal.call() );
            } catch ( Exception e ) {
                throw new IllegalArgumentException"Unable to instantiate service for Class '" + (cls != null ? cls.getName() : null) + "'",
                                                    e );
            }
        }
    }
    private void init() {
                    "org.drools.impl.KnowledgeBuilderFactoryServiceImpl" );
                    "org.drools.impl.KnowledgeBaseFactoryServiceImpl" );
        addDefaultResourceFactoryService.class,
                    "org.drools.impl.ResourceFactoryServiceImpl" );
        
        addDefault(  SystemEventListenerService.class,
                     "org.drools.core.impl.SystemEventListenerServiceImpl" );
        addDefault(  MarshallerProvider.class,
                     "org.drools.core.marshalling.impl.MarshallerProviderImpl");
        addDefault(  ExecutorProvider.class,
                     "org.drools.core.concurrent.ExecutorProviderImpl");
//        addDefault( SystemE.class,
//        "org.drools.io.impl.ResourceFactoryServiceImpl" );
    }
    public synchronized void addDefault(Class cls,
                           String impl) {
        ReflectionInstantiator<ServiceresourceRi = new ReflectionInstantiator<Service>( impl );
        .putcls.getName(),
                             resourceRi );
    }
    static class ReflectionInstantiator<V>
        implements
        Callable<V> {
        private String name;
        public ReflectionInstantiator(String name) {
            this. = name;
        }
        public V call() throws Exception {
            return (V) newInstance );
        }
        
        static <T> T newInstance(String name) {
            try {
                Class<T> cls = (Class<T>) Class.forNamename );
                return cls.newInstance();
            } catch ( Exception e2 ) {
                throw new IllegalArgumentException"Unable to instantiate '" + name + "'",
                                                    e2 );
            }
        }
    }
    static class ReturnInstance<V>
        implements
        Callable<V> {
        private Service service;
        public ReturnInstance(Service service) {
            this. = service;
        }
        public V call() throws Exception {
            return (V) ;
        }
    }
New to GrepCode? Check out our FAQ X