package at.gv.egiz.moazs; import at.gv.e_government.reference.namespace.zustellung.mzs.app2mzs_.DeliveryRequestType; import at.gv.e_government.reference.namespace.zustellung.mzs.app2mzs_.ObjectFactory; import org.apache.tools.ant.filters.StringInputStream; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.HashOperations; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Repository; import javax.annotation.PostConstruct; import javax.xml.bind.JAXBElement; @Repository public class RedisRepository { private static final Logger logger = LoggerFactory.getLogger(RedisRepository.class); private static final String KEY = "MZS_DELIVERY_REQUEST"; private final RedisTemplate redisTemplate; private final MyMarshaller marshaller; private HashOperations hashOperations; private final ObjectFactory factory = new ObjectFactory(); @Autowired public RedisRepository(RedisTemplate redisTemplate, MyMarshaller marshaller){ this.redisTemplate = redisTemplate; this.marshaller = marshaller; } @PostConstruct private void init(){ hashOperations = redisTemplate.opsForHash(); } public void add(DeliveryRequestType request) { var hashKey = request.getMetaData().getAppDeliveryID(); var serializedRequest = marshaller.marshallXml(factory.createDeliveryRequest(request)); logger.info("Adding DeliveryRequest to repository: AppDeliveryId = {}, request = {}", hashKey, serializedRequest); hashOperations.put(KEY, hashKey, serializedRequest); var drs = (String) hashOperations.get(KEY, hashKey); var requestFromRedis = (JAXBElement) marshaller.unmarshallXml(new StringInputStream(drs)); String appDeliveryID = requestFromRedis.getValue().getMetaData().getAppDeliveryID(); logger.info("here's what i got out of redis: appDeliveryId = {}, request = {}", appDeliveryID, drs); } }