001: /*
002: * Copyright (c) 2007, intarsys consulting GmbH
003: *
004: * Redistribution and use in source and binary forms, with or without
005: * modification, are permitted provided that the following conditions are met:
006: *
007: * - Redistributions of source code must retain the above copyright notice,
008: * this list of conditions and the following disclaimer.
009: *
010: * - Redistributions in binary form must reproduce the above copyright notice,
011: * this list of conditions and the following disclaimer in the documentation
012: * and/or other materials provided with the distribution.
013: *
014: * - Neither the name of intarsys nor the names of its contributors may be used
015: * to endorse or promote products derived from this software without specific
016: * prior written permission.
017: *
018: * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
019: * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
020: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
021: * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
022: * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
023: * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
024: * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
025: * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
026: * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
027: * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
028: * POSSIBILITY OF SUCH DAMAGE.
029: */
030: package de.intarsys.pdf.cos;
031:
032: /**
033: * The null object
034: */
035: public class COSNull extends COSPrimitiveObject {
036: public static final COSNull NULL = (COSNull) COSNull.create()
037: .beConstant();
038:
039: static public COSNull create() {
040: return new COSNull();
041: }
042:
043: private COSNull() {
044: super ();
045: }
046:
047: private COSNull(COSObject object) {
048: super (object);
049: }
050:
051: /*
052: * (non-Javadoc)
053: *
054: * @see de.intarsys.pdf.cos.COSObject#accept(de.intarsys.pdf.cos.ICOSObjectVisitor)
055: */
056: public java.lang.Object accept(ICOSObjectVisitor visitor)
057: throws COSVisitorException {
058: return visitor.visitFromNull(this );
059: }
060:
061: /*
062: * (non-Javadoc)
063: *
064: * @see de.intarsys.pdf.cos.COSObject#basicToString()
065: */
066: protected String basicToString() {
067: return "null"; //$NON-NLS-1$
068: }
069:
070: /*
071: * (non-Javadoc)
072: *
073: * @see de.intarsys.pdf.cos.COSObject#copyBasic(de.intarsys.pdf.cos.COSDocument)
074: */
075: protected COSObject copyBasic() {
076: return create();
077: }
078:
079: /*
080: * (non-Javadoc)
081: *
082: * @see java.lang.Object#equals(java.lang.Object)
083: */
084: public boolean equals(Object o) {
085: return o instanceof COSNull;
086: }
087:
088: /*
089: * (non-Javadoc)
090: *
091: * @see java.lang.Object#hashCode()
092: */
093: public int hashCode() {
094: // arbitrary number to avoid collisions
095: return 27;
096: }
097:
098: /*
099: * (non-Javadoc)
100: *
101: * @see de.intarsys.pdf.cos.COSObject#isNull()
102: */
103: public boolean isNull() {
104: return true;
105: }
106:
107: /*
108: * (non-Javadoc)
109: *
110: * @see de.intarsys.tools.objectsession.ISaveStateSupport#saveState()
111: */
112: public Object saveState() {
113: return new COSNull(this);
114: }
115: }
|