001: /**
002: * ChainBuilder ESB
003: * Visual Enterprise Integration
004: *
005: * Copyright (C) 2006 Bostech Corporation
006: *
007: * This program is free software; you can redistribute it and/or modify it
008: * under the terms of the GNU General Public License as published by the
009: * Free Software Foundation; either version 2 of the License, or (at your option)
010: * any later version.
011: *
012: * This program is distributed in the hope that it will be useful,
013: * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
014: * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
015: * for more details.
016: *
017: * You should have received a copy of the GNU General Public License along with
018: * this program; if not, write to the Free Software Foundation, Inc.,
019: * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
020: *
021: *
022: * $Id$
023: */package com.bostechcorp.cbesb.common.sa.component;
024:
025: import java.io.File;
026:
027: import javax.wsdl.WSDLException;
028:
029: import com.bostechcorp.cbesb.common.sa.service.EndPoint;
030: import com.bostechcorp.cbesb.common.sa.service.ServiceUnitContextImpl;
031: import com.bostechcorp.cbesb.common.util.FileUtil;
032: import com.bostechcorp.cbesb.common.util.custcomponent.ICustComponent;
033: import com.bostechcorp.cbesb.common.util.custcomponent.IServiceUnitContext;
034: import com.bostechcorp.cbesb.common.util.custcomponent.ICustComponent.Role;
035: import com.bostechcorp.cbesb.common.util.generators.wsdl.generators.AbstractWsdlGenaretor;
036: import com.bostechcorp.cbesb.common.util.generators.wsdl.generators.CustomComponentWsdlGenerator;
037:
038: /**
039: * @author LPS
040: */
041: public class CustomComponent extends CanScheduleComponent {
042: ICustComponent customComponentDef = null;
043:
044: IServiceUnitContext suContext = null;
045:
046: private String vendorNameSpace = "http://cbesb.bostechcorp.com";
047:
048: public CustomComponent() {
049: super ();
050: }
051:
052: public void deploy(String suPath, String saName) throws Exception {
053: String path = suPath + "/" + saName + "_" + this .name;
054: FileUtil.buildDirectory(new File(path));
055: generateBuildXML(path, saName);
056: // generateJBIXML(path);
057: generateJBIXML(path, saName, this .interfaceName, this
058: .getServiceName(), this .name);
059: generateCcsl(path, saName);
060:
061: ((ServiceUnitContextImpl) this .suContext).setRootDir(path);
062:
063: if (customComponentDef.useDefaultDeployment()) // this(TRUE) branch
064: // should never be used
065: // in this method
066: // otherwise use
067: // superclass method
068: {
069: generateWSDL(path, saName);
070: } else // this (FALSE) branch should always be
071: // executed in this method otherwise use superclass method
072: {
073: customComponentDef.genDeploymentArtifacts(this .suContext);
074: }
075: this .generateScheduleXML(path, saName);
076: }
077:
078: @Override
079: public void generateWSDL(String path, String saName)
080: throws Exception {
081: for (int i = 0; i < getEndPointList().size(); i++) {
082: EndPoint endPoint = this .endPointList.get(i);
083: // generateDefinition(path, endPoint, saName);
084: AbstractWsdlGenaretor generator = getWsdlGenerator(path,
085: saName, endPoint);
086: generator.writeToFile();
087: }
088: if (!customComponentDef.useDefaultWSDLGenerator())
089: customComponentDef.genDeploymentArtifacts(this .suContext);
090: }
091:
092: /*
093: * (non-Javadoc)
094: *
095: * @see com.bostechcorp.cbesb.common.sa.service.AbstractComponent#getComponentName()
096: */
097: @Override
098: public String getComponentName() {
099: if (customComponentDef != null) {
100: return customComponentDef.getComponentName();
101: }
102: return "ChainBuilderESB-BC-CustomComponent";
103: }
104:
105: /**
106: * @return the customComponentInstance
107: */
108: public ICustComponent getCustomComponentDef() {
109: return customComponentDef;
110: }
111:
112: /**
113: * @param customComponentInstance
114: * the customComponentInstance to set
115: */
116: public void setCustomComponentDef(ICustComponent customComponentDef) {
117: this .customComponentDef = customComponentDef;
118: this .componentType = this .customComponentDef.getName();
119: }
120:
121: public IServiceUnitContext getSuContext() {
122: return suContext;
123: }
124:
125: public void setSuContext(IServiceUnitContext suContext) {
126: this .suContext = suContext;
127: }
128:
129: public String getServiceNameByRole(boolean bConsumer) {
130: if (this .customComponentDef.useDefaultDeployment() == true) {
131: return this .getServiceName();
132: }
133: if (bConsumer)
134: return this .getCustomComponentDef().getServiceName(
135: Role.CONSUMER, this .suContext);
136: else
137: return this .getCustomComponentDef().getServiceName(
138: Role.PROVIDER, this .suContext);
139: }
140:
141: public String getEndpointName(EndPoint endPoint) {
142: if (this .customComponentDef.useDefaultDeployment() == true) {
143: return endPoint.getName();
144: }
145: if (endPoint.isConumer())
146: return this .getCustomComponentDef().getEndpointName(
147: Role.CONSUMER, this .suContext);
148: else
149: return this .getCustomComponentDef().getEndpointName(
150: Role.PROVIDER, this .suContext);
151:
152: }
153:
154: public String getConsumerEndpointName() {
155: if (this .customComponentDef.useDefaultDeployment() == true) {
156: return super .getConsumerEndpointName();
157: }
158: return this .getCustomComponentDef().getEndpointName(
159: Role.CONSUMER, this .suContext);
160: }
161:
162: public String getProviderEndpointName() {
163: if (this .customComponentDef.useDefaultDeployment() == true) {
164: return super .getProviderEndpointName();
165: }
166: return this .getCustomComponentDef().getEndpointName(
167: Role.PROVIDER, this .suContext);
168: }
169:
170: @Override
171: protected AbstractWsdlGenaretor getWsdlGenerator(String path,
172: String saName, EndPoint ep) throws WSDLException {
173: boolean useSchedule = false;
174: if (standardSchedules.size() > 0
175: || autoRetrySchedules.size() > 0) {
176: useSchedule = true;
177: }
178: String componentURI = customComponentDef.getComponentURI();
179: if (componentURI == null || componentURI.equals(""))
180: componentURI = this .vendorNameSpace + "/wsdl/"
181: + this .customComponentDef.getName() + "/"
182: + customComponentDef.getVersion();
183:
184: return new CustomComponentWsdlGenerator(path, saName,
185: getName(), this.getComponentType(), ep, useSchedule,
186: componentURI);
187: }
188: }
|