/* This file is part of the db4o object database http://www.db4o.com
Copyright (C) 2004 - 2011 Versant Corporation http://www.versant.com
db4o is free software; you can redistribute it and/or modify it under
the terms of version 3 of the GNU General Public License as published
by the Free Software Foundation.
db4o is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License along
with this program. If not, see http://www.gnu.org/licenses/. */
package com.db4o.foundation;
/**
* @exclude
*/
public class KeySpecHashtable4 implements DeepClone {
private SynchronizedHashtable4 _delegate;
private KeySpecHashtable4(SynchronizedHashtable4 delegate_) {
_delegate = delegate_;
}
public KeySpecHashtable4(int size) {
this(new SynchronizedHashtable4(size));
}
public void put(KeySpec spec,byte value) {
_delegate.put(spec,new Byte(value));
}
public void put(KeySpec spec,boolean value) {
_delegate.put(spec,new Boolean(value));
}
public void put(KeySpec spec,int value) {
_delegate.put(spec,new Integer(value));
}
public void put(KeySpec spec, Object value) {
_delegate.put(spec,value);
}
public byte getAsByte(KeySpec spec) {
return ((Byte)get(spec)).byteValue();
}
public boolean getAsBoolean(KeySpec spec) {
return ((Boolean)get(spec)).booleanValue();
}
public int getAsInt(KeySpec spec) {
return ((Integer)get(spec)).intValue();
}
public long getAsLong(KeySpec spec) {
return ((Long)get(spec)).longValue();
}
public TernaryBool getAsTernaryBool(KeySpec spec) {
return (TernaryBool)get(spec);
}
public String getAsString(KeySpec spec) {
return (String)get(spec);
}
public synchronized Object get(KeySpec spec) {
Object value=_delegate.get(spec);
if(value == null){
value = spec.defaultValue();
if(value != null){
_delegate.put(spec, value);
}
}
return value;
}
public Object deepClone(Object obj) {
return new KeySpecHashtable4((SynchronizedHashtable4) _delegate.deepClone(obj));
}
}