Package com.azwul.api.service

Source Code of com.azwul.api.service.AzServiceFactory

/**
*
*/
package com.azwul.api.service;

import java.util.HashMap;
import java.util.Map;

import com.azwul.api.exception.AzwulApiException;
import com.azwul.api.model.HttpConfiguration;
import com.azwul.api.service.impl.AzClicServiceImpl;
import com.azwul.api.service.impl.AzDealServiceImpl;
import com.azwul.api.service.impl.AzRmailServiceImpl;
import com.azwul.api.service.impl.AzSignServiceImpl;

/**
* @author Theotime Jurzak
*
*/
public final class AzServiceFactory {

  protected static Map<Class<? extends AzBaseService>, AzBaseService> pool = new HashMap<Class<? extends AzBaseService>, AzBaseService>();

  public static AzClicService getAzClicService() {
    return (AzClicService) getAzServiceObject(AzClicServiceImpl.class);
  }

  public static AzClicService getAzClicService(
      HttpConfiguration httpConfiguration) {
    return (AzClicService) getAzServiceObject(AzClicServiceImpl.class,
        httpConfiguration);
  }

  public static AzSignService getAzSignService() {
    return (AzSignService) getAzServiceObject(AzSignServiceImpl.class);
  }

  public static AzSignService getAzSignService(
      HttpConfiguration httpConfiguration) {
    return (AzSignService) getAzServiceObject(AzSignServiceImpl.class,
        httpConfiguration);
  }

  public static AzDealService getAzDealService() {
    return (AzDealService) getAzServiceObject(AzDealServiceImpl.class);
  }

  public static AzDealService getAzDealService(
      HttpConfiguration httpConfiguration) {
    return (AzDealService) getAzServiceObject(AzDealServiceImpl.class,
        httpConfiguration);
  }

  public static AzRmailService getAzRmailService() {
    return (AzRmailService) getAzServiceObject(AzRmailServiceImpl.class);
  }

  public static AzRmailService getAzRmailService(
      HttpConfiguration httpConfiguration) {
    return (AzRmailService) getAzServiceObject(AzRmailServiceImpl.class,
        httpConfiguration);
  }

  protected static AzBaseService getAzServiceObject(
      Class<? extends AzBaseService> clazz,
      HttpConfiguration httpConfiguration) {
    synchronized (pool) {
      if (pool.get(clazz) == null) {
        AzBaseService service;
        try {
          service = clazz.newInstance();
        } catch (Exception e) {
          throw new AzwulApiException("Error instantiating service "
              + clazz, e);
        }
        if (httpConfiguration != null) {
          service.setHttpConfiguration(httpConfiguration);
        } else {
          service.setHttpConfiguration(new HttpConfiguration());
        }

        pool.put(clazz, service);
      }
    }

    return pool.get(clazz);
  }

  protected static AzBaseService getAzServiceObject(
      Class<? extends AzBaseService> clazz) {
    return getAzServiceObject(clazz, null);
  }

}
TOP

Related Classes of com.azwul.api.service.AzServiceFactory

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.