KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > sun > syndication > feed > impl > ObjectBean


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.impl;
18
19 import com.sun.syndication.feed.impl.CloneableBean;
20 import com.sun.syndication.feed.impl.EqualsBean;
21
22 import java.io.Serializable JavaDoc;
23 import java.util.Set JavaDoc;
24
25 /**
26  * Convenience class providing clone(), toString(), equals() and hashCode() functionality for Java Beans.
27  * <p>
28  * It works on all read/write properties, recursively.
29  * <p>
30  * It uses the CloneableBean, EqualsBean and ToStringBean classes in a delegation pattern.
31  * <p>
32  * <h3>ObjectBean programming conventions</h3>
33  * <P>
34  * All ObjectBean subclasses having properties that return collections they should never
35  * return null if the property has been set to <b>null</b> or if a collection has not been set.
36  * They should create and return an empty collection, this empty collection instance should
37  * also be set to the corresponding property.
38  * <P>
39  * All ObjectBean subclasses properties should be live references.
40  * <p>
41  * @author Alejandro Abdelnur
42  *
43  */

44 public class ObjectBean implements Serializable JavaDoc, Cloneable JavaDoc {
45     private EqualsBean _equalsBean;
46     private ToStringBean _toStringBean;
47     private CloneableBean _cloneableBean;
48
49     /**
50      * Constructor.
51      * <p>
52      * @param beanClass the class/interface to be used for property scanning.
53      *
54      */

55     public ObjectBean(Class JavaDoc beanClass,Object JavaDoc obj) {
56         this(beanClass,obj,null);
57     }
58
59     /**
60      * Constructor.
61      * <p>
62      * The property names in the ignoreProperties Set will not be copied into
63      * the cloned instance. This is useful for cases where the Bean has convenience
64      * properties (properties that are actually references to other properties or
65      * properties of properties). For example SyndFeed and SyndEntry beans have
66      * convenience properties, publishedDate, author, copyright and categories all
67      * of them mapped to properties in the DC Module.
68      * <p>
69      * @param beanClass the class/interface to be used for property scanning.
70      * @param ignoreProperties properties to ignore when cloning.
71      *
72      */

73     public ObjectBean(Class JavaDoc beanClass,Object JavaDoc obj,Set JavaDoc ignoreProperties) {
74         _equalsBean = new EqualsBean(beanClass,obj);
75         _toStringBean = new ToStringBean(beanClass,obj);
76         _cloneableBean = new CloneableBean(obj,ignoreProperties);
77     }
78
79     /**
80      * Creates a deep 'bean' clone of the object.
81      * <p>
82      * @return a clone of the object.
83      * @throws CloneNotSupportedException thrown if an element of the object cannot be cloned.
84      *
85      */

86     public Object JavaDoc clone() throws CloneNotSupportedException JavaDoc {
87         return _cloneableBean.beanClone();
88     }
89
90     /**
91      * Indicates whether some other object is "equal to" this one as defined by the Object equals() method.
92      * <p>
93      * @param other he reference object with which to compare.
94      * @return <b>true</b> if 'this' object is equal to the 'other' object.
95      *
96      */

97     public boolean equals(Object JavaDoc other) {
98         return _equalsBean.beanEquals(other);
99     }
100
101     /**
102      * Returns a hashcode value for the object.
103      * <p>
104      * It follows the contract defined by the Object hashCode() method.
105      * <p>
106      * @return the hashcode of the bean object.
107      *
108      */

109     public int hashCode() {
110         return _equalsBean.beanHashCode();
111     }
112
113     /**
114      * Returns the String representation for the object.
115      * <p>
116      * @return String representation for the object.
117      *
118      */

119     public String JavaDoc toString() {
120         return _toStringBean.toString();
121     }
122
123 }
124
125
Popular Tags