<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>
@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)
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());
}
}
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() {
@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")
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 {
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();
}
}
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() {
testObject.getType());
} catch (Exception e) {
e.printStackTrace();
+ Assert.assertTrue("Tests failed", false);
}
}
false, testObject.getShared());
} catch (Exception e) {
e.printStackTrace();
+ Assert.assertTrue("Tests failed", false);
}
}
"stt", segments.get(1).getProviderNetworkType());
} catch (Exception e) {
e.printStackTrace();
+ Assert.assertTrue("Tests failed", false);
}
}
}
--- /dev/null
+javax.xml.bind.context.factory=org.eclipse.persistence.jaxb.JAXBContextFactory
\ No newline at end of file
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;
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;
+ }
}