View Javadoc
1   /**
2    * Copyright 2005-2014 The Kuali Foundation
3    *
4    * Licensed under the Educational Community License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    * http://www.opensource.org/licenses/ecl2.php
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  package org.kuali.rice.ksb.api.registry;
17  
18  import javax.xml.namespace.QName;
19  
20  import org.kuali.rice.core.api.CoreConstants;
21  import org.kuali.rice.core.api.mo.common.Versioned;
22  import org.kuali.rice.ksb.api.bus.ServiceConfiguration;
23  
24  /**
25   * Defines the contract for information about a service that is published in
26   * the {@link ServiceRegistry}.
27   * 
28   * @see ServiceRegistry
29   * 
30   * @author Kuali Rice Team (rice.collab@kuali.org)
31   *
32   */
33  public interface ServiceInfoContract extends Versioned {
34  
35  	/**
36  	 * Returns the identifier for the service.
37  	 * 
38  	 * @return the identifier for the service, will only be null if the
39  	 * service has not yet been published to the registry
40  	 */
41  	String getServiceId();
42  
43  	/**
44  	 * Returns the name of the service as a qualified name consisting of a
45  	 * namespace and a name.
46  	 * 
47  	 * @return the name of the service, should never be null
48  	 */
49  	QName getServiceName();
50  
51  	/**
52  	 * Returns the URL of the service as a string.
53  	 * 
54  	 * @return the url of the service, should never be null or blank
55  	 */
56  	String getEndpointUrl();
57  	
58  	/**
59  	 * Returns the id of the instance that published and owns the service.
60  	 * 
61  	 * @return the instance id of this service, should never be null or blank
62  	 */
63  	String getInstanceId();
64  	
65  	/**
66  	 * Returns the id of the application that published and owns the service.
67  	 * 
68  	 * @return the application id of this service, should never be null or blank
69  	 */
70  	String getApplicationId();
71  
72  	/**
73  	 * Return the IP address of the server on which the application is running which
74  	 * published and owns the service.  This value could be either an IPv4 or
75  	 * IPv6 address, but it should never return a null or empty string.
76  	 * 
77  	 * @return the IP address of this service, should never be null or blank
78  	 */
79  	String getServerIpAddress();
80  	
81  	/**
82  	 * Returns the type of this service.  Will generally distinguish the format
83  	 * of the data being brokered by the service (i.e. SOAP, REST, Java
84  	 * Serialization, etc.)
85  	 * 
86  	 * @return the type of this service, should never be null or blank
87  	 */
88  	String getType();
89  	
90  	/**
91  	 * Returns the version information of this service.  The publisher of the
92  	 * service can use any value they choose for the service versions.
93  	 * However, there is one standard version which represents a service
94  	 * without any version information, and that is {@link CoreConstants.Versions#UNSPECIFIED}.
95  	 * 
96  	 * @return the version of this service, or {@link CoreConstants.Versions#UNSPECIFIED}
97  	 * if no version has been secified, should never return a null or blank value
98  	 */
99  	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 	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 	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 	String getChecksum();
126 
127     /**
128      * Deprecated value which previously stored version number for optimistic locking purposes. Optimistic locking was
129      * never really necessary for service info. This method will always return 1.
130      * 
131      * @deprecated will always return 1
132      * @return 1
133      */
134     @Deprecated
135     @Override
136     Long getVersionNumber();
137 	
138 }