View Javadoc

    1   /***
    2    * JFoxSOAF, Service-Oriented Application Framework
    3    *
    4    * Copyright (C) www.huihoo.org
    5    *
    6    * Distributable under GNU LGPL For more information, please visit:
    7    * http://www.huihoo.org/jfox/jfoxsoaf
    8    */
    9
    10  package org.huihoo.jfox.soaf.container;
    11
    12  /***
    13   * ServiceContainerInterceptor intercept service request and regist service
    14   * instance to a ServiceContainer.
    15   *
    16   * @author <a href="mailto:founder_chen@yahoo.com.cn">Peter Cheng </a>
    17   * @version $Revision: 1.4 $ $Date: 2004/10/18 10:13:07 $
    18   * @version Revision: 1.0
    19   */
    20
    21  public class ServiceContainerInterceptor implements ServiceInterceptor {
    22
    23      private ServiceContainer serviceContainer = ServiceContainer.getInstance();
    24
    25      /***
    26       * Interceptor invoke.
    27       *
    28       * @see org.huihoo.jfox.soaf.container.ServiceInterceptor#invoke(org.huihoo.jfox.soaf.container.ServiceEntry)
    29       */
    30      public void invoke(ServiceEntry serviceEntry, ClassLoader classLoader)
    31              throws Throwable {
    32          ClassLoader cl = classLoader;
    33          if (!isManageable(serviceEntry)) {
    34              Class service = cl.loadClass(serviceEntry.getImplementation());
    35              synchronized (serviceContainer) {
    36                  if (isIDEmpty(serviceEntry)) {
    37                      serviceContainer.registerServiceImplementation(serviceEntry
    38                              .getImplementation(), service);
    39                  } else {
    40                      serviceContainer.registerServiceImplementation(serviceEntry
    41                              .getId(), service);
    42                  }
    43              }
    44          }
    45      }
    46
    47      /***
    48       * Is manageability currently enabled?
    49       *
    50       * @param serviceEntry
    51       * @return boolean
    52       */
    53      private boolean isManageable(ServiceEntry serviceEntry) {
    54          if (serviceEntry.getManageable().equalsIgnoreCase("true")) {
    55              return true;
    56          } else {
    57              return false;
    58          }
    59      }
    60
    61      /***
    62       * Is service id empty?
    63       *
    64       * @param serviceEntry
    65       * @return boolean
    66       */
    67      private boolean isIDEmpty(ServiceEntry serviceEntry) {
    68          if (serviceEntry.getId() == null || serviceEntry.getId() == "") {
    69              return true;
    70          } else {
    71              return false;
    72          }
    73      }
    74  }