package com.ausregistry.jtoolkit2.se; import com.ausregistry.jtoolkit2.EPPDateFormatter; import com.ausregistry.jtoolkit2.xml.XMLDocument; import java.util.GregorianCalendar; import javax.xml.xpath.XPathExpressionException; /** * Use this to access domain object transfer information as provided in an EPP * domain transfer response compliant with RFC5730 and RFC5731. Such a service * element is sent by a compliant EPP server in response to a valid domain * transfer command, implemented by a subclass of the DomainTransferCommand * class. * * @see com.ausregistry.jtoolkit2.se.DomainTransferCommand * @see com.ausregistry.jtoolkit2.se.DomainTransferRequestCommand * @see com.ausregistry.jtoolkit2.se.DomainTransferApproveCommand * @see com.ausregistry.jtoolkit2.se.DomainTransferCancelCommand * @see com.ausregistry.jtoolkit2.se.DomainTransferRejectCommand * @see com.ausregistry.jtoolkit2.se.DomainTransferQueryCommand */ public class DomainTransferResponse extends TransferResponse { private static final long serialVersionUID = -3652461689615678734L; private static final String DOM_NAME_EXPR = RES_DATA_EXPR + "/domain:trnData/domain:name/text()"; private static final String DOM_EXDATE_EXPR = RES_DATA_EXPR + "/domain:trnData/domain:exDate/text()"; private static final String DOM_TR_STATUS_EXPR = exprReplace(TR_STATUS_EXPR); private static final String DOM_REID_EXPR = exprReplace(REID_EXPR); private static final String DOM_REDATE_EXPR = exprReplace(REDATE_EXPR); private static final String DOM_ACID_EXPR = exprReplace(ACID_EXPR); private static final String DOM_ACDATE_EXPR = exprReplace(ACDATE_EXPR); private GregorianCalendar exDate; private String name; private String exDateStr; public DomainTransferResponse() { super(StandardObjectType.DOMAIN); } protected static String exprReplace(String expr) { return expr.replaceAll(OBJ, StandardObjectType.DOMAIN.getName()); } public String getName() { return name; } public GregorianCalendar getExpiryDate() { return exDate; } @Override public void fromXML(XMLDocument xmlDoc) { super.fromXML(xmlDoc); if (!resultArray[0].succeeded()) { return; } try { name = xmlDoc.getNodeValue(DOM_NAME_EXPR); exDateStr = xmlDoc.getNodeValue(DOM_EXDATE_EXPR); if (exDateStr != null && exDateStr.length() > 0) { exDate = EPPDateFormatter.fromXSDateTime(exDateStr); } } catch (XPathExpressionException xpee) { maintLogger.warning(xpee.getMessage()); } } @Override public String toString() { String retval = super.toString(); if (exDate != null) { retval += "(exDate = " + exDateStr + ")"; } return retval; } protected String trStatusExpr() { return DOM_TR_STATUS_EXPR; } protected String reIDExpr() { return DOM_REID_EXPR; } protected String reDateExpr() { return DOM_REDATE_EXPR; } protected String acIDExpr() { return DOM_ACID_EXPR; } protected String acDateExpr() { return DOM_ACDATE_EXPR; } }