package org.jactr.core.module.declarative.basic.chunk;
/*
* default logging
*/
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jactr.core.chunk.IChunk;
import org.jactr.core.chunk.ISymbolicChunk;
import org.jactr.core.chunk.basic.BasicSymbolicChunk;
import org.jactr.core.chunktype.IChunkType;
import org.jactr.core.slot.IMutableSlot;
import org.jactr.core.slot.ISlot;
public class DefaultSymbolicChunkFactory implements ISymbolicChunkFactory
{
/**
* Logger definition
*/
static private final transient Log LOGGER = LogFactory
.getLog(DefaultSymbolicChunkFactory.class);
public ISymbolicChunk newSymbolicChunk()
{
return new BasicSymbolicChunk();
}
public void bind(ISymbolicChunk symbolicChunk, IChunk chunkWrapper,
IChunkType type)
{
BasicSymbolicChunk bsc = (BasicSymbolicChunk) symbolicChunk;
bsc.bind(chunkWrapper, type);
}
public void unbind(ISymbolicChunk symbolicChunk)
{
// noop
}
public void dispose(ISymbolicChunk symbolicChunk)
{
symbolicChunk.dispose();
}
public void merge(ISymbolicChunk master, ISymbolicChunk copy)
{
/*
* if a merge is to occur, by definition the symbolics should be equal, so
* this is a noop
*/
}
public void copy(ISymbolicChunk source, ISymbolicChunk destination)
{
for (ISlot slot : source.getSlots())
{
// this is the actual backing slot..
IMutableSlot cs = (IMutableSlot) destination.getSlot(slot.getName());
cs.setValue(slot.getValue());
}
}
}