org.eclipse.sisu.bean.BeanManager Maven / Gradle / Ivy
/*******************************************************************************
* Copyright (c) 2010-present Sonatype, Inc.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Stuart McCulloch (Sonatype, Inc.) - initial API and implementation
*******************************************************************************/
package org.eclipse.sisu.bean;
/**
* Service that manages the lifecycle of beans.
*/
public interface BeanManager
{
/**
* Decides whether instances of the given bean type should be reported to this manager.
*
* @param clazz The bean type
* @return {@code true} if instances of the bean should be reported; otherwise {@code false}
*/
boolean manage( Class> clazz );
/**
* Asks this manager to manage the given bean property.
*
* @param property The bean property
* @return Non-null binding if the bean property was managed; otherwise {@code null}
*/
PropertyBinding manage( BeanProperty> property );
/**
* Asks this manager to manage the given bean instance.
*
* @param bean The bean instance
* @return {@code true} if the bean instance was managed; otherwise {@code false}
*/
boolean manage( Object bean );
/**
* Asks this manager to unmanage the given bean instance.
*
* @param bean The bean instance
* @return {@code true} if the bean instance was unmanaged; otherwise {@code false}
*/
boolean unmanage( Object bean );
/**
* Asks this manager to unmanage all the bean instances it knows about.
*
* @return {@code true} if any bean instances were unmanaged; otherwise {@code false}
*/
boolean unmanage();
}