001: /*
002:
003: Derby - Class org.apache.derby.impl.sql.catalog.NameTDCacheable
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.SchemaDescriptor;
027: import org.apache.derby.iapi.sql.dictionary.TableDescriptor;
028:
029: import org.apache.derby.iapi.error.StandardException;
030:
031: import org.apache.derby.iapi.services.sanity.SanityManager;
032:
033: /**
034: * This class implements a Cacheable for a DataDictionary cache of
035: * table descriptors, with the lookup key being the name of the table.
036: *
037: * Assumes client passes in a string that includes the schema name.
038: */
039: class NameTDCacheable extends TDCacheable {
040: private TableKey identity;
041:
042: NameTDCacheable(DataDictionaryImpl dd) {
043: super (dd);
044: }
045:
046: /* Cacheable interface */
047:
048: /** @see Cacheable#clearIdentity */
049: public void clearIdentity() {
050: identity = null;
051: td = null;
052: }
053:
054: /** @see Cacheable#getIdentity */
055: public Object getIdentity() {
056: return identity;
057: }
058:
059: /** @see Cacheable#createIdentity */
060: public Cacheable createIdentity(Object key, Object createParameter) {
061: if (SanityManager.DEBUG) {
062: if (!(key instanceof TableKey)) {
063: SanityManager
064: .THROWASSERT("Key for a NameTDCacheElement is a "
065: + key.getClass().getName()
066: + " instead of a TableKey");
067: }
068:
069: if (!(createParameter instanceof TableDescriptor)) {
070: SanityManager
071: .THROWASSERT("Create parameter for a NameTDCacheElement is a "
072: + createParameter.getClass().getName()
073: + "instead of a TableDescriptorImpl");
074: }
075: }
076:
077: identity = (TableKey) key;
078: td = (TableDescriptor) createParameter;
079:
080: if (td != null)
081: return this ;
082: else
083: return null;
084: }
085:
086: /**
087: * @see Cacheable#setIdentity
088: *
089: * @exception StandardException Thrown on error
090: */
091: public Cacheable setIdentity(Object key) throws StandardException {
092: if (SanityManager.DEBUG) {
093: if (!(key instanceof TableKey)) {
094: SanityManager
095: .THROWASSERT("Key for a NameTDCacheElement is a "
096: + key.getClass().getName()
097: + " instead of a TableKey");
098: }
099: }
100:
101: ;
102: td = dd.getUncachedTableDescriptor(identity = (TableKey) key);
103:
104: if (td != null) {
105: // add table descriptor to the oidTdcache in the Datadictionary.
106: // no fear of deadlocks because this is called outside the
107: // synchronize block in the cache code.
108: dd.addTableDescriptorToOtherCache(td, this );
109: return this ;
110: } else
111: return null;
112: }
113:
114: /**
115: @exception StandardException Thrown on error
116: */
117: // If this code is required it should be moved into a D_ class. - djd
118: /*
119: public boolean isConsistent(HeaderPrintWriter reportInconsistent)
120: throws StandardException
121: {
122: boolean retval = true;
123:
124: if (SanityManager.DEBUG)
125: {
126: TableDescriptor uncachedTD;
127:
128: try
129: {
130: uncachedTD = dd.getUncachedTableDescriptor(identity);
131: }
132: catch (StandardException se)
133: {
134: reportInconsistent.println("Unexpected exception " + se +
135: " while getting cached table descriptor in NameTDCacheable.");
136: uncachedTD = null;
137: }
138:
139: retval = checkConsistency(uncachedTD, identity, reportInconsistent);
140: }
141:
142: return retval;
143: }
144: */
145: }
|