001: /*
002:
003: Derby - Class org.apache.derby.impl.sql.catalog.OIDTDCacheable
004:
005: Licensed to the Apache Software Foundation (ASF) under one or more
006: contributor license agreements. See the NOTICE file distributed with
007: this work for additional information regarding copyright ownership.
008: The ASF licenses this file to you under the Apache License, Version 2.0
009: (the "License"); you may not use this file except in compliance with
010: the License. You may obtain a copy of the License at
011:
012: http://www.apache.org/licenses/LICENSE-2.0
013:
014: Unless required by applicable law or agreed to in writing, software
015: distributed under the License is distributed on an "AS IS" BASIS,
016: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
017: See the License for the specific language governing permissions and
018: limitations under the License.
019:
020: */
021:
022: package org.apache.derby.impl.sql.catalog;
023:
024: import org.apache.derby.iapi.services.cache.Cacheable;
025:
026: import org.apache.derby.iapi.sql.dictionary.TableDescriptor;
027:
028: import org.apache.derby.iapi.error.StandardException;
029:
030: import org.apache.derby.iapi.services.sanity.SanityManager;
031:
032: import org.apache.derby.catalog.UUID;
033:
034: /**
035: * This class implements a Cacheable for a DataDictionary cache of
036: * table descriptors, with the lookup key being the UUID of the table.
037: */
038: class OIDTDCacheable extends TDCacheable {
039: private UUID identity;
040:
041: OIDTDCacheable(DataDictionaryImpl dd) {
042: super (dd);
043: }
044:
045: /* Cacheable interface */
046:
047: /** @see Cacheable#clearIdentity */
048: public void clearIdentity() {
049: identity = null;
050: td = null;
051: }
052:
053: /** @see Cacheable#getIdentity */
054: public Object getIdentity() {
055: return identity;
056: }
057:
058: /** @see Cacheable#createIdentity */
059: public Cacheable createIdentity(Object key, Object createParameter) {
060: if (SanityManager.DEBUG) {
061: if (!(key instanceof UUID)) {
062: SanityManager
063: .THROWASSERT("Key for an OIDTDCacheElement is a "
064: + key.getClass().getName()
065: + " instead of an UUID");
066: }
067: if (!(createParameter instanceof TableDescriptor)) {
068: SanityManager
069: .THROWASSERT("Create parameter for an OIDTDCacheElement is a "
070: + createParameter.getClass().getName()
071: + "instead of a TableDescriptorImpl");
072: }
073: }
074:
075: identity = ((UUID) key).cloneMe();
076: td = (TableDescriptor) createParameter;
077:
078: if (td != null)
079: return this ;
080: else
081: return null;
082: }
083:
084: /**
085: * @see Cacheable#setIdentity
086: *
087: * @exception StandardException Thrown on error
088: */
089: public Cacheable setIdentity(Object key) throws StandardException {
090: if (SanityManager.DEBUG) {
091: if (!(key instanceof UUID)) {
092: SanityManager
093: .THROWASSERT("Key for an OIDTDCacheElement is a "
094: + key.getClass().getName()
095: + " instead of an UUID");
096: }
097: }
098:
099: identity = ((UUID) key).cloneMe();
100: td = dd.getUncachedTableDescriptor(identity);
101:
102: if (td != null) {
103: // Add cache entry to the nameTdCache in the DataDictionary.
104: dd.addTableDescriptorToOtherCache(td, this );
105: return this ;
106: } else
107: return null;
108: }
109:
110: /**
111: @exception StandardException Thrown on error
112: */
113: // If this code is required it should be moved into a D_ class. - djd
114: /*
115: public boolean isConsistent(HeaderPrintWriter reportInconsistent)
116: throws StandardException
117: {
118: boolean retval = true;
119:
120: if (SanityManager.DEBUG)
121: {
122: TableDescriptor uncachedTD;
123:
124: try
125: {
126: uncachedTD = dd.getUncachedTableDescriptor(identity);
127: }
128: catch (StandardException se)
129: {
130: reportInconsistent.println("Unexpected exception " + se +
131: " while getting cached table descriptor in OIDTDCacheable.");
132: uncachedTD = null;
133: }
134:
135: retval = checkConsistency(uncachedTD, identity, reportInconsistent);
136: }
137:
138: return retval;
139: }
140: */
141: }
|