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.module;
018:
019: import com.sun.syndication.feed.impl.ObjectBean;
020:
021: import java.io.Serializable;
022:
023: /**
024: * Base class for modules describing Metadata of feeds, default implementations.
025: * Examples of such modules are the Dublin Core and Syndication modules.
026: * <p>
027: * @author Alejandro Abdelnur
028: *
029: */
030: public abstract class ModuleImpl implements Cloneable, Serializable,
031: Module {
032: private ObjectBean _objBean;
033: private String _uri;
034:
035: /**
036: * Constructor.
037: * <p>
038: * @param uri URI of the module.
039: *
040: */
041: protected ModuleImpl(Class beanClass, String uri) {
042: _objBean = new ObjectBean(beanClass, this );
043: _uri = uri;
044: }
045:
046: /**
047: * Creates a deep 'bean' clone of the object.
048: * <p>
049: * @return a clone of the object.
050: * @throws CloneNotSupportedException thrown if an element of the object cannot be cloned.
051: *
052: */
053: public Object clone() throws CloneNotSupportedException {
054: return _objBean.clone();
055: }
056:
057: /**
058: * Indicates whether some other object is "equal to" this one as defined by the Object equals() method.
059: * <p>
060: * @param other he reference object with which to compare.
061: * @return <b>true</b> if 'this' object is equal to the 'other' object.
062: *
063: */
064: public boolean equals(Object other) {
065: return _objBean.equals(other);
066: }
067:
068: /**
069: * Returns a hashcode value for the object.
070: * <p>
071: * It follows the contract defined by the Object hashCode() method.
072: * <p>
073: * @return the hashcode of the bean object.
074: *
075: */
076: public int hashCode() {
077: return _objBean.hashCode();
078: }
079:
080: /**
081: * Returns the String representation for the object.
082: * <p>
083: * @return String representation for the object.
084: *
085: */
086: public String toString() {
087: return _objBean.toString();
088: }
089:
090: /**
091: * Returns the URI of the module.
092: * <p>
093: * @return URI of the module.
094: *
095: */
096: public String getUri() {
097: return _uri;
098: }
099:
100: }
|