001    /**
002     * Copyright 2005-2013 The Kuali Foundation
003     *
004     * Licensed under the Educational Community License, Version 2.0 (the "License");
005     * you may not use this file except in compliance with the License.
006     * You may obtain a copy of the License at
007     *
008     * http://www.opensource.org/licenses/ecl2.php
009     *
010     * Unless required by applicable law or agreed to in writing, software
011     * distributed under the License is distributed on an "AS IS" BASIS,
012     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013     * See the License for the specific language governing permissions and
014     * limitations under the License.
015     */
016    package org.kuali.rice.ksb.api.registry;
017    
018    import javax.xml.namespace.QName;
019    
020    import org.kuali.rice.core.api.CoreConstants;
021    import org.kuali.rice.core.api.mo.common.Versioned;
022    import org.kuali.rice.ksb.api.bus.ServiceConfiguration;
023    
024    /**
025     * Defines the contract for information about a service that is published in
026     * the {@link ServiceRegistry}.
027     * 
028     * @see ServiceRegistry
029     * 
030     * @author Kuali Rice Team (rice.collab@kuali.org)
031     *
032     */
033    public interface ServiceInfoContract extends Versioned {
034    
035            /**
036             * Returns the identifier for the service.
037             * 
038             * @return the identifier for the service, will only be null if the
039             * service has not yet been published to the registry
040             */
041            public String getServiceId();
042    
043            /**
044             * Returns the name of the service as a qualified name consisting of a
045             * namespace and a name.
046             * 
047             * @return the name of the service, should never be null
048             */
049            public QName getServiceName();
050    
051            /**
052             * Returns the URL of the service as a string.
053             * 
054             * @return the url of the service, should never be null or blank
055             */
056            public String getEndpointUrl();
057            
058            /**
059             * Returns the id of the instance that published and owns the service.
060             * 
061             * @return the instance id of this service, should never be null or blank
062             */
063            public String getInstanceId();
064            
065            /**
066             * Returns the id of the application that published and owns the service.
067             * 
068             * @return the application id of this service, should never be null or blank
069             */
070            public String getApplicationId();
071    
072            /**
073             * Return the IP address of the server on which the application is running which
074             * published and owns the service.  This value could be either an IPv4 or
075             * IPv6 address, but it should never return a null or empty string.
076             * 
077             * @return the IP address of this service, should never be null or blank
078             */
079            public String getServerIpAddress();
080            
081            /**
082             * Returns the type of this service.  Will generally distinguish the format
083             * of the data being brokered by the service (i.e. SOAP, REST, Java
084             * Serialization, etc.)
085             * 
086             * @return the type of this service, should never be null or blank
087             */
088            public String getType();
089            
090            /**
091             * Returns the version information of this service.  The publisher of the
092             * service can use any value they choose for the service versions.
093             * However, there is one standard version which represents a service
094             * without any version information, and that is {@link CoreConstants.Versions#UNSPECIFIED}.
095             * 
096             * @return the version of this service, or {@link CoreConstants.Versions#UNSPECIFIED}
097             * if no version has been secified, should never return a null or blank value
098             */
099            public String getServiceVersion();
100            
101            /**
102             * Return the status of the service endpoint represented by this service.
103             * 
104             * @return the status of this service
105             */
106            public ServiceEndpointStatus getStatus();
107            
108            /**
109             * Returns the id of the service descriptor for this service.  This id can
110             * be used to help locate the {@link ServiceDescriptorContract} for this
111             * service which includes more detailed information on this service.
112             * 
113             * @return the id of the service descriptor for this service, will only return
114             * a null value if the service has not yet been published
115             */
116            public String getServiceDescriptorId();
117    
118            /**
119             * Returns a checksum value for the {@link ServiceConfiguration} stored in the
120             * {@link ServiceDescriptorContract} for this service.  This allows for fast
121             * comparison of services during various registry operations.
122             * 
123             * @return the checksum for this service, should never return a null or blank value
124             */
125            public String getChecksum();
126            
127    }