OMAttribute attName = propEle.getAttribute(MediatorProperty.ATT_NAME_Q);
OMAttribute attValue = propEle.getAttribute(MediatorProperty.ATT_VALUE_Q);
OMAttribute attExpr = propEle.getAttribute(MediatorProperty.ATT_EXPR_Q);
OMAttribute attScope = propEle.getAttribute(MediatorProperty.ATT_SCOPE_Q);
MediatorProperty prop = new MediatorProperty();
if (attName == null || attName.getAttributeValue() == null ||
attName.getAttributeValue().trim().length() == 0) {
String msg = "Entry name is a required attribute for a Log property";
log.error(msg);
throw new SynapseException(msg);
} else {
prop.setName(attName.getAttributeValue());
}
// if a value is specified, use it, else look for an expression
if (attValue != null) {
if (attValue.getAttributeValue() == null ||
attValue.getAttributeValue().trim().length() == 0) {
String msg = "Entry attribute value (if specified) " +
"is required for a Log property";
log.error(msg);
throw new SynapseException(msg);
} else {
prop.setValue(attValue.getAttributeValue());
}
} else if (attExpr != null) {
if (attExpr.getAttributeValue() == null ||
attExpr.getAttributeValue().trim().length() == 0) {
String msg = "Entry attribute expression (if specified) " +
"is required for a mediator property";
log.error(msg);
throw new SynapseException(msg);
} else {
try {
prop.setExpression(SynapseXPathFactory.getSynapseXPath(
propEle, MediatorProperty.ATT_EXPR_Q));
} catch (JaxenException e) {
String msg = "Invalid XPapth expression : " + attExpr.getAttributeValue();
log.error(msg);
throw new SynapseException(msg, e);
}
}
} else {
String msg = "Entry attribute value OR expression must " +
"be specified for a mediator property";
log.error(msg);
throw new SynapseException(msg);
}
if (attScope != null) {
String valueStr = attScope.getAttributeValue();
if (!XMLConfigConstants.SCOPE_AXIS2.equals(valueStr) &&
!XMLConfigConstants.SCOPE_TRANSPORT.equals(valueStr) &&
!XMLConfigConstants.SCOPE_DEFAULT.equals(valueStr) &&
!XMLConfigConstants.SCOPE_CLIENT.equals(valueStr)) {
String msg = "Only '" + XMLConfigConstants.SCOPE_AXIS2 + "' or '" +
XMLConfigConstants.SCOPE_TRANSPORT + "' or '" +
XMLConfigConstants.SCOPE_CLIENT +
"' values are allowed for attribute scope for a property" +
", Unsupported scope " + valueStr;
log.error(msg);
throw new SynapseException(msg);
}
prop.setScope(valueStr);
}
propertyList.add(prop);
}