// Path: api/src/main/java/com/jfrog/bintray/client/api/details/ProductDetails.java
// @JsonIgnoreProperties(ignoreUnknown = true)
// public class ProductDetails {
// 
//     //Properties marked with @JsonPropery here are serialized to the create \ update version requests, the rest are
//     // only deserialized when getting the version info
//     @JsonProperty
//     String name;
//     @JsonIgnore
//     String owner;
//     @JsonProperty(value = "desc")
//     String description;
//     @JsonIgnore
//     DateTime created;
//     @JsonProperty(value = "website_url")
//     String websiteUrl;
//     @JsonProperty(value = "vcs_url")
//     String vcsUrl;
//     @JsonProperty
//     List<String> packages;
//     @JsonIgnore
//     List<String> versions;
//     @JsonProperty(value = "sign_url_expiry")
//     Integer signUrlExpiry;
// 
//     //All other props that don't have specific fields
//     private Map<String, Object> other = new HashMap<>();
// 
//     @JsonAnySetter
//     public void set(String name, Object value) {
//         other.put(name, value);
//     }
// 
//     @JsonAnyGetter
//     public Map<String, Object> other() {
//         return other;
//     }
// 
//     public String getName() {
//         return name;
//     }
// 
//     public void setName(String name) {
//         this.name = name;
//     }
// 
//     public String getOwner() {
//         return owner;
//     }
// 
//     public void setOwner(String owner) {
//         this.owner = owner;
//     }
// 
//     public String getDescription() {
//         return description;
//     }
// 
//     public void setDescription(String description) {
//         this.description = description;
//     }
// 
//     @JsonIgnore
//     public DateTime getCreated() {
//         return created;
//     }
// 
//     @JsonProperty(value = "created")
//     public void setCreated(DateTime created) {
//         this.created = created;
//     }
// 
//     public String getWebsiteUrl() {
//         return websiteUrl;
//     }
// 
//     public void setWebsiteUrl(String websiteUrl) {
//         this.websiteUrl = websiteUrl;
//     }
// 
//     public String getVcsUrl() {
//         return vcsUrl;
//     }
// 
//     public void setVcsUrl(String vcsUrl) {
//         this.vcsUrl = vcsUrl;
//     }
// 
//     public List<String> getPackages() {
//         return packages;
//     }
// 
//     public void setPackages(List<String> packages) {
//         this.packages = packages;
//     }
// 
//     @JsonIgnore
//     public List<String> getVersions() {
//         return versions;
//     }
// 
//     @JsonProperty
//     public void setVersions(List<String> versions) {
//         this.versions = versions;
//     }
// 
//     public Integer getSignUrlExpiry() {
//         return signUrlExpiry;
//     }
// 
//     public void setSignUrlExpiry(Integer signUrlExpiry) {
//         this.signUrlExpiry = signUrlExpiry;
//     }
// 
//     public static ObjectMapper getObjectMapper() {
//         return ObjectMapperHelper.get();
//     }
// }
// 
// Path: api/src/main/java/com/jfrog/bintray/client/api/model/Product.java
// public interface Product {
// 
//     String getName();
// 
//     String getOwner();
// 
//     String getDescription();
// 
//     DateTime getCreated();
// 
//     String getWebsiteUrl();
// 
//     String getVcsUrl();
// 
//     List<String> getPackages();
// 
//     List<String> getVersions();
// 
//     Object getFieldByKey(String key);
// }


import com.jfrog.bintray.client.api.details.ProductDetails;
import com.jfrog.bintray.client.api.model.Product;
import org.joda.time.DateTime;
import java.util.List;
import java.util.Map;
package com.jfrog.bintray.client.impl.model;



/**
 * @author Dan Feldman
 */
public class ProductImpl implements Product {

    private String name;
    private String owner;
    private String description;
    private DateTime created;
    private String websiteUrl;
    private String vcsUrl;
    private List<String> packages;
    private List<String> versions;
    private Map<String, Object> other;

    public ProductImpl() {
    }

// Path: api/src/main/java/com/jfrog/bintray/client/api/details/ProductDetails.java
// @JsonIgnoreProperties(ignoreUnknown = true)
// public class ProductDetails {
// 
//     //Properties marked with @JsonPropery here are serialized to the create \ update version requests, the rest are
//     // only deserialized when getting the version info
//     @JsonProperty
//     String name;
//     @JsonIgnore
//     String owner;
//     @JsonProperty(value = "desc")
//     String description;
//     @JsonIgnore
//     DateTime created;
//     @JsonProperty(value = "website_url")
//     String websiteUrl;
//     @JsonProperty(value = "vcs_url")
//     String vcsUrl;
//     @JsonProperty
//     List<String> packages;
//     @JsonIgnore
//     List<String> versions;
//     @JsonProperty(value = "sign_url_expiry")
//     Integer signUrlExpiry;
// 
//     //All other props that don't have specific fields
//     private Map<String, Object> other = new HashMap<>();
// 
//     @JsonAnySetter
//     public void set(String name, Object value) {
//         other.put(name, value);
//     }
// 
//     @JsonAnyGetter
//     public Map<String, Object> other() {
//         return other;
//     }
// 
//     public String getName() {
//         return name;
//     }
// 
//     public void setName(String name) {
//         this.name = name;
//     }
// 
//     public String getOwner() {
//         return owner;
//     }
// 
//     public void setOwner(String owner) {
//         this.owner = owner;
//     }
// 
//     public String getDescription() {
//         return description;
//     }
// 
//     public void setDescription(String description) {
//         this.description = description;
//     }
// 
//     @JsonIgnore
//     public DateTime getCreated() {
//         return created;
//     }
// 
//     @JsonProperty(value = "created")
//     public void setCreated(DateTime created) {
//         this.created = created;
//     }
// 
//     public String getWebsiteUrl() {
//         return websiteUrl;
//     }
// 
//     public void setWebsiteUrl(String websiteUrl) {
//         this.websiteUrl = websiteUrl;
//     }
// 
//     public String getVcsUrl() {
//         return vcsUrl;
//     }
// 
//     public void setVcsUrl(String vcsUrl) {
//         this.vcsUrl = vcsUrl;
//     }
// 
//     public List<String> getPackages() {
//         return packages;
//     }
// 
//     public void setPackages(List<String> packages) {
//         this.packages = packages;
//     }
// 
//     @JsonIgnore
//     public List<String> getVersions() {
//         return versions;
//     }
// 
//     @JsonProperty
//     public void setVersions(List<String> versions) {
//         this.versions = versions;
//     }
// 
//     public Integer getSignUrlExpiry() {
//         return signUrlExpiry;
//     }
// 
//     public void setSignUrlExpiry(Integer signUrlExpiry) {
//         this.signUrlExpiry = signUrlExpiry;
//     }
// 
//     public static ObjectMapper getObjectMapper() {
//         return ObjectMapperHelper.get();
//     }
// }
// 
// Path: api/src/main/java/com/jfrog/bintray/client/api/model/Product.java
// public interface Product {
// 
//     String getName();
// 
//     String getOwner();
// 
//     String getDescription();
// 
//     DateTime getCreated();
// 
//     String getWebsiteUrl();
// 
//     String getVcsUrl();
// 
//     List<String> getPackages();
// 
//     List<String> getVersions();
// 
//     Object getFieldByKey(String key);
// }


// Path: impl/src/main/java/com/jfrog/bintray/client/impl/model/ProductImpl.java
import com.jfrog.bintray.client.api.details.ProductDetails;
import com.jfrog.bintray.client.api.model.Product;
import org.joda.time.DateTime;
import java.util.List;
import java.util.Map;

package com.jfrog.bintray.client.impl.model;



/**
 * @author Dan Feldman
 */
public class ProductImpl implements Product {

    private String name;
    private String owner;
    private String description;
    private DateTime created;
    private String websiteUrl;
    private String vcsUrl;
    private List<String> packages;
    private List<String> versions;
    private Map<String, Object> other;

    public ProductImpl() {
    }

    public ProductImpl(ProductDetails productDetails) {