1 /**
2 * Copyright 2005-2012 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 public 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 public 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 public 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 public 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 public 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 public 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 public 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 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 }