/*
* Copyright (C) 2011 Red Hat, Inc. and/or its affiliates.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jboss.errai.marshalling.client.util;
import java.util.Collection;
import java.util.Iterator;
import org.jboss.errai.marshalling.client.Marshalling;
import org.jboss.errai.marshalling.client.api.Marshaller;
import org.jboss.errai.marshalling.client.api.MarshallingSession;
import org.jboss.errai.marshalling.client.marshallers.QualifyingMarshallerWrapper;
/**
* @author Mike Brock
*/
public class EncDecUtil {
public static void arrayMarshall(final StringBuilder buf, final Collection o, final MarshallingSession ctx) {
final Iterator iter = o.iterator();
buf.append("[");
Object elem;
int i = 0;
while (iter.hasNext()) {
if (i++ > 0) {
buf.append(",");
}
elem = iter.next();
if (elem != null) {
final Marshaller<Object> marshaller;
if (Marshalling.needsQualification(elem)) {
marshaller = MarshallUtil.getQualifiedNumberMarshaller(elem);
}
else {
marshaller = MarshallUtil.getMarshaller(elem, ctx);
}
buf.append(marshaller.marshall(MarshallUtil.maybeUnwrap(elem), ctx));
}
else {
buf.append("null");
}
}
buf.append("]");
}
/**
* Ensure the marshaller is qualified on the wire using a wrapping marshaller.
* @param marshaller
* @param <T>
* @return
*/
public static <T> Marshaller<T> qualifyMarshaller(final Marshaller<T> marshaller, Class<T> type) {
return new QualifyingMarshallerWrapper<T>(marshaller, type);
}
}