You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ws.apache.org by ve...@apache.org on 2015/08/29 17:48:31 UTC

svn commit: r1700054 - in /webservices/axiom/trunk: aspects/fom-aspects/src/main/java/org/apache/axiom/fom/ implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/

Author: veithen
Date: Sat Aug 29 15:48:30 2015
New Revision: 1700054

URL: http://svn.apache.org/r1700054
Log:
AXIOM-472: Reimplement FOMAttribute as a first class node instead of a wrapper around an OMAttribute.

Added:
    webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/AbderaAttribute.java   (with props)
    webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/AbderaAttributeSupport.aj
      - copied, changed from r1698456, webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/FOMAttribute.java
Modified:
    webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/FOMAttribute.java
    webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/FOMFactory.java
    webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/FOMXPath.java

Added: webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/AbderaAttribute.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/AbderaAttribute.java?rev=1700054&view=auto
==============================================================================
--- webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/AbderaAttribute.java (added)
+++ webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/AbderaAttribute.java Sat Aug 29 15:48:30 2015
@@ -0,0 +1,26 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.axiom.fom;
+
+import org.apache.abdera.model.Attribute;
+import org.apache.axiom.core.CoreNSAwareAttribute;
+
+public interface AbderaAttribute extends Attribute, AbderaNode, CoreNSAwareAttribute {
+
+}

Propchange: webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/AbderaAttribute.java
------------------------------------------------------------------------------
    svn:eol-style = native

Copied: webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/AbderaAttributeSupport.aj (from r1698456, webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/FOMAttribute.java)
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/AbderaAttributeSupport.aj?p2=webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/AbderaAttributeSupport.aj&p1=webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/FOMAttribute.java&r1=1698456&r2=1700054&rev=1700054&view=diff
==============================================================================
--- webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/FOMAttribute.java (original)
+++ webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/AbderaAttributeSupport.aj Sat Aug 29 15:48:30 2015
@@ -15,62 +15,17 @@
  * copyright in this work, please see the NOTICE file in the top level
  * directory of this distribution.
  */
-package org.apache.abdera.parser.stax;
+package org.apache.axiom.fom;
 
-import javax.xml.namespace.QName;
-
-import org.apache.abdera.factory.Factory;
 import org.apache.abdera.model.Attribute;
-import org.apache.axiom.om.OMAttribute;
-
-public class FOMAttribute implements Attribute {
-
-    private final OMAttribute attr;
-
-    protected FOMAttribute(OMAttribute attr) {
-        this.attr = attr;
-    }
-
-    public QName getQName() {
-        return attr.getQName();
-    }
 
-    public String getText() {
-        return attr.getAttributeValue();
+public aspect AbderaAttributeSupport {
+    public final String AbderaAttribute.getText() {
+        return coreGetCharacterData().toString();
     }
 
-    public Attribute setText(String text) {
-        attr.setAttributeValue(text);
+    public final Attribute AbderaAttribute.setText(String text) {
+        coreSetCharacterData(text, Policies.DETACH_POLICY);
         return this;
     }
-
-    public Factory getFactory() {
-        return (Factory)attr.getOMFactory();
-    }
-
-    @Override
-    public int hashCode() {
-        final int PRIME = 31;
-        int result = 1;
-        result = PRIME * result + ((attr == null) ? 0 : attr.hashCode());
-        return result;
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj)
-            return true;
-        if (obj == null)
-            return false;
-        if (getClass() != obj.getClass())
-            return false;
-        final FOMAttribute other = (FOMAttribute)obj;
-        if (attr == null) {
-            if (other.attr != null)
-                return false;
-        } else if (!attr.equals(other.attr))
-            return false;
-        return true;
-    }
-
 }

Modified: webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/FOMAttribute.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/FOMAttribute.java?rev=1700054&r1=1700053&r2=1700054&view=diff
==============================================================================
--- webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/FOMAttribute.java (original)
+++ webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/FOMAttribute.java Sat Aug 29 15:48:30 2015
@@ -17,60 +17,12 @@
  */
 package org.apache.abdera.parser.stax;
 
-import javax.xml.namespace.QName;
-
-import org.apache.abdera.factory.Factory;
-import org.apache.abdera.model.Attribute;
-import org.apache.axiom.om.OMAttribute;
-
-public class FOMAttribute implements Attribute {
-
-    private final OMAttribute attr;
-
-    protected FOMAttribute(OMAttribute attr) {
-        this.attr = attr;
+import org.apache.axiom.fom.AbderaAttribute;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.impl.llom.OMAttributeImpl;
+
+public class FOMAttribute extends OMAttributeImpl implements AbderaAttribute {
+    protected FOMAttribute(OMFactory factory) {
+        super(factory);
     }
-
-    public QName getQName() {
-        return attr.getQName();
-    }
-
-    public String getText() {
-        return attr.getAttributeValue();
-    }
-
-    public Attribute setText(String text) {
-        attr.setAttributeValue(text);
-        return this;
-    }
-
-    public Factory getFactory() {
-        return (Factory)attr.getOMFactory();
-    }
-
-    @Override
-    public int hashCode() {
-        final int PRIME = 31;
-        int result = 1;
-        result = PRIME * result + ((attr == null) ? 0 : attr.hashCode());
-        return result;
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj)
-            return true;
-        if (obj == null)
-            return false;
-        if (getClass() != obj.getClass())
-            return false;
-        final FOMAttribute other = (FOMAttribute)obj;
-        if (attr == null) {
-            if (other.attr != null)
-                return false;
-        } else if (!attr.equals(other.attr))
-            return false;
-        return true;
-    }
-
 }

Modified: webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/FOMFactory.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/FOMFactory.java?rev=1700054&r1=1700053&r2=1700054&view=diff
==============================================================================
--- webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/FOMFactory.java (original)
+++ webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/FOMFactory.java Sat Aug 29 15:48:30 2015
@@ -60,6 +60,7 @@ import org.apache.axiom.core.CoreCDATASe
 import org.apache.axiom.core.CoreCharacterDataNode;
 import org.apache.axiom.core.CoreComment;
 import org.apache.axiom.core.CoreDocument;
+import org.apache.axiom.core.CoreNSAwareAttribute;
 import org.apache.axiom.core.CoreNSAwareElement;
 import org.apache.axiom.core.CoreProcessingInstruction;
 import org.apache.axiom.fom.AbderaFactory;
@@ -649,4 +650,9 @@ public class FOMFactory extends OMLinked
     public CoreComment createComment() {
         return new FOMComment(this);
     }
+
+    @Override
+    public CoreNSAwareAttribute createNSAwareAttribute() {
+        return new FOMAttribute(this);
+    }
 }

Modified: webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/FOMXPath.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/FOMXPath.java?rev=1700054&r1=1700053&r2=1700054&view=diff
==============================================================================
--- webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/FOMXPath.java (original)
+++ webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/FOMXPath.java Sat Aug 29 15:48:30 2015
@@ -17,7 +17,6 @@
  */
 package org.apache.abdera.parser.stax;
 
-import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -30,7 +29,6 @@ import org.apache.abdera.model.ElementWr
 import org.apache.abdera.parser.stax.util.ResolveFunction;
 import org.apache.abdera.util.AbstractXPath;
 import org.apache.abdera.xpath.XPathException;
-import org.apache.axiom.om.OMAttribute;
 import org.apache.axiom.om.xpath.DocumentNavigator;
 import org.jaxen.BaseXPath;
 import org.jaxen.Function;
@@ -136,17 +134,8 @@ public class FOMXPath extends AbstractXP
                             Map<QName, Object> variables) throws XPathException {
         try {
             base = getElementWrapped(base);
-            List nodes = new ArrayList();
             XPath xpath = getXPath(path, namespaces, functions, variables);
-            List results = xpath.selectNodes(base);
-            for (Object obj : results) {
-                if (obj instanceof OMAttribute) {
-                    nodes.add(new FOMAttribute((OMAttribute)obj));
-                } else {
-                    nodes.add(obj);
-                }
-            }
-            return nodes;
+            return xpath.selectNodes(base);
         } catch (JaxenException e) {
             throw new XPathException(e);
         }
@@ -164,10 +153,7 @@ public class FOMXPath extends AbstractXP
         try {
             base = getElementWrapped(base);
             XPath xpath = getXPath(path, namespaces, functions, variables);
-            Object obj = xpath.selectSingleNode(base);
-            if (obj instanceof OMAttribute)
-                obj = new FOMAttribute((OMAttribute)obj);
-            return obj;
+            return xpath.selectSingleNode(base);
         } catch (JaxenException e) {
             throw new XPathException(e);
         }