All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.ow2.bonita.env.Descriptor Maven / Gradle / Ivy

The newest version!
/*
 * JBoss, Home of Professional Open Source
 * Copyright 2005, JBoss Inc., and individual contributors as indicated
 * by the @authors tag. See the copyright.txt in the distribution for a
 * full listing of individual contributors.
 *
 * This is free software; you can redistribute it and/or modify it
 * under the terms of the GNU Lesser General Public License as
 * published by the Free Software Foundation; either version 2.1 of
 * the License, or (at your option) any later version.
 *
 * This software 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
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this software; if not, write to the Free
 * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
 * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
 */
package org.ow2.bonita.env;

import java.io.Serializable;

import org.ow2.bonita.util.Observable;

/**
 * knows how an object can be created.
 * 
 * 

* A {@link WireDefinition} contains a map of {@link Descriptor}s. They are used * by the {@link WireContext} that will build and cache the objects. *

* * @author Tom Baeyens * @author Guillaume Porcher (documentation) * */ public interface Descriptor extends Observable, Serializable { /** * is fired when construction of a wired object starts. The provided event is * a {@link WireObjectEventInfo}. * * @see WireContext */ String EVENT_CONSTRUCTING = "constructing"; /** * is fired when initialization of a wired object starts (after construction). * The provided event is a {@link WireObjectEventInfo}. * * @see WireContext */ String EVENT_INITIALIZING = "initializing"; /** * is fired when object construction is completed. The provided event is a * {@link WireObjectEventInfo}. * * @see WireContext */ String EVENT_CONSTRUCTED = "constructed"; /** * is fired when an object is being set into the cache of this wire context * with {@link WireContext#set(String, Object)}. The provided event is a * {@link WireObjectEventInfo}. * * @see WireContext */ String EVENT_SET = "set"; /** * is fired when an object is being removed from the cache of the wire context * with {@link WireContext#remove(String)}. The provided event is a * {@link WireObjectEventInfo}. * * @see WireContext */ String EVENT_REMOVE = "remove"; /** the name of this descriptor */ String getName(); /** the type of the produced object or null if that is not available */ Class getType(WireDefinition wireDefinition); /** * if eager initialization is set, it means that an object must be created * immediately during construction of the {@link WireContext}. */ boolean isEagerInit(); /** * constructs the object. * * @param wireContext * {@link WireContext} in which the object is created. This is also * the {@link WireContext} where the object will search for other * object that may be needed during the initialization phase. * @return the constructed object. */ Object construct(WireContext wireContext); /** * Checks if the initialization should be done during the construction phase * or if it can be done later. * * @return false if the initialization should be done during the * creation phase, true if it can be done later. */ boolean isDelayable(); /** * called by the WireContext to initialize the specified object. For more * information about initialization, see {@link WireContext} section * lifecycle. * * @param object * object to initialize. * @param wireContext * the context in which the object will be initialized. */ void initialize(Object object, WireContext wireContext); }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy