/******************************************************************************* * Copyright (c) 2010-2011 Naumen. All rights reserved. This * program and the accompanying materials are made available under the terms of * the Eclipse Public License v1.0 which accompanies this distribution, and is * available at http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Pavel Samolisov - initial API and implementation *******************************************************************************/ package org.eclipse.ecf.remoteservice.rpc.client; import java.io.NotSerializableException; import java.util.ArrayList; import java.util.List; import org.eclipse.ecf.remoteservice.IRemoteCall; import org.eclipse.ecf.remoteservice.client.*; /** * Trivial parameter serializer - just copy a parameter value * * @author psamolisov */ public class TrivialParameterServializer implements IRemoteCallParameterSerializer { /** * @throws NotSerializableException */ public IRemoteCallParameter[] serializeParameter(String endpoint, IRemoteCall call, IRemoteCallable callable, IRemoteCallParameter[] currentParameters, Object[] paramToSerialize) throws NotSerializableException { List results = new ArrayList(); if (paramToSerialize != null) { for (int i = 0; i < paramToSerialize.length; i++) { IRemoteCallParameter p = new RemoteCallParameter(currentParameters[i].getName(), paramToSerialize[i] == null ? currentParameters[i].getValue() : paramToSerialize[i]); results.add(p); } } return (IRemoteCallParameter[]) results.toArray(new IRemoteCallParameter[results.size()]); } /** * All parameters will be serialized in the Apache XML-RPC library. We shouldn't serialize any parameters * by default. * * @return the parameter value */ public IRemoteCallParameter serializeParameter(String endpoint, IRemoteCall call, IRemoteCallable callable, IRemoteCallParameter paramDefault, Object paramToSerialize) { // Just return a parameter return new RemoteCallParameter(paramDefault.getName(), paramToSerialize == null ? paramDefault.getValue() : paramToSerialize); } }