| /* |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| */ |
| |
| package org.apache.axis2.jaxws.message.databinding; |
| |
| import org.apache.axis2.context.MessageContext; |
| import org.apache.axis2.datasource.jaxb.AttachmentContext; |
| import org.apache.axis2.datasource.jaxb.JAXBDSContext; |
| import org.apache.axis2.jaxws.message.Message; |
| import org.apache.axis2.jaxws.message.attachments.MessageAttachmentContext; |
| import org.apache.axis2.jaxws.spi.Constants; |
| |
| import javax.xml.bind.JAXBContext; |
| import java.util.TreeSet; |
| |
| /* |
| * A JAXBBlockContext controls access to the JAXBContext |
| * In addition the JAXBBlockContext contains additional contextural information needed |
| * by the JAX-WS component |
| */ |
| |
| public class JAXBBlockContext extends JAXBDSContext { |
| |
| Message message = null; |
| /** |
| * Full Constructor JAXBBlockContext (most performant) |
| * |
| * @param packages Set of packages needed by the JAXBContext. |
| */ |
| public JAXBBlockContext(TreeSet<String> packages, String packagesKey) { |
| super(packages, packagesKey); |
| } |
| |
| /** |
| * Slightly slower constructor |
| * |
| * @param packages |
| */ |
| public JAXBBlockContext(TreeSet<String> packages) { |
| this(packages, packages.toString()); |
| } |
| |
| /** |
| * Normal Constructor JAXBBlockContext |
| * |
| * @param contextPackage |
| * @deprecated |
| */ |
| public JAXBBlockContext(String contextPackage) { |
| super(contextPackage); |
| } |
| |
| /** |
| * "Dispatch" Constructor Use this full constructor when the JAXBContent is provided by the |
| * customer. |
| * |
| * @param jaxbContext |
| */ |
| public JAXBBlockContext(JAXBContext jaxbContext) { |
| super(jaxbContext); |
| } |
| |
| public Message getMessage() { |
| return message; |
| } |
| |
| public void setMessage(Message message) { |
| this.message = message; |
| } |
| |
| @Override |
| protected AttachmentContext createAttachmentContext() { |
| return new MessageAttachmentContext(getMessage()); |
| } |
| |
| public ClassLoader getClassLoader() { |
| if(message != null && message.getMessageContext() != null) { |
| return (ClassLoader) message.getMessageContext(). |
| getProperty(Constants.CACHE_CLASSLOADER); |
| } |
| return super.getClassLoader(); |
| } |
| |
| public MessageContext getMessageContext() { |
| if(message != null && message.getMessageContext() != null && |
| message.getMessageContext().getAxisMessageContext() != null) { |
| super.setMessageContext(message.getMessageContext().getAxisMessageContext()); |
| } |
| return super.getMessageContext(); |
| } |
| |
| } |