/*******************************************************************************
 * Copyright (c) 2010 BSI Business Systems Integration AG.
 * 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:
 *     BSI Business Systems Integration AG - initial API and implementation
 ******************************************************************************/
package org.eclipse.scout.sdk.util.type;

import java.beans.PropertyDescriptor;

import org.eclipse.jdt.core.IField;
import org.eclipse.jdt.core.IMember;
import org.eclipse.jdt.core.IMethod;
import org.eclipse.jdt.core.IType;

/**
 * Description of a Java bean property. This is a dual class to Java's {@link PropertyDescriptor}.
 */
public interface IPropertyBean {
  /**
   * @return Returns the declaring type that is hosting this property bean.
   */
  IType getDeclaringType();

  /**
   * @return Returns the property's getter method or <code>null</code> if it is write-only.
   */
  IMethod getReadMethod();

  /**
   * @return Returns the property's setter method or <code>null</code> if it is read-only.
   */
  IMethod getWriteMethod();

  /**
   * Property inspectors try to determine a bean property's field. Since the JavaBeans specification defines bean
   * properties by their access methods it is possible, that a property is not based on a field at all. This method
   * returns <code>null</code> in such a case.
   * 
   * @return The field this property is based on or <code>null</code> if it can not be determined.
   */
  IField getField();

  /**
   * @return the read, write method and the field if not null.
   */
  IMember[] getAllMembers();

  /**
   * @return Returns the bean's name.
   */
  String getBeanName();

  String getBeanSignature();
}
