package org.seasar.aptina.beans.example;

/**
 * 
 * @author koichik
 */
@org.seasar.aptina.beans.JavaBean
@javax.annotation.Generated({"Aptina Beans", "org.seasar.aptina", "aptina-beans", "DEV"})
public class BoundAndConstrainedBean extends org.seasar.aptina.beans.example.BoundAndConstrainedBeanState {

    java.beans.PropertyChangeSupport propertyChangeSupport =
        new java.beans.PropertyChangeSupport(this);

    java.beans.VetoableChangeSupport vetoableChangeSupport =
        new java.beans.VetoableChangeSupport(this);

    public  BoundAndConstrainedBean() {
        super();
    }

    /**
     * {@link java.beans.PropertyChangeListener} をリスナーリストに追加します。
     * 
     * @param listener 追加する {@link java.beans.PropertyChangeListener}
     */
    public void addPropertyChangeListener(java.beans.PropertyChangeListener listener) {
        propertyChangeSupport.addPropertyChangeListener(listener);
    }

    /**
     * 特定のプロパティーの {@link java.beans.PropertyChangeListener} をリスナーリストに追加します。
     * 
     * @param propertyName 待機しているプロパティーの名前
     * @param listener 追加する {@link java.beans.PropertyChangeListener}
     */
    public void addPropertyChangeListener(String propertyName, java.beans.PropertyChangeListener listener) {
        propertyChangeSupport.addPropertyChangeListener(propertyName, listener);
    }

    /**
     * {@link java.beans.PropertyChangeListener} をリスナーリストから削除します。
     * 
     * @param listener 削除する {@link java.beans.PropertyChangeListener}
     */
    public void removePropertyChangeListener(java.beans.PropertyChangeListener listener) {
        propertyChangeSupport.removePropertyChangeListener(listener);
    }

    /**
     * 特定のプロパティーの {@link java.beans.PropertyChangeListener} をリスナーリストから削除します。
     * 
     * @param propertyName 待機していたプロパティーの名前
     * @param listener 削除する {@link java.beans.PropertyChangeListener}
     */
    public void removePropertyChangeListener(String propertyName, java.beans.PropertyChangeListener listener) {
        propertyChangeSupport.removePropertyChangeListener(propertyName, listener);
    }

    /**
     * {@link java.beans.VetoableChangeListener} をリスナーリストに追加します。
     * 
     * @param listener 追加する {@link java.beans.VetoableChangeListener}
     */
    public void addVetoableChangeListener(java.beans.VetoableChangeListener listener) {
        vetoableChangeSupport.addVetoableChangeListener(listener);
    }

    /**
     * 特定のプロパティーの {@link java.beans.VetoableChangeListener} をリスナーリストに追加します。
     * 
     * @param propertyName 待機しているプロパティーの名前
     * @param listener 追加する {@link java.beans.VetoableChangeListener}
     */
    public void addVetoableChangeListener(String propertyName, java.beans.VetoableChangeListener listener) {
        vetoableChangeSupport.addVetoableChangeListener(propertyName, listener);
    }

    /**
     * {@link java.beans.VetoableChangeListener} をリスナーリストから削除します。
     * 
     * @param listener 削除する {@link java.beans.VetoableChangeListener}
     */
    public void removeVetoableChangeListener(java.beans.VetoableChangeListener listener) {
        vetoableChangeSupport.removeVetoableChangeListener(listener);
    }

    /**
     * 特定のプロパティーの {@link java.beans.VetoableChangeListener} をリスナーリストから削除します。
     * 
     * @param propertyName 待機していたプロパティーの名前
     * @param listener 削除する {@link java.beans.VetoableChangeListener}
     */
    public void removeVetoableChangeListener(String propertyName, java.beans.VetoableChangeListener listener) {
        vetoableChangeSupport.removeVetoableChangeListener(propertyName, listener);
    }

    /**
     * {@literal aaa} を返します。
     * 
     * @return {@literal aaa}
     */
    public java.lang.String getAaa() {
        return aaa;
    }

    /**
     * {@literal bbb} を返します。
     * 
     * @return {@literal bbb}
     */
    public java.lang.String getBbb() {
        return bbb;
    }

    /**
     * {@literal bbb} を設定します。
     * 
     * @param bbb {@literal bbb}
     * @throws java.beans.PropertyVetoException プロパティの変更が拒否された場合
     */
    public void setBbb(java.lang.String bbb) throws java.beans.PropertyVetoException {
        java.lang.String oldBbb = this.bbb;
        vetoableChangeSupport.fireVetoableChange("bbb", oldBbb, bbb);
        this.bbb = bbb;
        propertyChangeSupport.firePropertyChange("bbb", oldBbb, bbb);
    }

    /**
     * {@literal bbb} の {@link java.beans.PropertyChangeListener} をリスナーリストに追加します。
     * 
     * @param listener 追加する {@link java.beans.PropertyChangeListener}
     */
    public void addBbbChangeListener(java.beans.PropertyChangeListener listener) {
        propertyChangeSupport.addPropertyChangeListener("bbb", listener);
    }

    /**
     * {@literal bbb} の {@link java.beans.PropertyChangeListener} をリスナーリストから削除します。
     * 
     * @param listener 削除する {@link java.beans.PropertyChangeListener}
     */
    public void removeBbbChangeListener(java.beans.PropertyChangeListener listener) {
        propertyChangeSupport.removePropertyChangeListener("bbb", listener);
    }

    /**
     * {@literal bbb} の {@link java.beans.VetoableChangeListener} をリスナーリストに追加します。
     * 
     * @param listener 追加する {@link java.beans.VetoableChangeListener}
     */
    public void addBbbChangeListener(java.beans.VetoableChangeListener listener) {
        vetoableChangeSupport.addVetoableChangeListener("bbb", listener);
    }

    /**
     * {@literal bbb} の {@link java.beans.VetoableChangeListener} をリスナーリストから削除します。
     * 
     * @param listener 削除する {@link java.beans.VetoableChangeListener}
     */
    public void removeBbbChangeListener(java.beans.VetoableChangeListener listener) {
        vetoableChangeSupport.removeVetoableChangeListener("bbb", listener);
    }

    /**
     * {@literal ccc} を返します。
     * 
     * @return {@literal ccc}
     */
    public java.lang.String[] getCcc() {
        return ccc;
    }

    /**
     * {@literal ccc} の {@literal n} 番目の要素を返します。
     * 
     * @param n 返される要素のインデックス
     * @return {@literal n} 番目の {@literal ccc}
     * @throws ArrayIndexOutOfBoundsException インデックスが配列のサイズを超えていた場合
     */
    public java.lang.String getCcc(int n) throws ArrayIndexOutOfBoundsException {
        return ccc[n];
    }

    /**
     * {@literal ccc} を設定します。
     * 
     * @param ccc {@literal ccc}
     * @throws java.beans.PropertyVetoException プロパティの変更が拒否された場合
     */
    public void setCcc(java.lang.String[] ccc) throws java.beans.PropertyVetoException {
        java.lang.String[] oldCcc = this.ccc;
        vetoableChangeSupport.fireVetoableChange("ccc", oldCcc, ccc);
        this.ccc = ccc;
        propertyChangeSupport.firePropertyChange("ccc", oldCcc, ccc);
    }

    /**
     * {@literal ccc} の {@literal n} 番目の要素を設定します。
     * 
     * @param n 設定される要素のインデックス
     * @param ccc {@literal ccc}
     * @throws ArrayIndexOutOfBoundsException インデックスが配列のサイズを超えていた場合
     * @throws java.beans.PropertyVetoException プロパティの変更が拒否された場合
     */
    public void setCcc(int n, java.lang.String ccc) throws ArrayIndexOutOfBoundsException, java.beans.PropertyVetoException {
        java.lang.String oldCcc = this.ccc[n];
        vetoableChangeSupport.fireVetoableChange(new java.beans.IndexedPropertyChangeEvent(this, "ccc", oldCcc, ccc, n));
        this.ccc[n] = ccc;
        propertyChangeSupport.fireIndexedPropertyChange("ccc", n, oldCcc, ccc);
    }

    /**
     * {@literal ccc} の {@link java.beans.PropertyChangeListener} をリスナーリストに追加します。
     * 
     * @param listener 追加する {@link java.beans.PropertyChangeListener}
     */
    public void addCccChangeListener(java.beans.PropertyChangeListener listener) {
        propertyChangeSupport.addPropertyChangeListener("ccc", listener);
    }

    /**
     * {@literal ccc} の {@link java.beans.PropertyChangeListener} をリスナーリストから削除します。
     * 
     * @param listener 削除する {@link java.beans.PropertyChangeListener}
     */
    public void removeCccChangeListener(java.beans.PropertyChangeListener listener) {
        propertyChangeSupport.removePropertyChangeListener("ccc", listener);
    }

    /**
     * {@literal ccc} の {@link java.beans.VetoableChangeListener} をリスナーリストに追加します。
     * 
     * @param listener 追加する {@link java.beans.VetoableChangeListener}
     */
    public void addCccChangeListener(java.beans.VetoableChangeListener listener) {
        vetoableChangeSupport.addVetoableChangeListener("ccc", listener);
    }

    /**
     * {@literal ccc} の {@link java.beans.VetoableChangeListener} をリスナーリストから削除します。
     * 
     * @param listener 削除する {@link java.beans.VetoableChangeListener}
     */
    public void removeCccChangeListener(java.beans.VetoableChangeListener listener) {
        vetoableChangeSupport.removeVetoableChangeListener("ccc", listener);
    }

}
