Hi all.
I hope my question is not too dumb.
I have a project in which I need to specify via AOP all the functionalities of
each use case by it self.
So, I have an almost empty structure with hibernate, spring, and struts (an
AndroMDA structure with jbpm, etc).
In it's various layers I need to add new methods and attributes using
introductions.
My problem is that, for example, I add a new "find" method in the Dao object
and when I add a method that uses it in a service object I get an error on
compilation, because this new method can't be found.
I hope I can explain it clearly with code:
For example, the jboss-aop.xml has:
<introduction class="com.mitalteli.bolsaDeTrabajo.domain.VacanteDao">
| <mixin>
| <interfaces>
|
com.mitalteli.bolsaDeTrabajo.useCaseSlices.specific.consultarVacantes.IAspectoVacanteDao
| </interfaces>
|
<class>com.mitalteli.bolsaDeTrabajo.useCaseSlices.specific.consultarVacantes.MixinAspectoVacanteDao</class>
| <construction>new
com.mitalteli.bolsaDeTrabajo.useCaseSlices.specific.consultarVacantes.MixinAspectoVacanteDao(this)</construction>
| </mixin>
| </introduction>
and
<introduction
class="com.mitalteli.bolsaDeTrabajo.service.ServicioConsultarVacantesBase">
| <mixin>
| <interfaces>
|
com.mitalteli.bolsaDeTrabajo.useCaseSlices.specific.consultarVacantes.IAspectoServicioConsultarVacantesBase
| </interfaces>
|
<class>com.mitalteli.bolsaDeTrabajo.useCaseSlices.specific.consultarVacantes.MixinAspectoServicioConsultarVacantesBase</class>
| <construction>new
com.mitalteli.bolsaDeTrabajo.useCaseSlices.specific.consultarVacantes.MixinAspectoServicioConsultarVacantesBase(this)</construction>
| </mixin>
| </introduction>
and their respective mixins contain:
/**
| * @see
com.mitalteli.bolsaDeTrabajo.domain.VacanteDao#encuentraConCriterios(com.mitalteli.bolsaDeTrabajo.vo.CriteriosBusquedaConsultarVacantesVO)
| */
| public java.util.List encuentraConCriterios(final
com.mitalteli.bolsaDeTrabajo.vo.CriteriosBusquedaConsultarVacantesVO criteria)
| {
| if (criteria == null)
| {
| throw new IllegalArgumentException(
|
"com.mitalteli.bolsaDeTrabajo.domain.VacanteDao.encuentraConCriterios(com.mitalteli.bolsaDeTrabajo.vo.CriteriosBusquedaConsultarVacantesVO
criteria) - 'criteria' can not be null");
| }
| try
| {
| return this.handleEncuentraConCriterios(criteria);
| }
| catch (Throwable th)
| {
| throw new java.lang.RuntimeException(
| "Error performing
'com.mitalteli.bolsaDeTrabajo.domain.VacanteDao.encuentraConCriterios(com.mitalteli.bolsaDeTrabajo.vo.CriteriosBusquedaConsultarVacantesVO
criteria)' --> " + th,
| th);
| }
| }
and
/**
| * @see
com.mitalteli.bolsaDeTrabajo.service.ServicioConsultarVacantes#encuentraVacantes(com.mitalteli.bolsaDeTrabajo.vo.CriteriosBusquedaConsultarVacantesVO)
| */
| public /*protected*/ com.mitalteli.bolsaDeTrabajo.vo.ResumenVacanteVO[]
handleEncuentraVacantes(com.mitalteli.bolsaDeTrabajo.vo.CriteriosBusquedaConsultarVacantesVO
criteria)
| throws java.lang.Exception
| {
| //List vacantes =
servicioConsultarVacantesBase.getVacanteDao().encuentraConCriterios(criteria);
| List vacantes = getVacanteDao().encuentraConCriterios(criteria);
| getVacanteDao().toResumenVacanteVOCollection(vacantes);
| return (ResumenVacanteVO[])vacantes.toArray(new
ResumenVacanteVO[0]);
| }
So, as I told before, the Dao class should have now a find method called:
encuentraConCriterios, so the call to
getVacanteDao().encuentraConCriterios(criteria); should be found, but that's
not the case. I get the error message:
...\useCaseSlices\specific\consultarVacantes\MixinAspectoServicioConsultarVacantesB
| ase.java:[162,39] cannot find symbol
| symbol : method
encuentraConCriterios(com.mitalteli.bolsaDeTrabajo.vo.Criterios
| BusquedaConsultarVacantesVO)
| location: interface com.mitalteli.bolsaDeTrabajo.domain.VacanteDao
I'm trying to do loadtime waving on a jboss-4.2.1.GA with jboss-aop-1.5.6 with
jdk 6 update 3, and jre 6 update 5 on my WinXP pro Service pack2 computer.
So I'm not waving the classes yet, just compiling them. I guess I'm doing some
thing wrong.
Is this even possible? Maybe If I compile and wave the first mixin, and then
compile and wave the second one, instead of doing loadtime waving?
Any Ideas?
I'm very very new to all this AOP technology, so maybe I don't understand
something right.
Thank you all in advance.
Ely.
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4148849#4148849
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4148849
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user