001: /* Copyright (C) 2004 - 2007 db4objects Inc. http://www.db4o.com
002:
003: This file is part of the db4o open source object database.
004:
005: db4o is free software; you can redistribute it and/or modify it under
006: the terms of version 2 of the GNU General Public License as published
007: by the Free Software Foundation and as clarified by db4objects' GPL
008: interpretation policy, available at
009: http://www.db4o.com/about/company/legalpolicies/gplinterpretation/
010: Alternatively you can write to db4objects, Inc., 1900 S Norfolk Street,
011: Suite 350, San Mateo, CA 94403, USA.
012:
013: db4o is distributed in the hope that it will be useful, but WITHOUT ANY
014: WARRANTY; without even the implied warranty of MERCHANTABILITY or
015: FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
016: for more details.
017:
018: You should have received a copy of the GNU General Public License along
019: with this program; if not, write to the Free Software Foundation, Inc.,
020: 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
021: package com.db4o.internal;
022:
023: import com.db4o.config.*;
024: import com.db4o.ext.*;
025: import com.db4o.internal.convert.*;
026: import com.db4o.internal.slots.*;
027: import com.db4o.reflect.*;
028: import com.db4o.types.*;
029:
030: /**
031: * no reading
032: * no writing
033: * no updates
034: * no weak references
035: * navigation by ID only both sides need synchronised ClassCollections and
036: * MetaInformationCaches
037: *
038: * @exclude
039: */
040: public class TransportObjectContainer extends InMemoryObjectContainer {
041:
042: public TransportObjectContainer(
043: ObjectContainerBase serviceProvider, MemoryFile memoryFile) {
044: super (serviceProvider.config(), serviceProvider, memoryFile);
045: _showInternalClasses = serviceProvider._showInternalClasses;
046: }
047:
048: protected void initialize1(Configuration config) {
049: _handlers = _parent._handlers;
050: _classCollection = _parent.classCollection();
051: _config = _parent.configImpl();
052: _references = new WeakReferenceCollector(this );
053: initialize2();
054: }
055:
056: void initialize2NObjectCarrier() {
057: // do nothing
058: }
059:
060: void initializeEssentialClasses() {
061: // do nothing
062: }
063:
064: protected void initializePostOpenExcludingTransportObjectContainer() {
065: // do nothing
066: }
067:
068: void initNewClassCollection() {
069: // do nothing
070: }
071:
072: boolean canUpdate() {
073: return false;
074: }
075:
076: public ClassMetadata classMetadataForId(int id) {
077: return _parent.classMetadataForId(id);
078: }
079:
080: void configureNewFile() {
081: // do nothing
082: }
083:
084: public int converterVersion() {
085: return Converter.VERSION;
086: }
087:
088: protected void dropReferences() {
089: _config = null;
090: }
091:
092: protected void handleExceptionOnClose(Exception exc) {
093: // do nothing here
094: }
095:
096: final public Transaction newTransaction(
097: Transaction parentTransaction,
098: TransactionalReferenceSystem referenceSystem) {
099: if (null != parentTransaction) {
100: return parentTransaction;
101: }
102: return new TransactionObjectCarrier(this , null, referenceSystem);
103: }
104:
105: public long currentVersion() {
106: return 0;
107: }
108:
109: public Db4oType db4oTypeStored(Transaction a_trans, Object a_object) {
110: return null;
111: }
112:
113: public boolean dispatchsEvents() {
114: return false;
115: }
116:
117: protected void finalize() {
118: // do nothing
119: }
120:
121: public final void free(int a_address, int a_length) {
122: // do nothing
123: }
124:
125: public final void free(Slot slot) {
126: // do nothing
127: }
128:
129: public Slot getSlot(int length) {
130: return appendBlocks(length);
131: }
132:
133: public Db4oDatabase identity() {
134: return ((ExternalObjectContainer) _parent).identity();
135: }
136:
137: public boolean maintainsIndices() {
138: return false;
139: }
140:
141: void message(String msg) {
142: // do nothing
143: }
144:
145: public ClassMetadata produceClassMetadata(ReflectClass claxx) {
146: return _parent.produceClassMetadata(claxx);
147: }
148:
149: public void raiseVersion(long a_minimumVersion) {
150: // do nothing
151: }
152:
153: void readThis() {
154: // do nothing
155: }
156:
157: boolean stateMessages() {
158: return false; // overridden to do nothing in YapObjectCarrier
159: }
160:
161: public void shutdown() {
162: processPendingClassUpdates();
163: writeDirty();
164: transaction().commit();
165: }
166:
167: final void writeHeader(boolean startFileLockingThread,
168: boolean shuttingDown) {
169: // do nothing
170: }
171:
172: protected void writeVariableHeader() {
173:
174: }
175:
176: }
|