// Path: src/test/java/com/github/rwitzel/couchrepository/model/Comment.java
// public class Comment {
//     
//     private String author;
//     
//     private String text;
// 
//     public String getAuthor() {
//         return author;
//     }
// 
//     public void setAuthor(String author) {
//         this.author = author;
//     }
// 
//     public String getText() {
//         return text;
//     }
// 
//     public void setText(String text) {
//         this.text = text;
//     }
// 
//     @Override
//     public int hashCode() {
//         final int prime = 31;
//         int result = 1;
//         result = prime * result + ((author == null) ? 0 : author.hashCode());
//         result = prime * result + ((text == null) ? 0 : text.hashCode());
//         return result;
//     }
// 
//     /**
//      * Generated by Eclipse.
//      */
//     @Override
//     public boolean equals(Object obj) {
//         if (this == obj)
//             return true;
//         if (obj == null)
//             return false;
//         if (getClass() != obj.getClass())
//             return false;
//         Comment other = (Comment) obj;
//         if (author == null) {
//             if (other.author != null)
//                 return false;
//         } else if (!author.equals(other.author))
//             return false;
//         if (text == null) {
//             if (other.text != null)
//                 return false;
//         } else if (!text.equals(other.text))
//             return false;
//         return true;
//     }
// 
// }
// 
// Path: src/test/java/com/github/rwitzel/couchrepository/model/Product.java
// public class Product extends BaseDocument {
// 
//     private Date lastModification;
// 
//     private String manufacturerId;
// 
//     private String text;
// 
//     private ProductRating rating;
// 
//     private boolean hidden;
// 
//     private Integer numBuyers;
// 
//     private double weight;
// 
//     private BigDecimal price;
// 
//     private List<String> tags;
// 
//     private List<Comment> comments;
//     
//     private int isoProductCode;
// 
//     public Date getLastModification() {
//         return lastModification;
//     }
// 
//     public void setLastModification(Date lastModification) {
//         this.lastModification = lastModification;
//     }
// 
//     public String getText() {
//         return text;
//     }
// 
//     public void setText(String text) {
//         this.text = text;
//     }
// 
//     public ProductRating getRating() {
//         return rating;
//     }
// 
//     public void setRating(ProductRating rating) {
//         this.rating = rating;
//     }
// 
//     public boolean isHidden() {
//         return hidden;
//     }
// 
//     public void setHidden(boolean hidden) {
//         this.hidden = hidden;
//     }
// 
//     public Integer getNumBuyers() {
//         return numBuyers;
//     }
// 
//     public void setNumBuyers(Integer numBuyers) {
//         this.numBuyers = numBuyers;
//     }
// 
//     public double getWeight() {
//         return weight;
//     }
// 
//     public void setWeight(double weight) {
//         this.weight = weight;
//     }
// 
//     public BigDecimal getPrice() {
//         return price;
//     }
// 
//     public void setPrice(BigDecimal price) {
//         this.price = price;
//     }
// 
//     public List<String> getTags() {
//         if (tags == null) {
//             return new ArrayList<String>();
//         }
//         return tags;
//     }
// 
//     public void setTags(List<String> tags) {
//         this.tags = tags;
//     }
// 
//     public List<Comment> getComments() {
//         if (comments == null) {
//             comments = new ArrayList<Comment>();
//         }
//         return comments;
//     }
// 
//     public void setComments(List<Comment> comments) {
//         this.comments = comments;
//     }
// 
//     public String getManufacturerId() {
//         return manufacturerId;
//     }
// 
//     public void setManufacturerId(String manufacturerId) {
//         this.manufacturerId = manufacturerId;
//     }
// 
//     public int getIsoProductCode() {
//         return isoProductCode;
//     }
// 
//     public void setIsoProductCode(int isoProductCode) {
//         this.isoProductCode = isoProductCode;
//     }
// }


import java.util.List;
import javax.inject.Named;
import com.github.rwitzel.couchrepository.model.Comment;
import com.github.rwitzel.couchrepository.model.Product;
package com.github.rwitzel.couchrepository.api;




public interface ProductRepository extends CouchDbCrudRepository<Product, String>, ProductRepositoryCustom {

    ViewResult findByComment(@Named("key") Object[] key, @Named("descending") Boolean descending,
            @Named("viewParams") ViewParams viewParams, @Named("valueType") Class<?> valueType);

    ViewResult findByComment();

// Path: src/test/java/com/github/rwitzel/couchrepository/model/Comment.java
// public class Comment {
//     
//     private String author;
//     
//     private String text;
// 
//     public String getAuthor() {
//         return author;
//     }
// 
//     public void setAuthor(String author) {
//         this.author = author;
//     }
// 
//     public String getText() {
//         return text;
//     }
// 
//     public void setText(String text) {
//         this.text = text;
//     }
// 
//     @Override
//     public int hashCode() {
//         final int prime = 31;
//         int result = 1;
//         result = prime * result + ((author == null) ? 0 : author.hashCode());
//         result = prime * result + ((text == null) ? 0 : text.hashCode());
//         return result;
//     }
// 
//     /**
//      * Generated by Eclipse.
//      */
//     @Override
//     public boolean equals(Object obj) {
//         if (this == obj)
//             return true;
//         if (obj == null)
//             return false;
//         if (getClass() != obj.getClass())
//             return false;
//         Comment other = (Comment) obj;
//         if (author == null) {
//             if (other.author != null)
//                 return false;
//         } else if (!author.equals(other.author))
//             return false;
//         if (text == null) {
//             if (other.text != null)
//                 return false;
//         } else if (!text.equals(other.text))
//             return false;
//         return true;
//     }
// 
// }
// 
// Path: src/test/java/com/github/rwitzel/couchrepository/model/Product.java
// public class Product extends BaseDocument {
// 
//     private Date lastModification;
// 
//     private String manufacturerId;
// 
//     private String text;
// 
//     private ProductRating rating;
// 
//     private boolean hidden;
// 
//     private Integer numBuyers;
// 
//     private double weight;
// 
//     private BigDecimal price;
// 
//     private List<String> tags;
// 
//     private List<Comment> comments;
//     
//     private int isoProductCode;
// 
//     public Date getLastModification() {
//         return lastModification;
//     }
// 
//     public void setLastModification(Date lastModification) {
//         this.lastModification = lastModification;
//     }
// 
//     public String getText() {
//         return text;
//     }
// 
//     public void setText(String text) {
//         this.text = text;
//     }
// 
//     public ProductRating getRating() {
//         return rating;
//     }
// 
//     public void setRating(ProductRating rating) {
//         this.rating = rating;
//     }
// 
//     public boolean isHidden() {
//         return hidden;
//     }
// 
//     public void setHidden(boolean hidden) {
//         this.hidden = hidden;
//     }
// 
//     public Integer getNumBuyers() {
//         return numBuyers;
//     }
// 
//     public void setNumBuyers(Integer numBuyers) {
//         this.numBuyers = numBuyers;
//     }
// 
//     public double getWeight() {
//         return weight;
//     }
// 
//     public void setWeight(double weight) {
//         this.weight = weight;
//     }
// 
//     public BigDecimal getPrice() {
//         return price;
//     }
// 
//     public void setPrice(BigDecimal price) {
//         this.price = price;
//     }
// 
//     public List<String> getTags() {
//         if (tags == null) {
//             return new ArrayList<String>();
//         }
//         return tags;
//     }
// 
//     public void setTags(List<String> tags) {
//         this.tags = tags;
//     }
// 
//     public List<Comment> getComments() {
//         if (comments == null) {
//             comments = new ArrayList<Comment>();
//         }
//         return comments;
//     }
// 
//     public void setComments(List<Comment> comments) {
//         this.comments = comments;
//     }
// 
//     public String getManufacturerId() {
//         return manufacturerId;
//     }
// 
//     public void setManufacturerId(String manufacturerId) {
//         this.manufacturerId = manufacturerId;
//     }
// 
//     public int getIsoProductCode() {
//         return isoProductCode;
//     }
// 
//     public void setIsoProductCode(int isoProductCode) {
//         this.isoProductCode = isoProductCode;
//     }
// }


// Path: src/test/java/com/github/rwitzel/couchrepository/api/ProductRepository.java
import java.util.List;
import javax.inject.Named;
import com.github.rwitzel.couchrepository.model.Comment;
import com.github.rwitzel.couchrepository.model.Product;

package com.github.rwitzel.couchrepository.api;




public interface ProductRepository extends CouchDbCrudRepository<Product, String>, ProductRepositoryCustom {

    ViewResult findByComment(@Named("key") Object[] key, @Named("descending") Boolean descending,
            @Named("viewParams") ViewParams viewParams, @Named("valueType") Class<?> valueType);

    ViewResult findByComment();

    List<Comment> findByComment(@Named("key") Object[] key, @Named("viewParams") ViewParams viewParams);