public static CartridgeInfo toCartridgeInfo(Cartridge cartridge) {

    CartridgeInfo carInfo = new CartridgeInfo();
    carInfo.setType(cartridge.getType());
    carInfo.setDisplayName(cartridge.getDisplayName());
    carInfo.setDescription(cartridge.getDescription());
    carInfo.setHostName(cartridge.getHostName());
    carInfo.setDeploymentDirs(cartridge.getDeploymentDirs());
    carInfo.setProvider(cartridge.getProvider());
    carInfo.setVersion(cartridge.getVersion());
    carInfo.setMultiTenant(cartridge.isMultiTenant());
    carInfo.setBaseDir(cartridge.getBaseDir());
    carInfo.setLbConfig(cartridge.getLbConfig());
    carInfo.setDefaultAutoscalingPolicy(cartridge.getDefaultAutoscalingPolicy());
    carInfo.setDefaultDeploymentPolicy(cartridge.getDefaultDeploymentPolicy());
    carInfo.setPortMappings(
        cartridge.getPortMappings().toArray(new PortMapping[cartridge.getPortMappings().size()]));
    carInfo.setAppTypes(
        cartridge.getAppTypeMappings().toArray(new AppType[cartridge.getAppTypeMappings().size()]));

    List<Property> propList = new ArrayList<Property>();
    carInfo.setPersistence(cartridge.getPersistence());

    for (Iterator<?> iterator = cartridge.getProperties().entrySet().iterator();
        iterator.hasNext(); ) {
      @SuppressWarnings("unchecked")
      Map.Entry<String, String> entry = (Entry<String, String>) iterator.next();

      Property prop = new Property(entry.getKey(), entry.getValue());
      propList.add(prop);
    }
    Property[] props = new Property[propList.size()];

    carInfo.setProperties(propList.toArray(props));

    return carInfo;
  }