fix for bug 2928 50/17550/6
authorRyan Moats <rmoats@us.ibm.com>
Wed, 1 Apr 2015 14:24:43 +0000 (09:24 -0500)
committerRyan Moats <rmoats@us.ibm.com>
Wed, 1 Apr 2015 18:43:08 +0000 (13:43 -0500)
put moxy back in nb and use it in junit testing

Change-Id: I4fddcded645b5b2db0710058854a64c2935ef041
Signed-off-by: Ryan Moats <rmoats@us.ibm.com>
neutron-spi/pom.xml
neutron-spi/src/main/java/org/opendaylight/neutron/spi/NeutronNetwork.java
neutron-spi/src/main/java/org/opendaylight/neutron/spi/NeutronNetwork_Segment.java
neutron-spi/src/main/java/org/opendaylight/neutron/spi/NeutronPort.java
neutron-spi/src/test/java/org/opendaylight/neutron/spi/JaxbTestHelper.java
neutron-spi/src/test/java/org/opendaylight/neutron/spi/NeutronLoadBalancer_SessionPersistenceJAXBTest.java
neutron-spi/src/test/java/org/opendaylight/neutron/spi/NeutronNetworkJAXBTest.java
neutron-spi/src/test/resources/org/opendaylight/neutron/spi/jaxb.properties [new file with mode: 0644]
northbound-api/src/main/java/org/opendaylight/neutron/northbound/api/NeutronNorthboundRSApplication.java

index 7c26fec13127356ab4021a6d1769401adc9272f0..d4d7f84348b9abe560ad8aa3e2c83fa644087877 100644 (file)
       <scope>test</scope>
     </dependency>
     <dependency>
-       <groupId>com.sun.jersey</groupId>
-       <artifactId>jersey-json</artifactId>
-       <version>1.19</version>
-       <scope>test</scope>
+      <groupId>org.eclipse.persistence</groupId>
+      <artifactId>org.eclipse.persistence.antlr</artifactId>
+      <version>2.5.2</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.eclipse.persistence</groupId>
+      <artifactId>org.eclipse.persistence.core</artifactId>
+      <version>2.5.2</version>
+      <scope>test</scope>
     </dependency>
     <dependency>
-       <groupId>com.sun.jersey</groupId>
-       <artifactId>jersey-json</artifactId>
-       <version>1.19</version>
+       <groupId>org.eclipse.persistence</groupId>
+       <artifactId>org.eclipse.persistence.moxy</artifactId>
+       <version>2.5.2</version>
        <scope>test</scope>
     </dependency>
   </dependencies>
index 621cdaa0fc0af6a1fe316fb95f246a5951991eaa..81127e974dcef76c3da1ca03b37e8417df2f884e 100644 (file)
@@ -42,20 +42,20 @@ public class NeutronNetwork implements Serializable, INeutronObject {
     @XmlElement (name = "tenant_id")
     String tenantID;                 // tenant for this network
 
-    @XmlElement (defaultValue = "false", name = "router:external")
-    //    @XmlElement (defaultValue="false", namespace="router", name="external")
+    //    @XmlElement (defaultValue = "false", name = "router:external")
+    @XmlElement (defaultValue="false", namespace="router", name="external")
     Boolean routerExternal;           // network external or not
 
-    @XmlElement (defaultValue = "flat", name = "provider:network_type")
-    //    @XmlElement (defaultValue="flat", namespace="provider", name="network_type")
+    //    @XmlElement (defaultValue = "flat", name = "provider:network_type")
+    @XmlElement (namespace="provider", name="network_type")
     String providerNetworkType;      // provider network type (flat or vlan)
 
-    @XmlElement (name = "provider:physical_network")
-    //    @XmlElement (namespace="provider", name="physical_network")
+    //    @XmlElement (name = "provider:physical_network")
+    @XmlElement (namespace="provider", name="physical_network")
     String providerPhysicalNetwork;  // provider physical network (name)
 
-    @XmlElement (name = "provider:segmentation_id")
-    //    @XmlElement (namespace="provider", name="segmentation_id")
+    //    @XmlElement (name = "provider:segmentation_id")
+    @XmlElement (namespace="provider", name="segmentation_id")
 
     String providerSegmentationID;   // provide segmentation ID (vlan ID)
 
@@ -257,16 +257,16 @@ public class NeutronNetwork implements Serializable, INeutronObject {
             if (s.equals("tenant_id")) {
                 ans.setTenantID(this.getTenantID());
             }
-            if (s.equals("router:external")) {
+            if (s.equals("external")) {
                 ans.setRouterExternal(this.getRouterExternal());
             }
-            if (s.equals("provider:segmentation_id")) {
+            if (s.equals("segmentation_id")) {
                 ans.setProviderSegmentationID(this.getProviderSegmentationID());
             }
-            if (s.equals("provider:physical_network")) {
+            if (s.equals("physical_network")) {
                 ans.setProviderPhysicalNetwork(this.getProviderPhysicalNetwork());
             }
-            if (s.equals("provider:network_type")) {
+            if (s.equals("network_type")) {
                 ans.setProviderNetworkType(this.getProviderNetworkType());
             }
         }
index 43f3ba32c59f7061e0465e42f05bcd3987e32231..f0c025a50a96b0d76051bc7bda4b4645341d8a2b 100644 (file)
@@ -27,16 +27,16 @@ public class NeutronNetwork_Segment implements Serializable {
 
     private static final long serialVersionUID = 1L;
 
-    @XmlElement (defaultValue="flat", name="provider:network_type")
-    //    @XmlElement (defaultValue="flat", namespace="provider", name="network_type")
+    //    @XmlElement (defaultValue="flat", name="provider:network_type")
+    @XmlElement (defaultValue="flat", namespace="provider", name="network_type")
     String providerNetworkType;      // provider network type (flat or vlan)
 
-    @XmlElement (name="provider:physical_network")
-    //    @XmlElement (namespace="provider", name="physical_network")
+    //    @XmlElement (name="provider:physical_network")
+    @XmlElement (namespace="provider", name="physical_network")
     String providerPhysicalNetwork;  // provider physical network (name)
 
-    @XmlElement (name="provider:segmentation_id")
-    //    @XmlElement (namespace="provider", name="segmentation_id")
+    //    @XmlElement (name="provider:segmentation_id")
+    @XmlElement (namespace="provider", name="segmentation_id")
     String providerSegmentationID;   // provide segmentation ID (vlan ID)
 
     public NeutronNetwork_Segment() {
index d0f443af4a7617129aef2f71792839ca83c5637b..5466f2c15a8ee2d03899d88abd3eaa1e2da554c9 100644 (file)
@@ -66,20 +66,20 @@ public class NeutronPort implements Serializable, INeutronObject {
     @XmlElement (name = "allowed_address_pairs")
     List<NeutronPort_AllowedAddressPairs> allowedAddressPairs;
 
-    @XmlElement (name = "binding:host_id")
-    //@XmlElement (namespace = "binding", name = "host_id")
+    //@XmlElement (name = "binding:host_id")
+    @XmlElement (namespace = "binding", name = "host_id")
     String bindinghostID;
 
-    @XmlElement (name = "binding:vnic_type")
-    //@XmlElement (namespace = "binding", name = "vnic_type")
+    //@XmlElement (name = "binding:vnic_type")
+    @XmlElement (namespace = "binding", name = "vnic_type")
     String bindingvnicType;
 
-    @XmlElement (name = "binding:vif_type")
-    //@XmlElement (namespace = "binding", name = "vif_type")
+    //@XmlElement (name = "binding:vif_type")
+    @XmlElement (namespace = "binding", name = "vif_type")
     String bindingvifType;
 
-    @XmlElement (name = "binding:vif_details")
-    //@XmlElement (namespace = "binding", name = "vif_details")
+    //@XmlElement (name = "binding:vif_details")
+    @XmlElement (namespace = "binding", name = "vif_details")
     List<NeutronPort_VIFDetail> vifDetails;
 
     @XmlElement (name = "extra_dhcp_opts")
index 5231c3d3a368b77b384bb2d6de9a92d2340cb741..1e1417aa6f645bf5665e1ccd9bee8bc65b741c56 100644 (file)
@@ -10,11 +10,17 @@ package org.opendaylight.neutron.spi;
 
 import java.io.StringReader;
 
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.xml.bind.JAXBContext;
 import javax.xml.bind.JAXBException;
+import javax.xml.bind.Unmarshaller;
+
+import javax.xml.transform.stream.StreamSource;
 
-import com.sun.jersey.api.json.JSONConfiguration;
-import com.sun.jersey.api.json.JSONJAXBContext;
-import com.sun.jersey.api.json.JSONUnmarshaller;
+import org.eclipse.persistence.jaxb.JAXBContextProperties;
+import org.eclipse.persistence.jaxb.UnmarshallerProperties;
 
 public class JaxbTestHelper {
 
@@ -23,9 +29,22 @@ public class JaxbTestHelper {
         Class c = schemaObject.getClass();
         Class[] types = new Class[1];
         types[0] = c;
-        JSONJAXBContext context = new JSONJAXBContext(JSONConfiguration.natural().build(), types);
-        JSONUnmarshaller unmarshaller = context.createJSONUnmarshaller();
+        Map<String, String> namespacePrefixMapper = new HashMap<String, String>(3);
+        namespacePrefixMapper.put("router", "router");
+        namespacePrefixMapper.put("provider", "provider");
+        namespacePrefixMapper.put("binding", "binding");
+        Map<String, Object> jaxbProperties = new HashMap<String, Object>(2);
+        jaxbProperties.put(JAXBContextProperties.MEDIA_TYPE, "application/json");
+        jaxbProperties.put(JAXBContextProperties.JSON_INCLUDE_ROOT, false);
+        jaxbProperties.put(JAXBContextProperties.JSON_NAMESPACE_SEPARATOR, ':');
+        jaxbProperties.put(JAXBContextProperties.NAMESPACE_PREFIX_MAPPER, namespacePrefixMapper);
+        JAXBContext jc = JAXBContext.newInstance(types, jaxbProperties);
+
+        Unmarshaller unmarshaller = jc.createUnmarshaller();
+        unmarshaller.setProperty(UnmarshallerProperties.JSON_NAMESPACE_PREFIX_MAPPER, namespacePrefixMapper);
+        
         StringReader reader = new StringReader(json);
-        return unmarshaller.unmarshalFromJSON(reader, c);
+        StreamSource stream = new StreamSource(reader);
+        return unmarshaller.unmarshal(stream, c).getValue();
     }
 }
index ee126688ce43b637ac9331bd6833617ce5cf7a11..66889dd1dc1ba926bdefb8d52a5ec31f6ac99873 100644 (file)
@@ -13,8 +13,9 @@ import org.junit.Test;
 
 public class NeutronLoadBalancer_SessionPersistenceJAXBTest {
 
-    private static final String NeutronLoadBalancer_SessionPersistence_sourceJson = "{"
-            + "\"cookie_name\": \"NeutronLoadBalancer_SessionPersistence_Cookie\", " + "\"type\": \"HTTP_COOKIE\"}";
+    private static final String NeutronLoadBalancer_SessionPersistence_sourceJson = "{ " +
+        "\"cookie_name\": \"NeutronLoadBalancer_SessionPersistence_Cookie\", " +
+        "\"type\": \"HTTP_COOKIE\" }";
 
     @Test
     public void test_NeutronLoadBalancer_SessionPersistence_JAXB() {
@@ -29,6 +30,7 @@ public class NeutronLoadBalancer_SessionPersistenceJAXBTest {
                     testObject.getType());
         } catch (Exception e) {
             e.printStackTrace();
+            Assert.assertTrue("Tests failed", false);
         }
     }
 
index f61668069c71b40207647d0f4ab928d11b8b099d..0f4736a6c0fab562b054af558ff73b459246fc6c 100644 (file)
@@ -74,6 +74,7 @@ public class NeutronNetworkJAXBTest {
                   false, testObject.getShared());
         } catch (Exception e) {
             e.printStackTrace();
+            Assert.assertTrue("Tests failed", false);
         }
     }
 
@@ -150,6 +151,7 @@ public class NeutronNetworkJAXBTest {
                                 "stt", segments.get(1).getProviderNetworkType());
         } catch (Exception e) {
             e.printStackTrace();
+            Assert.assertTrue("Tests failed", false);
         }
     }
 }
diff --git a/neutron-spi/src/test/resources/org/opendaylight/neutron/spi/jaxb.properties b/neutron-spi/src/test/resources/org/opendaylight/neutron/spi/jaxb.properties
new file mode 100644 (file)
index 0000000..5837a4c
--- /dev/null
@@ -0,0 +1 @@
+javax.xml.bind.context.factory=org.eclipse.persistence.jaxb.JAXBContextFactory
\ No newline at end of file
index 53f28f8a2e7f3a53bd64b3cbeb49f78a5cfe5711..060b195944bf84fa807953b771f242b740a6278e 100644 (file)
@@ -8,7 +8,10 @@
 
 package org.opendaylight.neutron.northbound.api;
 
+import org.eclipse.persistence.jaxb.rs.MOXyJsonProvider;
+
 import javax.ws.rs.core.Application;
+import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Map;
 import java.util.Set;
@@ -40,6 +43,29 @@ public class NeutronNorthboundRSApplication extends Application {
         classes.add(NeutronLoadBalancerPoolNorthbound.class);
         classes.add(NeutronLoadBalancerHealthMonitorNorthbound.class);
         classes.add(NeutronLoadBalancerPoolMembersNorthbound.class);
+      classes.add(MOXyJsonProvider.class);
         return classes;
     }
+
+    @Override
+    public Set<Object> getSingletons() {
+        MOXyJsonProvider moxyJsonProvider = new MOXyJsonProvider();
+
+        moxyJsonProvider.setAttributePrefix("@");
+        moxyJsonProvider.setFormattedOutput(true);
+        moxyJsonProvider.setIncludeRoot(false);
+        moxyJsonProvider.setMarshalEmptyCollections(true);
+        moxyJsonProvider.setValueWrapper("$");
+
+        Map<String, String> namespacePrefixMapper = new HashMap<String, String>(3);
+        namespacePrefixMapper.put("router", "router");        // FIXME: fill in with XSD
+        namespacePrefixMapper.put("provider", "provider");    // FIXME: fill in with XSD
+        namespacePrefixMapper.put("binding", "binding");
+        moxyJsonProvider.setNamespacePrefixMapper(namespacePrefixMapper);
+        moxyJsonProvider.setNamespaceSeparator(':');
+
+        HashSet<Object> set = new HashSet<Object>(1);
+        set.add(moxyJsonProvider);
+        return set;
+    }
 }