View Javadoc

    1   /***************************************************************************************
    2    * Copyright (c) Jonas BonŽr, Alexandre Vasseur. All rights reserved.                 *
    3    * http://aspectwerkz.codehaus.org                                                    *
    4    * ---------------------------------------------------------------------------------- *
    5    * The software in this package is published under the terms of the LGPL license      *
    6    * a copy of which has been included with this distribution in the license.txt file.  *
    7    **************************************************************************************/
    8   package org.codehaus.aspectwerkz.definition;
    9
    10  import org.codehaus.aspectwerkz.expression.ExpressionInfo;
    11
    12  import java.util.ArrayList;
    13  import java.util.List;
    14
    15  /***
    16   * Holds the meta-data for the interface introductions. <p/>This definition holds only pure interface introduction.
    17   *
    18   * @author <a href="mailto:jboner@codehaus.org">Jonas BonŽr </a>
    19   * @author <a href="mailto:alex@gnilux.com">Alexandre Vasseur </a>
    20   */
    21  public class InterfaceIntroductionDefinition {
    22      /***
    23       * The name of the interface introduction.
    24       */
    25      protected final String m_name;
    26
    27      /***
    28       * The introduction expressions.
    29       */
    30      protected ExpressionInfo[] m_expressionInfos = new ExpressionInfo[]{};
    31
    32      /***
    33       * The attribute for the introduction.
    34       */
    35      protected String m_attribute = "";
    36
    37      /***
    38       * The interface classes name.
    39       */
    40      protected List m_interfaceClassNames = new ArrayList();
    41
    42      /***
    43       * Creates a new introduction meta-data instance.
    44       *
    45       * @param name               the name of the expressionInfo
    46       * @param interfaceClassName the class name of the interface
    47       */
    48      public InterfaceIntroductionDefinition(final String name, final String interfaceClassName) {
    49          if (name == null) {
    50              throw new IllegalArgumentException("name can not be null");
    51          }
    52          if (interfaceClassName == null) {
    53              throw new IllegalArgumentException("interface class name can not be null");
    54          }
    55          m_name = name;
    56          m_interfaceClassNames.add(interfaceClassName);
    57      }
    58
    59      /***
    60       * Returns the name of the introduction.
    61       *
    62       * @return the name
    63       */
    64      public String getName() {
    65          return m_name;
    66      }
    67
    68      /***
    69       * Returns the expressions.
    70       *
    71       * @return the expressions array
    72       */
    73      public ExpressionInfo[] getExpressionInfos() {
    74          return m_expressionInfos;
    75      }
    76
    77      /***
    78       * Returns the class name of the interface.
    79       *
    80       * @return the class name of the interface
    81       */
    82      public String getInterfaceClassName() {
    83          return (String) m_interfaceClassNames.get(0);
    84      }
    85
    86      /***
    87       * Returns the class name of the interface.
    88       *
    89       * @return the class name of the interface
    90       */
    91      public List getInterfaceClassNames() {
    92          return m_interfaceClassNames;
    93      }
    94
    95      /***
    96       * Returns the attribute.
    97       *
    98       * @return the attribute
    99       */
    100     public String getAttribute() {
    101         return m_attribute;
    102     }
    103
    104     /***
    105      * Sets the attribute.
    106      *
    107      * @param attribute the attribute
    108      */
    109     public void setAttribute(final String attribute) {
    110         m_attribute = attribute;
    111     }
    112
    113     /***
    114      * Adds a new expression info.
    115      *
    116      * @param expression a new expression info
    117      */
    118     public void addExpressionInfo(final ExpressionInfo expression) {
    119         final ExpressionInfo[] tmpExpressions = new ExpressionInfo[m_expressionInfos.length + 1];
    120         java.lang.System.arraycopy(m_expressionInfos, 0, tmpExpressions, 0, m_expressionInfos.length);
    121         tmpExpressions[m_expressionInfos.length] = expression;
    122         m_expressionInfos = new ExpressionInfo[m_expressionInfos.length + 1];
    123         java.lang.System.arraycopy(tmpExpressions, 0, m_expressionInfos, 0, tmpExpressions.length);
    124     }
    125
    126     /***
    127      * Adds an array with new expression infos.
    128      *
    129      * @param expressions an array with new expression infos
    130      */
    131     public void addExpressionInfos(final ExpressionInfo[] expressions) {
    132         final ExpressionInfo[] tmpExpressions = new ExpressionInfo[m_expressionInfos.length + expressions.length];
    133         java.lang.System.arraycopy(m_expressionInfos, 0, tmpExpressions, 0, m_expressionInfos.length);
    134         java.lang.System.arraycopy(expressions, 0, tmpExpressions, m_expressionInfos.length, expressions.length);
    135         m_expressionInfos = new ExpressionInfo[m_expressionInfos.length + expressions.length];
    136         java.lang.System.arraycopy(tmpExpressions, 0, m_expressionInfos, 0, tmpExpressions.length);
    137     }
    138 }