001: /*
002: * <copyright>
003: *
004: * Copyright 2001-2004 Mobile Intelligence Corp
005: * under sponsorship of the Defense Advanced Research Projects
006: * Agency (DARPA).
007: *
008: * You can redistribute this software and/or modify it under the
009: * terms of the Cougaar Open Source License as published on the
010: * Cougaar Open Source Website (www.cougaar.org).
011: *
012: * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
013: * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
014: * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
015: * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
016: * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
017: * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
018: * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
019: * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
020: * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
021: * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
022: * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
023: *
024: * </copyright>
025: */
026:
027: package org.cougaar.community.manager;
028:
029: import org.cougaar.community.CommunityDescriptor;
030: import org.cougaar.core.mts.MessageAddress;
031: import org.cougaar.core.persist.NotPersistable;
032: import org.cougaar.core.relay.Relay;
033: import org.cougaar.core.service.community.Community;
034: import org.cougaar.core.util.UID;
035:
036: /**
037: * Implementation of CommunityDescriptor interface. The CommunityDescriptor
038: * wraps an org.cougaar.core.service.community.Community instance for
039: * transmission to remote agents using blackboard relay.
040: **/
041: public class CommunityDescriptorImpl implements CommunityDescriptor,
042: java.io.Serializable, NotPersistable {
043:
044: protected MessageAddress source;
045: protected Community community;
046: protected UID uid;
047:
048: /**
049: * Constructor.
050: * @param source MessageAddress of sender
051: * @param community Associated Community
052: * @param uid Unique identifier
053: */
054: public CommunityDescriptorImpl(MessageAddress source,
055: Community community, UID uid) {
056: this .source = source;
057: this .community = community;
058: this .uid = uid;
059: }
060:
061: /**
062: * Gets the community.
063: * @return Community
064: */
065: public Community getCommunity() {
066: return community;
067: }
068:
069: public String getName() {
070: return community.getName();
071: }
072:
073: //
074: // Relay.Target Interface methods
075: //
076: public Object getResponse() {
077: return null;
078: }
079:
080: public MessageAddress getSource() {
081: return source;
082: }
083:
084: public int updateContent(Object content, Relay.Token token) {
085: CommunityDescriptor cd = (CommunityDescriptorImpl) content;
086: community = cd.getCommunity();
087: return Relay.CONTENT_CHANGE;
088: }
089:
090: public String toXML() {
091: return community.toXml();
092: }
093:
094: //
095: // UniqueObject Interface methods
096: //
097: public void setUID(UID uid) {
098: if (uid != null) {
099: RuntimeException rt = new RuntimeException(
100: "Attempt to call setUID() more than once.");
101: throw rt;
102: }
103: this .uid = uid;
104: }
105:
106: public UID getUID() {
107: return this .uid;
108: }
109:
110: /**
111: * Returns a string representation
112: * @return String - a string representation
113: **/
114: public String toString() {
115: return "CommunityDescriptor: community=" + community.getName();
116: }
117: }
|