Package org.platformlayer.xaas.services

Source Code of org.platformlayer.xaas.services.ModelClass

package org.platformlayer.xaas.services;

import javax.xml.bind.JAXBException;

import org.platformlayer.core.model.ItemBase;
import org.platformlayer.ids.ItemType;
import org.platformlayer.ids.ServiceType;
import org.platformlayer.xml.JaxbHelper;
import org.platformlayer.xml.JsonHelper;

import com.fathomdb.Casts;

public class ModelClass<T extends ItemBase> {
  final Class<T> javaClass;
  final ItemType itemType;
  final ServiceProvider serviceProvider;

  public ModelClass(ServiceProvider serviceProvider, Class<T> javaClass, ItemType itemType) {
    this.serviceProvider = serviceProvider;
    this.javaClass = javaClass;
    this.itemType = itemType;
  }

  public Class<T> getJavaClass() {
    return javaClass;
  }

  public static <T extends ItemBase> ModelClass<T> publicModel(ServiceProvider serviceProvider, Class<T> clazz) {
    return build(serviceProvider, clazz);
  }

  public static <T extends ItemBase> ModelClass<T> build(ServiceProvider serviceProvider, Class<T> clazz) {
    JaxbHelper jaxbHelper = JaxbHelper.get(clazz);
    ItemType itemType = new ItemType(JaxbHelper.getXmlElementName(clazz));
    return new ModelClass<T>(serviceProvider, clazz, itemType);
  }

  public JsonHelper<?> getJsonHelper() {
    return JsonHelper.build(javaClass);
  }

  public ItemType getItemType() {
    return itemType;
  }

  private JaxbHelper getJaxbHelper() {
    return JaxbHelper.get(getJavaClass());
  }

  public T deserializeXml(String modelData) throws JAXBException {
    return Casts.as(getJaxbHelper().unmarshal(modelData), getJavaClass());
  }

  public ServiceProvider getProvider() {
    return serviceProvider;
  }

  public ServiceType getServiceType() {
    return serviceProvider.getServiceType();
  }

  public String getPrimaryNamespace() {
    return getJaxbHelper().getPrimaryNamespace();
  }

  public String getXmlElementName() {
    return getJaxbHelper().getXmlElementName();
  }

  @Override
  public String toString() {
    return "ModelClass [javaClass=" + javaClass + "]";
  }
}
TOP

Related Classes of org.platformlayer.xaas.services.ModelClass

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.