content: package alien4cloud.paas.model;
  
  import java.util.List;
  import java.util.Map;
  
  import lombok.EqualsAndHashCode;
  import lombok.Getter;
  import lombok.Setter;
  import org.alien4cloud.tosca.model.types.AbstractToscaType;
  import org.alien4cloud.tosca.model.definitions.Interface;
  import org.alien4cloud.tosca.model.templates.AbstractInstantiableTemplate;
  import alien4cloud.paas.IPaaSTemplate;
  
  @Getter
  @Setter
  @EqualsAndHashCode(of = "id")
  public abstract class AbstractPaaSTemplate<V extends AbstractToscaType, T extends AbstractInstantiableTemplate> implements IPaaSTemplate<V> {
  
      /** The unique id for the template within the topology. */
      private String id;
  
      /** The wrapped template. **/
      private T template;
  
      /**
       * The combination of interfaces inherited from type and those defined at template level.
       */
      private Map<String, Interface> interfaces;
  
      /** Type for the wrapped template. */
      private V indexedToscaElement;
  
      /** Derived from types **/
      private List<V> derivedFroms;
  
      public AbstractPaaSTemplate(String id, T template) {
          this.id = id;
          this.template = template;
      }
  
      @Override
      public T getTemplate() {
          return template;
      }
  }
  