All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.sun.xml.ws.tx.coord.common.EndpointReferenceBuilder Maven / Gradle / Ivy

There is a newer version: 4.0.3
Show newest version
/*
 * Copyright (c) 1997, 2020 Oracle and/or its affiliates. All rights reserved.
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Distribution License v. 1.0, which is available at
 * http://www.eclipse.org/org/documents/edl-v10.php.
 *
 * SPDX-License-Identifier: BSD-3-Clause
 */

package com.sun.xml.ws.tx.coord.common;

import com.sun.xml.ws.developer.MemberSubmissionEndpointReference;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import com.sun.xml.ws.api.tx.at.Transactional;

import jakarta.xml.ws.EndpointReference;
import jakarta.xml.ws.wsaddressing.W3CEndpointReference;
import java.util.ArrayList;
import java.util.List;


public abstract class EndpointReferenceBuilder {
    protected String address;
    protected List referenceParameters = new ArrayList();

    public static EndpointReferenceBuilder newInstance(Transactional.Version version) {
        if(Transactional.Version.WSAT10 == version||Transactional.Version.DEFAULT == version)
          return MemberSubmission();
        else if(Transactional.Version.WSAT11 == version || Transactional.Version.WSAT12 == version) {
          return W3C();
        }else {
            throw new IllegalArgumentException(version + "is not a supported ws-at version");
        }
    }
    public  static EndpointReferenceBuilder W3C() {
      return new  W3CEndpointReferenceBuilder();
    }

    public  static EndpointReferenceBuilder MemberSubmission() {
      return new  MemberSubmissionEndpointReferenceBuilder();
    }

    public EndpointReferenceBuilder address(String address){
        this.address = address;
        return this;
    }

    public EndpointReferenceBuilder referenceParameter(Element... elements){
        for (Element element : elements) {
            referenceParameters.add(element);
        }
        return this;
    }

    public EndpointReferenceBuilder referenceParameter(Node... elements){
        for (Node element : elements) {
            referenceParameters.add((Element) element);
        }
        return this;
    }


    public EndpointReferenceBuilder referenceParameter(List elements){
        this.referenceParameters.addAll(elements);
        return this;
    }

    public abstract T build();

    static class W3CEndpointReferenceBuilder extends EndpointReferenceBuilder{

        public W3CEndpointReference build() {
            jakarta.xml.ws.wsaddressing.W3CEndpointReferenceBuilder builder = new jakarta.xml.ws.wsaddressing.W3CEndpointReferenceBuilder();
            for (int i = 0; i < referenceParameters.size(); i++) {
                Element element =  referenceParameters.get(i);
                builder.referenceParameter(element);
            }
            W3CEndpointReference w3CEndpointReference = builder.address(address).build();
            return w3CEndpointReference;
        }
    }

    static class MemberSubmissionEndpointReferenceBuilder extends EndpointReferenceBuilder{

        public MemberSubmissionEndpointReference build() {
            MemberSubmissionEndpointReference epr = new MemberSubmissionEndpointReference();
            epr.addr = new MemberSubmissionEndpointReference.Address();
            epr.addr.uri = address;
            epr.referenceParameters = new MemberSubmissionEndpointReference.Elements();
            epr.referenceParameters.elements = new ArrayList();
            epr.referenceParameters.elements.addAll(referenceParameters);
            return epr;
        }
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy