/*******************************************************************************
* Copyright (c) 2010 Spring IDE Developers
* 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:
* Spring IDE Developers - initial API and implementation
*******************************************************************************/
package org.springframework.ide.eclipse.beans.core.metadata.model;
import java.util.Set;
import org.springframework.beans.factory.config.ConstructorArgumentValues;
import org.springframework.ide.eclipse.beans.core.model.IBean;
import org.springframework.ide.eclipse.beans.core.model.IBeanProperty;
/**
* The global {@link IBeanMetadata} model to retrieve {@link IBeanMetadata} for
* {@link IBean}.
* @author Christian Dupuis
* @since 2.0.5
*/
/**
* TODO CD this interface needs methods to provide {@link ConstructorArgumentValues} as well.
*/
public interface IBeanMetadataModel {
/**
* Returns the {@link IBeanMetadata}s for the given {@link IBean}.
*/
Set<IBeanMetadata> getBeanMetadata(IBean bean);
/**
* Set {@link IBeanMetadata}s for a certain {@link IBean}.
*/
void setBeanMetadata(IBean bean, Set<IBeanMetadata> beanMetadata,
Set<IMethodMetadata> methodMetadata);
/**
* Clears the meta data for a certain {@link IBean}.
*/
void clearBeanMetadata(IBean bean);
/**
* Returns the {@link IBeanProperty}s for the given {@link IBean}.
*/
Set<IBeanProperty> getBeanProperties(IBean bean);
/**
* Set {@link IBeanProperty}s for a certain {@link IBean}.
*/
void setBeanProperties(IBean bean, Set<IBeanProperty> beanProperties);
/**
* Clears the meta data for a certain {@link IBean}.
*/
void clearBeanProperties(IBean bean);
}