/******************************************************************************* * Copyright (c) 2011, 2015 Oracle and/or its affiliates. All rights reserved. * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0 * which accompanies this distribution. * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html * and the Eclipse Distribution License is available at * http://www.eclipse.org/org/documents/edl-v10.php. * * Contributors: * Matt MacIvor - 2.5.1 - initial implementation ******************************************************************************/ package org.eclipse.persistence.testing.jaxb.json.adapter; import java.util.HashMap; import java.util.Map; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.adapters.XmlAdapter; import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; import org.eclipse.persistence.platform.xml.XMLPlatform; import org.eclipse.persistence.platform.xml.XMLPlatformFactory; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Text; @XmlRootElement @XmlAccessorType(XmlAccessType.FIELD) public class RootObject { @XmlElement private String title; @XmlElement @XmlJavaTypeAdapter(Adapter.class) private Map<String, Object> data; public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public Map<String, Object> getData() { return data; } public void setData(Map<String, Object> data) { this.data = data; } public static class Adapter extends XmlAdapter<Object, Map<String, Object>> { @Override public Object marshal(Map<String, Object> map) throws Exception { // TODO XMLPlatform platform = XMLPlatformFactory.getInstance().getXMLPlatform(); Document doc = platform.createDocument(); Element elem = doc.createElement("data"); Element foo = doc.createElement("foo"); Text txt = doc.createTextNode("bar"); foo.appendChild(txt); elem.appendChild(foo); doc.appendChild(elem); return elem; } @Override public Map<String, Object> unmarshal(Object obj) throws Exception { Element e = (Element) obj; HashMap<String, Object> map = new HashMap<String, Object>(); map.put("foo1", "bar1"); map.put("foo2", "bar2"); return map; } } public boolean equals(Object obj) { RootObject ro = (RootObject)obj; return this.title.equals(ro.title) && this.data.equals(ro.data); } }