/* 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.config; import com.db4o.*; /** * translator interface to translate objects on storage and activation. * <br><br> * By writing classes that implement this interface, it is possible to * define how application classes are to be converted to be stored more efficiently. * <br><br> * Before starting a db4o session, translator classes need to be registered. An example:<br> * <code> * ObjectClass oc = config.objectClass("package.className");<br> * oc.translate(new FooTranslator());</code><br><br> * */ public interface ObjectTranslator { /** * db4o calls this method during storage and query evaluation. * @param container the ObjectContainer used * @param applicationObject the Object to be translated * @return return the object to store.<br>It needs to be of the class * {@link #storedClass()}. */ public Object onStore(ObjectContainer container, Object applicationObject); /** * db4o calls this method during activation. * @param container the ObjectContainer used * @param applicationObject the object to set the members on * @param storedObject the object that was stored */ public void onActivate(ObjectContainer container, Object applicationObject, Object storedObject); /** * return the Class you are converting to. * @return the Class of the object you are returning with the method * {@link #onStore(ObjectContainer, Object)} */ public Class storedClass (); }