Save This Page
Home » openejb-3.1.2-src » org.apache.openejb.spring » [javadoc | source]
    1   /**
    2    *
    3    * Licensed to the Apache Software Foundation (ASF) under one or more
    4    * contributor license agreements.  See the NOTICE file distributed with
    5    * this work for additional information regarding copyright ownership.
    6    * The ASF licenses this file to You under the Apache License, Version 2.0
    7    * (the "License"); you may not use this file except in compliance with
    8    * the License.  You may obtain a copy of the License at
    9    *
   10    *     http://www.apache.org/licenses/LICENSE-2.0
   11    *
   12    *  Unless required by applicable law or agreed to in writing, software
   13    *  distributed under the License is distributed on an "AS IS" BASIS,
   14    *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   15    *  See the License for the specific language governing permissions and
   16    *  limitations under the License.
   17    */
   18   package org.apache.openejb.spring;
   19   
   20   import javax.naming.Context;
   21   
   22   import org.apache.openejb.loader.SystemInstance;
   23   import org.apache.openejb.spi.ContainerSystem;
   24   import org.springframework.beans.factory.FactoryBean;
   25   
   26   @Exported
   27   public class OpenEJBResource<T> implements FactoryBean {
   28       private final Class<T> type;
   29       private String resourceId;
   30   
   31       public OpenEJBResource(Class<T> type) {
   32           if (type == null) throw new NullPointerException("type is null");
   33           this.type = type;
   34       }
   35   
   36       public String getResourceId() {
   37           return resourceId;
   38       }
   39   
   40       public void setResourceId(String resourceId) {
   41           this.resourceId = resourceId;
   42       }
   43   
   44       public T getObject() throws Exception {
   45           ContainerSystem containerSystem = SystemInstance.get().getComponent(ContainerSystem.class);
   46           if (containerSystem == null) return null;
   47           Context initialContext = containerSystem.getJNDIContext();
   48           if (initialContext == null) return null;
   49   
   50           Object resource = initialContext.lookup("openejb/Resource/" + resourceId);
   51   
   52           if (!type.isInstance(resource)) {
   53               throw new IllegalArgumentException(
   54                       "Resouce " + getResourceId() + " is not an instance of " + type.getSimpleName() + ", but is " + resource.getClass().getName());
   55           }
   56   
   57           return type.cast(resource);
   58       }
   59   
   60       public Class<T> getObjectType() {
   61           return type;
   62       }
   63   
   64       public boolean isSingleton() {
   65           return false;
   66       }
   67   }

Save This Page
Home » openejb-3.1.2-src » org.apache.openejb.spring » [javadoc | source]