Hi,
I am using JAXB to generate Java classes based on the given
XML schema. I then try to weave aspects in the generated classes, but I can’t
seem to capture when fields of JAXB-generated classes get set at runtime.
Below are the two advices which I am trying to weave in the
TXmlEntity JAXB-generated class. Note that the first advice fires up just fine
and prints out correct XmlIds. However, the second aspect never gets fired. I
don’t understand how xmlId field in TXmlEntity class gets set if the
second (setter) advice never fires up and the first (getter) one prints out
correct xmlId values?
after (TXmlEntity var) : get (* TXmlEntity.*) &&
this(var) && !cflowbelow(adviceexecution())
{
logger.error("Reading: " +
var.getXmlId());
}
after (TXmlEntity var) : set (* TXmlEntity.*) &&
this(var) && !cflowbelow(adviceexecution())
{
logger.error("Setting:
" + var.getXmlId());
}
TXmlEntity is just a POJO class shown below.
//
// This file was generated by the JavaTM Architecture for
XML Binding(JAXB) Reference Implementation, v2.0-hudson-3037-ea3
// See <a
href=""
// Any modifications to this file will be lost upon
recompilation of the source schema.
// Generated on: 2006.05.31 at 10:19:36 AM MDT
//
package com.nextpage.tester.domain.xml.entities;
import javax.xml.bind.annotation.AccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlID;
import javax.xml.bind.annotation.XmlType;
import
javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import com.nextpage.tester.domain.xml.entities.Adapter1;
import com.nextpage.tester.domain.xml.entities.TXmlEntity;
/**
* <p>Java class for TXmlEntity complex type.
*
* <p>The following schema fragment specifies the
expected content contained within this class.
*
* <pre>
* <complexType name="TXmlEntity">
* <complexContent>
* <restriction
base="{http://www.w3.org/2001/XMLSchema}anyType">
*
<sequence>
*
<element name="dbId"
type="{http://www.w3.org/2001/XMLSchema}anySimpleType"
minOccurs="0"/>
*
</sequence>
*
<attribute name="client-entity"
type="{http://www.w3.org/2001/XMLSchema}boolean" />
*
<attribute name="server-entity"
type="{http://www.w3.org/2001/XMLSchema}boolean" />
*
<attribute name="xmlId" use="required"
type="{http://www.w3.org/2001/XMLSchema}ID" />
* </restriction>
* </complexContent>
* </complexType>
* </pre>
*
*
*/
@XmlAccessorType(AccessType.FIELD)
@XmlType(name = "TXmlEntity", propOrder = {
"dbId"
})
public class TXmlEntity {
@XmlElement(namespace =
"http://nextpage.com/tester/domain", type = String.class)
@XmlJavaTypeAdapter(Adapter1 .class)
protected Object dbId;
@XmlAttribute(name =
"client-entity")
protected Boolean clientEntity;
@XmlAttribute(name =
"server-entity")
protected Boolean serverEntity;
@XmlAttribute(required = true)
@XmlJavaTypeAdapter(CollapsedStringAdapter.class)
@XmlID
protected String xmlId;
/**
* Gets the value of the dbId
property.
*
* @return
* possible
object is
* {@link
String }
*
*/
public Object getDbId() {
return dbId;
}
/**
* Sets the value of the dbId
property.
*
* @param value
* allowed
object is
* {@link
String }
*
*/
public void setDbId(Object value) {
this.dbId =
value;
}
/**
* Gets the value of the
clientEntity property.
*
* @return
* possible
object is
* {@link
Boolean }
*
*/
public Boolean isClientEntity() {
return
clientEntity;
}
/**
* Sets the value of the
clientEntity property.
*
* @param value
* allowed
object is
* {@link
Boolean }
*
*/
public void setClientEntity(Boolean
value) {
this.clientEntity
= value;
}
/**
* Gets the value of the
serverEntity property.
*
* @return
* possible
object is
* {@link
Boolean }
*
*/
public Boolean isServerEntity() {
return serverEntity;
}
/**
* Sets the value of the
serverEntity property.
*
* @param value
* allowed
object is
* {@link
Boolean }
*
*/
public void setServerEntity(Boolean
value) {
this.serverEntity
= value;
}
/**
* Gets the value of the xmlId
property.
*
* @return
* possible
object is
* {@link
String }
*
*/
public String getXmlId() {
return xmlId;
}
/**
* Sets the value of the xmlId
property.
*
* @param value
* allowed
object is
* {@link
String }
*
*/
public void setXmlId(String value) {
this.xmlId =
value;
}
}