1 /*
2 * The contents of this file are subject to the terms
3 * of the Common Development and Distribution License
4 * (the "License"). You may not use this file except
5 * in compliance with the License.
6 *
7 * You can obtain a copy of the license at
8 * https://open-esb.dev.java.net/public/CDDLv1.0.html.
9 * See the License for the specific language governing
10 * permissions and limitations under the License.
11 *
12 * When distributing Covered Code, include this CDDL
13 * HEADER in each file and include the License file at
14 * https://open-esb.dev.java.net/public/CDDLv1.0.html.
15 * If applicable add the following below this CDDL HEADER,
16 * with the fields enclosed by brackets "[]" replaced with
17 * your own identifying information: Portions Copyright
18 * [year] [name of copyright owner]
19 */
20
21 /*
22 * Copyright 2004-2006 Sun Microsystems, Inc. All Rights Reserved.
23 */
24
25 /*
26 * ComponentRuntime.java
27 */
28
29 package it.imolinfo.jbi4ejb.jbi.component.runtime;
30
31 import javax.jbi.component.Component;
32 import javax.jbi.component.ComponentLifeCycle;
33 import javax.jbi.component.ServiceUnitManager;
34 import javax.jbi.servicedesc.ServiceEndpoint;
35
36 /**
37 * This is the Base implementation of the Component apis. Each component will
38 * extend this class to provide the component specific implemenation of the api
39 * by overriding the default implemenation or providing the implemenation of the
40 * create methods for ComponentLifecycle and ServiceUnitManager.
41 *
42 * @see javax.jbi.Component
43 *
44 * @author Sun Microsystems, Inc.
45 */
46 public abstract class ComponentRuntime implements Component {
47 /** Component LifeCycle implemenation */
48 private ComponentLifeCycle mLifeCycle;
49 /** ServiceUnitManager implemenation */
50 private ServiceUnitManager mSUManager;
51 /**
52 * constructor
53 */
54 protected ComponentRuntime() {
55
56 // create default logger
57 RuntimeContext.getInstance().setLogger(this.getClass().getPackage().getName(), null);
58 // create component lifecycle implementation
59 this.mLifeCycle = createComponentLifeCycle();
60
61 if ( this.mLifeCycle == null ) {
62 // can not have a null component lifecycle. so, create default one.
63 this.mLifeCycle = new DefaultComponentLifeCycle(this);
64
65 RuntimeHelper.logDebug(
66 "ComponentLifeCycle is not implemented by extended runtime." +
67 " Default ComponentLifeCycle created");
68 }
69 // create service unit manager if supported.
70 this.mSUManager = createServiceUnitManager();
71
72 if ( this.mSUManager == null ) {
73 RuntimeHelper.logDebug("ServiceUnit Deployment is not supported in the Component");
74 }
75 }
76
77 ///////////////////////////////////////////////////////////////////////////
78 // Component interface implemenation
79 ///////////////////////////////////////////////////////////////////////////
80
81 /**
82 * Get the life cycle control interface for this component.
83 *
84 * @return the life cycle control interface for this component
85 * @see javax.jbi.Component#getLifeCycle()
86 */
87 public final ComponentLifeCycle getLifeCycle() {
88 return this.mLifeCycle;
89 }
90
91 /**
92 * Get the Service Unit manager for this component.
93 *
94 * @return the <code>ServiceUnitManager</code> for this component, or
95 * <code>null</code> if there is none.
96 * @see javax.jbi.Component#getServiceUnitManager()
97 */
98 public final ServiceUnitManager getServiceUnitManager() {
99 return this.mSUManager;
100 }
101
102 /**
103 * Retrieves a DOM representation containing metadata which describes the
104 * service provided by this component, through the given endpoint.
105 *
106 * @param endpoint the service endpoint.
107 * @return the description for the specified service endpoint.
108 * @see javax.jbi.Component#getServiceDescription(javax.jbi.servicedesc.ServiceEndpoint)
109 */
110 public org.w3c.dom.Document getServiceDescription(ServiceEndpoint ref) {
111 return null;
112 }
113
114 /**
115 * This method is called by JBI to check if this component, in the role of
116 * provider of the service indicated by the given exchange, can actually
117 * perform the operation desired.
118 *
119 * @param endpoint the endpoint to be used by the consumer; must be
120 * non-null.
121 * @param exchange the proposed message exchange to be performed; must be
122 * non-null.
123 * @return <code>true</code> if this provider component can perform the
124 * given exchange with the described consumer.
125 */
126 public boolean isExchangeWithConsumerOkay(
127 javax.jbi.servicedesc.ServiceEndpoint endpoint,
128 javax.jbi.messaging.MessageExchange exchange) {
129 return true;
130 }
131
132 /**
133 * This method is called by JBI to check if this component, in the role of
134 * consumer of the service indicated by the given exchange, can actually
135 * interact with the provider properly. The provider is described by the
136 * given endpoint and the service description supplied by that endpoint.
137 *
138 * @param endpoint the endpoint to be used by the provider; must be
139 * non-null.
140 * @param exchange the proposed message exchange to be performed; must be
141 * non-null.
142 * @return <code>true</code> if this consumer component can interact with
143 * the described provider to perform the given exchange.
144 */
145 public boolean isExchangeWithProviderOkay(
146 javax.jbi.servicedesc.ServiceEndpoint endpoint,
147 javax.jbi.messaging.MessageExchange exchange) {
148 return true;
149 }
150 /**
151 * Resolve the given endpoint reference.
152 *
153 * @param epr the endpoint reference, in some XML dialect understood by
154 * the appropriate component (usually a binding); must be non-null.
155 * @return the service endpoint for the EPR; <code>null</code> if the
156 * EPR cannot be resolved by this component.
157 * @see javax.jbi.Component#resolveEndpointReference(org.w3c.dom.DocumentFragment)
158 */
159 public javax.jbi.servicedesc.ServiceEndpoint resolveEndpointReference(
160 org.w3c.dom.DocumentFragment epr) {
161 return null;
162 }
163
164 ///////////////////////////////////////////////////////////////////////////
165 // Helper Methods
166 ///////////////////////////////////////////////////////////////////////////
167 /**
168 * return the ComponentLifeCycle implementaion. if returned null, the
169 * DefaultComponentLifeCycle will be used as the component lifecycle
170 */
171 protected abstract ComponentLifeCycle createComponentLifeCycle();
172
173 /**
174 * if this component supports service unit deployment, then return the
175 * service unit manager, else return null
176 */
177 protected abstract ServiceUnitManager createServiceUnitManager();
178
179 }