1 package org.objectweb.celtix.bus.wsdl; 2 3 import java.util.ArrayList ; 4 import java.util.HashSet ; 5 import java.util.Iterator ; 6 import java.util.List ; 7 import java.util.Set ; 8 import java.util.WeakHashMap ; 9 10 import javax.wsdl.Binding; 11 import javax.wsdl.Definition; 12 import javax.wsdl.Operation; 13 import javax.wsdl.PortType; 14 import javax.xml.namespace.QName ; 15 16 import org.objectweb.celtix.bus.management.jmx.export.annotation.ManagedAttribute; 17 import org.objectweb.celtix.bus.management.jmx.export.annotation.ManagedOperation; 18 import org.objectweb.celtix.bus.management.jmx.export.annotation.ManagedResource; 19 import org.objectweb.celtix.management.Instrumentation; 20 21 @ManagedResource(componentName = "WSDLManager", 22 description = "The Celtix bus wsdl model component ", 23 currencyTimeLimit = 15, persistPolicy = "OnUpdate") 24 public class WSDLManagerInstrumentation implements Instrumentation { 25 private static final String INSTRUMENTED_NAME = "Bus.WSDLManager"; 26 private String objectName; 27 private WSDLManagerImpl wsdlManager; 28 private WeakHashMap <Object , Definition> definitionsMap; 29 30 31 public WSDLManagerInstrumentation(WSDLManagerImpl wsdl) { 32 wsdlManager = wsdl; 33 objectName = ",name=WSDLManager"; 34 definitionsMap = wsdlManager.definitionsMap; 35 } 36 37 39 @ManagedAttribute(description = "The celtix bus WSDL provider the Service", 40 persistPolicy = "OnUpdate") 41 public String [] getServices() { 42 List <String > strList = new ArrayList <String >(); 43 Set <Definition> defSet = new HashSet <Definition>(definitionsMap.values()); 44 for (Iterator <Definition> it = defSet.iterator(); 45 it.hasNext();) { 46 Definition definition = it.next(); 47 String defName = "Definition: " + definition.getQName().toString(); 48 for (Iterator jt = definition.getServices().keySet().iterator(); 49 jt.hasNext();) { 50 QName serviceQName = (QName )jt.next(); 51 String name = defName + " Service: " + serviceQName.toString(); 52 strList.add(name); 53 } 54 } 55 String [] strings = new String [strList.size()]; 56 return strList.toArray(strings); 57 } 58 59 @ManagedAttribute(description = "The celtix bus WSDL provider the Bindings", 60 persistPolicy = "OnUpdate") 61 public String [] getBindings() { 62 List <String > strList = new ArrayList <String >(); 63 Set <Definition> defSet = new HashSet <Definition>(definitionsMap.values()); 64 for (Iterator <Definition> it = defSet.iterator(); 65 it.hasNext();) { 66 Definition definition = it.next(); 67 String defName = "Definition: " + definition.getQName().toString(); 68 for (Iterator jt = definition.getBindings().values().iterator(); 69 jt.hasNext();) { 70 Binding binding = (Binding)jt.next(); 71 String name = defName + " Binding: " + binding.getQName().toString(); 72 strList.add(name); 73 } 74 } 75 String [] strings = new String [strList.size()]; 76 return strList.toArray(strings); 77 } 78 79 @ManagedAttribute(description = "The celtix bus WSDL provider the PortTypes", 80 persistPolicy = "OnUpdate") 81 public String [] getPorts() { 82 List <String > strList = new ArrayList <String >(); 83 Set <Definition> defSet = new HashSet <Definition>(definitionsMap.values()); 84 for (Iterator <Definition> it = defSet.iterator(); 85 it.hasNext();) { 86 Definition definition = it.next(); 87 String defName = "Definition: " + definition.getQName().toString(); 88 for (Iterator jt = definition.getPortTypes().values().iterator(); 89 jt.hasNext();) { 90 PortType port = (PortType)jt.next(); 91 String name = defName + " PortType: " + port.getQName().toString(); 92 strList.add(name); 93 } 94 } 95 String [] strings = new String [strList.size()]; 96 return strList.toArray(strings); 97 } 98 99 101 @ManagedOperation(currencyTimeLimit = 30, 102 description = "The celtix bus WSDL defined service and port provider operation") 103 public String [] getOperation(String def, String pt) { 104 List <String > strList = new ArrayList <String >(); 105 Definition definition = null; 106 PortType port = null; 107 Set <Definition> defSet = new HashSet <Definition>(definitionsMap.values()); 108 for (Iterator <Definition> it = defSet.iterator(); 109 it.hasNext();) { 110 definition = it.next(); 111 if (def.compareTo(definition.getQName().getLocalPart()) == 0) { 112 for (Iterator jt = definition.getPortTypes().values().iterator(); 113 jt.hasNext();) { 114 port = (PortType)jt.next(); 115 if (pt.compareTo(port.getQName().getLocalPart()) == 0) { 116 break; 117 } 118 } 119 break; 120 } 121 } 122 if (definition != null && port != null) { 123 for (Iterator it = port.getOperations().iterator(); it.hasNext();) { 124 Operation opt = (Operation)it.next(); 125 String name = "Operation: " + opt.getName(); 126 strList.add(name); 127 } 128 } 129 String [] strings = new String [strList.size()]; 130 return strList.toArray(strings); 131 } 132 133 134 public String getInstrumentationName() { 135 return INSTRUMENTED_NAME; 136 } 137 138 public Object getComponent() { 139 return wsdlManager; 140 } 141 142 143 public String getUniqueInstrumentationName() { 144 return objectName; 145 } 146 147 } 148 | Popular Tags |