REOC-61 Upgrade to use dom4j for xml processor

This commit is contained in:
YuCheng Hu 2019-09-22 23:20:09 -04:00
parent 8c68231333
commit 77d496ccef
9 changed files with 181 additions and 184 deletions

View File

@ -32,6 +32,8 @@ dependencies {
compile group: 'commons-logging', name: 'commons-logging', version: '1.1.1' compile group: 'commons-logging', name: 'commons-logging', version: '1.1.1'
compile group: 'org.apache.commons', name: 'commons-lang3', version: '3.9' compile group: 'org.apache.commons', name: 'commons-lang3', version: '3.9'
compile group: 'commons-io', name: 'commons-io', version: '2.6'
compile group: 'commons-codec', name: 'commons-codec', version: '1.3' compile group: 'commons-codec', name: 'commons-codec', version: '1.3'
compile group: 'org.apache.httpcomponents', name: 'httpclient', version: '4.1.1' compile group: 'org.apache.httpcomponents', name: 'httpclient', version: '4.1.1'
@ -39,7 +41,7 @@ dependencies {
compile group: 'com.google.guava', name: 'guava', version: '28.1-jre' compile group: 'com.google.guava', name: 'guava', version: '28.1-jre'
// XML // XML
compile 'jdom:jdom:1.0' compile group: 'org.dom4j', name: 'dom4j', version: '2.1.1'
// TEST // TEST
testCompile group: 'junit', name: 'junit', version: '4.12' testCompile group: 'junit', name: 'junit', version: '4.12'

View File

@ -24,10 +24,9 @@
<dependencies> <dependencies>
<dependency> <dependency>
<groupId>jdom</groupId> <groupId>org.dom4j</groupId>
<artifactId>jdom</artifactId> <artifactId>dom4j</artifactId>
<version>1.0</version> <version>2.1.1</version>
<optional>false</optional>
</dependency> </dependency>
<!-- TEST --> <!-- TEST -->

View File

@ -1,10 +1,11 @@
package com.ossez.reoc.rets.client; package com.ossez.reoc.rets.client;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import java.io.InputStream; import java.io.InputStream;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.input.SAXBuilder;
/** /**
* dbt is lame and hasn't overridden the default * dbt is lame and hasn't overridden the default
@ -12,10 +13,10 @@ import org.jdom.input.SAXBuilder;
*/ */
public class ChangePasswordResponse { public class ChangePasswordResponse {
public ChangePasswordResponse(InputStream stream) throws RetsException { public ChangePasswordResponse(InputStream stream) throws RetsException {
SAXBuilder builder = new SAXBuilder(); SAXReader builder = new SAXReader();
Document document = null; Document document = null;
try { try {
document = builder.build(stream); document = builder.read(stream);
} catch (Exception e) { } catch (Exception e) {
throw new RetsException(e); throw new RetsException(e);
} }
@ -24,11 +25,11 @@ public class ChangePasswordResponse {
throw new RetsException("Invalid Change Password Response"); throw new RetsException("Invalid Change Password Response");
} }
int replyCode = Integer.parseInt(rets.getAttributeValue("ReplyCode")); int replyCode = Integer.parseInt(rets.attributeValue("ReplyCode"));
if (replyCode != 0) { if (replyCode != 0) {
InvalidReplyCodeException exception; InvalidReplyCodeException exception;
exception = new InvalidReplyCodeException(replyCode); exception = new InvalidReplyCodeException(replyCode);
exception.setRemoteMessage(rets.getAttributeValue("ReplyText")); exception.setRemoteMessage(rets.attributeValue("ReplyText"));
throw exception; throw exception;
} }
} }

View File

@ -9,24 +9,24 @@ import com.ossez.reoc.rets.common.metadata.JDomStandardBuilder;
import com.ossez.reoc.rets.common.metadata.MetaObject; import com.ossez.reoc.rets.common.metadata.MetaObject;
import com.ossez.reoc.rets.common.metadata.MetadataException; import com.ossez.reoc.rets.common.metadata.MetadataException;
import org.apache.commons.lang3.math.NumberUtils; import org.apache.commons.lang3.math.NumberUtils;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.Document;
import org.jdom.input.SAXBuilder;
public class GetMetadataResponse { public class GetMetadataResponse {
private MetaObject[] mMetadataObjs; private MetaObject[] mMetadataObjs;
public GetMetadataResponse(InputStream stream, boolean compact, boolean isStrict) throws RetsException { public GetMetadataResponse(InputStream stream, boolean compact, boolean isStrict) throws RetsException {
try { try {
SAXBuilder builder = new SAXBuilder(); SAXReader builder = new SAXReader();
Document document = builder.build(stream); Document document = builder.read(stream);
Element retsElement = document.getRootElement(); Element retsElement = document.getRootElement();
if (!retsElement.getName().equals("RETS")) { if (!retsElement.getName().equals("RETS")) {
throw new RetsException("Expecting RETS"); throw new RetsException("Expecting RETS");
} }
int replyCode = NumberUtils.toInt(retsElement.getAttributeValue("ReplyCode")); int replyCode = NumberUtils.toInt(retsElement.attributeValue("ReplyCode"));
if (ReplyCode.SUCCESS.equals(replyCode)) { if (ReplyCode.SUCCESS.equals(replyCode)) {
if (compact) { if (compact) {
handleCompactMetadata(document, isStrict); handleCompactMetadata(document, isStrict);
@ -38,18 +38,16 @@ public class GetMetadataResponse {
handleNoMetadataFound(retsElement); handleNoMetadataFound(retsElement);
} else { } else {
InvalidReplyCodeException e = new InvalidReplyCodeException(replyCode); InvalidReplyCodeException e = new InvalidReplyCodeException(replyCode);
e.setRemoteMessage(retsElement.getAttributeValue(retsElement.getAttributeValue("ReplyText"))); e.setRemoteMessage(retsElement.attributeValue(retsElement.attributeValue("ReplyText")));
throw e; throw e;
} }
} catch (JDOMException e) { } catch (DocumentException e) {
throw new RetsException(e);
} catch (IOException e) {
throw new RetsException(e); throw new RetsException(e);
} }
} }
private void handleNoMetadataFound(Element retsElement) throws RetsException { private void handleNoMetadataFound(Element retsElement) throws RetsException {
List children = retsElement.getChildren(); List children = retsElement.elements();
if (children.size() != 0) { if (children.size() != 0) {
throw new RetsException("Expecting 0 children when results"); throw new RetsException("Expecting 0 children when results");
} }

View File

@ -10,10 +10,11 @@ import org.apache.commons.lang3.math.NumberUtils;
import org.apache.http.HeaderElement; import org.apache.http.HeaderElement;
import org.apache.http.NameValuePair; import org.apache.http.NameValuePair;
import org.apache.http.message.BasicHeaderValueParser; import org.apache.http.message.BasicHeaderValueParser;
import org.jdom.Document; import org.dom4j.Document;
import org.jdom.Element; import org.dom4j.DocumentException;
import org.jdom.JDOMException; import org.dom4j.Element;
import org.jdom.input.SAXBuilder; import org.dom4j.io.SAXReader;
import org.w3c.dom.DOMException;
public class GetObjectResponse{ public class GetObjectResponse{
private static final int DEFAULT_BUFFER_SIZE = 8192; private static final int DEFAULT_BUFFER_SIZE = 8192;
@ -59,11 +60,11 @@ public class GetObjectResponse{
try { try {
// GetObjectResponse is empty, because we have a Rets ReplyCode // GetObjectResponse is empty, because we have a Rets ReplyCode
this.emptyResponse = true; this.emptyResponse = true;
SAXBuilder builder = new SAXBuilder(); SAXReader builder = new SAXReader();
Document mDocument = builder.build(in); Document mDocument = builder.read(in);
Element root = mDocument.getRootElement(); Element root = mDocument.getRootElement();
if (root.getName().equals("RETS")) { if (root.getName().equals("RETS")) {
replyCode = NumberUtils.toInt(root.getAttributeValue("ReplyCode")); replyCode = NumberUtils.toInt(root.attributeValue("ReplyCode"));
// success // success
if (ReplyCode.SUCCESS.equals(replyCode)) return; if (ReplyCode.SUCCESS.equals(replyCode)) return;
@ -76,9 +77,7 @@ public class GetObjectResponse{
// no other possibilities // no other possibilities
throw new RetsException("Malformed response [multipart="+this.isMultipart+", content-type=text/xml]. " + throw new RetsException("Malformed response [multipart="+this.isMultipart+", content-type=text/xml]. " +
"Content id did not exist in response and response was not valid rets response."); "Content id did not exist in response and response was not valid rets response.");
} catch (JDOMException e) { } catch (DocumentException e) {
throw new RetsException(e);
} catch (IOException e) {
throw new RetsException(e); throw new RetsException(e);
} }
} }

View File

@ -1,21 +1,21 @@
package com.ossez.reoc.rets.client; package com.ossez.reoc.rets.client;
import java.util.List;
import java.util.StringTokenizer;
import java.io.InputStream;
import java.io.IOException;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.Document;
import org.jdom.input.SAXBuilder;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.math.NumberUtils; import org.apache.commons.lang3.math.NumberUtils;
import org.apache.commons.logging.Log; import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory; import org.apache.commons.logging.LogFactory;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import java.io.InputStream;
import java.util.List;
import java.util.StringTokenizer;
/**
*
*/
abstract public class KeyValueResponse { abstract public class KeyValueResponse {
protected static final String CRLF = "\r\n"; protected static final String CRLF = "\r\n";
private static final Log LOG = LogFactory.getLog(KeyValueResponse.class); private static final Log LOG = LogFactory.getLog(KeyValueResponse.class);
@ -30,14 +30,14 @@ abstract public class KeyValueResponse {
public void parse(InputStream stream, RetsVersion mVersion) throws RetsException { public void parse(InputStream stream, RetsVersion mVersion) throws RetsException {
try { try {
SAXBuilder builder = new SAXBuilder(); SAXReader builder = new SAXReader();
this.mDoc = builder.build(stream); this.mDoc = builder.read(stream);
Element retsElement = this.mDoc.getRootElement(); Element retsElement = this.mDoc.getRootElement();
if (!retsElement.getName().equals("RETS")) { if (!retsElement.getName().equals("RETS")) {
throw new RetsException("Expecting RETS"); throw new RetsException("Expecting RETS");
} }
int replyCode = NumberUtils.toInt(retsElement.getAttributeValue("ReplyCode")); int replyCode = NumberUtils.toInt(retsElement.attributeValue("ReplyCode"));
this.mReplyCode = replyCode; this.mReplyCode = replyCode;
if (!isValidReplyCode(replyCode)) { if (!isValidReplyCode(replyCode)) {
throw new InvalidReplyCodeException(replyCode); throw new InvalidReplyCodeException(replyCode);
@ -46,7 +46,7 @@ abstract public class KeyValueResponse {
if (RetsVersion.RETS_10.equals(mVersion)) { if (RetsVersion.RETS_10.equals(mVersion)) {
capabilityContainer = retsElement; capabilityContainer = retsElement;
} else { } else {
List children = retsElement.getChildren(); List children = retsElement.elements();
if (children.size() != 1) { if (children.size() != 1) {
throw new RetsException("Invalid number of children: " + children.size()); throw new RetsException("Invalid number of children: " + children.size());
} }
@ -58,9 +58,7 @@ abstract public class KeyValueResponse {
} }
} }
this.handleRetsResponse(capabilityContainer); this.handleRetsResponse(capabilityContainer);
} catch (JDOMException e) { } catch (DocumentException e) {
throw new RetsException(e);
} catch (IOException e) {
throw new RetsException(e); throw new RetsException(e);
} }
} }

View File

@ -9,11 +9,11 @@ import com.ossez.reoc.rets.common.metadata.JDomCompactBuilder;
import com.ossez.reoc.rets.common.metadata.JDomStandardBuilder; import com.ossez.reoc.rets.common.metadata.JDomStandardBuilder;
import com.ossez.reoc.rets.common.metadata.Metadata; import com.ossez.reoc.rets.common.metadata.Metadata;
import com.ossez.reoc.rets.common.metadata.MetadataBuilder; import com.ossez.reoc.rets.common.metadata.MetadataBuilder;
import org.jdom.Document;
import org.jdom.input.SAXBuilder;
import org.jdom.output.XMLOutputter;
import org.apache.commons.logging.Log; import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory; import org.apache.commons.logging.LogFactory;
import org.dom4j.Document;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
/** /**
@ -278,13 +278,16 @@ public class RetsTransport {
Object monitorobj = null; Object monitorobj = null;
monitorobj = this.monitor.eventStart("Parsing metadata"); monitorobj = this.monitor.eventStart("Parsing metadata");
try { try {
SAXBuilder xmlBuilder = new SAXBuilder(); SAXReader xmlBuilder = new SAXReader();
Document xmlDocument = xmlBuilder.build(httpResponse.getInputStream()); Document xmlDocument = xmlBuilder.read(httpResponse.getInputStream());
if (!location.equals("null")){ if (!location.equals("null")){
XMLOutputter outputter = new XMLOutputter();
FileWriter writer = new FileWriter(location); FileWriter writer = new FileWriter(location);
outputter.output(xmlDocument, writer); XMLWriter outputter = new XMLWriter(writer);
outputter.outputString(xmlDocument);
outputter.write(xmlDocument);
outputter.close();
} }
MetadataBuilder metadataBuilder; MetadataBuilder metadataBuilder;
if (req.isCompactFormat()) { if (req.isCompactFormat()) {

View File

@ -14,10 +14,8 @@ import java.util.StringTokenizer;
import org.apache.commons.logging.Log; import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory; import org.apache.commons.logging.LogFactory;
import org.jdom.Document; import org.dom4j.*;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
import com.ossez.reoc.rets.common.metadata.types.MClass; import com.ossez.reoc.rets.common.metadata.types.MClass;
import com.ossez.reoc.rets.common.metadata.types.MEditMask; import com.ossez.reoc.rets.common.metadata.types.MEditMask;
import com.ossez.reoc.rets.common.metadata.types.MLookup; import com.ossez.reoc.rets.common.metadata.types.MLookup;
@ -34,6 +32,7 @@ import com.ossez.reoc.rets.common.metadata.types.MValidationExternal;
import com.ossez.reoc.rets.common.metadata.types.MValidationExternalType; import com.ossez.reoc.rets.common.metadata.types.MValidationExternalType;
import com.ossez.reoc.rets.common.metadata.types.MValidationLookup; import com.ossez.reoc.rets.common.metadata.types.MValidationLookup;
import com.ossez.reoc.rets.common.metadata.types.MValidationLookupType; import com.ossez.reoc.rets.common.metadata.types.MValidationLookupType;
import org.dom4j.io.SAXReader;
import org.xml.sax.InputSource; import org.xml.sax.InputSource;
public class JDomCompactBuilder extends MetadataBuilder { public class JDomCompactBuilder extends MetadataBuilder {
@ -75,13 +74,11 @@ public class JDomCompactBuilder extends MetadataBuilder {
} }
public Metadata build(InputSource source) throws MetadataException { public Metadata build(InputSource source) throws MetadataException {
SAXBuilder builder = new SAXBuilder(); SAXReader builder = new SAXReader();
Document document; Document document;
try { try {
document = builder.build(source); document = builder.read(source);
} catch (JDOMException e) { } catch (DocumentException e) {
throw new MetadataException("Couldn't build document", e);
} catch (IOException e) {
throw new MetadataException("Couldn't build document", e); throw new MetadataException("Couldn't build document", e);
} }
return build(document); return build(document);
@ -97,72 +94,72 @@ public class JDomCompactBuilder extends MetadataBuilder {
if (!root.getName().equals(CONTAINER_ROOT)) { if (!root.getName().equals(CONTAINER_ROOT)) {
throw new MetadataException("Invalid root element"); throw new MetadataException("Invalid root element");
} }
Element container = root.getChild(CONTAINER_SYSTEM); Element container = root.element(CONTAINER_SYSTEM);
if (container != null) { if (container != null) {
MSystem sys = processSystem(container); MSystem sys = processSystem(container);
if (root.getChild(CONTAINER_RESOURCE) != null) { if (root.element(CONTAINER_RESOURCE) != null) {
Metadata m = new Metadata(sys); Metadata m = new Metadata(sys);
recurseAll(m, root); recurseAll(m, root);
} }
return new MetaObject[] { sys }; return new MetaObject[] { sys };
} }
container = root.getChild(CONTAINER_RESOURCE); container = root.element(CONTAINER_RESOURCE);
if (container != null) { if (container != null) {
return processResource(container); return processResource(container);
} }
container = root.getChild(CONTAINER_CLASS); container = root.element(CONTAINER_CLASS);
if (container != null) { if (container != null) {
return processClass(container); return processClass(container);
} }
container = root.getChild(CONTAINER_TABLE); container = root.element(CONTAINER_TABLE);
if (container != null) { if (container != null) {
return processTable(container); return processTable(container);
} }
container = root.getChild(CONTAINER_UPDATE); container = root.element(CONTAINER_UPDATE);
if (container != null) { if (container != null) {
return processUpdate(container); return processUpdate(container);
} }
container = root.getChild(CONTAINER_UPDATETYPE); container = root.element(CONTAINER_UPDATETYPE);
if (container != null) { if (container != null) {
return processUpdateType(container); return processUpdateType(container);
} }
container = root.getChild(CONTAINER_OBJECT); container = root.element(CONTAINER_OBJECT);
if (container != null) { if (container != null) {
return processObject(container); return processObject(container);
} }
container = root.getChild(CONTAINER_SEARCHHELP); container = root.element(CONTAINER_SEARCHHELP);
if (container != null) { if (container != null) {
return processSearchHelp(container); return processSearchHelp(container);
} }
container = root.getChild(CONTAINER_EDITMASK); container = root.element(CONTAINER_EDITMASK);
if (container != null) { if (container != null) {
return processEditMask(container); return processEditMask(container);
} }
container = root.getChild(CONTAINER_LOOKUP); container = root.element(CONTAINER_LOOKUP);
if (container != null) { if (container != null) {
return processLookup(container); return processLookup(container);
} }
container = root.getChild(CONTAINER_LOOKUPTYPE); container = root.element(CONTAINER_LOOKUPTYPE);
if (container != null) { if (container != null) {
return processLookupType(container); return processLookupType(container);
} }
container = root.getChild(CONTAINER_VALIDATIONLOOKUP); container = root.element(CONTAINER_VALIDATIONLOOKUP);
if (container != null) { if (container != null) {
return processValidationLookup(container); return processValidationLookup(container);
} }
container = root.getChild(CONTAINER_VALIDATIONLOOKUPTYPE); container = root.element(CONTAINER_VALIDATIONLOOKUPTYPE);
if (container != null) { if (container != null) {
return processValidationLookupType(container); return processValidationLookupType(container);
} }
container = root.getChild(CONTAINER_VALIDATIONEXTERNAL); container = root.element(CONTAINER_VALIDATIONEXTERNAL);
if (container != null) { if (container != null) {
return processValidationExternal(container); return processValidationExternal(container);
} }
container = root.getChild(CONTAINER_VALIDATIONEXTERNALTYPE); container = root.element(CONTAINER_VALIDATIONEXTERNALTYPE);
if (container != null) { if (container != null) {
return processValidationExternalType(container); return processValidationExternalType(container);
} }
container = root.getChild(CONTAINER_VALIDATIONEXPRESSION); container = root.element(CONTAINER_VALIDATIONEXPRESSION);
if (container != null) { if (container != null) {
return processValidationExpression(container); return processValidationExpression(container);
} }
@ -174,7 +171,7 @@ public class JDomCompactBuilder extends MetadataBuilder {
if (!root.getName().equals(CONTAINER_ROOT)) { if (!root.getName().equals(CONTAINER_ROOT)) {
throw new MetadataException("Invalid root element"); throw new MetadataException("Invalid root element");
} }
Element element = root.getChild(CONTAINER_SYSTEM); Element element = root.element(CONTAINER_SYSTEM);
if (element == null) { if (element == null) {
throw new MetadataException("Missing element " + CONTAINER_SYSTEM); throw new MetadataException("Missing element " + CONTAINER_SYSTEM);
} }
@ -218,7 +215,7 @@ public class JDomCompactBuilder extends MetadataBuilder {
} }
private String[] getColumns(Element el) { private String[] getColumns(Element el) {
Element cols = el.getChild(COLUMNS); Element cols = el.element(COLUMNS);
return split(cols); return split(cols);
} }
@ -256,7 +253,7 @@ public class JDomCompactBuilder extends MetadataBuilder {
* @throws MetaParseException if the value is null. * @throws MetaParseException if the value is null.
*/ */
private String getNonNullAttribute(Element element, String name) throws MetaParseException { private String getNonNullAttribute(Element element, String name) throws MetaParseException {
String value = element.getAttributeValue(name); String value = element.attributeValue(name);
if (value == null) { if (value == null) {
throw new MetaParseException("Attribute '" + name + "' not found on tag " + toString(element)); throw new MetaParseException("Attribute '" + name + "' not found on tag " + toString(element));
} }
@ -265,21 +262,21 @@ public class JDomCompactBuilder extends MetadataBuilder {
private String toString(Element element) { private String toString(Element element) {
StringBuffer buffer = new StringBuffer(); StringBuffer buffer = new StringBuffer();
List attributes = element.getAttributes(); List attributes = element.attributes();
buffer.append("'").append(element.getName()).append("'"); buffer.append("'").append(element.getName()).append("'");
buffer.append(", attributes: ").append(attributes); buffer.append(", attributes: ").append(attributes);
return buffer.toString(); return buffer.toString();
} }
private MSystem processSystem(Element container) { private MSystem processSystem(Element container) {
Element element = container.getChild(ELEMENT_SYSTEM); Element element = container.element(ELEMENT_SYSTEM);
MSystem system = buildSystem(); MSystem system = buildSystem();
// system metadata is such a hack. the first one here is by far my favorite // system metadata is such a hack. the first one here is by far my favorite
String comment = container.getChildText(MSystem.COMMENTS); String comment = container.elementText(MSystem.COMMENTS);
String systemId = element.getAttributeValue(MSystem.SYSTEMID); String systemId = element.attributeValue(MSystem.SYSTEMID);
String systemDescription = element.getAttributeValue(MSystem.SYSTEMDESCRIPTION); String systemDescription = element.attributeValue(MSystem.SYSTEMDESCRIPTION);
String version = container.getAttributeValue(MSystem.VERSION); String version = container.attributeValue(MSystem.VERSION);
String date = container.getAttributeValue(MSystem.DATE); String date = container.attributeValue(MSystem.DATE);
setAttribute(system, MSystem.COMMENTS, comment); setAttribute(system, MSystem.COMMENTS, comment);
setAttribute(system, MSystem.SYSTEMID, systemId); setAttribute(system, MSystem.SYSTEMID, systemId);
setAttribute(system, MSystem.SYSTEMDESCRIPTION, systemDescription); setAttribute(system, MSystem.SYSTEMDESCRIPTION, systemDescription);
@ -290,7 +287,7 @@ public class JDomCompactBuilder extends MetadataBuilder {
private void attachResource(Metadata metadata, Element root) { private void attachResource(Metadata metadata, Element root) {
MSystem system = metadata.getSystem(); MSystem system = metadata.getSystem();
List containers = root.getChildren(CONTAINER_RESOURCE); List containers = root.elements(CONTAINER_RESOURCE);
for (int i = 0; i < containers.size(); i++) { for (int i = 0; i < containers.size(); i++) {
Element container = (Element) containers.get(i); Element container = (Element) containers.get(i);
MResource[] resources = this.processResource(container); MResource[] resources = this.processResource(container);
@ -302,7 +299,7 @@ public class JDomCompactBuilder extends MetadataBuilder {
private MResource[] processResource(Element resourceContainer) { private MResource[] processResource(Element resourceContainer) {
String[] columns = getColumns(resourceContainer); String[] columns = getColumns(resourceContainer);
List rows = resourceContainer.getChildren(DATA); List rows = resourceContainer.elements(DATA);
MResource[] resources = new MResource[rows.size()]; MResource[] resources = new MResource[rows.size()];
for (int i = 0; i < rows.size(); i++) { for (int i = 0; i < rows.size(); i++) {
Element element = (Element) rows.get(i); Element element = (Element) rows.get(i);
@ -315,7 +312,7 @@ public class JDomCompactBuilder extends MetadataBuilder {
} }
private void attachClass(Metadata metadata, Element root) throws MetaParseException { private void attachClass(Metadata metadata, Element root) throws MetaParseException {
List containers = root.getChildren(CONTAINER_CLASS); List containers = root.elements(CONTAINER_CLASS);
for (int i = 0; i < containers.size(); i++) { for (int i = 0; i < containers.size(); i++) {
Element container = (Element) containers.get(i); Element container = (Element) containers.get(i);
String resourceId = getNonNullAttribute(container, ATTRIBUTE_RESOURCE); String resourceId = getNonNullAttribute(container, ATTRIBUTE_RESOURCE);
@ -332,7 +329,7 @@ public class JDomCompactBuilder extends MetadataBuilder {
String resourceId = getNonNullAttribute(classContainer, ATTRIBUTE_RESOURCE); String resourceId = getNonNullAttribute(classContainer, ATTRIBUTE_RESOURCE);
LOG.debug("resource name: " + resourceId + " for container " + name); LOG.debug("resource name: " + resourceId + " for container " + name);
String[] columns = getColumns(classContainer); String[] columns = getColumns(classContainer);
List rows = classContainer.getChildren(DATA); List rows = classContainer.elements(DATA);
MClass[] classes = new MClass[rows.size()]; MClass[] classes = new MClass[rows.size()];
for (int i = 0; i < rows.size(); i++) { for (int i = 0; i < rows.size(); i++) {
Element element = (Element) rows.get(i); Element element = (Element) rows.get(i);
@ -345,7 +342,7 @@ public class JDomCompactBuilder extends MetadataBuilder {
} }
private void attachTable(Metadata metadata, Element root) throws MetaParseException { private void attachTable(Metadata metadata, Element root) throws MetaParseException {
List containers = root.getChildren(CONTAINER_TABLE); List containers = root.elements(CONTAINER_TABLE);
for (int i = 0; i < containers.size(); i++) { for (int i = 0; i < containers.size(); i++) {
Element container = (Element) containers.get(i); Element container = (Element) containers.get(i);
String resourceId = getNonNullAttribute(container, ATTRIBUTE_RESOURCE); String resourceId = getNonNullAttribute(container, ATTRIBUTE_RESOURCE);
@ -368,7 +365,7 @@ public class JDomCompactBuilder extends MetadataBuilder {
private MTable[] processTable(Element tableContainer) { private MTable[] processTable(Element tableContainer) {
String[] columns = getColumns(tableContainer); String[] columns = getColumns(tableContainer);
List rows = tableContainer.getChildren(DATA); List rows = tableContainer.elements(DATA);
MTable[] fieldMetadata = new MTable[rows.size()]; MTable[] fieldMetadata = new MTable[rows.size()];
for (int i = 0; i < rows.size(); i++) { for (int i = 0; i < rows.size(); i++) {
Element element = (Element) rows.get(i); Element element = (Element) rows.get(i);
@ -381,7 +378,7 @@ public class JDomCompactBuilder extends MetadataBuilder {
} }
private void attachUpdate(Metadata metadata, Element root) throws MetaParseException { private void attachUpdate(Metadata metadata, Element root) throws MetaParseException {
List containers = root.getChildren(CONTAINER_UPDATE); List containers = root.elements(CONTAINER_UPDATE);
for (int i = 0; i < containers.size(); i++) { for (int i = 0; i < containers.size(); i++) {
Element container = (Element) containers.get(i); Element container = (Element) containers.get(i);
MClass parent = metadata.getMClass(getNonNullAttribute(container, ATTRIBUTE_RESOURCE), getNonNullAttribute( MClass parent = metadata.getMClass(getNonNullAttribute(container, ATTRIBUTE_RESOURCE), getNonNullAttribute(
@ -395,7 +392,7 @@ public class JDomCompactBuilder extends MetadataBuilder {
private MUpdate[] processUpdate(Element container) { private MUpdate[] processUpdate(Element container) {
String[] columns = getColumns(container); String[] columns = getColumns(container);
List rows = container.getChildren(DATA); List rows = container.elements(DATA);
MUpdate[] updates = new MUpdate[rows.size()]; MUpdate[] updates = new MUpdate[rows.size()];
for (int i = 0; i < rows.size(); i++) { for (int i = 0; i < rows.size(); i++) {
Element element = (Element) rows.get(i); Element element = (Element) rows.get(i);
@ -408,7 +405,7 @@ public class JDomCompactBuilder extends MetadataBuilder {
} }
private void attachUpdateType(Metadata metadata, Element root) throws MetaParseException { private void attachUpdateType(Metadata metadata, Element root) throws MetaParseException {
List containers = root.getChildren(CONTAINER_UPDATETYPE); List containers = root.elements(CONTAINER_UPDATETYPE);
for (int i = 0; i < containers.size(); i++) { for (int i = 0; i < containers.size(); i++) {
Element container = (Element) containers.get(i); Element container = (Element) containers.get(i);
MUpdate parent = metadata.getUpdate(getNonNullAttribute(container, ATTRIBUTE_RESOURCE), MUpdate parent = metadata.getUpdate(getNonNullAttribute(container, ATTRIBUTE_RESOURCE),
@ -422,7 +419,7 @@ public class JDomCompactBuilder extends MetadataBuilder {
private MUpdateType[] processUpdateType(Element container) { private MUpdateType[] processUpdateType(Element container) {
String[] columns = getColumns(container); String[] columns = getColumns(container);
List rows = container.getChildren(DATA); List rows = container.elements(DATA);
MUpdateType[] updateTypes = new MUpdateType[rows.size()]; MUpdateType[] updateTypes = new MUpdateType[rows.size()];
for (int i = 0; i < rows.size(); i++) { for (int i = 0; i < rows.size(); i++) {
Element element = (Element) rows.get(i); Element element = (Element) rows.get(i);
@ -435,7 +432,7 @@ public class JDomCompactBuilder extends MetadataBuilder {
} }
private void attachObject(Metadata metadata, Element root) throws MetaParseException { private void attachObject(Metadata metadata, Element root) throws MetaParseException {
List containers = root.getChildren(CONTAINER_OBJECT); List containers = root.elements(CONTAINER_OBJECT);
for (int i = 0; i < containers.size(); i++) { for (int i = 0; i < containers.size(); i++) {
Element container = (Element) containers.get(i); Element container = (Element) containers.get(i);
MResource parent = metadata.getResource(getNonNullAttribute(container, ATTRIBUTE_RESOURCE)); MResource parent = metadata.getResource(getNonNullAttribute(container, ATTRIBUTE_RESOURCE));
@ -448,7 +445,7 @@ public class JDomCompactBuilder extends MetadataBuilder {
private MObject[] processObject(Element objectContainer) { private MObject[] processObject(Element objectContainer) {
String[] columns = getColumns(objectContainer); String[] columns = getColumns(objectContainer);
List rows = objectContainer.getChildren(DATA); List rows = objectContainer.elements(DATA);
MObject[] objects = new MObject[rows.size()]; MObject[] objects = new MObject[rows.size()];
for (int i = 0; i < rows.size(); i++) { for (int i = 0; i < rows.size(); i++) {
Element element = (Element) rows.get(i); Element element = (Element) rows.get(i);
@ -461,7 +458,7 @@ public class JDomCompactBuilder extends MetadataBuilder {
} }
private void attachSearchHelp(Metadata metadata, Element root) throws MetaParseException { private void attachSearchHelp(Metadata metadata, Element root) throws MetaParseException {
List containers = root.getChildren(CONTAINER_SEARCHHELP); List containers = root.elements(CONTAINER_SEARCHHELP);
for (int i = 0; i < containers.size(); i++) { for (int i = 0; i < containers.size(); i++) {
Element container = (Element) containers.get(i); Element container = (Element) containers.get(i);
MResource parent = metadata.getResource(getNonNullAttribute(container, ATTRIBUTE_RESOURCE)); MResource parent = metadata.getResource(getNonNullAttribute(container, ATTRIBUTE_RESOURCE));
@ -474,7 +471,7 @@ public class JDomCompactBuilder extends MetadataBuilder {
private MSearchHelp[] processSearchHelp(Element container) { private MSearchHelp[] processSearchHelp(Element container) {
String[] columns = getColumns(container); String[] columns = getColumns(container);
List rows = container.getChildren(DATA); List rows = container.elements(DATA);
MSearchHelp[] searchHelps = new MSearchHelp[rows.size()]; MSearchHelp[] searchHelps = new MSearchHelp[rows.size()];
for (int i = 0; i < rows.size(); i++) { for (int i = 0; i < rows.size(); i++) {
Element element = (Element) rows.get(i); Element element = (Element) rows.get(i);
@ -487,7 +484,7 @@ public class JDomCompactBuilder extends MetadataBuilder {
} }
private void attachEditMask(Metadata metadata, Element root) throws MetaParseException { private void attachEditMask(Metadata metadata, Element root) throws MetaParseException {
List containers = root.getChildren(CONTAINER_EDITMASK); List containers = root.elements(CONTAINER_EDITMASK);
for (int i = 0; i < containers.size(); i++) { for (int i = 0; i < containers.size(); i++) {
Element container = (Element) containers.get(i); Element container = (Element) containers.get(i);
MResource parent = metadata.getResource(getNonNullAttribute(container, ATTRIBUTE_RESOURCE)); MResource parent = metadata.getResource(getNonNullAttribute(container, ATTRIBUTE_RESOURCE));
@ -500,7 +497,7 @@ public class JDomCompactBuilder extends MetadataBuilder {
private MEditMask[] processEditMask(Element container) { private MEditMask[] processEditMask(Element container) {
String[] columns = getColumns(container); String[] columns = getColumns(container);
List rows = container.getChildren(DATA); List rows = container.elements(DATA);
MEditMask[] editMasks = new MEditMask[rows.size()]; MEditMask[] editMasks = new MEditMask[rows.size()];
for (int i = 0; i < rows.size(); i++) { for (int i = 0; i < rows.size(); i++) {
Element element = (Element) rows.get(i); Element element = (Element) rows.get(i);
@ -513,7 +510,7 @@ public class JDomCompactBuilder extends MetadataBuilder {
} }
private void attachLookup(Metadata metadata, Element root) throws MetaParseException { private void attachLookup(Metadata metadata, Element root) throws MetaParseException {
List containers = root.getChildren(CONTAINER_LOOKUP); List containers = root.elements(CONTAINER_LOOKUP);
for (int i = 0; i < containers.size(); i++) { for (int i = 0; i < containers.size(); i++) {
Element container = (Element) containers.get(i); Element container = (Element) containers.get(i);
MResource parent = metadata.getResource(getNonNullAttribute(container, ATTRIBUTE_RESOURCE)); MResource parent = metadata.getResource(getNonNullAttribute(container, ATTRIBUTE_RESOURCE));
@ -526,7 +523,7 @@ public class JDomCompactBuilder extends MetadataBuilder {
private MLookup[] processLookup(Element container) { private MLookup[] processLookup(Element container) {
String[] columns = getColumns(container); String[] columns = getColumns(container);
List rows = container.getChildren(DATA); List rows = container.elements(DATA);
MLookup[] lookups = new MLookup[rows.size()]; MLookup[] lookups = new MLookup[rows.size()];
for (int i = 0; i < rows.size(); i++) { for (int i = 0; i < rows.size(); i++) {
Element element = (Element) rows.get(i); Element element = (Element) rows.get(i);
@ -539,7 +536,7 @@ public class JDomCompactBuilder extends MetadataBuilder {
} }
private void attachLookupType(Metadata metadata, Element root) throws MetaParseException { private void attachLookupType(Metadata metadata, Element root) throws MetaParseException {
List containers = root.getChildren(CONTAINER_LOOKUPTYPE); List containers = root.elements(CONTAINER_LOOKUPTYPE);
for (int i = 0; i < containers.size(); i++) { for (int i = 0; i < containers.size(); i++) {
Element container = (Element) containers.get(i); Element container = (Element) containers.get(i);
MLookup parent = metadata.getLookup(getNonNullAttribute(container, ATTRIBUTE_RESOURCE), MLookup parent = metadata.getLookup(getNonNullAttribute(container, ATTRIBUTE_RESOURCE),
@ -559,7 +556,7 @@ public class JDomCompactBuilder extends MetadataBuilder {
private MLookupType[] processLookupType(Element container) { private MLookupType[] processLookupType(Element container) {
String[] columns = getColumns(container); String[] columns = getColumns(container);
List rows = container.getChildren(DATA); List rows = container.elements(DATA);
MLookupType[] lookupTypes = new MLookupType[rows.size()]; MLookupType[] lookupTypes = new MLookupType[rows.size()];
for (int i = 0; i < rows.size(); i++) { for (int i = 0; i < rows.size(); i++) {
Element element = (Element) rows.get(i); Element element = (Element) rows.get(i);
@ -572,7 +569,7 @@ public class JDomCompactBuilder extends MetadataBuilder {
} }
private void attachValidationLookup(Metadata metadata, Element root) throws MetaParseException { private void attachValidationLookup(Metadata metadata, Element root) throws MetaParseException {
List containers = root.getChildren(CONTAINER_VALIDATIONLOOKUP); List containers = root.elements(CONTAINER_VALIDATIONLOOKUP);
for (int i = 0; i < containers.size(); i++) { for (int i = 0; i < containers.size(); i++) {
Element container = (Element) containers.get(i); Element container = (Element) containers.get(i);
MResource parent = metadata.getResource(getNonNullAttribute(container, ATTRIBUTE_RESOURCE)); MResource parent = metadata.getResource(getNonNullAttribute(container, ATTRIBUTE_RESOURCE));
@ -585,7 +582,7 @@ public class JDomCompactBuilder extends MetadataBuilder {
private MValidationLookup[] processValidationLookup(Element container) { private MValidationLookup[] processValidationLookup(Element container) {
String[] columns = getColumns(container); String[] columns = getColumns(container);
List rows = container.getChildren(DATA); List rows = container.elements(DATA);
MValidationLookup[] validationLookups = new MValidationLookup[rows.size()]; MValidationLookup[] validationLookups = new MValidationLookup[rows.size()];
for (int i = 0; i < rows.size(); i++) { for (int i = 0; i < rows.size(); i++) {
Element element = (Element) rows.get(i); Element element = (Element) rows.get(i);
@ -598,7 +595,7 @@ public class JDomCompactBuilder extends MetadataBuilder {
} }
private void attachValidationLookupType(Metadata metadata, Element root) throws MetaParseException { private void attachValidationLookupType(Metadata metadata, Element root) throws MetaParseException {
List containers = root.getChildren(CONTAINER_VALIDATIONLOOKUPTYPE); List containers = root.elements(CONTAINER_VALIDATIONLOOKUPTYPE);
for (int i = 0; i < containers.size(); i++) { for (int i = 0; i < containers.size(); i++) {
Element container = (Element) containers.get(i); Element container = (Element) containers.get(i);
MValidationLookup parent = metadata.getValidationLookup(getNonNullAttribute(container, ATTRIBUTE_RESOURCE), MValidationLookup parent = metadata.getValidationLookup(getNonNullAttribute(container, ATTRIBUTE_RESOURCE),
@ -612,7 +609,7 @@ public class JDomCompactBuilder extends MetadataBuilder {
private MValidationLookupType[] processValidationLookupType(Element container) { private MValidationLookupType[] processValidationLookupType(Element container) {
String[] columns = getColumns(container); String[] columns = getColumns(container);
List rows = container.getChildren(DATA); List rows = container.elements(DATA);
MValidationLookupType[] validationLookupTypes = new MValidationLookupType[rows.size()]; MValidationLookupType[] validationLookupTypes = new MValidationLookupType[rows.size()];
for (int i = 0; i < rows.size(); i++) { for (int i = 0; i < rows.size(); i++) {
Element element = (Element) rows.get(i); Element element = (Element) rows.get(i);
@ -625,10 +622,10 @@ public class JDomCompactBuilder extends MetadataBuilder {
} }
private void attachValidationExternal(Metadata metadata, Element root) { private void attachValidationExternal(Metadata metadata, Element root) {
List containers = root.getChildren(CONTAINER_VALIDATIONEXTERNAL); List containers = root.elements(CONTAINER_VALIDATIONEXTERNAL);
for (int i = 0; i < containers.size(); i++) { for (int i = 0; i < containers.size(); i++) {
Element container = (Element) containers.get(i); Element container = (Element) containers.get(i);
MResource parent = metadata.getResource(container.getAttributeValue(ATTRIBUTE_RESOURCE)); MResource parent = metadata.getResource(container.attributeValue(ATTRIBUTE_RESOURCE));
MValidationExternal[] validationExternals = processValidationExternal(container); MValidationExternal[] validationExternals = processValidationExternal(container);
for (int j = 0; j < validationExternals.length; j++) { for (int j = 0; j < validationExternals.length; j++) {
parent.addChild(MetadataType.VALIDATION_EXTERNAL, validationExternals[j]); parent.addChild(MetadataType.VALIDATION_EXTERNAL, validationExternals[j]);
@ -638,7 +635,7 @@ public class JDomCompactBuilder extends MetadataBuilder {
private MValidationExternal[] processValidationExternal(Element container) { private MValidationExternal[] processValidationExternal(Element container) {
String[] columns = getColumns(container); String[] columns = getColumns(container);
List rows = container.getChildren(DATA); List rows = container.elements(DATA);
MValidationExternal[] validationExternals = new MValidationExternal[rows.size()]; MValidationExternal[] validationExternals = new MValidationExternal[rows.size()];
for (int i = 0; i < rows.size(); i++) { for (int i = 0; i < rows.size(); i++) {
Element element = (Element) rows.get(i); Element element = (Element) rows.get(i);
@ -651,7 +648,7 @@ public class JDomCompactBuilder extends MetadataBuilder {
} }
private void attachValidationExternalType(Metadata metadata, Element root) throws MetaParseException { private void attachValidationExternalType(Metadata metadata, Element root) throws MetaParseException {
List containers = root.getChildren(CONTAINER_VALIDATIONEXTERNALTYPE); List containers = root.elements(CONTAINER_VALIDATIONEXTERNALTYPE);
for (int i = 0; i < containers.size(); i++) { for (int i = 0; i < containers.size(); i++) {
Element container = (Element) containers.get(i); Element container = (Element) containers.get(i);
MValidationExternal parent = metadata.getValidationExternal(getNonNullAttribute(container, MValidationExternal parent = metadata.getValidationExternal(getNonNullAttribute(container,
@ -665,7 +662,7 @@ public class JDomCompactBuilder extends MetadataBuilder {
private MValidationExternalType[] processValidationExternalType(Element container) { private MValidationExternalType[] processValidationExternalType(Element container) {
String[] columns = getColumns(container); String[] columns = getColumns(container);
List rows = container.getChildren(DATA); List rows = container.elements(DATA);
MValidationExternalType[] validationExternalTypes = new MValidationExternalType[rows.size()]; MValidationExternalType[] validationExternalTypes = new MValidationExternalType[rows.size()];
for (int i = 0; i < rows.size(); i++) { for (int i = 0; i < rows.size(); i++) {
Element element = (Element) rows.get(i); Element element = (Element) rows.get(i);
@ -678,7 +675,7 @@ public class JDomCompactBuilder extends MetadataBuilder {
} }
private void attachValidationExpression(Metadata metadata, Element root) throws MetaParseException { private void attachValidationExpression(Metadata metadata, Element root) throws MetaParseException {
List containers = root.getChildren(CONTAINER_VALIDATIONEXPRESSION); List containers = root.elements(CONTAINER_VALIDATIONEXPRESSION);
for (int i = 0; i < containers.size(); i++) { for (int i = 0; i < containers.size(); i++) {
Element container = (Element) containers.get(i); Element container = (Element) containers.get(i);
MResource parent = metadata.getResource(getNonNullAttribute(container, ATTRIBUTE_RESOURCE)); MResource parent = metadata.getResource(getNonNullAttribute(container, ATTRIBUTE_RESOURCE));
@ -691,7 +688,7 @@ public class JDomCompactBuilder extends MetadataBuilder {
private MValidationExpression[] processValidationExpression(Element container) { private MValidationExpression[] processValidationExpression(Element container) {
String[] columns = getColumns(container); String[] columns = getColumns(container);
List rows = container.getChildren(DATA); List rows = container.elements(DATA);
MValidationExpression[] expressions = new MValidationExpression[rows.size()]; MValidationExpression[] expressions = new MValidationExpression[rows.size()];
for (int i = 0; i < expressions.length; i++) { for (int i = 0; i < expressions.length; i++) {
Element element = (Element) rows.get(i); Element element = (Element) rows.get(i);

View File

@ -13,9 +13,6 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.HashMap; import java.util.HashMap;
import org.jdom.Attribute;
import org.jdom.Document;
import org.jdom.Element;
import com.ossez.reoc.rets.common.metadata.types.MClass; import com.ossez.reoc.rets.common.metadata.types.MClass;
import com.ossez.reoc.rets.common.metadata.types.MEditMask; import com.ossez.reoc.rets.common.metadata.types.MEditMask;
import com.ossez.reoc.rets.common.metadata.types.MForeignKey; import com.ossez.reoc.rets.common.metadata.types.MForeignKey;
@ -34,6 +31,9 @@ import com.ossez.reoc.rets.common.metadata.types.MValidationExternal;
import com.ossez.reoc.rets.common.metadata.types.MValidationExternalType; import com.ossez.reoc.rets.common.metadata.types.MValidationExternalType;
import com.ossez.reoc.rets.common.metadata.types.MValidationLookup; import com.ossez.reoc.rets.common.metadata.types.MValidationLookup;
import com.ossez.reoc.rets.common.metadata.types.MValidationLookupType; import com.ossez.reoc.rets.common.metadata.types.MValidationLookupType;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.Element;
/** Parses apart a complete Standard-XML response, returns a Metadata object */ /** Parses apart a complete Standard-XML response, returns a Metadata object */
public class JDomStandardBuilder extends MetadataBuilder { public class JDomStandardBuilder extends MetadataBuilder {
@ -105,7 +105,7 @@ public class JDomStandardBuilder extends MetadataBuilder {
expectElement(element, CONTAINER_ROOT); expectElement(element, CONTAINER_ROOT);
Element container = getElement(element, CONTAINER_METADATA); Element container = getElement(element, CONTAINER_METADATA);
boolean recurse = checkForRecursion(container); boolean recurse = checkForRecursion(container);
List list = container.getChildren(); List list = container.elements();
if (list.size() == 0) { if (list.size() == 0) {
return null; return null;
} }
@ -130,15 +130,15 @@ public class JDomStandardBuilder extends MetadataBuilder {
* we fall all the way to the end then there probably wasn't that * we fall all the way to the end then there probably wasn't that
* much to look through. * much to look through.
*/ */
Iterator children = top.getChildren().iterator(); Iterator children = top.elements().iterator();
while (children.hasNext()) { while (children.hasNext()) {
/* each of these is a container (METADATA-*) type */ /* each of these is a container (METADATA-*) type */
Element element = (Element) children.next(); Element element = (Element) children.next();
Iterator iterator = element.getChildren().iterator(); Iterator iterator = element.elements().iterator();
while (iterator.hasNext()) { while (iterator.hasNext()) {
/* each of these is an item element */ /* each of these is an item element */
Element child = (Element) iterator.next(); Element child = (Element) iterator.next();
Iterator subtypes = child.getChildren().iterator(); Iterator subtypes = child.elements().iterator();
while (subtypes.hasNext()) { while (subtypes.hasNext()) {
Element subtype = (Element) subtypes.next(); Element subtype = (Element) subtypes.next();
if (subtype.getName().startsWith(CONTAINER_PREFIX)) { if (subtype.getName().startsWith(CONTAINER_PREFIX)) {
@ -155,7 +155,7 @@ public class JDomStandardBuilder extends MetadataBuilder {
if (type == null) { if (type == null) {
throw new RuntimeException("no matching type for container " + container.getName()); throw new RuntimeException("no matching type for container " + container.getName());
} }
List elements = container.getChildren((String) sType2Element.get(type)); List elements = container.elements((String) sType2Element.get(type));
String path = getPath(container); String path = getPath(container);
List output = null; List output = null;
if (parent == null) { if (parent == null) {
@ -185,7 +185,7 @@ public class JDomStandardBuilder extends MetadataBuilder {
MetadataType[] childTypes = obj.getChildTypes(); MetadataType[] childTypes = obj.getChildTypes();
for (int j = 0; j < childTypes.length; j++) { for (int j = 0; j < childTypes.length; j++) {
MetadataType childType = childTypes[j]; MetadataType childType = childTypes[j];
Element childContainer = element.getChild(CONTAINER_PREFIX + childType.name()); Element childContainer = element.element(CONTAINER_PREFIX + childType.name());
if (childContainer == null) { if (childContainer == null) {
obj.addChild(childType, null); obj.addChild(childType, null);
} else { } else {
@ -201,27 +201,27 @@ public class JDomStandardBuilder extends MetadataBuilder {
} }
String getPath(Element container) { String getPath(Element container) {
String resource = container.getAttributeValue(ATTRIBUTE_RESOURCEID); String resource = container.attributeValue(ATTRIBUTE_RESOURCEID);
if (resource == null) { if (resource == null) {
return null; return null;
} }
String classname = container.getAttributeValue(ATTRIBUTE_CLASSNAME); String classname = container.attributeValue(ATTRIBUTE_CLASSNAME);
if (classname != null) { if (classname != null) {
String update = container.getAttributeValue(ATTRIBUTE_UPDATE); String update = container.attributeValue(ATTRIBUTE_UPDATE);
if (update != null) { if (update != null) {
return resource + ":" + classname + ":" + update; return resource + ":" + classname + ":" + update;
} }
return resource + ":" + classname; return resource + ":" + classname;
} }
String lookup = container.getAttributeValue(ATTRIBUTE_LOOKUP); String lookup = container.attributeValue(ATTRIBUTE_LOOKUP);
if (lookup != null) { if (lookup != null) {
return resource + ":" + lookup; return resource + ":" + lookup;
} }
String vallkp = container.getAttributeValue(ATTRIBUTE_VALIDATIONLOOKUP); String vallkp = container.attributeValue(ATTRIBUTE_VALIDATIONLOOKUP);
if (vallkp != null) { if (vallkp != null) {
return resource + ":" + vallkp; return resource + ":" + vallkp;
} }
String vale = container.getAttributeValue(ATTRIBUTE_VALIDATIONEXTERNAL); String vale = container.attributeValue(ATTRIBUTE_VALIDATIONEXTERNAL);
if (vale != null) { if (vale != null) {
return resource + ":" + vale; return resource + ":" + vale;
} }
@ -237,7 +237,7 @@ public class JDomStandardBuilder extends MetadataBuilder {
} }
private Element getElement(Element parent, String type) throws MetadataException { private Element getElement(Element parent, String type) throws MetadataException {
Element element = parent.getChild(type); Element element = parent.element(type);
if (element == null) { if (element == null) {
throw new MetadataException("Missing element " + type); throw new MetadataException("Missing element " + type);
} }
@ -253,7 +253,7 @@ public class JDomStandardBuilder extends MetadataBuilder {
private void setAttributes(MetaObject obj, Element el) { private void setAttributes(MetaObject obj, Element el) {
List children = el.getChildren(); List children = el.elements();
for (int i = 0; i < children.size(); i++) { for (int i = 0; i < children.size(); i++) {
Element child = (Element) children.get(i); Element child = (Element) children.get(i);
String name = child.getName(); String name = child.getName();
@ -269,7 +269,7 @@ public class JDomStandardBuilder extends MetadataBuilder {
//when atrributes from the xml element are needed //when atrributes from the xml element are needed
public void setAttributesFromXMLAttr(MetaObject obj, Element el) { public void setAttributesFromXMLAttr(MetaObject obj, Element el) {
Iterator attrIter = el.getParentElement().getAttributes().iterator(); Iterator attrIter = el.getParent().attributes().iterator();
while(attrIter.hasNext()){ while(attrIter.hasNext()){
Attribute attr = (Attribute) attrIter.next(); Attribute attr = (Attribute) attrIter.next();
@ -293,20 +293,20 @@ public class JDomStandardBuilder extends MetadataBuilder {
} }
private MSystem processSystem(Element container) { private MSystem processSystem(Element container) {
Element element = container.getChild(ELEMENT_SYSTEM); Element element = container.element(ELEMENT_SYSTEM);
if (element == null){ if (element == null){
element = container.getChild(ELEMENT_SYSTEM.toUpperCase()); element = container.element(ELEMENT_SYSTEM.toUpperCase());
} }
MSystem system = buildSystem(); MSystem system = buildSystem();
init(system); init(system);
setAttributesFromXMLAttr(system, element); setAttributesFromXMLAttr(system, element);
setAttributes(system, element); setAttributes(system, element);
Element child; Element child;
child = element.getChild(CONTAINER_RESOURCE); child = element.element(CONTAINER_RESOURCE);
if (child != null) { if (child != null) {
processResource(system, child); processResource(system, child);
} }
child = element.getChild(CONTAINER_FOREIGNKEY); child = element.element(CONTAINER_FOREIGNKEY);
if (child != null) { if (child != null) {
processForeignKey(system, child); processForeignKey(system, child);
} }
@ -314,7 +314,7 @@ public class JDomStandardBuilder extends MetadataBuilder {
} }
private void processResource(MSystem system, Element container) { private void processResource(MSystem system, Element container) {
List resources = container.getChildren(ELEMENT_RESOURCE); List resources = container.elements(ELEMENT_RESOURCE);
for (int i = 0; i < resources.size(); i++) { for (int i = 0; i < resources.size(); i++) {
Element element = (Element) resources.get(i); Element element = (Element) resources.get(i);
MResource resource = buildResource(); MResource resource = buildResource();
@ -322,39 +322,39 @@ public class JDomStandardBuilder extends MetadataBuilder {
setAttributes(resource, element); setAttributes(resource, element);
system.addChild(MetadataType.RESOURCE, resource); system.addChild(MetadataType.RESOURCE, resource);
Element child; Element child;
child = element.getChild(CONTAINER_CLASS); child = element.element(CONTAINER_CLASS);
if (child != null) { if (child != null) {
processClass(resource, child); processClass(resource, child);
} }
child = element.getChild(CONTAINER_OBJECT); child = element.element(CONTAINER_OBJECT);
if (child != null) { if (child != null) {
processObject(resource, child); processObject(resource, child);
} }
child = element.getChild(CONTAINER_SEARCH_HELP); child = element.element(CONTAINER_SEARCH_HELP);
if (child != null) { if (child != null) {
processSearchHelp(resource, child); processSearchHelp(resource, child);
} }
child = element.getChild(CONTAINER_EDITMASK); child = element.element(CONTAINER_EDITMASK);
if (child != null) { if (child != null) {
processEditMask(resource, child); processEditMask(resource, child);
} }
child = element.getChild(CONTAINER_LOOKUP); child = element.element(CONTAINER_LOOKUP);
if (child != null) { if (child != null) {
processLookup(resource, child); processLookup(resource, child);
} }
child = element.getChild(CONTAINER_UPDATEHELP); child = element.element(CONTAINER_UPDATEHELP);
if (child != null) { if (child != null) {
processUpdateHelp(resource, child); processUpdateHelp(resource, child);
} }
child = element.getChild(CONTAINER_VALIDATIONLOOKUP); child = element.element(CONTAINER_VALIDATIONLOOKUP);
if (child != null) { if (child != null) {
processValidationLookup(resource, child); processValidationLookup(resource, child);
} }
child = element.getChild(CONTAINER_VALIDATIONEXPRESSION); child = element.element(CONTAINER_VALIDATIONEXPRESSION);
if (child != null) { if (child != null) {
processValidationExpression(resource, child); processValidationExpression(resource, child);
} }
child = element.getChild(CONTAINER_VALIDATIONEXTERNAL); child = element.element(CONTAINER_VALIDATIONEXTERNAL);
if (child != null) { if (child != null) {
processValidationExternal(resource, child); processValidationExternal(resource, child);
} }
@ -362,7 +362,7 @@ public class JDomStandardBuilder extends MetadataBuilder {
} }
private void processEditMask(MResource parent, Element container) { private void processEditMask(MResource parent, Element container) {
List elements = container.getChildren(ELEMENT_EDITMASK); List elements = container.elements(ELEMENT_EDITMASK);
for (int i = 0; i < elements.size(); i++) { for (int i = 0; i < elements.size(); i++) {
Element element = (Element) elements.get(i); Element element = (Element) elements.get(i);
MEditMask mask = buildEditMask(); MEditMask mask = buildEditMask();
@ -372,8 +372,8 @@ public class JDomStandardBuilder extends MetadataBuilder {
} }
private void processLookup(MResource parent, Element container) { private void processLookup(MResource parent, Element container) {
List elements15 = container.getChildren(ELEMENT_LOOKUP); List elements15 = container.elements(ELEMENT_LOOKUP);
List elements17 = container.getChildren(ELEMENT_LOOKUPTYPE); List elements17 = container.elements(ELEMENT_LOOKUPTYPE);
List elements; List elements;
//some Rets Servers have lookuptype and lookup elements interchanged //some Rets Servers have lookuptype and lookup elements interchanged
if (elements15.isEmpty()){ if (elements15.isEmpty()){
@ -387,7 +387,7 @@ public class JDomStandardBuilder extends MetadataBuilder {
init(lookup); init(lookup);
setAttributes(lookup, element); setAttributes(lookup, element);
parent.addChild(MetadataType.LOOKUP, lookup); parent.addChild(MetadataType.LOOKUP, lookup);
Element child = element.getChild(CONTAINER_LOOKUPTYPE); Element child = element.element(CONTAINER_LOOKUPTYPE);
if (child != null) { if (child != null) {
processLookupType(lookup, child); processLookupType(lookup, child);
} }
@ -396,8 +396,8 @@ public class JDomStandardBuilder extends MetadataBuilder {
private void processLookupType(MLookup parent, Element container) { private void processLookupType(MLookup parent, Element container) {
List elements15 = container.getChildren(ELEMENT_LOOKUPTYPE);// check spec List elements15 = container.elements(ELEMENT_LOOKUPTYPE);// check spec
List elements17 = container.getChildren(ELEMENT_LOOKUP); List elements17 = container.elements(ELEMENT_LOOKUP);
List elements; List elements;
//some Rets Servers have lookuptype and lookup elements interchanged //some Rets Servers have lookuptype and lookup elements interchanged
if (elements15.isEmpty()){ if (elements15.isEmpty()){
@ -414,7 +414,7 @@ public class JDomStandardBuilder extends MetadataBuilder {
} }
private void processUpdateHelp(MResource parent, Element container) { private void processUpdateHelp(MResource parent, Element container) {
List elements = container.getChildren(ELEMENT_UPDATEHELP); List elements = container.elements(ELEMENT_UPDATEHELP);
for (int i = 0; i < elements.size(); i++) { for (int i = 0; i < elements.size(); i++) {
Element element = (Element) elements.get(i); Element element = (Element) elements.get(i);
MUpdateHelp help = buildUpdateHelp(); MUpdateHelp help = buildUpdateHelp();
@ -424,14 +424,14 @@ public class JDomStandardBuilder extends MetadataBuilder {
} }
private void processValidationLookup(MResource parent, Element container) { private void processValidationLookup(MResource parent, Element container) {
List elements = container.getChildren(ELEMENT_VALIDATIONLOOKUP); List elements = container.elements(ELEMENT_VALIDATIONLOOKUP);
for (int i = 0; i < elements.size(); i++) { for (int i = 0; i < elements.size(); i++) {
Element element = (Element) elements.get(i); Element element = (Element) elements.get(i);
MValidationLookup lookup = buildValidationLookup(); MValidationLookup lookup = buildValidationLookup();
init(lookup); init(lookup);
setAttributes(lookup, element); setAttributes(lookup, element);
parent.addChild(MetadataType.VALIDATION_LOOKUP, lookup); parent.addChild(MetadataType.VALIDATION_LOOKUP, lookup);
Element child = element.getChild(CONTAINER_VALIDATIONLOOKUPTYPE); Element child = element.element(CONTAINER_VALIDATIONLOOKUPTYPE);
if (child != null) { if (child != null) {
processValidationLookupType(lookup, child); processValidationLookupType(lookup, child);
} }
@ -439,7 +439,7 @@ public class JDomStandardBuilder extends MetadataBuilder {
} }
private void processValidationLookupType(MValidationLookup parent, Element container) { private void processValidationLookupType(MValidationLookup parent, Element container) {
List elements = container.getChildren(ELEMENT_VALIDATIONLOOKUPTYPE); List elements = container.elements(ELEMENT_VALIDATIONLOOKUPTYPE);
for (int i = 0; i < elements.size(); i++) { for (int i = 0; i < elements.size(); i++) {
Element element = (Element) elements.get(i); Element element = (Element) elements.get(i);
MValidationLookupType lookupType = buildValidationLookupType(); MValidationLookupType lookupType = buildValidationLookupType();
@ -449,7 +449,7 @@ public class JDomStandardBuilder extends MetadataBuilder {
} }
private void processValidationExpression(MResource parent, Element container) { private void processValidationExpression(MResource parent, Element container) {
List elements = container.getChildren(ELEMENT_VALIDATIONEXPRESSION); List elements = container.elements(ELEMENT_VALIDATIONEXPRESSION);
for (int i = 0; i < elements.size(); i++) { for (int i = 0; i < elements.size(); i++) {
Element element = (Element) elements.get(i); Element element = (Element) elements.get(i);
MValidationExpression expression = buildValidationExpression(); MValidationExpression expression = buildValidationExpression();
@ -459,14 +459,14 @@ public class JDomStandardBuilder extends MetadataBuilder {
} }
private void processValidationExternal(MResource parent, Element container) { private void processValidationExternal(MResource parent, Element container) {
List elements = container.getChildren(ELEMENT_VALIDATIONEXTERNAL); List elements = container.elements(ELEMENT_VALIDATIONEXTERNAL);
for (int i = 0; i < elements.size(); i++) { for (int i = 0; i < elements.size(); i++) {
Element element = (Element) elements.get(i); Element element = (Element) elements.get(i);
MValidationExternal external = buildValidationExternal(); MValidationExternal external = buildValidationExternal();
init(external); init(external);
setAttributes(external, element); setAttributes(external, element);
parent.addChild(MetadataType.VALIDATION_EXTERNAL, external); parent.addChild(MetadataType.VALIDATION_EXTERNAL, external);
Element child = element.getChild(CONTAINER_VALIDATIONEXTERNALTYPE); Element child = element.element(CONTAINER_VALIDATIONEXTERNALTYPE);
if (child != null) { if (child != null) {
processValidationExternalType(external, child); processValidationExternalType(external, child);
} }
@ -474,7 +474,7 @@ public class JDomStandardBuilder extends MetadataBuilder {
} }
private void processValidationExternalType(MValidationExternal parent, Element container) { private void processValidationExternalType(MValidationExternal parent, Element container) {
List elements = container.getChildren(ELEMENT_VALIDATIONEXTERNALTYPE); List elements = container.elements(ELEMENT_VALIDATIONEXTERNALTYPE);
for (int i = 0; i < elements.size(); i++) { for (int i = 0; i < elements.size(); i++) {
Element element = (Element) elements.get(i); Element element = (Element) elements.get(i);
MValidationExternalType type = buildValidationExternalType(); MValidationExternalType type = buildValidationExternalType();
@ -484,7 +484,7 @@ public class JDomStandardBuilder extends MetadataBuilder {
} }
private void processSearchHelp(MResource parent, Element container) { private void processSearchHelp(MResource parent, Element container) {
List searchhelps = container.getChildren(ELEMENT_SEARCHHELP); List searchhelps = container.elements(ELEMENT_SEARCHHELP);
for (int i = 0; i < searchhelps.size(); i++) { for (int i = 0; i < searchhelps.size(); i++) {
Element element = (Element) searchhelps.get(i); Element element = (Element) searchhelps.get(i);
MSearchHelp searchhelp = buildSearchHelp(); MSearchHelp searchhelp = buildSearchHelp();
@ -494,7 +494,7 @@ public class JDomStandardBuilder extends MetadataBuilder {
} }
private void processObject(MResource parent, Element container) { private void processObject(MResource parent, Element container) {
List objects = container.getChildren(ELEMENT_OBJECT); List objects = container.elements(ELEMENT_OBJECT);
for (int i = 0; i < objects.size(); i++) { for (int i = 0; i < objects.size(); i++) {
Element element = (Element) objects.get(i); Element element = (Element) objects.get(i);
MObject obj = buildObject(); MObject obj = buildObject();
@ -504,7 +504,7 @@ public class JDomStandardBuilder extends MetadataBuilder {
} }
private void processClass(MResource parent, Element container) { private void processClass(MResource parent, Element container) {
List classes = container.getChildren(ELEMENT_CLASS); List classes = container.elements(ELEMENT_CLASS);
for (int i = 0; i < classes.size(); i++) { for (int i = 0; i < classes.size(); i++) {
Element element = (Element) classes.get(i); Element element = (Element) classes.get(i);
MClass clazz = buildClass(); MClass clazz = buildClass();
@ -512,11 +512,11 @@ public class JDomStandardBuilder extends MetadataBuilder {
setAttributes(clazz, element); setAttributes(clazz, element);
parent.addChild(MetadataType.CLASS, clazz); parent.addChild(MetadataType.CLASS, clazz);
Element child; Element child;
child = element.getChild(CONTAINER_TABLE); child = element.element(CONTAINER_TABLE);
if (child != null) { if (child != null) {
processTable(clazz, child); processTable(clazz, child);
} }
child = element.getChild(CONTAINER_UPDATE); child = element.element(CONTAINER_UPDATE);
if (child != null) { if (child != null) {
processUpdate(clazz, child); processUpdate(clazz, child);
} }
@ -524,7 +524,7 @@ public class JDomStandardBuilder extends MetadataBuilder {
} }
private void processTable(MClass parent, Element container) { private void processTable(MClass parent, Element container) {
List tables = container.getChildren(ELEMENT_TABLE); List tables = container.elements(ELEMENT_TABLE);
for (int i = 0; i < tables.size(); i++) { for (int i = 0; i < tables.size(); i++) {
Element element = (Element) tables.get(i); Element element = (Element) tables.get(i);
MTable table = buildTable(); MTable table = buildTable();
@ -534,14 +534,14 @@ public class JDomStandardBuilder extends MetadataBuilder {
} }
private void processUpdate(MClass parent, Element container) { private void processUpdate(MClass parent, Element container) {
List updates = container.getChildren(ELEMENT_UPDATE); List updates = container.elements(ELEMENT_UPDATE);
for (int i = 0; i < updates.size(); i++) { for (int i = 0; i < updates.size(); i++) {
Element element = (Element) updates.get(i); Element element = (Element) updates.get(i);
MUpdate update = buildUpdate(); MUpdate update = buildUpdate();
init(update); init(update);
setAttributes(update, element); setAttributes(update, element);
parent.addChild(MetadataType.UPDATE, update); parent.addChild(MetadataType.UPDATE, update);
Element child = element.getChild(CONTAINER_UPDATE_TYPE); Element child = element.element(CONTAINER_UPDATE_TYPE);
if (child != null) { if (child != null) {
processUpdateType(update, child); processUpdateType(update, child);
} }
@ -549,7 +549,7 @@ public class JDomStandardBuilder extends MetadataBuilder {
} }
private void processUpdateType(MUpdate parent, Element container) { private void processUpdateType(MUpdate parent, Element container) {
List updateFields = container.getChildren(ELEMENT_UPDATETYPE); List updateFields = container.elements(ELEMENT_UPDATETYPE);
for (int i = 0; i < updateFields.size(); i++) { for (int i = 0; i < updateFields.size(); i++) {
Element element = (Element) updateFields.get(i); Element element = (Element) updateFields.get(i);
MUpdateType updateType = buildUpdateType(); MUpdateType updateType = buildUpdateType();
@ -559,7 +559,7 @@ public class JDomStandardBuilder extends MetadataBuilder {
} }
private void processForeignKey(MSystem system, Element container) { private void processForeignKey(MSystem system, Element container) {
List fkeys = container.getChildren("ForeignKey"); List fkeys = container.elements("ForeignKey");
for (int i = 0; i < fkeys.size(); i++) { for (int i = 0; i < fkeys.size(); i++) {
Element element = (Element) fkeys.get(i); Element element = (Element) fkeys.get(i);
MForeignKey foreignKey = buildForeignKey(); MForeignKey foreignKey = buildForeignKey();