1
2
3
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 }