/* * Copyright 2008 Joachim Grueneis * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.castor.xml; /** * An interface to allow external "listening" to objects when * they are being unmarshalled for various tracking purposes and * potential modification. An implementation of * this interface may be registered with the Unmarshaller.<br/> * This is already a new version of this interface with * enhanced callback methods. The orginial implementation still * exists but is deprecated {@link org.exolab.castor.xml.UnmarshalListener}. * <p/> * The UnmarshalListener interface does <em>not</em> report on * native data types that are unmarshalled. * <p/> * The first definition of this interface was by * <a href="mailto:paul@priorartisans.com">Paul Christmann</a>, * <a href="mailto:kvsico@intalio.com">Keith Visco</a> and * <a href="mailto:blandin@intalio.com">Arnaud Blandin</a>. * * @author Joachim Grueneis, jgrueneis AT codehaus DOT org * @version $Revision$ * @since 1.2 */ public interface UnmarshalListener { /** * This method is called when an object has just been initialized by the * Unmarshaller. * * @param target the Object that was initialized. * @param parent the parent of the target that was initialized */ void initialized (final Object target, final Object parent); /** * This method is called once the attributes have been processed. * It indicates that the the fields of the given object corresponding * to attributes in the XML document have been set. * * @param target the Object the object being unmarshalled. * @param parent the parent of the target being unmarshalled */ void attributesProcessed(final Object target, final Object parent); /** * This method is called after a child object has been added during the * unmarshalling. This method will be called after {@link #unmarshalled(Object)} has * been called for the child. * * @param fieldName The Name of the field the child is being added to. * @param parent The Object being unmarshalled. * @param child The Object that was just added. */ void fieldAdded (String fieldName, Object parent, Object child); /** * This method is called after an object * has been completely unmarshalled, including * all of its children (if any). * * @param target the Object that was unmarshalled. * @param parent the parent of the target that was unmarshalled */ void unmarshalled (final Object target, final Object parent); }