package com.sap.research.fiware.ngsi10.simple; import noNamespace.StatusCode; import noNamespace.SubscribeContextRequest; import noNamespace.SubscribeContextResponse; import noNamespace.SubscribeContextResponseDocument; import noNamespace.SubscribeResponse; import com.sap.research.fiware.ngsi10.simple.exceptions.BadRequestException; import com.sap.research.fiware.ngsi10.simple.exceptions.NotFoundException; import com.sap.research.fiware.ngsi10.simple.subscriptionmanagement.Subscription; import com.sap.research.fiware.ngsi10.simple.subscriptionmanagement.SubscriptionBuilder; import com.sap.research.fiware.ngsi10.simple.subscriptionmanagement.SubscriptionManager; /** * handler for the NGSI 'subscribeContext' operation * * */ public class SubscribeContextHandler { private SubscribeContextRequest subscribeContextRequest; private SubscribeContextResponseDocument responseDocument; private SubscribeContextResponse response; private StatusCode error; private SubscribeResponse subscribeResponse; private String subscriptionID; /** * @param subscribeContextRequest the incoming request */ public SubscribeContextHandler(SubscribeContextRequest subscribeContextRequest) { this.subscribeContextRequest = subscribeContextRequest; } /** * processes the incoming request and returns a response. * * In case of an problem, this is indicated within the response * * @return a valid reponse ready to be sent */ public SubscribeContextResponseDocument handle() { prepareResponse(); subscribe(); finalizeResponse(); return responseDocument; } private void subscribe() { try { Subscription subscription = SubscriptionBuilder.build(subscribeContextRequest); subscriptionID = SubscriptionManager.get().add(subscription); setOKStatus(); } catch (NotFoundException e) { setNotFoundStatus(e); } catch (BadRequestException e) { setBadRequestStatus(e); } } private void setBadRequestStatus(BadRequestException e) { error.setCode(400); error.setReasonPhrase(e.getMessage()); } private void setNotFoundStatus(NotFoundException e) { error.setCode(404); error.setReasonPhrase(e.getMessage()); } private void setOKStatus() { error.setCode(200); error.setReasonPhrase("OK"); } private void finalizeResponse() { subscribeResponse.setSubscriptionId(subscriptionID); } private void prepareResponse() { responseDocument = SubscribeContextResponseDocument.Factory.newInstance(); response = responseDocument.addNewSubscribeContextResponse(); error = response.addNewSubscribeError().addNewErrorCode(); subscribeResponse = response.addNewSubscribeResponse(); } }