001: /*
002: * Copyright 2004 Sun Microsystems, Inc.
003: *
004: * Licensed under the Apache License, Version 2.0 (the "License");
005: * you may not use this file except in compliance with the License.
006: * You may obtain a copy of the License at
007: *
008: * http://www.apache.org/licenses/LICENSE-2.0
009: *
010: * Unless required by applicable law or agreed to in writing, software
011: * distributed under the License is distributed on an "AS IS" BASIS,
012: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013: * See the License for the specific language governing permissions and
014: * limitations under the License.
015: *
016: */
017: package com.sun.syndication.feed.atom;
018:
019: import com.sun.syndication.feed.impl.ObjectBean;
020:
021: import java.io.Serializable;
022: import java.util.HashSet;
023: import java.util.Set;
024:
025: /**
026: * Bean for content elements of Atom feeds.
027: * <p>
028: * @author Alejandro Abdelnur
029: * @author Dave Johnson (updated for Atom 1.0)
030: */
031: public class Content implements Cloneable, Serializable {
032:
033: private ObjectBean _objBean;
034:
035: private String _type;
036: private String _value;
037: private String _src;
038:
039: /** @since Atom 1.0 */
040: public static final String TEXT = "text";
041:
042: /** @since Atom 1.0 */
043: public static final String HTML = "html";
044:
045: /** @since Atom 1.0 */
046: public static final String XHTML = "xhtml";
047:
048: /** Atom 0.3 only */
049: public static final String XML = "xml";
050:
051: /** Atom 0.3 only */
052: public static final String BASE64 = "base64";
053:
054: /** Atom 0.3 only */
055: public static final String ESCAPED = "escaped";
056:
057: private String _mode;
058: private static final Set MODES = new HashSet();
059: static {
060: MODES.add(XML);
061: MODES.add(BASE64);
062: MODES.add(ESCAPED);
063: }
064:
065: /**
066: * Default constructor. All properties are set to <b>null</b>.
067: * <p>
068: *
069: */
070: public Content() {
071: _objBean = new ObjectBean(this .getClass(), this );
072: }
073:
074: /**
075: * Creates a deep 'bean' clone of the object.
076: * <p>
077: * @return a clone of the object.
078: * @throws CloneNotSupportedException thrown if an element of the object cannot be cloned.
079: *
080: */
081: public Object clone() throws CloneNotSupportedException {
082: return _objBean.clone();
083: }
084:
085: /**
086: * Indicates whether some other object is "equal to" this one as defined by the Object equals() method.
087: * <p>
088: * @param other he reference object with which to compare.
089: * @return <b>true</b> if 'this' object is equal to the 'other' object.
090: *
091: */
092: public boolean equals(Object other) {
093: return _objBean.equals(other);
094: }
095:
096: /**
097: * Returns a hashcode value for the object.
098: * <p>
099: * It follows the contract defined by the Object hashCode() method.
100: * <p>
101: * @return the hashcode of the bean object.
102: *
103: */
104: public int hashCode() {
105: return _objBean.hashCode();
106: }
107:
108: /**
109: * Returns the String representation for the object.
110: * <p>
111: * @return String representation for the object.
112: *
113: */
114: public String toString() {
115: return _objBean.toString();
116: }
117:
118: /**
119: * Returns the content type.
120: * <p>
121: * The type indicates how the value was/will-be encoded in the XML feed.
122: * </p>
123: * @since Atom 1.0
124: */
125: public String getType() {
126: return _type;
127: }
128:
129: /**
130: * Sets the content type.
131: * <p>
132: * The type indicates how the value was/will-be encoded in the XML feed.
133: * </p>
134: * @since Atom 1.0
135: */
136: public void setType(String type) {
137: _type = type;
138: }
139:
140: /**
141: * Returns the content mode (Atom 0.3 only).
142: * <p>
143: * The mode indicates how the value was/will-be encoded in the XML feed.
144: * <p>
145: * @return the content mode, <b>null</b> if none.
146: */
147: public String getMode() {
148: return _mode;
149: }
150:
151: /**
152: * Sets the content mode (Atom 0.3 only).
153: * <p>
154: * The mode indicates how the value was/will-be encoded in the XML feed.
155: * <p>
156: * @param mode the content mode, <b>null</b> if none.
157: */
158: public void setMode(String mode) {
159: mode = (mode != null) ? mode.toLowerCase() : null;
160: if (mode == null || !MODES.contains(mode)) {
161: throw new IllegalArgumentException("Invalid mode [" + mode
162: + "]");
163: }
164: _mode = mode;
165: }
166:
167: /**
168: * Returns the content value.
169: * <p>
170: * The return value should be decoded.
171: * <p>
172: * @return the content value, <b>null</b> if none.
173: *
174: */
175: public String getValue() {
176: return _value;
177: }
178:
179: /**
180: * Sets the content value.
181: * <p>
182: * The value being set should be decoded.
183: * <p>
184: * @param value the content value, <b>null</b> if none.
185: *
186: */
187: public void setValue(String value) {
188: _value = value;
189: }
190:
191: /**
192: * Returns the src
193: * <p>
194: * @return Returns the src.
195: * @since Atom 1.0
196: */
197: public String getSrc() {
198: return _src;
199: }
200:
201: /**
202: * Set the src
203: * <p>
204: * @param src The src to set.
205: * @since Atom 1.0
206: */
207: public void setSrc(String src) {
208: _src = src;
209: }
210: }
|