package com.nortal.jroad.example.client; import java.util.Arrays; import javax.activation.DataHandler; import javax.annotation.Resource; import org.springframework.stereotype.Service; import com.nortal.jroad.client.exception.XRoadServiceConsumptionException; import com.nortal.jroad.client.service.XRoadDatabaseService; import com.nortal.jroad.example.client.database.NaidisXRoadDatabase; import com.nortal.jroad.example.client.types.eu.x_road.naidis.AttachmentEchoRequest; import com.nortal.jroad.example.client.types.eu.x_road.naidis.AttachmentEchoResponse; import com.nortal.jroad.example.client.types.eu.x_road.naidis.EchoRequest; import com.nortal.jroad.example.client.types.eu.x_road.naidis.EchoResponse; import com.nortal.jroad.jaxb.ByteArrayDataSource; import com.nortal.jroad.model.BeanXRoadMessage; import com.nortal.jroad.model.XRoadAttachment; import com.nortal.jroad.model.XRoadMessage; /** * @author Lauri Lättemäe <lauri.lattemae@nortal.com> */ @Service("naidisXRoadService") public class NaidisXRoadServiceImpl extends XRoadDatabaseService implements NaidisXRoadService { @Resource private NaidisXRoadDatabase naidisXRoadDatabase; @Override public AttachmentEchoResponse sendAttachment(String contentType, byte[] content) throws XRoadServiceConsumptionException { DataHandler reqHandler = new DataHandler(new ByteArrayDataSource(contentType, content)); AttachmentEchoRequest request = AttachmentEchoRequest.Factory.newInstance(); request.addNewNest().setAttachmentHandler(reqHandler); return naidisXRoadDatabase.attachmentEchoV1(request); } @Override public String sendEcho(String text) throws XRoadServiceConsumptionException { EchoRequest req = EchoRequest.Factory.newInstance(); req.setText(text); return naidisXRoadDatabase.echoV1(req).getText(); } @Override public String sendEchoMime(String text) throws XRoadServiceConsumptionException { EchoRequest echoReq = EchoRequest.Factory.newInstance(); echoReq.setText(text); BeanXRoadMessage<EchoRequest> req = new BeanXRoadMessage<EchoRequest>(null, echoReq, Arrays.asList(new XRoadAttachment("cid", "text/plain", text.getBytes()))); XRoadMessage<EchoResponse> rsp = send(req, "Echo", "v1"); return rsp.getContent().getText(); } @Override public String sendAxisEcho(String text) throws XRoadServiceConsumptionException { EchoRequest req = EchoRequest.Factory.newInstance(); req.setText(text); return naidisXRoadDatabase.axisEchoV1(req).getText(); } }