public static ProductDTO toDTO(Product product, long catId, UriInfo uriInfo) { ProductDTO dto = new ProductDTO(); dto.id = product.getId(); dto.name = product.getName(); dto.price = product.getPrice(); dto.stock = product.getStock(); dto.categoryId = catId; dto.description = product.getDescription(); Collection<ServiceLink> ls = new LinkedServiceBuilder() .add( "GET", "GET", UriBuilderUtil.getProductForCategory(uriInfo.getBaseUriBuilder(), catId, dto.id)) .add( "INSERT", "PUT", UriBuilderUtil.insertProductForCategory(uriInfo.getBaseUriBuilder(), catId)) .add( "UPDATE", "POST", UriBuilderUtil.updateProductForCategory(uriInfo.getBaseUriBuilder(), catId, dto.id)) .add( "DELETE", "DELETE", UriBuilderUtil.deleteProductForCategory(uriInfo.getBaseUriBuilder(), catId, dto.id)) .add("UP", "GET", UriBuilderUtil.getCategory(uriInfo, catId)) .build(); dto.links = ls; dto.properties = new ArrayList<PropertyDTO>(); for (Property prop : product.getProperties()) { dto.properties.add(Converter.toDTO(prop)); } return dto; }