1 /* |
1 /* |
2 * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved. |
2 * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 * |
4 * |
5 * This code is free software; you can redistribute it and/or modify it |
5 * This code is free software; you can redistribute it and/or modify it |
6 * under the terms of the GNU General Public License version 2 only, as |
6 * under the terms of the GNU General Public License version 2 only, as |
7 * published by the Free Software Foundation. Oracle designates this |
7 * published by the Free Software Foundation. Oracle designates this |
52 */ |
52 */ |
53 private final List<Handler> handlerChain; |
53 private final List<Handler> handlerChain; |
54 private final List<LogicalHandler> logicalHandlers; |
54 private final List<LogicalHandler> logicalHandlers; |
55 private final List<SOAPHandler> soapHandlers; |
55 private final List<SOAPHandler> soapHandlers; |
56 private final List<MessageHandler> messageHandlers; |
56 private final List<MessageHandler> messageHandlers; |
57 private Set<QName> handlerKnownHeaders; |
57 private final Set<QName> handlerKnownHeaders; |
58 |
58 |
59 /** |
59 /** |
60 * @param roles This contains the roles assumed by the Binding implementation. |
60 * @param roles This contains the roles assumed by the Binding implementation. |
61 * @param handlerChain This contains the handler chain set on the Binding |
61 * @param handlerChain This contains the handler chain set on the Binding |
62 */ |
62 */ |
64 this.roles = roles; |
64 this.roles = roles; |
65 this.handlerChain = handlerChain; |
65 this.handlerChain = handlerChain; |
66 logicalHandlers = new ArrayList<LogicalHandler>(); |
66 logicalHandlers = new ArrayList<LogicalHandler>(); |
67 soapHandlers = new ArrayList<SOAPHandler>(); |
67 soapHandlers = new ArrayList<SOAPHandler>(); |
68 messageHandlers = new ArrayList<MessageHandler>(); |
68 messageHandlers = new ArrayList<MessageHandler>(); |
69 handlerKnownHeaders = new HashSet<QName>(); |
69 Set<QName> modHandlerKnownHeaders = new HashSet<QName>(); |
70 |
70 |
71 for (Handler handler : handlerChain) { |
71 for (Handler handler : handlerChain) { |
72 if (handler instanceof LogicalHandler) { |
72 if (handler instanceof LogicalHandler) { |
73 logicalHandlers.add((LogicalHandler) handler); |
73 logicalHandlers.add((LogicalHandler) handler); |
74 } else if (handler instanceof SOAPHandler) { |
74 } else if (handler instanceof SOAPHandler) { |
75 soapHandlers.add((SOAPHandler) handler); |
75 soapHandlers.add((SOAPHandler) handler); |
76 Set<QName> headers = ((SOAPHandler<?>) handler).getHeaders(); |
76 Set<QName> headers = ((SOAPHandler<?>) handler).getHeaders(); |
77 if (headers != null) { |
77 if (headers != null) { |
78 handlerKnownHeaders.addAll(headers); |
78 modHandlerKnownHeaders.addAll(headers); |
79 } |
79 } |
80 } else if (handler instanceof MessageHandler) { |
80 } else if (handler instanceof MessageHandler) { |
81 messageHandlers.add((MessageHandler) handler); |
81 messageHandlers.add((MessageHandler) handler); |
82 Set<QName> headers = ((MessageHandler<?>) handler).getHeaders(); |
82 Set<QName> headers = ((MessageHandler<?>) handler).getHeaders(); |
83 if (headers != null) { |
83 if (headers != null) { |
84 handlerKnownHeaders.addAll(headers); |
84 modHandlerKnownHeaders.addAll(headers); |
85 } |
85 } |
86 }else { |
86 }else { |
87 throw new HandlerException("handler.not.valid.type", |
87 throw new HandlerException("handler.not.valid.type", |
88 handler.getClass()); |
88 handler.getClass()); |
89 } |
89 } |
90 } |
90 } |
|
91 |
|
92 handlerKnownHeaders = Collections.unmodifiableSet(modHandlerKnownHeaders); |
91 } |
93 } |
92 |
94 |
93 /** |
95 /** |
94 * This is called when roles as reset on binding using SOAPBinding#setRoles(), to save reparsing the handlers again. |
96 * This is called when roles as reset on binding using SOAPBinding#setRoles(), to save reparsing the handlers again. |
95 * @param roles |
97 * @param roles |