blob: 1e10746578164fe238fe7481caea99eb3bb0ab9c [file] [log] [blame]
/*
* Copyright (c) 2011, 2020 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 v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0,
* or the Eclipse Distribution License v. 1.0 which is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
*/
// 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 jakarta.xml.bind.annotation.XmlAccessType;
import jakarta.xml.bind.annotation.XmlAccessorType;
import jakarta.xml.bind.annotation.XmlElement;
import jakarta.xml.bind.annotation.XmlRootElement;
import jakarta.xml.bind.annotation.adapters.XmlAdapter;
import jakarta.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);
}
}