1 /* 2 * Copyright 2004 Sun Microsystems, Inc. 3 * 4 * Licensed under the Apache 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.apache.org/licenses/LICENSE-2.0 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 */ 17 package com.sun.syndication.feed.atom; 18 19 import com.sun.syndication.feed.impl.ObjectBean; 20 21 import java.io.Serializable; 22 import java.util.HashSet; 23 import java.util.Set; 24 25 /** 26 * Bean for content elements of Atom feeds. 27 * <p> 28 * @author Alejandro Abdelnur 29 * @author Dave Johnson (updated for Atom 1.0) 30 */ 31 public class Content implements Cloneable,Serializable { 32 33 private ObjectBean _objBean; 34 35 private String _type; 36 private String _value; 37 private String _src; 38 39 /** @since Atom 1.0 */ 40 public static final String TEXT = "text"; 41 42 /** @since Atom 1.0 */ 43 public static final String HTML = "html"; 44 45 /** @since Atom 1.0 */ 46 public static final String XHTML = "xhtml"; 47 48 /** Atom 0.3 only */ 49 public static final String XML = "xml"; 50 51 /** Atom 0.3 only */ 52 public static final String BASE64 = "base64"; 53 54 /** Atom 0.3 only */ 55 public static final String ESCAPED = "escaped"; 56 57 private String _mode; 58 private static final Set MODES = new HashSet(); 59 static { 60 MODES.add(XML); 61 MODES.add(BASE64); 62 MODES.add(ESCAPED); 63 } 64 65 66 /** 67 * Default constructor. All properties are set to <b>null</b>. 68 * <p> 69 * 70 */ 71 public Content() { 72 _objBean = new ObjectBean(this.getClass(),this); 73 } 74 75 /** 76 * Creates a deep 'bean' clone of the object. 77 * <p> 78 * @return a clone of the object. 79 * @throws CloneNotSupportedException thrown if an element of the object cannot be cloned. 80 * 81 */ 82 public Object clone() throws CloneNotSupportedException { 83 return _objBean.clone(); 84 } 85 86 /** 87 * Indicates whether some other object is "equal to" this one as defined by the Object equals() method. 88 * <p> 89 * @param other he reference object with which to compare. 90 * @return <b>true</b> if 'this' object is equal to the 'other' object. 91 * 92 */ 93 public boolean equals(Object other) { 94 return _objBean.equals(other); 95 } 96 97 /** 98 * Returns a hashcode value for the object. 99 * <p> 100 * It follows the contract defined by the Object hashCode() method. 101 * <p> 102 * @return the hashcode of the bean object. 103 * 104 */ 105 public int hashCode() { 106 return _objBean.hashCode(); 107 } 108 109 /** 110 * Returns the String representation for the object. 111 * <p> 112 * @return String representation for the object. 113 * 114 */ 115 public String toString() { 116 return _objBean.toString(); 117 } 118 119 /** 120 * Returns the content type. 121 * <p> 122 * The type indicates how the value was/will-be encoded in the XML feed. 123 * </p> 124 * @since Atom 1.0 125 */ 126 public String getType() { 127 return _type; 128 } 129 130 /** 131 * Sets the content type. 132 * <p> 133 * The type indicates how the value was/will-be encoded in the XML feed. 134 * </p> 135 * @since Atom 1.0 136 */ 137 public void setType(String type) { 138 _type = type; 139 } 140 141 /** 142 * Returns the content mode (Atom 0.3 only). 143 * <p> 144 * The mode indicates how the value was/will-be encoded in the XML feed. 145 * <p> 146 * @return the content mode, <b>null</b> if none. 147 */ 148 public String getMode() { 149 return _mode; 150 } 151 152 /** 153 * Sets the content mode (Atom 0.3 only). 154 * <p> 155 * The mode indicates how the value was/will-be encoded in the XML feed. 156 * <p> 157 * @param mode the content mode, <b>null</b> if none. 158 */ 159 public void setMode(String mode) { 160 mode = (mode!=null) ? mode.toLowerCase() : null; 161 if (mode==null || !MODES.contains(mode)) { 162 throw new IllegalArgumentException("Invalid mode ["+mode+"]"); 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 } 211 212