001 002package com.commercetools.api.models.product; 003 004import java.time.*; 005import java.util.*; 006import java.util.function.Function; 007 008import javax.annotation.Nullable; 009import javax.validation.constraints.NotNull; 010 011import com.fasterxml.jackson.annotation.*; 012import com.fasterxml.jackson.databind.annotation.*; 013 014import io.vrap.rmf.base.client.utils.Generated; 015 016/** 017 * FacetResult 018 * 019 * <hr> 020 * Example to create a subtype instance using the builder pattern 021 * <div class=code-example> 022 * <pre><code class='java'> 023 * FacetResult facetResult = FacetResult.filterBuilder() 024 * count(0.3) 025 * .build() 026 * </code></pre> 027 * </div> 028 */ 029@JsonSubTypes({ 030 @JsonSubTypes.Type(value = com.commercetools.api.models.product.FilteredFacetResultImpl.class, name = FilteredFacetResult.FILTER), 031 @JsonSubTypes.Type(value = com.commercetools.api.models.product.RangeFacetResultImpl.class, name = RangeFacetResult.RANGE), 032 @JsonSubTypes.Type(value = com.commercetools.api.models.product.TermFacetResultImpl.class, name = TermFacetResult.TERMS) }) 033@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.EXISTING_PROPERTY, property = "type", defaultImpl = FacetResultImpl.class, visible = true) 034@JsonDeserialize(as = FacetResultImpl.class) 035@Generated(value = "io.vrap.rmf.codegen.rendering.CoreCodeGenerator", comments = "https://github.com/commercetools/rmf-codegen") 036public interface FacetResult { 037 038 /** 039 * 040 * @return type 041 */ 042 @NotNull 043 @JsonProperty("type") 044 public FacetTypes getType(); 045 046 /** 047 * factory method to create a deep copy of FacetResult 048 * @param template instance to be copied 049 * @return copy instance 050 */ 051 @Nullable 052 public static FacetResult deepCopy(@Nullable final FacetResult template) { 053 if (template == null) { 054 return null; 055 } 056 if (template instanceof com.commercetools.api.models.product.FilteredFacetResult) { 057 return com.commercetools.api.models.product.FilteredFacetResult 058 .deepCopy((com.commercetools.api.models.product.FilteredFacetResult) template); 059 } 060 if (template instanceof com.commercetools.api.models.product.RangeFacetResult) { 061 return com.commercetools.api.models.product.RangeFacetResult 062 .deepCopy((com.commercetools.api.models.product.RangeFacetResult) template); 063 } 064 if (template instanceof com.commercetools.api.models.product.TermFacetResult) { 065 return com.commercetools.api.models.product.TermFacetResult 066 .deepCopy((com.commercetools.api.models.product.TermFacetResult) template); 067 } 068 FacetResultImpl instance = new FacetResultImpl(); 069 return instance; 070 } 071 072 /** 073 * builder for filter subtype 074 * @return builder 075 */ 076 public static com.commercetools.api.models.product.FilteredFacetResultBuilder filterBuilder() { 077 return com.commercetools.api.models.product.FilteredFacetResultBuilder.of(); 078 } 079 080 /** 081 * builder for range subtype 082 * @return builder 083 */ 084 public static com.commercetools.api.models.product.RangeFacetResultBuilder rangeBuilder() { 085 return com.commercetools.api.models.product.RangeFacetResultBuilder.of(); 086 } 087 088 /** 089 * builder for terms subtype 090 * @return builder 091 */ 092 public static com.commercetools.api.models.product.TermFacetResultBuilder termsBuilder() { 093 return com.commercetools.api.models.product.TermFacetResultBuilder.of(); 094 } 095 096 /** 097 * accessor map function 098 * @param <T> mapped type 099 * @param helper function to map the object 100 * @return mapped value 101 */ 102 default <T> T withFacetResult(Function<FacetResult, T> helper) { 103 return helper.apply(this); 104 } 105 106 /** 107 * gives a TypeReference for usage with Jackson DataBind 108 * @return TypeReference 109 */ 110 public static com.fasterxml.jackson.core.type.TypeReference<FacetResult> typeReference() { 111 return new com.fasterxml.jackson.core.type.TypeReference<FacetResult>() { 112 @Override 113 public String toString() { 114 return "TypeReference<FacetResult>"; 115 } 116 }; 117 } 118}