001: /* Copyright (c) 2001 - 2007 TOPP - www.openplans.org. All rights reserved.
002: * This code is licensed under the GPL 2.0 license, availible at the root
003: * application directory.
004: */
005: package org.geoserver.platform;
006:
007: import org.geotools.util.Version;
008:
009: /**
010: * A service descriptor which provides metadata such as id, and version.
011: * <p>
012: * Service descriptors are identified by an id, version pair. Two service
013: * descriptors are considered equal if they have the same id, and version.
014: * </p>
015: * <p>
016: * The underlying service implementation is a plain old java object,
017: * available via {@link #service}.
018: * </p>
019: *
020: * @author Justin Deoliveira, The Open Planning Project, jdeolive@openplans.org
021: *
022: */
023: public final class Service {
024: /**
025: * Identifier for the service.
026: */
027: final String id;
028:
029: /**
030: * The service implementation.
031: */
032: final Object service;
033:
034: /**
035: * The service version
036: */
037: final Version version;
038:
039: /**
040: * Creates a new service descriptor.
041: *
042: * @param id A string identifing the service.
043: * @param service The object implementing the service.
044: * @param version The version of the service.
045: */
046: public Service(String id, Object service, Version version) {
047: this .id = id;
048: this .service = service;
049: this .version = version;
050:
051: if (id == null) {
052: throw new NullPointerException("id");
053: }
054: }
055:
056: public String getId() {
057: return id;
058: }
059:
060: public Object getService() {
061: return service;
062: }
063:
064: public Version getVersion() {
065: return version;
066: }
067:
068: public boolean equals(Object obj) {
069: if (!(obj instanceof Service)) {
070: return false;
071: }
072:
073: Service other = (Service) obj;
074:
075: if (!id.equals(other.id)) {
076: return false;
077: }
078:
079: if (version == null) {
080: if (other.version != null) {
081: return false;
082: }
083: } else {
084: if (!version.equals(other.version)) {
085: return false;
086: }
087: }
088:
089: return true;
090: }
091:
092: public int hashCode() {
093: int result = 0;
094:
095: result = id.hashCode();
096:
097: if (version != null) {
098: result = (result * 17) + version.hashCode();
099: }
100:
101: return result;
102: }
103:
104: public String toString() {
105: return "Service( " + id + ", " + version + " )";
106: }
107: }
|