All Downloads are FREE. Search and download functionalities are using the official Maven repository.

xapi.model.impl.ClusteringPrimitiveDeserializer Maven / Gradle / Ivy

/**
 *
 */
package xapi.model.impl;

import xapi.collect.X_Collect;
import xapi.collect.api.IntTo;
import xapi.model.api.PrimitiveSerializer;
import xapi.source.api.CharIterator;

/**
 * @author James X. Nelson ([email protected], @james)
 *
 */
public class ClusteringPrimitiveDeserializer extends DelegatingPrimitiveSerializer {

  private final IntTo values;

  public ClusteringPrimitiveDeserializer(final PrimitiveSerializer primitives, final CharIterator in) {
    super(primitives);
    values = X_Collect.newList(String.class);
    int size = primitives.deserializeInt(in);
    while (size --> 0) {
      values.add(primitives.deserializeString(in));
    }
  }

  @Override
  public String serializeClass(final Class c) {
    // This class should only be used for deserializing.
    throw new UnsupportedOperationException();
  }

  @Override
  public String serializeString(final String s) {
    // This class should only be used for deserializing.
    throw new UnsupportedOperationException();
  }

  @Override
  public String deserializeString(final CharIterator s) {
    final int pos = deserializeInt(s);
    if (pos == -1) {
      return null;
    }
    return values.at(pos);
  }

  @Override
  public  Class deserializeClass(final CharIterator c) {
    final int pos = deserializeInt(c);
    if (pos == -1) {
      return null;
    }
    final String value = values.at(pos);
    return loadClass(value);
  }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy