src/share/jaxws_classes/com/sun/xml/internal/ws/handler/HandlerChainsModel.java

Thu, 31 Aug 2017 15:18:52 +0800

author
aoqi
date
Thu, 31 Aug 2017 15:18:52 +0800
changeset 637
9c07ef4934dd
parent 368
0989ad8c0860
parent 0
373ffda63c9a
permissions
-rw-r--r--

merge

aoqi@0 1 /*
aoqi@0 2 * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
aoqi@0 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
aoqi@0 4 *
aoqi@0 5 * This code is free software; you can redistribute it and/or modify it
aoqi@0 6 * under the terms of the GNU General Public License version 2 only, as
aoqi@0 7 * published by the Free Software Foundation. Oracle designates this
aoqi@0 8 * particular file as subject to the "Classpath" exception as provided
aoqi@0 9 * by Oracle in the LICENSE file that accompanied this code.
aoqi@0 10 *
aoqi@0 11 * This code is distributed in the hope that it will be useful, but WITHOUT
aoqi@0 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
aoqi@0 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
aoqi@0 14 * version 2 for more details (a copy is included in the LICENSE file that
aoqi@0 15 * accompanied this code).
aoqi@0 16 *
aoqi@0 17 * You should have received a copy of the GNU General Public License version
aoqi@0 18 * 2 along with this work; if not, write to the Free Software Foundation,
aoqi@0 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
aoqi@0 20 *
aoqi@0 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
aoqi@0 22 * or visit www.oracle.com if you need additional information or have any
aoqi@0 23 * questions.
aoqi@0 24 */
aoqi@0 25
aoqi@0 26 package com.sun.xml.internal.ws.handler;
aoqi@0 27
aoqi@0 28 import com.sun.xml.internal.ws.api.BindingID;
aoqi@0 29 import com.sun.xml.internal.ws.api.WSBinding;
aoqi@0 30 import com.sun.xml.internal.ws.streaming.XMLStreamReaderUtil;
aoqi@0 31 import com.sun.xml.internal.ws.transport.http.DeploymentDescriptorParser;
aoqi@0 32 import com.sun.xml.internal.ws.util.HandlerAnnotationInfo;
aoqi@0 33 import com.sun.xml.internal.ws.util.JAXWSUtils;
aoqi@0 34 import com.sun.xml.internal.ws.util.UtilException;
aoqi@0 35
aoqi@0 36 import javax.annotation.PostConstruct;
aoqi@0 37 import javax.xml.namespace.QName;
aoqi@0 38 import javax.xml.stream.XMLStreamConstants;
aoqi@0 39 import javax.xml.stream.XMLStreamReader;
aoqi@0 40 import javax.xml.ws.handler.Handler;
aoqi@0 41 import javax.xml.ws.handler.PortInfo;
aoqi@0 42 import java.lang.reflect.Method;
aoqi@0 43 import java.util.ArrayList;
aoqi@0 44 import java.util.HashSet;
aoqi@0 45 import java.util.List;
aoqi@0 46 import java.util.Set;
aoqi@0 47 import java.util.StringTokenizer;
aoqi@0 48 import java.util.logging.Logger;
aoqi@0 49
aoqi@0 50
aoqi@0 51 public class HandlerChainsModel {
aoqi@0 52 private static final Logger logger = Logger.getLogger(
aoqi@0 53 com.sun.xml.internal.ws.util.Constants.LoggingDomain + ".util");
aoqi@0 54
aoqi@0 55 private Class annotatedClass;
aoqi@0 56 private List<HandlerChainType> handlerChains;
aoqi@0 57 private String id;
aoqi@0 58 /** Creates a new instance of HandlerChains */
aoqi@0 59 private HandlerChainsModel(Class annotatedClass) {
aoqi@0 60 this.annotatedClass = annotatedClass;
aoqi@0 61 }
aoqi@0 62
aoqi@0 63 private List<HandlerChainType> getHandlerChain() {
aoqi@0 64 if (handlerChains == null) {
aoqi@0 65 handlerChains = new ArrayList<HandlerChainType>();
aoqi@0 66 }
aoqi@0 67 return handlerChains;
aoqi@0 68 }
aoqi@0 69
aoqi@0 70 public String getId() {
aoqi@0 71 return id;
aoqi@0 72 }
aoqi@0 73
aoqi@0 74 public void setId(String value) {
aoqi@0 75 this.id = value;
aoqi@0 76 }
aoqi@0 77 /**
aoqi@0 78 * reader should be on <handler-chains> element
aoqi@0 79 */
aoqi@0 80 public static HandlerChainsModel parseHandlerConfigFile(Class annotatedClass, XMLStreamReader reader) {
aoqi@0 81 ensureProperName(reader,QNAME_HANDLER_CHAINS);
aoqi@0 82 HandlerChainsModel handlerModel = new HandlerChainsModel(annotatedClass);
aoqi@0 83 List<HandlerChainType> hChains = handlerModel.getHandlerChain();
aoqi@0 84 XMLStreamReaderUtil.nextElementContent(reader);
aoqi@0 85
aoqi@0 86 while (reader.getName().equals(QNAME_HANDLER_CHAIN)) {
aoqi@0 87 HandlerChainType hChain = new HandlerChainType();
aoqi@0 88 XMLStreamReaderUtil.nextElementContent(reader);
aoqi@0 89
aoqi@0 90 if (reader.getName().equals(QNAME_CHAIN_PORT_PATTERN)) {
aoqi@0 91 QName portNamePattern = XMLStreamReaderUtil.getElementQName(reader);
aoqi@0 92 hChain.setPortNamePattern(portNamePattern);
aoqi@0 93 XMLStreamReaderUtil.nextElementContent(reader);
aoqi@0 94 } else if (reader.getName().equals(QNAME_CHAIN_PROTOCOL_BINDING)) {
aoqi@0 95 String bindingList = XMLStreamReaderUtil.getElementText(reader);
aoqi@0 96 StringTokenizer stk = new StringTokenizer(bindingList);
aoqi@0 97 while(stk.hasMoreTokens()) {
aoqi@0 98 String token = stk.nextToken();
aoqi@0 99 // This will convert tokens into Binding URI
aoqi@0 100 hChain.addProtocolBinding(token);
aoqi@0 101 }
aoqi@0 102 XMLStreamReaderUtil.nextElementContent(reader);
aoqi@0 103 } else if (reader.getName().equals(QNAME_CHAIN_SERVICE_PATTERN)) {
aoqi@0 104 QName serviceNamepattern = XMLStreamReaderUtil.getElementQName(reader);
aoqi@0 105 hChain.setServiceNamePattern(serviceNamepattern);
aoqi@0 106 XMLStreamReaderUtil.nextElementContent(reader);
aoqi@0 107 }
aoqi@0 108 List<HandlerType> handlers = hChain.getHandlers();
aoqi@0 109 // process all <handler> elements
aoqi@0 110 while (reader.getName().equals(QNAME_HANDLER)) {
aoqi@0 111 HandlerType handler = new HandlerType();
aoqi@0 112
aoqi@0 113 XMLStreamReaderUtil.nextContent(reader);
aoqi@0 114 if (reader.getName().equals(QNAME_HANDLER_NAME)) {
aoqi@0 115 String handlerName =
aoqi@0 116 XMLStreamReaderUtil.getElementText(reader).trim();
aoqi@0 117 handler.setHandlerName(handlerName);
aoqi@0 118 XMLStreamReaderUtil.nextContent(reader);
aoqi@0 119 }
aoqi@0 120
aoqi@0 121 // handler class
aoqi@0 122 ensureProperName(reader, QNAME_HANDLER_CLASS);
aoqi@0 123 String handlerClass =
aoqi@0 124 XMLStreamReaderUtil.getElementText(reader).trim();
aoqi@0 125 handler.setHandlerClass(handlerClass);
aoqi@0 126 XMLStreamReaderUtil.nextContent(reader);
aoqi@0 127
aoqi@0 128 // init params (ignored)
aoqi@0 129 while (reader.getName().equals(QNAME_HANDLER_PARAM)) {
aoqi@0 130 skipInitParamElement(reader);
aoqi@0 131 }
aoqi@0 132
aoqi@0 133 // headers (ignored)
aoqi@0 134 while (reader.getName().equals(QNAME_HANDLER_HEADER)) {
aoqi@0 135 skipTextElement(reader);
aoqi@0 136 }
aoqi@0 137
aoqi@0 138 // roles (not stored per handler)
aoqi@0 139 while (reader.getName().equals(QNAME_HANDLER_ROLE)) {
aoqi@0 140 List<String> soapRoles = handler.getSoapRoles();
aoqi@0 141 soapRoles.add(XMLStreamReaderUtil.getElementText(reader));
aoqi@0 142 XMLStreamReaderUtil.nextContent(reader);
aoqi@0 143 }
aoqi@0 144
aoqi@0 145 handlers.add(handler);
aoqi@0 146
aoqi@0 147 // move past </handler>
aoqi@0 148 ensureProperName(reader, QNAME_HANDLER);
aoqi@0 149 XMLStreamReaderUtil.nextContent(reader);
aoqi@0 150 }
aoqi@0 151
aoqi@0 152 // move past </handler-chain>
aoqi@0 153 ensureProperName(reader, QNAME_HANDLER_CHAIN);
aoqi@0 154 hChains.add(hChain);
aoqi@0 155 XMLStreamReaderUtil.nextContent(reader);
aoqi@0 156 }
aoqi@0 157
aoqi@0 158 return handlerModel;
aoqi@0 159 }
aoqi@0 160
aoqi@0 161 /**
aoqi@0 162 * <p>This method is called internally by HandlerAnnotationProcessor,
aoqi@0 163 * and by
aoqi@0 164 * {@link com.sun.xml.internal.ws.transport.http.DeploymentDescriptorParser}
aoqi@0 165 * directly when it reaches the handler chains element in the
aoqi@0 166 * descriptor file it is parsing.
aoqi@0 167 * @param reader should be on <handler-chains> element
aoqi@0 168 * @return A HandlerAnnotationInfo object that stores the
aoqi@0 169 * handlers and roles.
aoqi@0 170 */
aoqi@0 171
aoqi@0 172
aoqi@0 173
aoqi@0 174 public static HandlerAnnotationInfo parseHandlerFile(XMLStreamReader reader,
aoqi@0 175 ClassLoader classLoader, QName serviceName, QName portName,
aoqi@0 176 WSBinding wsbinding) {
aoqi@0 177 ensureProperName(reader,QNAME_HANDLER_CHAINS);
aoqi@0 178 String bindingId = wsbinding.getBindingId().toString();
aoqi@0 179 HandlerAnnotationInfo info = new HandlerAnnotationInfo();
aoqi@0 180
aoqi@0 181 XMLStreamReaderUtil.nextElementContent(reader);
aoqi@0 182
aoqi@0 183 List<Handler> handlerChain = new ArrayList<Handler>();
aoqi@0 184 Set<String> roles = new HashSet<String>();
aoqi@0 185
aoqi@0 186 while (reader.getName().equals(QNAME_HANDLER_CHAIN)) {
aoqi@0 187
aoqi@0 188 XMLStreamReaderUtil.nextElementContent(reader);
aoqi@0 189
aoqi@0 190 if (reader.getName().equals(QNAME_CHAIN_PORT_PATTERN)) {
aoqi@0 191 if (portName == null) {
aoqi@0 192 logger.warning("handler chain sepcified for port " +
aoqi@0 193 "but port QName passed to parser is null");
aoqi@0 194 }
aoqi@0 195 boolean parseChain = JAXWSUtils.matchQNames(portName,
aoqi@0 196 XMLStreamReaderUtil.getElementQName(reader));
aoqi@0 197 if (!parseChain) {
aoqi@0 198 skipChain(reader);
aoqi@0 199 continue;
aoqi@0 200 }
aoqi@0 201 XMLStreamReaderUtil.nextElementContent(reader);
aoqi@0 202 } else if (reader.getName().equals(QNAME_CHAIN_PROTOCOL_BINDING)) {
aoqi@0 203 if (bindingId == null) {
aoqi@0 204 logger.warning("handler chain sepcified for bindingId " +
aoqi@0 205 "but bindingId passed to parser is null");
aoqi@0 206 }
aoqi@0 207 String bindingConstraint = XMLStreamReaderUtil.getElementText(reader);
aoqi@0 208 boolean skipThisChain = true;
aoqi@0 209 StringTokenizer stk = new StringTokenizer(bindingConstraint);
aoqi@0 210 List<String> bindingList = new ArrayList<String>();
aoqi@0 211 while(stk.hasMoreTokens()) {
aoqi@0 212 String tokenOrURI = stk.nextToken();
aoqi@0 213 /*
aoqi@0 214 Convert short-form tokens to API's binding ids
aoqi@0 215 Unknown token, Put it as it is
aoqi@0 216 */
aoqi@0 217 tokenOrURI = DeploymentDescriptorParser.getBindingIdForToken(tokenOrURI);
aoqi@0 218 String binding = BindingID.parse(tokenOrURI).toString();
aoqi@0 219 bindingList.add(binding);
aoqi@0 220 }
aoqi@0 221 if(bindingList.contains(bindingId)){
aoqi@0 222 skipThisChain = false;
aoqi@0 223 }
aoqi@0 224
aoqi@0 225 if (skipThisChain) {
aoqi@0 226 skipChain(reader);
aoqi@0 227 continue;
aoqi@0 228 }
aoqi@0 229 XMLStreamReaderUtil.nextElementContent(reader);
aoqi@0 230 } else if (reader.getName().equals(QNAME_CHAIN_SERVICE_PATTERN)) {
aoqi@0 231 if (serviceName == null) {
aoqi@0 232 logger.warning("handler chain sepcified for service " +
aoqi@0 233 "but service QName passed to parser is null");
aoqi@0 234 }
aoqi@0 235 boolean parseChain = JAXWSUtils.matchQNames(
aoqi@0 236 serviceName,
aoqi@0 237 XMLStreamReaderUtil.getElementQName(reader));
aoqi@0 238 if (!parseChain) {
aoqi@0 239 skipChain(reader);
aoqi@0 240 continue;
aoqi@0 241 }
aoqi@0 242 XMLStreamReaderUtil.nextElementContent(reader);
aoqi@0 243 }
aoqi@0 244
aoqi@0 245 // process all <handler> elements
aoqi@0 246 while (reader.getName().equals(QNAME_HANDLER)) {
aoqi@0 247 Handler handler;
aoqi@0 248
aoqi@0 249 XMLStreamReaderUtil.nextContent(reader);
aoqi@0 250 if (reader.getName().equals(QNAME_HANDLER_NAME)) {
aoqi@0 251 skipTextElement(reader);
aoqi@0 252 }
aoqi@0 253
aoqi@0 254 // handler class
aoqi@0 255 ensureProperName(reader, QNAME_HANDLER_CLASS);
aoqi@0 256 try {
aoqi@0 257 handler = (Handler) loadClass(classLoader,
aoqi@0 258 XMLStreamReaderUtil.getElementText(reader).trim()).newInstance();
aoqi@0 259 } catch (InstantiationException ie){
aoqi@0 260 throw new RuntimeException(ie);
aoqi@0 261 } catch (IllegalAccessException e) {
aoqi@0 262 throw new RuntimeException(e);
aoqi@0 263 }
aoqi@0 264 XMLStreamReaderUtil.nextContent(reader);
aoqi@0 265
aoqi@0 266 // init params (ignored)
aoqi@0 267 while (reader.getName().equals(QNAME_HANDLER_PARAM)) {
aoqi@0 268 skipInitParamElement(reader);
aoqi@0 269 }
aoqi@0 270
aoqi@0 271 // headers (ignored)
aoqi@0 272 while (reader.getName().equals(QNAME_HANDLER_HEADER)) {
aoqi@0 273 skipTextElement(reader);
aoqi@0 274 }
aoqi@0 275
aoqi@0 276 // roles (not stored per handler)
aoqi@0 277 while (reader.getName().equals(QNAME_HANDLER_ROLE)) {
aoqi@0 278 roles.add(XMLStreamReaderUtil.getElementText(reader));
aoqi@0 279 XMLStreamReaderUtil.nextContent(reader);
aoqi@0 280 }
aoqi@0 281
aoqi@0 282 // call @PostConstruct method on handler if present
aoqi@0 283 for (Method method : handler.getClass().getMethods()) {
aoqi@0 284 if (method.getAnnotation(PostConstruct.class) == null) {
aoqi@0 285 continue;
aoqi@0 286 }
aoqi@0 287 try {
aoqi@0 288 method.invoke(handler, new Object [0]);
aoqi@0 289 break;
aoqi@0 290 } catch (Exception e) {
aoqi@0 291 throw new RuntimeException(e);
aoqi@0 292 }
aoqi@0 293 }
aoqi@0 294
aoqi@0 295 handlerChain.add(handler);
aoqi@0 296
aoqi@0 297 // move past </handler>
aoqi@0 298 ensureProperName(reader, QNAME_HANDLER);
aoqi@0 299 XMLStreamReaderUtil.nextContent(reader);
aoqi@0 300 }
aoqi@0 301
aoqi@0 302 // move past </handler-chain>
aoqi@0 303 ensureProperName(reader, QNAME_HANDLER_CHAIN);
aoqi@0 304 XMLStreamReaderUtil.nextContent(reader);
aoqi@0 305 }
aoqi@0 306
aoqi@0 307 info.setHandlers(handlerChain);
aoqi@0 308 info.setRoles(roles);
aoqi@0 309 return info;
aoqi@0 310 }
aoqi@0 311
aoqi@0 312 public HandlerAnnotationInfo getHandlersForPortInfo(PortInfo info){
aoqi@0 313
aoqi@0 314 HandlerAnnotationInfo handlerInfo = new HandlerAnnotationInfo();
aoqi@0 315 List<Handler> handlerClassList = new ArrayList<Handler>();
aoqi@0 316 Set<String> roles = new HashSet<String>();
aoqi@0 317
aoqi@0 318 for(HandlerChainType hchain : handlerChains) {
aoqi@0 319 boolean hchainMatched = false;
aoqi@0 320 if((!hchain.isConstraintSet()) ||
aoqi@0 321 JAXWSUtils.matchQNames(info.getServiceName(), hchain.getServiceNamePattern()) ||
aoqi@0 322 JAXWSUtils.matchQNames(info.getPortName(), hchain.getPortNamePattern()) ||
aoqi@0 323 hchain.getProtocolBindings().contains(info.getBindingID()) ){
aoqi@0 324 hchainMatched = true;
aoqi@0 325
aoqi@0 326 }
aoqi@0 327 if(hchainMatched) {
aoqi@0 328 for(HandlerType handler : hchain.getHandlers()) {
aoqi@0 329 try {
aoqi@0 330 Handler handlerClass = (Handler) loadClass(annotatedClass.getClassLoader(),
aoqi@0 331 handler.getHandlerClass()).newInstance();
aoqi@0 332 callHandlerPostConstruct(handlerClass);
aoqi@0 333 handlerClassList.add(handlerClass);
aoqi@0 334 } catch (InstantiationException ie){
aoqi@0 335 throw new RuntimeException(ie);
aoqi@0 336 } catch (IllegalAccessException e) {
aoqi@0 337 throw new RuntimeException(e);
aoqi@0 338 }
aoqi@0 339
aoqi@0 340 roles.addAll(handler.getSoapRoles());
aoqi@0 341 }
aoqi@0 342
aoqi@0 343 }
aoqi@0 344 }
aoqi@0 345
aoqi@0 346 handlerInfo.setHandlers(handlerClassList);
aoqi@0 347 handlerInfo.setRoles(roles);
aoqi@0 348 return handlerInfo;
aoqi@0 349
aoqi@0 350 }
aoqi@0 351
aoqi@0 352 private static Class loadClass(ClassLoader loader, String name) {
aoqi@0 353 try {
aoqi@0 354 return Class.forName(name, true, loader);
aoqi@0 355 } catch (ClassNotFoundException e) {
aoqi@0 356 throw new UtilException(
aoqi@0 357 "util.handler.class.not.found",
aoqi@0 358 name);
aoqi@0 359 }
aoqi@0 360 }
aoqi@0 361
aoqi@0 362 private static void callHandlerPostConstruct(Object handlerClass) {
aoqi@0 363 // call @PostConstruct method on handler if present
aoqi@0 364 for (Method method : handlerClass.getClass().getMethods()) {
aoqi@0 365 if (method.getAnnotation(PostConstruct.class) == null) {
aoqi@0 366 continue;
aoqi@0 367 }
aoqi@0 368 try {
aoqi@0 369 method.invoke(handlerClass, new Object [0]);
aoqi@0 370 break;
aoqi@0 371 } catch (Exception e) {
aoqi@0 372 throw new RuntimeException(e);
aoqi@0 373 }
aoqi@0 374 }
aoqi@0 375 }
aoqi@0 376
aoqi@0 377 private static void skipChain(XMLStreamReader reader) {
aoqi@0 378 while (XMLStreamReaderUtil.nextContent(reader) !=
aoqi@0 379 XMLStreamConstants.END_ELEMENT ||
aoqi@0 380 !reader.getName().equals(QNAME_HANDLER_CHAIN)) {}
aoqi@0 381 XMLStreamReaderUtil.nextElementContent(reader);
aoqi@0 382 }
aoqi@0 383
aoqi@0 384 private static void skipTextElement(XMLStreamReader reader) {
aoqi@0 385 XMLStreamReaderUtil.nextContent(reader);
aoqi@0 386 XMLStreamReaderUtil.nextElementContent(reader);
aoqi@0 387 XMLStreamReaderUtil.nextElementContent(reader);
aoqi@0 388 }
aoqi@0 389
aoqi@0 390 private static void skipInitParamElement(XMLStreamReader reader) {
aoqi@0 391 int state;
aoqi@0 392 do {
aoqi@0 393 state = XMLStreamReaderUtil.nextContent(reader);
aoqi@0 394 } while (state != XMLStreamReader.END_ELEMENT ||
aoqi@0 395 !reader.getName().equals(QNAME_HANDLER_PARAM));
aoqi@0 396 XMLStreamReaderUtil.nextElementContent(reader);
aoqi@0 397 }
aoqi@0 398
aoqi@0 399 private static void ensureProperName(XMLStreamReader reader,
aoqi@0 400 QName expectedName) {
aoqi@0 401
aoqi@0 402 if (!reader.getName().equals(expectedName)) {
aoqi@0 403 failWithLocalName("util.parser.wrong.element", reader,
aoqi@0 404 expectedName.getLocalPart());
aoqi@0 405 }
aoqi@0 406 }
aoqi@0 407
aoqi@0 408 static void ensureProperName(XMLStreamReader reader, String expectedName) {
aoqi@0 409 if (!reader.getLocalName().equals(expectedName)) {
aoqi@0 410 failWithLocalName("util.parser.wrong.element", reader,
aoqi@0 411 expectedName);
aoqi@0 412 }
aoqi@0 413 }
aoqi@0 414
aoqi@0 415 private static void failWithLocalName(String key,
aoqi@0 416 XMLStreamReader reader, String arg) {
aoqi@0 417 throw new UtilException(key,
aoqi@0 418 Integer.toString(reader.getLocation().getLineNumber()),
aoqi@0 419 reader.getLocalName(),
aoqi@0 420 arg );
aoqi@0 421 }
aoqi@0 422
aoqi@0 423 public static final String PROTOCOL_SOAP11_TOKEN = "##SOAP11_HTTP";
aoqi@0 424 public static final String PROTOCOL_SOAP12_TOKEN = "##SOAP12_HTTP";
aoqi@0 425 public static final String PROTOCOL_XML_TOKEN = "##XML_HTTP";
aoqi@0 426
aoqi@0 427 public static final String NS_109 =
aoqi@0 428 "http://java.sun.com/xml/ns/javaee";
aoqi@0 429 public static final QName QNAME_CHAIN_PORT_PATTERN =
aoqi@0 430 new QName(NS_109, "port-name-pattern");
aoqi@0 431 public static final QName QNAME_CHAIN_PROTOCOL_BINDING =
aoqi@0 432 new QName(NS_109, "protocol-bindings");
aoqi@0 433 public static final QName QNAME_CHAIN_SERVICE_PATTERN =
aoqi@0 434 new QName(NS_109, "service-name-pattern");
aoqi@0 435 public static final QName QNAME_HANDLER_CHAIN =
aoqi@0 436 new QName(NS_109, "handler-chain");
aoqi@0 437 public static final QName QNAME_HANDLER_CHAINS =
aoqi@0 438 new QName(NS_109, "handler-chains");
aoqi@0 439 public static final QName QNAME_HANDLER =
aoqi@0 440 new QName(NS_109, "handler");
aoqi@0 441 public static final QName QNAME_HANDLER_NAME =
aoqi@0 442 new QName(NS_109, "handler-name");
aoqi@0 443 public static final QName QNAME_HANDLER_CLASS =
aoqi@0 444 new QName(NS_109, "handler-class");
aoqi@0 445 public static final QName QNAME_HANDLER_PARAM =
aoqi@0 446 new QName(NS_109, "init-param");
aoqi@0 447 public static final QName QNAME_HANDLER_PARAM_NAME =
aoqi@0 448 new QName(NS_109, "param-name");
aoqi@0 449 public static final QName QNAME_HANDLER_PARAM_VALUE =
aoqi@0 450 new QName(NS_109, "param-value");
aoqi@0 451 public static final QName QNAME_HANDLER_HEADER =
aoqi@0 452 new QName(NS_109, "soap-header");
aoqi@0 453 public static final QName QNAME_HANDLER_ROLE =
aoqi@0 454 new QName(NS_109, "soap-role");
aoqi@0 455
aoqi@0 456 static class HandlerChainType {
aoqi@0 457 //constraints
aoqi@0 458 QName serviceNamePattern;
aoqi@0 459 QName portNamePattern;
aoqi@0 460 List<String> protocolBindings;
aoqi@0 461
aoqi@0 462 // This flag is set if one of the above constraint is set on handler chain
aoqi@0 463 boolean constraintSet = false;
aoqi@0 464
aoqi@0 465 List<HandlerType> handlers;
aoqi@0 466 String id;
aoqi@0 467
aoqi@0 468
aoqi@0 469 /** Creates a new instance of HandlerChain */
aoqi@0 470 public HandlerChainType() {
aoqi@0 471 protocolBindings = new ArrayList<String>();
aoqi@0 472 }
aoqi@0 473
aoqi@0 474 public void setServiceNamePattern(QName value) {
aoqi@0 475 this.serviceNamePattern = value;
aoqi@0 476 constraintSet = true;
aoqi@0 477 }
aoqi@0 478
aoqi@0 479 public QName getServiceNamePattern() {
aoqi@0 480 return serviceNamePattern;
aoqi@0 481 }
aoqi@0 482
aoqi@0 483 public void setPortNamePattern(QName value) {
aoqi@0 484 this.portNamePattern = value;
aoqi@0 485 constraintSet = true;
aoqi@0 486 }
aoqi@0 487
aoqi@0 488 public QName getPortNamePattern() {
aoqi@0 489 return portNamePattern;
aoqi@0 490 }
aoqi@0 491
aoqi@0 492 public List<java.lang.String> getProtocolBindings() {
aoqi@0 493 return this.protocolBindings;
aoqi@0 494 }
aoqi@0 495
aoqi@0 496 public void addProtocolBinding(String tokenOrURI){
aoqi@0 497 /*
aoqi@0 498 Convert short-form tokens to API's binding ids
aoqi@0 499 Unknown token, Put it as it is
aoqi@0 500 */
aoqi@0 501 tokenOrURI = DeploymentDescriptorParser.getBindingIdForToken(tokenOrURI);
aoqi@0 502 String binding = BindingID.parse(tokenOrURI).toString();
aoqi@0 503 protocolBindings.add(binding);
aoqi@0 504 constraintSet = true;
aoqi@0 505 }
aoqi@0 506
aoqi@0 507 public boolean isConstraintSet() {
aoqi@0 508 return constraintSet || !protocolBindings.isEmpty();
aoqi@0 509 }
aoqi@0 510 public java.lang.String getId() {
aoqi@0 511 return id;
aoqi@0 512 }
aoqi@0 513
aoqi@0 514 public void setId(java.lang.String value) {
aoqi@0 515 this.id = value;
aoqi@0 516 }
aoqi@0 517
aoqi@0 518 public List<HandlerType> getHandlers() {
aoqi@0 519 if (handlers == null) {
aoqi@0 520 handlers = new ArrayList<HandlerType>();
aoqi@0 521 }
aoqi@0 522 return this.handlers;
aoqi@0 523 }
aoqi@0 524 }
aoqi@0 525
aoqi@0 526 static class HandlerType {
aoqi@0 527 String handlerName;
aoqi@0 528 String handlerClass;
aoqi@0 529 List<String> soapRoles;
aoqi@0 530
aoqi@0 531 java.lang.String id;
aoqi@0 532
aoqi@0 533 /** Creates a new instance of HandlerComponent */
aoqi@0 534 public HandlerType() {
aoqi@0 535 }
aoqi@0 536
aoqi@0 537 public String getHandlerName() {
aoqi@0 538 return handlerName;
aoqi@0 539 }
aoqi@0 540
aoqi@0 541 public void setHandlerName(String value) {
aoqi@0 542 this.handlerName = value;
aoqi@0 543 }
aoqi@0 544
aoqi@0 545 public String getHandlerClass() {
aoqi@0 546 return handlerClass;
aoqi@0 547 }
aoqi@0 548
aoqi@0 549 public void setHandlerClass(String value) {
aoqi@0 550 this.handlerClass = value;
aoqi@0 551 }
aoqi@0 552
aoqi@0 553 public java.lang.String getId() {
aoqi@0 554 return id;
aoqi@0 555 }
aoqi@0 556
aoqi@0 557 public void setId(java.lang.String value) {
aoqi@0 558 this.id = value;
aoqi@0 559 }
aoqi@0 560
aoqi@0 561 public List<String> getSoapRoles() {
aoqi@0 562 if (soapRoles == null) {
aoqi@0 563 soapRoles = new ArrayList<String>();
aoqi@0 564 }
aoqi@0 565 return this.soapRoles;
aoqi@0 566 }
aoqi@0 567 }
aoqi@0 568 }

mercurial