BAEL-951 adding @Repository stereotype

This commit is contained in:
slavisa-baeldung 2017-07-05 15:25:27 +01:00
parent fb4ba02ecf
commit e495a51b6d
2 changed files with 113 additions and 128 deletions

View File

@ -1,13 +1,118 @@
package com.baeldung.spring.cloud.bootstrap.svcrating.rating;
import java.io.IOException;
import java.util.List;
import java.util.stream.Collectors;
public interface RatingCacheRepository {
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
import org.springframework.data.redis.core.SetOperations;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.core.ValueOperations;
List<Rating> findCachedRatingsByBookId(Long bookId);
Rating findCachedRatingById(Long ratingId);
List<Rating> findAllCachedRatings();
boolean createRating(Rating persisted);
boolean updateRating(Rating persisted);
boolean deleteRating(Long ratingId);
}
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.stereotype.Repository;
@Repository
public class RatingCacheRepository implements InitializingBean {
@Autowired
private JedisConnectionFactory cacheConnectionFactory;
private StringRedisTemplate redisTemplate;
private ValueOperations<String, String> valueOps;
private SetOperations<String, String> setOps;
private ObjectMapper jsonMapper;
public List<Rating> findCachedRatingsByBookId(Long bookId) {
return setOps.members("book-" + bookId)
.stream()
.map(rtId -> {
try {
return jsonMapper.readValue(valueOps.get(rtId), Rating.class);
} catch (IOException ex) {
return null;
}
})
.collect(Collectors.toList());
}
public Rating findCachedRatingById(Long ratingId) {
try {
return jsonMapper.readValue(valueOps.get("rating-" + ratingId), Rating.class);
} catch (IOException e) {
return null;
}
}
public List<Rating> findAllCachedRatings() {
List<Rating> ratings = null;
ratings = redisTemplate.keys("rating*")
.stream()
.map(rtId -> {
try {
return jsonMapper.readValue(valueOps.get(rtId), Rating.class);
} catch (IOException e) {
return null;
}
})
.collect(Collectors.toList());
return ratings;
}
public boolean createRating(Rating persisted) {
try {
valueOps.set("rating-" + persisted.getId(), jsonMapper.writeValueAsString(persisted));
setOps.add("book-" + persisted.getBookId(), "rating-" + persisted.getId());
return true;
} catch (JsonProcessingException ex) {
return false;
}
}
public boolean updateRating(Rating persisted) {
try {
valueOps.set("rating-" + persisted.getId(), jsonMapper.writeValueAsString(persisted));
return true;
} catch (JsonProcessingException e) {
e.printStackTrace();
}
return false;
}
public boolean deleteRating(Long ratingId) {
Rating toDel;
try {
toDel = jsonMapper.readValue(valueOps.get("rating-" + ratingId), Rating.class);
setOps.remove("book-" + toDel.getBookId(), "rating-" + ratingId);
redisTemplate.delete("rating-" + ratingId);
return true;
} catch (IOException e) {
e.printStackTrace();
}
return false;
}
@Override
public void afterPropertiesSet() throws Exception {
this.redisTemplate = new StringRedisTemplate(cacheConnectionFactory);
this.valueOps = redisTemplate.opsForValue();
this.setOps = redisTemplate.opsForSet();
jsonMapper = new ObjectMapper();
jsonMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
}
}

View File

@ -1,120 +0,0 @@
package com.baeldung.spring.cloud.bootstrap.svcrating.rating;
import java.io.IOException;
import java.util.List;
import java.util.stream.Collectors;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
import org.springframework.data.redis.core.SetOperations;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.core.ValueOperations;
import org.springframework.stereotype.Repository;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
@Repository
public class RatingCacheRepositoryImpl implements InitializingBean, RatingCacheRepository {
@Autowired
private JedisConnectionFactory cacheConnectionFactory;
private StringRedisTemplate redisTemplate;
private ValueOperations<String, String> valueOps;
private SetOperations<String, String> setOps;
private ObjectMapper jsonMapper;
public List<Rating> findCachedRatingsByBookId(Long bookId) {
return setOps.members("book-" + bookId)
.stream()
.map(rtId -> {
try {
Rating rt = jsonMapper.readValue(valueOps.get(rtId), Rating.class);
rt.setFromCache(true);
return rt;
} catch (IOException ex) {
return null;
}
})
.collect(Collectors.toList());
}
public Rating findCachedRatingById(Long ratingId) {
try {
return jsonMapper.readValue(valueOps.get("rating-" + ratingId), Rating.class);
} catch (IOException e) {
return null;
}
}
public List<Rating> findAllCachedRatings() {
List<Rating> ratings = null;
ratings = redisTemplate.keys("rating*")
.stream()
.map(rtId -> {
try {
return jsonMapper.readValue(valueOps.get(rtId), Rating.class);
} catch (IOException e) {
return null;
}
})
.collect(Collectors.toList());
return ratings;
}
public boolean createRating(Rating persisted) {
try {
valueOps.set("rating-" + persisted.getId(), jsonMapper.writeValueAsString(persisted));
setOps.add("book-" + persisted.getBookId(), "rating-" + persisted.getId());
return true;
} catch (JsonProcessingException ex) {
return false;
}
}
public boolean updateRating(Rating persisted) {
try {
valueOps.set("rating-" + persisted.getId(), jsonMapper.writeValueAsString(persisted));
return true;
} catch (JsonProcessingException e) {
e.printStackTrace();
}
return false;
}
public boolean deleteRating(Long ratingId) {
Rating toDel;
try {
toDel = jsonMapper.readValue(valueOps.get("rating-" + ratingId), Rating.class);
setOps.remove("book-" + toDel.getBookId(), "rating-" + ratingId);
redisTemplate.delete("rating-" + ratingId);
return true;
} catch (IOException e) {
e.printStackTrace();
}
return false;
}
@Override
public void afterPropertiesSet() throws Exception {
this.redisTemplate = new StringRedisTemplate(cacheConnectionFactory);
this.valueOps = redisTemplate.opsForValue();
this.setOps = redisTemplate.opsForSet();
jsonMapper = new ObjectMapper();
jsonMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
}
}