001: /******************************************************************************
002: * JBoss, a division of Red Hat *
003: * Copyright 2006, Red Hat Middleware, LLC, and individual *
004: * contributors as indicated by the @authors tag. See the *
005: * copyright.txt in the distribution for a full listing of *
006: * individual contributors. *
007: * *
008: * This is free software; you can redistribute it and/or modify it *
009: * under the terms of the GNU Lesser General Public License as *
010: * published by the Free Software Foundation; either version 2.1 of *
011: * the License, or (at your option) any later version. *
012: * *
013: * This software is distributed in the hope that it will be useful, *
014: * but WITHOUT ANY WARRANTY; without even the implied warranty of *
015: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
016: * Lesser General Public License for more details. *
017: * *
018: * You should have received a copy of the GNU Lesser General Public *
019: * License along with this software; if not, write to the Free *
020: * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA *
021: * 02110-1301 USA, or see the FSF site: http://www.fsf.org. *
022: ******************************************************************************/package org.jboss.portal.registration.impl;
023:
024: import org.jboss.portal.common.util.ParameterValidation;
025: import org.jboss.portal.registration.Consumer;
026: import org.jboss.portal.registration.ConsumerCapabilities;
027: import org.jboss.portal.registration.ConsumerGroup;
028: import org.jboss.portal.registration.Registration;
029: import org.jboss.portal.registration.RegistrationException;
030: import org.jboss.portal.registration.RegistrationStatus;
031: import org.jboss.portal.registration.RegistrationUtils;
032:
033: import java.util.Collection;
034: import java.util.Collections;
035: import java.util.HashSet;
036: import java.util.Set;
037:
038: /**
039: * @author <a href="mailto:chris.laprun@jboss.com">Chris Laprun</a>
040: * @version $Revision: 8784 $
041: * @since 2.6
042: */
043: public class ConsumerImpl implements Consumer {
044:
045: private String name;
046: private String identity;
047: private String consumerAgent;
048: private Set registrations;
049: private RegistrationStatus status;
050: private ConsumerGroup group;
051: private ConsumerCapabilities capabilities;
052:
053: private ConsumerImpl() {
054: init();
055: }
056:
057: ConsumerImpl(String identity, String name) {
058: ParameterValidation.throwIllegalArgExceptionIfNullOrEmpty(name,
059: "name", "Consumer");
060: ParameterValidation.throwIllegalArgExceptionIfNullOrEmpty(name,
061: "identity", "Consumer");
062:
063: this .name = name;
064: this .identity = identity;
065: init();
066: }
067:
068: private void init() {
069: registrations = new HashSet(7);
070: status = RegistrationStatus.PENDING;
071: capabilities = new ConsumerCapabilitiesImpl();
072: }
073:
074: public boolean equals(Object o) {
075: if (this == o) {
076: return true;
077: }
078: if (o == null || getClass() != o.getClass()) {
079: return false;
080: }
081:
082: ConsumerImpl consumer = (ConsumerImpl) o;
083:
084: return identity.equals(consumer.identity);
085: }
086:
087: public int hashCode() {
088: return identity.hashCode();
089: }
090:
091: public String getName() {
092: return name;
093: }
094:
095: public String getId() {
096: return identity;
097: }
098:
099: public String getConsumerAgent() {
100: return consumerAgent;
101: }
102:
103: public void setConsumerAgent(String consumerAgent)
104: throws IllegalArgumentException, IllegalStateException {
105: if (consumerAgent != null
106: && !consumerAgent.equals(this .consumerAgent)) {
107: RegistrationUtils.validateConsumerAgent(consumerAgent);
108: this .consumerAgent = consumerAgent;
109: }
110: }
111:
112: public ConsumerCapabilities getCapabilities() {
113: return capabilities;
114: }
115:
116: public void setCapabilities(ConsumerCapabilities capabilities) {
117: this .capabilities = capabilities;
118: }
119:
120: public RegistrationStatus getStatus() {
121: return status;
122: }
123:
124: public void setStatus(RegistrationStatus status) {
125: ParameterValidation.throwIllegalArgExceptionIfNull(status,
126: "RegistrationStatus");
127: this .status = status;
128: }
129:
130: public Collection getRegistrations() throws RegistrationException {
131: return Collections.unmodifiableSet(registrations);
132: }
133:
134: public ConsumerGroup getGroup() {
135: return group;
136: }
137:
138: void addRegistration(Registration registration) {
139: ParameterValidation.throwIllegalArgExceptionIfNull(
140: registration, "Registration");
141:
142: registrations.add(registration);
143: }
144:
145: void removeRegistration(Registration registration)
146: throws RegistrationException {
147: ParameterValidation.throwIllegalArgExceptionIfNull(
148: registration, "Registration");
149:
150: registrations.remove(registration);
151:
152: // status should become pending if there are no registrations
153: if (registrations.isEmpty()) {
154: setStatus(RegistrationStatus.PENDING);
155: }
156: }
157:
158: public void setGroup(ConsumerGroup group)
159: throws RegistrationException {
160: if (this .group != null) {
161: // if we're trying to set the same group, just return
162: if (this.group.equals(group)) {
163: return;
164: }
165:
166: if (this.group.contains(this)) {
167: this.group.removeConsumer(this);
168: }
169: }
170:
171: this.group = group;
172:
173: if (group != null && !this.group.contains(this)) {
174: group.addConsumer(this);
175: }
176: }
177: }
|