001 /** 002 * Licensed to the Apache Software Foundation (ASF) under one or more 003 * contributor license agreements. See the NOTICE file distributed with 004 * this work for additional information regarding copyright ownership. 005 * The ASF licenses this file to You under the Apache License, Version 2.0 006 * (the "License"); you may not use this file except in compliance with 007 * the License. You may obtain a copy of the License at 008 * 009 * http://www.apache.org/licenses/LICENSE-2.0 010 * 011 * Unless required by applicable law or agreed to in writing, software 012 * distributed under the License is distributed on an "AS IS" BASIS, 013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 014 * See the License for the specific language governing permissions and 015 * limitations under the License. 016 */ 017 package org.apache.geronimo.jaxws; 018 019 import java.io.Serializable; 020 import java.io.StringWriter; 021 022 import javax.xml.bind.JAXBContext; 023 import javax.xml.bind.JAXBElement; 024 import javax.xml.bind.Marshaller; 025 import javax.xml.namespace.QName; 026 027 public class PortInfo implements Serializable { 028 029 private String serviceName; 030 031 private String portName; 032 033 private String seiInterfaceName; 034 035 private String wsdlFile; 036 037 private String servletLink; 038 039 private String handlersAsXML; 040 041 private boolean mtomEnabled; 042 043 private String binding; 044 045 private QName wsdlPort; 046 047 private QName wsdlService; 048 049 private String location; 050 051 public String getPortName() { 052 return portName; 053 } 054 055 public void setPortName(String pn) { 056 portName = pn; 057 } 058 059 public String getServiceEndpointInterfaceName() { 060 return seiInterfaceName; 061 } 062 063 public void setServiceEndpointInterfaceName(String sei) { 064 seiInterfaceName = sei; 065 } 066 067 public String getServiceLink() { 068 return servletLink; 069 } 070 071 public void setServiceLink(String sl) { 072 servletLink = sl; 073 } 074 075 public String getWsdlFile() { 076 return wsdlFile; 077 } 078 079 public void setWsdlFile(String wf) { 080 wsdlFile = wf; 081 } 082 083 public String getServiceName() { 084 return serviceName; 085 } 086 087 public void setServiceName(String sn) { 088 serviceName = sn; 089 } 090 091 public void setEnableMTOM(boolean mtomEnabled) { 092 this.mtomEnabled = mtomEnabled; 093 } 094 095 public boolean isMTOMEnabled() { 096 return this.mtomEnabled; 097 } 098 099 public void setProtocolBinding(String binding) { 100 this.binding = binding; 101 } 102 103 public String getProtocolBinding() { 104 return binding; 105 } 106 107 /* 108 * This is a bit tricky here since JAXB generated classes are not serializable, 109 * so serialize the handler chain to XML and pass it as a String. 110 */ 111 112 public void setHandlers(Class type, Object handlerChain) throws Exception { 113 if (handlerChain == null) { 114 return; 115 } 116 117 JAXBContext ctx = JAXBContext.newInstance(type); 118 Marshaller m = ctx.createMarshaller(); 119 StringWriter writer = new StringWriter(); 120 /* 121 * Since HandlerChainsType is a type, have to wrap it into some element 122 */ 123 QName rootElement = new QName("", "root"); 124 JAXBElement element = 125 new JAXBElement(rootElement, type, handlerChain); 126 m.marshal(element, writer); 127 128 this.handlersAsXML = writer.toString(); 129 } 130 131 public <T>T getHandlers(Class<T> type) throws Exception { 132 return HandlerChainsUtils.toHandlerChains(this.handlersAsXML, type); 133 } 134 135 public QName getWsdlPort() { 136 return wsdlPort; 137 } 138 139 public void setWsdlPort(QName wsdlPort) { 140 this.wsdlPort = wsdlPort; 141 } 142 143 public QName getWsdlService() { 144 return wsdlService; 145 } 146 147 public void setWsdlService(QName wsdlService) { 148 this.wsdlService = wsdlService; 149 } 150 151 public String getLocation() { 152 return location; 153 } 154 155 public void setLocation(String location) { 156 this.location = location; 157 } 158 159 /* 160 * private String serviceName; private String portName; private String 161 * seiInterfaceName; private String wsdlFile; private String servletLink; 162 */ 163 public String toString() { 164 return "[" + serviceName + ":" + portName + ":" + seiInterfaceName 165 + ":" + wsdlFile + "]"; 166 } 167 168 public String getHandlersAsXML() { 169 return handlersAsXML; 170 } 171 172 public void setHandlersAsXML(String handlersAsXML) { 173 this.handlersAsXML = handlersAsXML; 174 } 175 }