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: import java.util.Map;
033:
034: import de.intarsys.tools.collection.EmptyIterator;
035:
036: /**
037: * Primitive COS datatypes. These objects are "immutable" in their PDF
038: * semantics. The container may change!
039: *
040: */
041: abstract public class COSPrimitiveObject extends COSObject {
042: protected COSPrimitiveObject() {
043: super ();
044: }
045:
046: protected COSPrimitiveObject(COSObject object) {
047: super (object);
048: }
049:
050: /*
051: * (non-Javadoc)
052: *
053: * @see de.intarsys.pdf.cos.COSObject#addObjectListener(de.intarsys.pdf.cos.ICOSObjectListener)
054: */
055: public void addObjectListener(ICOSObjectListener listener) {
056: // no op for immutable primitives
057: }
058:
059: /*
060: * (non-Javadoc)
061: *
062: * @see de.intarsys.pdf.cos.COSObject#basicIterator()
063: */
064: public java.util.Iterator basicIterator() {
065: return EmptyIterator.UNIQUE;
066: }
067:
068: /*
069: * (non-Javadoc)
070: *
071: * @see de.intarsys.pdf.cos.COSObject#copyDeep()
072: */
073: public COSObject copyDeep() {
074: return copyShallow();
075: }
076:
077: /*
078: * (non-Javadoc)
079: *
080: * @see de.intarsys.pdf.cos.COSDocumentElement#copyDeep(java.util.Map)
081: */
082: public COSObject copyDeep(Map copied) {
083: return copyShallow();
084: }
085:
086: /*
087: * (non-Javadoc)
088: *
089: * @see de.intarsys.pdf.cos.COSObject#isDangling()
090: */
091: public boolean isDangling() {
092: return false;
093: }
094:
095: /*
096: * (non-Javadoc)
097: *
098: * @see de.intarsys.pdf.cos.COSObject#isPrimitive()
099: */
100: public boolean isPrimitive() {
101: return true;
102: }
103:
104: /*
105: * (non-Javadoc)
106: *
107: * @see de.intarsys.pdf.cos.COSObject#iterator()
108: */
109: public java.util.Iterator iterator() {
110: return EmptyIterator.UNIQUE;
111: }
112:
113: /*
114: * (non-Javadoc)
115: *
116: * @see de.intarsys.pdf.cos.COSDocumentElement#register(de.intarsys.pdf.cos.COSDocument)
117: */
118: protected void registerWith(COSDocument doc) {
119: // nothing to do
120: }
121:
122: /*
123: * (non-Javadoc)
124: *
125: * @see de.intarsys.pdf.cos.COSObject#removeObjectListener(de.intarsys.pdf.cos.ICOSObjectListener)
126: */
127: public void removeObjectListener(ICOSObjectListener listener) {
128: // no op for immutable primitives
129: }
130:
131: /*
132: * (non-Javadoc)
133: *
134: * @see de.intarsys.pdf.cos.COSObject#triggerChanged(java.lang.Object,
135: * de.intarsys.pdf.cos.COSObject, de.intarsys.pdf.cos.COSObject)
136: */
137: protected void triggerChanged(Object slot, Object oldValue,
138: Object newValue) {
139: // ignore
140: }
141:
142: /*
143: * (non-Javadoc)
144: *
145: * @see de.intarsys.pdf.cos.COSObject#isObjectListenerAvailable()
146: */
147: public boolean isObjectListenerAvailable() {
148: return false;
149: }
150: }
|