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 javax.jbi.servicedesc;
018    
019    import javax.xml.namespace.QName;
020    
021    /**
022     * Reference to an endpoint, used to refer to an endpoint as well as
023     * query information about the endpoint. An endpoint is an addressable
024     * entity in the JBI system, used for accessing the provider of a
025     * specific service.
026     *
027     * @author JSR208 Expert Group
028     */
029    public interface ServiceEndpoint {
030    
031        /**
032         * Get a reference to this endpoint, using an endpoint reference
033         * vocabulary that is known to the provider.
034         *
035         * @param operationName the name of the operation to be performed by a
036         *                      consumer of the generated endpoint reference. Set
037         *                      to null if this is not applicable.
038         * @return endpoint reference as an XML fragment; null if the provider
039         *         does not support such references.
040         */
041        org.w3c.dom.DocumentFragment getAsReference(QName operationName);
042    
043        /**
044         * Returns the name of this endpoint.
045         *
046         * @return the endpoint name
047         */
048        String getEndpointName();
049    
050        /**
051         * Get the qualified names of all the interfaces implemented by this
052         * service endpoint.
053         *
054         * @return array of all interfaces implemented by this service endpoint;
055         *         must be non-null and non-empty.
056         */
057        javax.xml.namespace.QName[] getInterfaces();
058    
059        /**
060         * Returns the service name of this endpoint.
061         * 
062         * @return the qualified service name.
063         */
064        javax.xml.namespace.QName getServiceName();
065    }