[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [aspectj-users] InterType: introducing serialVersionUID into @Persistable

#: Tomasz Nazar changed the world a bit at a time by saying on 9/19/2005 12:38 PM :#
On the next beautiful day: Mon, 19 September, 2005, Alexandru Popescu wrote:

Thanks for quick answer, but..

According to www.eclipse.org/aspectj/doc/next/adk15notebook/annotations-itds.html an annotation type cannot be the target of an inter-type declaration. What you need is to push your ITD on an type annotated with @Persistable.

I've seen this doc, and wondering why that's the case. Basically it is possible having some inter-types using marker interfaces.

So you probably need a marker interface and than do the ITD:
interface PersistenceAware {};
declare parents @Persistable * implements java.io.Serializable;
declare parents @Persistable * implements PersistenceAware;

static final PersistenceAware.serialVersionUID = 17L;

1) Both "static" and "final" fields doesn't work with _interface_ (compiler error)



because any field declared/defined in an interface is already static final ;-).

2) The problem with above (when applying inter-type field to an
_interface_) is that as a result I have other field than
'serialVersionUID':

@Persistable Pojo.class:
public class Pojo implements java.io.Serializable, PersistenceAware
{
    //...
    public long ajc$interField$MyAspect$PersistenceAware$serialVersionUID;
    //..and I need simple public final _static_ serialVersionUID...
}


I guess this naming is used to avoid any colissions. But I am not sure if this is correct, as you will be completely unable to access it. Or am I missing something here?


3) When applying to a concrete _class_ with:
@Persistable Pojo.class:
public class Pojo implements java.io.Serializable
{
    //...
    static final PojoConcrete.serialVersionUID = 17L;
    //it works, but I don't want the pointcut based on a concrete
    //class
}

Tomasz


same as above. not sure what to say. guys?

./alex
--
.the_mindstorm.