View Javadoc

1   /*
2    * ObjectEnhacer.java
3    * Created on 9 Май 2006 г., 2:34
4    */
5   
6   package org.weda.enhance;
7   
8   /**
9    * @author Mikhail Titov
10   */
11  public interface ObjectEnhancer {
12      /**Метод расширяет класс в случае если в классе есть методы без параметров
13       * возвращающих не <code>void</code> и имеющих аннотацию 
14       * {@link org.weda.annotation.InjectObject}.
15       * @return расширенный класс или тот же класс что передавался в параметре
16       *      если расширять класс нет необходимости.
17       * @throws ObjectEnhancerException если возникла ошибка при расширении 
18       *      класса или в классе обнаружены методы имеющие аннотацию
19       *      {@link org.weda.annotation.InjectObject} но либо метод имеет
20       *      параметры, либо возвращает <code>void</code>.
21       * @see #newInstance(Class)
22       * @see #initObject(Object)
23       */
24      public Class enhanceClass(Class clazz) throws ObjectEnhancerException;
25      /**Метод создает экземпляр класса. Если <code>clazz</code> расширен
26       * методом {@link #enhanceClass(Class)} тогда после создания экземляра 
27       * будет вызван метод {@link #initObject(Object)}.
28       * @see #enchanceClass(Class)
29       */
30      public Object newInstance(Class clazz) throws ObjectEnhancerException;
31      /**Если <code>object</code> объект расширенного класса, тогда объект
32       * инициализируется таким образом что бы методы <code>object</code> 
33       * аннотированные {@link org.weda.annotation.InjectObject} возвращали
34       * корректные значения.
35       * @see #enchanceClass(Class)
36       * @see #newInstance(Class)
37       */
38      public void initObject(Object object) throws ObjectEnhancerException;
39  }