Package org.jboss.ws.core.jaxrpc.handler

Source Code of org.jboss.ws.core.jaxrpc.handler.HandlerDelegateJAXRPC

/*     */ package org.jboss.ws.core.jaxrpc.handler;
/*     */
/*     */ import java.util.ArrayList;
/*     */ import java.util.Collections;
/*     */ import java.util.HashMap;
/*     */ import java.util.HashSet;
/*     */ import java.util.List;
/*     */ import java.util.Observable;
/*     */ import java.util.Set;
/*     */ import javax.xml.namespace.QName;
/*     */ import javax.xml.rpc.handler.HandlerChain;
/*     */ import javax.xml.rpc.handler.HandlerInfo;
/*     */ import org.jboss.logging.Logger;
/*     */ import org.jboss.ws.core.RoleSource;
/*     */ import org.jboss.ws.core.server.ServerHandlerDelegate;
/*     */ import org.jboss.ws.core.soap.MessageContextAssociation;
/*     */ import org.jboss.ws.extensions.xop.XOPContext;
/*     */ import org.jboss.ws.metadata.umdm.HandlerMetaData;
/*     */ import org.jboss.ws.metadata.umdm.HandlerMetaDataJAXRPC;
/*     */ import org.jboss.ws.metadata.umdm.ServerEndpointMetaData;
/*     */ import org.jboss.wsf.spi.metadata.j2ee.serviceref.UnifiedHandlerMetaData.HandlerType;
/*     */ import org.jboss.wsf.spi.metadata.j2ee.serviceref.UnifiedInitParamMetaData;
/*     */
/*     */ public class HandlerDelegateJAXRPC extends ServerHandlerDelegate
/*     */   implements RoleSource
/*     */ {
/*  57 */   private static Logger log = Logger.getLogger(HandlerDelegateJAXRPC.class);
/*     */   private ServerHandlerChain preHandlerChain;
/*     */   private ServerHandlerChain jaxrpcHandlerChain;
/*     */   private ServerHandlerChain postHandlerChain;
/*  66 */   Set<QName> headers = new HashSet();
/*     */
/*  68 */   Set<String> roles = new HashSet();
/*     */
/*     */   public HandlerDelegateJAXRPC(ServerEndpointMetaData sepMetaData)
/*     */   {
/*  72 */     super(sepMetaData);
/*  73 */     sepMetaData.registerConfigObserver(this);
/*     */   }
/*     */
/*     */   public UnifiedHandlerMetaData.HandlerType[] getHandlerTypeOrder()
/*     */   {
/*  81 */     return new UnifiedHandlerMetaData.HandlerType[] { UnifiedHandlerMetaData.HandlerType.PRE, UnifiedHandlerMetaData.HandlerType.ENDPOINT, UnifiedHandlerMetaData.HandlerType.POST };
/*     */   }
/*     */
/*     */   public boolean callRequestHandlerChain(ServerEndpointMetaData sepMetaData, UnifiedHandlerMetaData.HandlerType type)
/*     */   {
/*  86 */     SOAPMessageContextJAXRPC msgContext = (SOAPMessageContextJAXRPC)MessageContextAssociation.peekMessageContext();
/*     */
/*  89 */     if (!isInitialized())
/*     */     {
/*  91 */       initHandlerChain(sepMetaData, UnifiedHandlerMetaData.HandlerType.PRE);
/*  92 */       initHandlerChain(sepMetaData, UnifiedHandlerMetaData.HandlerType.ENDPOINT);
/*  93 */       initHandlerChain(sepMetaData, UnifiedHandlerMetaData.HandlerType.POST);
/*  94 */       setInitialized(true);
/*     */     }
/*     */
/*  97 */     boolean status = true;
/*     */
/*  99 */     HandlerChain handlerChain = null;
/* 100 */     if (type == UnifiedHandlerMetaData.HandlerType.PRE)
/* 101 */       handlerChain = this.preHandlerChain;
/* 102 */     else if (type == UnifiedHandlerMetaData.HandlerType.ENDPOINT)
/* 103 */       handlerChain = this.jaxrpcHandlerChain;
/* 104 */     else if (type == UnifiedHandlerMetaData.HandlerType.POST) {
/* 105 */       handlerChain = this.postHandlerChain;
/*     */     }
/* 107 */     if (handlerChain != null) {
/* 108 */       status = handlerChain.handleRequest(msgContext);
/*     */     }
/* 110 */     return status;
/*     */   }
/*     */
/*     */   public boolean callResponseHandlerChain(ServerEndpointMetaData sepMetaData, UnifiedHandlerMetaData.HandlerType type)
/*     */   {
/* 115 */     SOAPMessageContextJAXRPC msgContext = (SOAPMessageContextJAXRPC)MessageContextAssociation.peekMessageContext();
/*     */
/* 117 */     HandlerChain handlerChain = null;
/* 118 */     if (type == UnifiedHandlerMetaData.HandlerType.PRE)
/* 119 */       handlerChain = this.preHandlerChain;
/* 120 */     else if (type == UnifiedHandlerMetaData.HandlerType.ENDPOINT)
/* 121 */       handlerChain = this.jaxrpcHandlerChain;
/* 122 */     else if (type == UnifiedHandlerMetaData.HandlerType.POST) {
/* 123 */       handlerChain = this.postHandlerChain;
/*     */     }
/* 125 */     boolean status = handlerChain != null ? handlerChain.handleResponse(msgContext) : true;
/*     */
/* 127 */     if (type == UnifiedHandlerMetaData.HandlerType.ENDPOINT) {
/* 128 */       XOPContext.visitAndRestoreXOPData();
/*     */     }
/* 130 */     return status;
/*     */   }
/*     */
/*     */   public boolean callFaultHandlerChain(ServerEndpointMetaData sepMetaData, UnifiedHandlerMetaData.HandlerType type, Exception ex)
/*     */   {
/* 135 */     SOAPMessageContextJAXRPC msgContext = (SOAPMessageContextJAXRPC)MessageContextAssociation.peekMessageContext();
/*     */
/* 137 */     HandlerChain handlerChain = null;
/* 138 */     if (type == UnifiedHandlerMetaData.HandlerType.PRE)
/* 139 */       handlerChain = this.preHandlerChain;
/* 140 */     else if (type == UnifiedHandlerMetaData.HandlerType.ENDPOINT)
/* 141 */       handlerChain = this.jaxrpcHandlerChain;
/* 142 */     else if (type == UnifiedHandlerMetaData.HandlerType.POST) {
/* 143 */       handlerChain = this.postHandlerChain;
/*     */     }
/* 145 */     boolean status = handlerChain != null ? handlerChain.handleFault(msgContext) : true;
/*     */
/* 147 */     if (type == UnifiedHandlerMetaData.HandlerType.ENDPOINT) {
/* 148 */       XOPContext.visitAndRestoreXOPData();
/*     */     }
/* 150 */     return status;
/*     */   }
/*     */
/*     */   public void closeHandlerChain(ServerEndpointMetaData sepMetaData, UnifiedHandlerMetaData.HandlerType type)
/*     */   {
/*     */   }
/*     */
/*     */   private void initHandlerChain(ServerEndpointMetaData sepMetaData, UnifiedHandlerMetaData.HandlerType type)
/*     */   {
/* 163 */     Set handlerRoles = new HashSet();
/* 164 */     List hInfos = new ArrayList();
/*     */
/* 166 */     for (HandlerMetaData handlerMetaData : sepMetaData.getHandlerMetaData(type))
/*     */     {
/* 168 */       HandlerMetaDataJAXRPC jaxrpcMetaData = (HandlerMetaDataJAXRPC)handlerMetaData;
/* 169 */       handlerRoles.addAll(jaxrpcMetaData.getSoapRoles());
/*     */
/* 171 */       HashMap hConfig = new HashMap();
/* 172 */       for (UnifiedInitParamMetaData param : jaxrpcMetaData.getInitParams())
/*     */       {
/* 174 */         hConfig.put(param.getParamName(), param.getParamValue());
/*     */       }
/*     */
/* 177 */       Set headers = jaxrpcMetaData.getSoapHeaders();
/* 178 */       QName[] headerArr = new QName[headers.size()];
/* 179 */       headers.toArray(headerArr);
/*     */
/* 181 */       Class hClass = jaxrpcMetaData.getHandlerClass();
/* 182 */       hConfig.put(UnifiedHandlerMetaData.HandlerType.class.getName(), jaxrpcMetaData.getHandlerType());
/* 183 */       HandlerInfo info = new HandlerInfo(hClass, hConfig, headerArr);
/*     */
/* 185 */       if (log.isDebugEnabled())
/* 186 */         log.debug("Adding server side handler to service '" + sepMetaData.getPortName() + "': " + info);
/* 187 */       hInfos.add(info);
/*     */     }
/*     */
/* 190 */     initHandlerChain(sepMetaData, hInfos, handlerRoles, type);
/*     */   }
/*     */
/*     */   private void initHandlerChain(ServerEndpointMetaData sepMetaData, List<HandlerInfo> hInfos, Set<String> handlerRoles, UnifiedHandlerMetaData.HandlerType type)
/*     */   {
/* 195 */     if (log.isDebugEnabled()) {
/* 196 */       log.debug("Init handler chain with [" + hInfos.size() + "] handlers");
/*     */     }
/* 198 */     ServerHandlerChain handlerChain = new ServerHandlerChain(hInfos, handlerRoles, type);
/* 199 */     if (type == UnifiedHandlerMetaData.HandlerType.PRE)
/* 200 */       this.preHandlerChain = handlerChain;
/* 201 */     else if (type == UnifiedHandlerMetaData.HandlerType.ENDPOINT)
/* 202 */       this.jaxrpcHandlerChain = handlerChain;
/* 203 */     else if (type == UnifiedHandlerMetaData.HandlerType.POST) {
/* 204 */       this.postHandlerChain = handlerChain;
/*     */     }
/* 206 */     if (handlerChain.getState() == 1)
/*     */     {
/* 209 */       handlerChain.init(null);
/*     */     }
/* 211 */     handlerChain.pullHeaders(this.headers);
/* 212 */     Collections.addAll(this.roles, handlerChain.getRoles());
/*     */   }
/*     */
/*     */   public Set<String> getRoles()
/*     */   {
/* 217 */     return this.roles;
/*     */   }
/*     */
/*     */   public Set<QName> getHeaders()
/*     */   {
/* 222 */     return this.headers;
/*     */   }
/*     */
/*     */   public void update(Observable observable, Object object)
/*     */   {
/*     */   }
/*     */ }

/* Location:           /home/mnovotny/projects/EMBEDDED_JBOSS_BETA3_COMMUNITY/embedded/output/lib/embedded-jboss/lib/jboss-embedded-all.jar
* Qualified Name:     org.jboss.ws.core.jaxrpc.handler.HandlerDelegateJAXRPC
* JD-Core Version:    0.6.0
*/
TOP

Related Classes of org.jboss.ws.core.jaxrpc.handler.HandlerDelegateJAXRPC

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.