1 /**************************************************************************** 2 * Copyright (c) 2005, 2006, 2007, 2008, 2009 Imola Informatica. 3 * All rights reserved. This program and the accompanying materials 4 * are made available under the terms of the LGPL License v2.1 5 * which accompanies this distribution, and is available at 6 * http://www.gnu.org/licenses/lgpl.html 7 ****************************************************************************/ 8 /* 9 * ComponentRuntime.java 10 */ 11 12 package it.imolinfo.jbi4corba.jbi.component.runtime; 13 14 import javax.jbi.component.Component; 15 import javax.jbi.component.ComponentLifeCycle; 16 import javax.jbi.component.ServiceUnitManager; 17 import javax.jbi.servicedesc.ServiceEndpoint; 18 19 /** 20 * This is the Base implementation of the Component apis. Each component will 21 * extend this class to provide the component specific implemenation of the api 22 * by overriding the default implemenation or providing the implemenation of the 23 * create methods for ComponentLifecycle and ServiceUnitManager. 24 * 25 * @see javax.jbi.Component 26 * 27 * @author <a href="mailto:mpiraccini@imolinfo.it">Marco Piraccini</a> 28 */ 29 public abstract class ComponentRuntime implements Component { 30 /** Component LifeCycle implemenation */ 31 private ComponentLifeCycle mLifeCycle; 32 /** ServiceUnitManager implemenation */ 33 private ServiceUnitManager mSUManager; 34 /** 35 * constructor 36 */ 37 protected ComponentRuntime() { 38 39 // create default logger 40 RuntimeContext.getInstance().setLogger(this.getClass().getPackage().getName(), null); 41 // create component lifecycle implementation 42 this.mLifeCycle = createComponentLifeCycle(); 43 44 if ( this.mLifeCycle == null ) { 45 // can not have a null component lifecycle. so, create default one. 46 this.mLifeCycle = new DefaultComponentLifeCycle(this); 47 48 RuntimeHelper.logDebug( 49 "ComponentLifeCycle is not implemented by extended runtime." + 50 " Default ComponentLifeCycle created"); 51 } 52 // create service unit manager if supported. 53 this.mSUManager = createServiceUnitManager(); 54 55 if ( this.mSUManager == null ) { 56 RuntimeHelper.logDebug("ServiceUnit Deployment is not supported in the Component"); 57 } 58 } 59 60 /////////////////////////////////////////////////////////////////////////// 61 // Component interface implemenation 62 /////////////////////////////////////////////////////////////////////////// 63 64 /** 65 * Get the life cycle control interface for this component. 66 * 67 * @return the life cycle control interface for this component 68 * @see javax.jbi.Component#getLifeCycle() 69 */ 70 public final ComponentLifeCycle getLifeCycle() { 71 return this.mLifeCycle; 72 } 73 74 /** 75 * Get the Service Unit manager for this component. 76 * 77 * @return the <code>ServiceUnitManager</code> for this component, or 78 * <code>null</code> if there is none. 79 * @see javax.jbi.Component#getServiceUnitManager() 80 */ 81 public final ServiceUnitManager getServiceUnitManager() { 82 return this.mSUManager; 83 } 84 85 /** 86 * Retrieves a DOM representation containing metadata which describes the 87 * service provided by this component, through the given endpoint. 88 * 89 * @param endpoint the service endpoint. 90 * @return the description for the specified service endpoint. 91 * @see javax.jbi.Component#getServiceDescription(javax.jbi.servicedesc.ServiceEndpoint) 92 */ 93 public org.w3c.dom.Document getServiceDescription(ServiceEndpoint ref) { 94 return null; 95 } 96 97 /** 98 * This method is called by JBI to check if this component, in the role of 99 * provider of the service indicated by the given exchange, can actually 100 * perform the operation desired. 101 * 102 * @param endpoint the endpoint to be used by the consumer; must be 103 * non-null. 104 * @param exchange the proposed message exchange to be performed; must be 105 * non-null. 106 * @return <code>true</code> if this provider component can perform the 107 * given exchange with the described consumer. 108 */ 109 public boolean isExchangeWithConsumerOkay( 110 javax.jbi.servicedesc.ServiceEndpoint endpoint, 111 javax.jbi.messaging.MessageExchange exchange) { 112 return true; 113 } 114 115 /** 116 * This method is called by JBI to check if this component, in the role of 117 * consumer of the service indicated by the given exchange, can actually 118 * interact with the provider properly. The provider is described by the 119 * given endpoint and the service description supplied by that endpoint. 120 * 121 * @param endpoint the endpoint to be used by the provider; must be 122 * non-null. 123 * @param exchange the proposed message exchange to be performed; must be 124 * non-null. 125 * @return <code>true</code> if this consumer component can interact with 126 * the described provider to perform the given exchange. 127 */ 128 public boolean isExchangeWithProviderOkay( 129 javax.jbi.servicedesc.ServiceEndpoint endpoint, 130 javax.jbi.messaging.MessageExchange exchange) { 131 return true; 132 } 133 /** 134 * Resolve the given endpoint reference. 135 * 136 * @param epr the endpoint reference, in some XML dialect understood by 137 * the appropriate component (usually a binding); must be non-null. 138 * @return the service endpoint for the EPR; <code>null</code> if the 139 * EPR cannot be resolved by this component. 140 * @see javax.jbi.Component#resolveEndpointReference(org.w3c.dom.DocumentFragment) 141 */ 142 public javax.jbi.servicedesc.ServiceEndpoint resolveEndpointReference( 143 org.w3c.dom.DocumentFragment epr) { 144 return null; 145 } 146 147 /////////////////////////////////////////////////////////////////////////// 148 // Helper Methods 149 /////////////////////////////////////////////////////////////////////////// 150 /** 151 * return the ComponentLifeCycle implementaion. if returned null, the 152 * DefaultComponentLifeCycle will be used as the component lifecycle 153 */ 154 protected abstract ComponentLifeCycle createComponentLifeCycle(); 155 156 /** 157 * if this component supports service unit deployment, then return the 158 * service unit manager, else return null 159 */ 160 protected abstract ServiceUnitManager createServiceUnitManager(); 161 162 }