2012-04-18 4 views
3

Я определил базовую модель, которая не имеет полей, и улучшит ее плагин Eclice eclipse. Затем я использую Java Decompiler декомпилировать его, нашли ebean есть добавить поля и методу к нему:Как Ebean проверяет, была ли модель улучшена или нет?

private static String _EBEAN_MARKER = "play.modules.ebean.Model"; 

protected EntityBeanIntercept _ebean_intercept = new EntityBeanIntercept(this); 

protected transient Object _ebean_identity; 

public String _ebean_getMarker() { 
    return _EBEAN_MARKER; 
} 

public EntityBeanIntercept _ebean_getIntercept() { 
    return this._ebean_intercept; 
} 

public EntityBeanIntercept _ebean_intercept() { 
    if (this._ebean_intercept == null) 
     this._ebean_intercept = new EntityBeanIntercept(this); 
    return this._ebean_intercept; 
} 

public void addPropertyChangeListener(PropertyChangeListener listener) { 
    this._ebean_intercept.addPropertyChangeListener(listener); 
} 

public void addPropertyChangeListener(String name, PropertyChangeListener listener) { 
    this._ebean_intercept.addPropertyChangeListener(name, listener); 
} 

public void removePropertyChangeListener(PropertyChangeListener listener) { 
    this._ebean_intercept.removePropertyChangeListener(listener); 
} 

public void removePropertyChangeListener(String name, PropertyChangeListener listener) { 
    this._ebean_intercept.removePropertyChangeListener(name, listener); 
} 

public void _ebean_setEmbeddedLoaded() {} 

public boolean _ebean_isEmbeddedNewOrDirty() { 
    return false; 
} 

public Object _ebean_newInstance() { 
    return new Model(); 
} 

Затем я скопировал этот код в исходный класс модели, отключенный энхансер в Ebean, в скомпилировать его затмением.

Я думал, что он должен иметь тот же эффект, что и усиление Ebean.

Затем я упаковал его как банку, поместил в мой проект, определил класс модели Article, чтобы расширить его.

Но есть ошибка:

An unexpected error occured caused by exception PersistenceException: 
java.lang.IllegalStateException: Class [class test.Model] is not enhanced 
    and [class models.Article] is - (you can not mix!!) 

кажется Ebean не лечить мой новый Model класса как усиливается. Интересно, как Ebean проверяет, улучшен ли класс или нет?

+0

Я нашел способ проверить, что Ebean сделала для модели. Используйте java-декомпилятор для перевода расширенного .class-файла в java, вы можете увидеть, что модель реализовала интерфейс Ebean (и есть еще несколько дополнительных методов). Я думаю, Ebean проверит это. – Freewind

ответ

2

Ebean добавляет улучшения в ваши модели. Класс класса тоже - в основном для каждого свойства/геттера/сеттера.

снова создайте эту иерархию (без добавления материала в модель) и проверьте полученный код обоих объектов.