/******************************************************************************* * Copyright 2019 Graz University of Technology * MOA ZS has been developed in a cooperation between EGIZ * and Graz University of Technology. * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by * the European Commission - subsequent versions of the EUPL (the "Licence"); * You may not use this work except in compliance with the Licence. * You may obtain a copy of the Licence at: * https://joinup.ec.europa.eu/news/understanding-eupl-v12 * * Unless required by applicable law or agreed to in writing, software * distributed under the Licence is distributed on an "AS IS" basis, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the Licence for the specific language governing permissions and * limitations under the Licence. * * This product combines work with different licenses. See the "NOTICE" text * file for details on the various modules and licenses. * The "NOTICE" text file is part of the distribution. Any derivative works * that you distribute must include a readable copy of the "NOTICE" text file. *******************************************************************************/ package at.gv.egiz.moazs.repository; import at.gv.egiz.moazs.scheme.Marshaller; import at.gv.egiz.moazs.scheme.MsgResponse; import at.gv.zustellung.app2mzs.xsd.DeliveryRequestType; import at.gv.zustellung.app2mzs.xsd.ObjectFactory; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Profile; import org.springframework.data.redis.core.HashOperations; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Repository; import javax.xml.bind.JAXBElement; import java.util.Optional; /** * @author Christof Rabensteiner * */ @Repository @Profile("cluster") public class RedisDeliveryRepository implements DeliveryRepository { private static final Logger logger = LoggerFactory.getLogger(RedisDeliveryRepository.class); private static final String KEY = "MZS_DELIVERY_REQUEST"; private static final String NOT_IMPLEMENTED_MESSAGE = "Not Implemented Yet"; private final RedisTemplate redisTemplate; private final Marshaller marshaller; private final HashOperations hashOperations; private final ObjectFactory factory = new ObjectFactory(); @Autowired public RedisDeliveryRepository(RedisTemplate redisTemplate, Marshaller mzsMarshaller){ logger.info("RedisDeliveryRepository()"); this.redisTemplate = redisTemplate; this.hashOperations = redisTemplate.opsForHash(); this.marshaller = mzsMarshaller; } @Override public void store(DeliveryRequestType request) { var hashKey = request.getMetaData().getAppDeliveryID(); var serializedRequest = marshaller.marshallXml(factory.createDeliveryRequest(request)); logger.info("Save DeliveryRequest with AppDeliveryID={} to redis.", hashKey); hashOperations.put(KEY, hashKey, serializedRequest); } @Override public Optional retrieveDeliveryRequest(String appDeliveryID) { throw new UnsupportedOperationException(NOT_IMPLEMENTED_MESSAGE); } @Override public void store(MsgResponse notification) { throw new UnsupportedOperationException(NOT_IMPLEMENTED_MESSAGE); } @Override public Optional retrieveResponse(String id) { throw new UnsupportedOperationException(NOT_IMPLEMENTED_MESSAGE); } @Override public void store(String responseID, byte[] data) { } @Override public Optional retrieveBinaryResponse(String responseID) { return Optional.empty(); } }