001 /* 002 * Licensed to the Apache Software Foundation (ASF) under one 003 * or more contributor license agreements. See the NOTICE file 004 * distributed with this work for additional information 005 * regarding copyright ownership. The ASF licenses this file 006 * to you under the Apache License, Version 2.0 (the 007 * "License"); you may not use this file except in compliance 008 * with the License. You may obtain a copy of the License at 009 * 010 * http://www.apache.org/licenses/LICENSE-2.0 011 * 012 * Unless required by applicable law or agreed to in writing, 013 * software distributed under the License is distributed on an 014 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 015 * KIND, either express or implied. See the License for the 016 * specific language governing permissions and limitations 017 * under the License. 018 */ 019 020 package javax.xml.ws.wsaddressing; 021 022 import org.w3c.dom.Element; 023 024 import javax.xml.namespace.QName; 025 import javax.xml.ws.spi.Provider; 026 import java.util.ArrayList; 027 import java.util.List; 028 029 public final class W3CEndpointReferenceBuilder { 030 private String address; 031 private QName serviceName; 032 private QName endpointName; 033 private String wsdlDocumentLocation; 034 private List<Element> referenceParameters; 035 private List<Element> metadataElements; 036 037 public W3CEndpointReferenceBuilder() { 038 } 039 040 public W3CEndpointReferenceBuilder address(String address) { 041 this.address = address; 042 return this; 043 } 044 045 public W3CEndpointReferenceBuilder serviceName(QName serviceName) { 046 this.serviceName = serviceName; 047 return this; 048 } 049 050 public W3CEndpointReferenceBuilder endpointName(QName endpointName) { 051 //TODO NLS enable 052 if (this.serviceName == null) { 053 throw new IllegalStateException("The endpoint qname cannot be set before the service qname."); 054 } 055 056 this.endpointName = endpointName; 057 return this; 058 } 059 060 public W3CEndpointReferenceBuilder wsdlDocumentLocation(String wsdlDocumentLocation) { 061 this.wsdlDocumentLocation = wsdlDocumentLocation; 062 return this; 063 } 064 065 public W3CEndpointReferenceBuilder referenceParameter(Element referenceParameter) { 066 //TODO NLS enable 067 if (referenceParameter == null) { 068 throw new IllegalArgumentException("A reference parameter cannot be null."); 069 } 070 071 if (this.referenceParameters == null) { 072 this.referenceParameters = new ArrayList<Element>(); 073 } 074 075 this.referenceParameters.add(referenceParameter); 076 return this; 077 } 078 079 public W3CEndpointReferenceBuilder metadata(Element metadataElement) { 080 //TODO NLS enable 081 if (metadataElement == null) { 082 throw new IllegalArgumentException("A metadata element cannot be null."); 083 } 084 085 if (this.metadataElements == null) { 086 this.metadataElements = new ArrayList<Element>(); 087 } 088 089 this.metadataElements.add(metadataElement); 090 return this; 091 } 092 093 public W3CEndpointReference build() { 094 return Provider.provider().createW3CEndpointReference(address, 095 serviceName, 096 endpointName, 097 metadataElements, 098 wsdlDocumentLocation, 099 referenceParameters); 100 } 101 102 @Override 103 public String toString() { 104 // TODO Auto-generated method stub 105 return super.toString(); 106 } 107 }