KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > jacorb > notification > container > CORBAObjectComponentAdapter


1 /*
2  * JacORB - a free Java ORB
3  *
4  * Copyright (C) 1999-2004 Gerald Brose
5  *
6  * This library is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Library General Public
8  * License as published by the Free Software Foundation; either
9  * version 2 of the License, or (at your option) any later version.
10  *
11  * This library is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14  * Library General Public License for more details.
15  *
16  * You should have received a copy of the GNU Library General Public
17  * License along with this library; if not, write to the Free
18  * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19  *
20  */

21
22 package org.jacorb.notification.container;
23
24 import java.lang.reflect.Method JavaDoc;
25
26 import org.picocontainer.PicoContainer;
27 import org.picocontainer.PicoInitializationException;
28 import org.picocontainer.PicoIntrospectionException;
29 import org.picocontainer.PicoVerificationException;
30 import org.picocontainer.defaults.AbstractComponentAdapter;
31 import org.picocontainer.defaults.AssignabilityRegistrationException;
32
33 /**
34  * @author Alphonse Bendt
35  * @version $Id: CORBAObjectComponentAdapter.java,v 1.2 2005/04/27 10:34:54 alphonse.bendt Exp $
36  */

37 public class CORBAObjectComponentAdapter extends AbstractComponentAdapter
38 {
39     private static final long serialVersionUID = 1L;
40     
41     private final org.omg.CORBA.Object JavaDoc delegate_;
42
43     /**
44      * Component Adapter to specify a reference to a CORBA Object.
45      *
46      * @param service
47      * CORBA Interface the delegate offers
48      * @param delegate
49      * CORBA object that offers the service
50      */

51     public CORBAObjectComponentAdapter(Class JavaDoc service, org.omg.CORBA.Object JavaDoc delegate)
52     {
53         super(service, service);
54
55         final String JavaDoc _interfaceName = service.getName();
56         final String JavaDoc _helperClassName = _interfaceName + "Helper";
57         boolean _notAssignable = false;
58
59         try
60         {
61             Class JavaDoc _helperClass = Class.forName(_helperClassName);
62             Method JavaDoc _idMethod = _helperClass.getMethod("id", new Class JavaDoc[0]);
63             String JavaDoc _id = (String JavaDoc) _idMethod.invoke(null, null);
64
65             if (!delegate._is_a(_id))
66             {
67                 _notAssignable = true;
68             }
69         } catch (Exception JavaDoc e)
70         {
71             _notAssignable = true;
72         }
73
74         if (_notAssignable)
75         {
76             throw new AssignabilityRegistrationException(service, delegate.getClass());
77         }
78
79         delegate_ = delegate;
80     }
81
82     public Object JavaDoc getComponentInstance(PicoContainer container) throws PicoInitializationException,
83             PicoIntrospectionException
84     {
85         return delegate_;
86     }
87
88     public void verify(PicoContainer container) throws PicoVerificationException
89     {
90         // no op
91
}
92 }
Popular Tags