in slingshot/src/main/java/org/apache/sling/sample/slingshot/ratings/impl/RatingsServiceImpl.java [103:124]
public void setRating(final Resource resource, final String userId, final double rating)
throws PersistenceException {
final String ratingsPath = getRatingsResourcePath(resource) ;
final Map<String, Object> props = new HashMap<String, Object>();
props.put(ResourceResolver.PROPERTY_RESOURCE_TYPE, RESOURCETYPE_RATINGS);
final Resource ratingsResource = ResourceUtil.getOrCreateResource(resource.getResourceResolver(),
ratingsPath, props, null, true);
final Resource ratingRsrc = resource.getResourceResolver().getResource(ratingsResource, userId);
if ( ratingRsrc == null ) {
props.clear();
props.put(ResourceResolver.PROPERTY_RESOURCE_TYPE, RatingsUtil.RESOURCETYPE_RATING);
props.put(RatingsUtil.PROPERTY_RATING, String.valueOf(rating));
resource.getResourceResolver().create(ratingsResource, userId, props);
} else {
final ModifiableValueMap mvm = ratingRsrc.adaptTo(ModifiableValueMap.class);
mvm.put(RatingsUtil.PROPERTY_RATING, String.valueOf(rating));
}
resource.getResourceResolver().commit();
}