/*******************************************************************************
* Copyright (c) 2010-2014 SAP AG and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Distribution License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/edl-v10.html
*
* Contributors:
* SAP AG - initial API and implementation
*******************************************************************************/
package org.example.skalli.ext.helloworld.internal;
import java.io.IOException;
import org.eclipse.skalli.services.extension.rest.RestConverterBase;
import org.example.skalli.model.ext.helloworld.HelloWorldProjectExt;
import com.thoughtworks.xstream.converters.MarshallingContext;
import com.thoughtworks.xstream.converters.UnmarshallingContext;
import com.thoughtworks.xstream.io.HierarchicalStreamReader;
import com.thoughtworks.xstream.io.HierarchicalStreamWriter;
class HelloWorldConverter extends RestConverterBase<HelloWorldProjectExt> {
public static final String API_VERSION = "1.0"; //$NON-NLS-1$
public static final String NAMESPACE = "http://www.eclipse.org/skalli/2010/API/Extension-HelloWorld"; //$NON-NLS-1$
public HelloWorldConverter() {
super(HelloWorldProjectExt.class);
}
@SuppressWarnings("nls")
@Override
protected void marshal(HelloWorldProjectExt ext) throws IOException {
writer.pair("name", ext.getName());
writer.collection("friends", "friend", ext.getFriends());
}
@Deprecated
public HelloWorldConverter(String host) {
super(HelloWorldProjectExt.class, "helloWorld", host);
}
@Override
public String getApiVersion() {
return API_VERSION;
}
@Override
public String getNamespace() {
return NAMESPACE;
}
@Override
public String getXsdFileName() {
return null;
}
@Deprecated
@Override
public void marshal(Object source, HierarchicalStreamWriter writer, MarshallingContext context) {
HelloWorldProjectExt ext = (HelloWorldProjectExt) source;
writeNode(writer, "name", ext.getName());
writeFriends(writer, ext);
writer.endNode();
}
@Deprecated
private void writeFriends(HierarchicalStreamWriter writer, HelloWorldProjectExt ext) {
writer.startNode("friends");
for (String friend : ext.getFriends()) {
writeNode(writer, "friend", friend); //$NON-NLS-1
}
}
@Override
public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) {
// HelloWorldProjectExt ext = new HelloWorldProjectExt();
// while (reader.hasMoreChildren()) {
// reader.moveDown();
// String field = reader.getNodeName();
// if ("name".equals(field) && reader.hasMoreChildren()) { //$NON-NLS-1$
// String name = reader.getValue();
// ext.setName(name);
// } else if ("friends".equals(field) && reader.hasMoreChildren()) { //$NON-NLS-1$
// iterateFriends(ext, reader);
// }
// reader.moveUp();
// }
//
// return ext;
//TODO
return new HelloWorldProjectExt();
}
// private void iterateFriends(HelloWorldProjectExt ext, HierarchicalStreamReader reader) {
// if (reader.hasMoreChildren()) {
// reader.moveDown();
// String field = reader.getNodeName();
// if ("friend".equals(field)) {
// String friend = reader.getValue();
// ext.addFriend(friend);
// }
// iterateFriends(ext, reader);
// reader.moveUp();
// }
// }
}