1 57 58 package com.myeis.repository; 59 60 import java.io.InputStream ; 61 import java.io.StringReader ; 62 import java.util.*; 63 64 import javax.wsdl.*; 65 import javax.xml.namespace.QName ; 66 67 import org.apache.wsif.base.WSIFServiceImpl; 68 import org.apache.wsif.providers.jca.toolplugin.*; 69 import org.apache.wsif.util.WSIFUtils; 70 71 import com.ibm.wsdl.PortTypeImpl; 72 import com.myeis.wsdl.extensions.j2c.myeis.MyEISExtensionRegistry; 73 import com.ibm.wsdl.xml.*; 74 75 public class Repository { 76 77 public PortTypeArray getPortTypes(String queryString) { 78 83 ArrayList portTypes = new ArrayList(); 84 try { 85 WSIFServiceImpl.addExtensionRegistry(new MyEISExtensionRegistry()); 86 WSIFServiceImpl.addExtensionRegistry(new org.apache.wsif.wsdl.extensions.format.FormatExtensionRegistry()); 87 WSIFServiceImpl.addExtensionRegistry(new org.apache.wsif.wsdl.extensions.java.JavaExtensionRegistry()); 88 ArrayList definitions = new ArrayList(); 90 Definition definition = WSIFUtils.readWSDL(null, "com/myeis/services/CustomerInfo.wsdl", this.getClass().getClassLoader()); 91 definitions.add(definition); 92 definition = WSIFUtils.readWSDL(null, "com/myeis/services/PurchaseOrderInfo.wsdl", this.getClass().getClassLoader()); 93 definitions.add(definition); 94 95 Iterator definitionIterator = definitions.iterator(); 96 while (definitionIterator.hasNext()) { 97 definition = (Definition) definitionIterator.next(); 98 Iterator portTypeIterator = definition.getPortTypes().values().iterator(); 99 while (portTypeIterator.hasNext()) { 100 PortType portType = (PortType) portTypeIterator.next(); 101 if ((queryString.equals("")) || (queryString.equals("*")) || (portType.getQName().getLocalPart().indexOf(queryString) != -1)) { 102 portTypes.add(portType); 103 } 104 } 105 } 106 } catch (Exception e) { 107 e.printStackTrace(); 108 } 109 110 PortType[] portTypeA = new PortType[portTypes.size()]; 111 portTypes.toArray(portTypeA); 112 PortTypeArray portTypeArray = new PortTypeArray(); 113 portTypeArray.setPortTypes(portTypeA); 114 115 return portTypeArray; 116 } 117 118 public ImportDefinition getDefinition(PortTypeSelection portTypeSelection) { 119 124 ArrayList importDefinitions = new ArrayList(); 125 ArrayList importDefinitionsResult = new ArrayList(); 126 try { 127 WSIFServiceImpl.addExtensionRegistry(new MyEISExtensionRegistry()); 128 WSIFServiceImpl.addExtensionRegistry(new org.apache.wsif.wsdl.extensions.format.FormatExtensionRegistry()); 129 WSIFServiceImpl.addExtensionRegistry(new org.apache.wsif.wsdl.extensions.java.JavaExtensionRegistry()); 130 ImportDefinition importDefinition = new ImportDefinition(); 132 importDefinition.setDefinition(WSIFUtils.readWSDL(null, "com/myeis/services/CustomerInfo.wsdl", this.getClass().getClassLoader())); 133 134 ImportResource[] importResources = new ImportResource[1]; 135 ImportResource importResource = new ImportResource(); 136 importResource.setLocation("com/myeis/services/MyEISFormatHandlerGenMetaData.eis"); 137 String metaData = "MyEIS Resource Adapter version 1.0 meta data"; 138 importResource.setContents(metaData.getBytes()); 139 importResources[0] = importResource; 140 141 ImportXSD[] importXSDs = new ImportXSD[1]; 142 ImportXSD importXSD = new ImportXSD(); 143 importXSD.setNamespace("http://services.myeis.ibm.com/"); 144 importXSD.setLocation("com/myeis/services/CustomerInfo.xsd"); 145 146 InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("com/myeis/services/CustomerInfo.xsd"); 147 byte[] inputBytes = new byte[inputStream.available()]; 148 inputStream.read(inputBytes); 149 importXSD.setSource(new String (inputBytes)); 150 151 importXSDs[0] = importXSD; 152 importDefinition.setImportXSDs(importXSDs); 153 importDefinitions.add(importDefinition); 154 155 importDefinition = new ImportDefinition(); 156 importDefinition.setDefinition(WSIFUtils.readWSDL(null, "com/myeis/services/PurchaseOrderInfo.wsdl", this.getClass().getClassLoader())); 157 importXSDs = new ImportXSD[1]; 158 importXSD = new ImportXSD(); 159 importXSD.setNamespace("http://services.myeis.ibm.com/"); 160 importXSD.setLocation("com/myeis/services/PurchaseOrderInfo.xsd"); 161 162 inputStream = this.getClass().getClassLoader().getResourceAsStream("com/myeis/services/PurchaseOrderInfo.xsd"); 163 inputBytes = new byte[inputStream.available()]; 164 inputStream.read(inputBytes); 165 importXSD.setSource(new String (inputBytes)); 166 167 importXSDs[0] = importXSD; 168 importDefinition.setImportXSDs(importXSDs); 169 importDefinition.setImportResources(importResources); 170 importDefinitions.add(importDefinition); 171 172 for (int j = 0; j < importDefinitions.size(); j++) { 173 if (((ImportDefinition) importDefinitions.get(j)).getDefinition().getPortTypes().containsKey(portTypeSelection.getPortTypeQName())) { 174 175 ImportDefinition returnDefinition = (ImportDefinition) importDefinitions.get(j); 176 Definition def = returnDefinition.getDefinition(); 177 178 Iterator importIter = def.getImports().values().iterator(); 180 while (importIter.hasNext()) { 181 List imports = (List) importIter.next(); 182 Iterator listIterator = imports.iterator(); 183 while (listIterator.hasNext()) { 184 javax.wsdl.Import imp = (javax.wsdl.Import) listIterator.next(); 185 if (imp.getLocationURI().startsWith("/com/myeis/services/")) { 186 imp.setLocationURI("." + imp.getLocationURI()); 187 } 188 } 189 190 } 191 193 Iterator iter = def.getPortTypes().keySet().iterator(); 194 List unusedPortTypes = new ArrayList(); 195 PortType selectedPortType = null; 196 while (iter.hasNext()) { 197 QName portTypeQName = (QName ) iter.next(); 198 if (!portTypeQName.equals(portTypeSelection.getPortTypeQName())) { 199 unusedPortTypes.add(portTypeQName); 200 } else { 201 selectedPortType = def.getPortType(portTypeQName); 202 } 203 } 204 iter = unusedPortTypes.iterator(); 205 while (iter.hasNext()) { 206 def.removePortType((QName ) iter.next()); 207 } 208 209 List operationList = selectedPortType.getOperations(); 211 List selectedOperationsList = new ArrayList(); 212 for (int index = 0; index < portTypeSelection.getOperationSelection().length; index++) { 213 OperationSelection selection = portTypeSelection.getOperationSelection()[index]; 214 Operation op = selectedPortType.getOperation(selection.getOperationName(), selection.getInputName(), selection.getOutputName()); 215 if (op != null) { 216 selectedOperationsList.add(op); 217 } 218 } 219 220 iter = operationList.iterator(); 221 List unusedOperationsList = new ArrayList(); 222 223 while (iter.hasNext()) { 224 Operation op = (Operation) iter.next(); 225 if (!selectedOperationsList.contains(op)) { 226 unusedOperationsList.add(op); 227 } 228 } 229 230 iter = unusedOperationsList.iterator(); 231 while (iter.hasNext()) { 232 Operation op = (Operation) iter.next(); 233 operationList.remove(op); 234 Iterator bindingIterator = def.getBindings().values().iterator(); 235 while (bindingIterator.hasNext()) { 236 Binding binding = (Binding) bindingIterator.next(); 237 String inputName = null; 238 if (op.getInput() != null) 239 inputName = op.getInput().getName(); 240 241 String outputName = null; 242 if (op.getOutput() != null) 243 outputName = op.getOutput().getName(); 244 BindingOperation bindingOp = binding.getBindingOperation(op.getName(), inputName, outputName); 245 if (bindingOp != null) 246 binding.getBindingOperations().remove(bindingOp); 247 } 248 } 249 250 return returnDefinition; 251 } 252 } 253 } catch (Exception e) { 255 e.printStackTrace(); 256 } 257 return null; 258 } 259 260 public byte[] getRawEISMetaData(String queryString) { 261 266 String customerInfoData = "PortType: CustomerInfo\n Operation: getAddress\n Operation: getCustomer\n"; 267 String purchaseOrderData = "PortType: PurchaseOrderInfo\n Operation: getPurchaseOrder\n"; 268 String result = new String (); 269 if ((queryString.equals("")) || (queryString.equals("*"))) { 270 result = customerInfoData + purchaseOrderData; 271 272 } else { 273 if ("CustomerInfo".indexOf(queryString) != -1) { 274 result = result + customerInfoData; 275 } 276 if ("PurchaseOrderInfo".indexOf(queryString) != -1) { 277 result = result + purchaseOrderData; 278 } 279 280 } 281 return result.getBytes(); 282 } 283 } | Popular Tags |