Link to home
Start Free TrialLog in
Avatar of Vishal Jaiswal
Vishal JaiswalFlag for United States of America

asked on

How to read real time cancel appointment in calendar using Exchanged server managed API

How to read real-time cancel appointment in the calendar using Exchanged server managed API
Getting below error:
microsoft.exchange.webservices.data.core.exception.service.remote.ServiceResponseException: The specified object was not found in the store.
        at microsoft.exchange.webservices.data.core.response.ServiceResponse.internalThrowIfNecessary(ServiceResponse.java:278)
        at microsoft.exchange.webservices.data.core.response.ServiceResponse.throwIfNecessary(ServiceResponse.java:267)
        at microsoft.exchange.webservices.data.core.request.MultiResponseServiceRequest.execute(MultiResponseServiceRequest.java:165)
        at microsoft.exchange.webservices.data.core.ExchangeService.internalBindToItems(ExchangeService.java:1343)
        at microsoft.exchange.webservices.data.core.ExchangeService.bindToItem(ExchangeService.java:1378)
        at microsoft.exchange.webservices.data.core.ExchangeService.bindToItem(ExchangeService.java:1395)
        at microsoft.exchange.webservices.data.core.service.item.Appointment.bind(Appointment.java:118)
        at microsoft.exchange.webservices.data.core.service.item.Appointment.bind(Appointment.java:133)
        at com.docasap.ihub.exchangeserverengine.handler.e2d.StreamingAppointmentsHandler.notificationEventDelegate(StreamingAppointmentsHandler.java:96)
        at microsoft.exchange.webservices.data.notification.StreamingSubscriptionConnection.issueNotificationEvents(StreamingSubscriptionConnection.java:524)
        at microsoft.exchange.webservices.data.notification.StreamingSubscriptionConnection.handleServiceResponseObject(StreamingSubscriptionConnection.java:418)
        at microsoft.exchange.webservices.data.notification.StreamingSubscriptionConnection.handleResponseObject(StreamingSubscriptionConnection.java:562)
        at microsoft.exchange.webservices.data.core.request.HangingServiceRequestBase.parseResponses(HangingServiceRequestBase.java:218)
        at microsoft.exchange.webservices.data.core.request.HangingServiceRequestBase.access$000(HangingServiceRequestBase.java:60)
        at microsoft.exchange.webservices.data.core.request.HangingServiceRequestBase$1.run(HangingServiceRequestBase.java:330)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:622)
        at java.lang.Thread.run(Thread.java:748)

I am making subscription using below code:

FolderId folderId = new FolderId(WellKnownFolderName.Calendar, new Mailbox("mytestemail@test.com"));
            logger.info("folderId:: "+folderId.getUniqueId());
            List<FolderId> folders = new ArrayList<FolderId>();
            folders.add(folderId);
            StreamingSubscriptionConnection ssc = null;
            try {
                  StreamingSubscription streamSub = service.subscribeToStreamingNotifications(folders,                               
                              EventType.Created, EventType.Deleted,
                              EventType.Modified, EventType.Moved, EventType.Copied, EventType.NewMail); //EventType.FreeBusyChanged,
                  ssc = new StreamingSubscriptionConnection(service, subTimeout);
                  ssc.addSubscription(streamSub);
                  ssc.addOnNotificationEvent(new StreamingAppointmentsHandler());
                  ssc.addOnDisconnect(new SubscriptionRenewalHandler());
                  ssc.addOnSubscriptionError(new SubscriptionRenewalHandler());
                  ssc.open();
                  logger.info("Is subscription done: "+ssc.getIsOpen());
------------------------------
Reading realtime as below:
ExchangeService service = args.getSubscription().getService();
                  for (NotificationEvent event : args.getEvents()) {
                        if (event instanceof ItemEvent) {
                              logger.info("Captured event: " + event.getEventType().name());
                              ItemEvent itemEvent = (ItemEvent) event;
                              logger.info("Event Item ID: "+itemEvent.getItemId().getUniqueId());
                              switch (itemEvent.getEventType()) {
case Deleted:
                                    logger.info("Deleted ");
                              case Modified:
                                    logger.info("Modified ");
                              case Moved:
Appointment changedAppt = Appointment.bind(service, itemEvent.getItemId());
                                          logger.info("Appointment IsCancelled: "+ changedAppt.getIsCancelled());
                                          logger.info("Appointment Subject: "+ changedAppt.getSubject());
                                          logger.info("Appointment Start: "+ changedAppt.getStart());
                                          logger.info("Appointment End: "+ changedAppt.getEnd());
                                          logger.info("Appointment State: "+ changedAppt.getAppointmentState());
This question needs an answer!
Become an EE member today
7 DAY FREE TRIAL
Members can start a 7-Day Free trial then enjoy unlimited access to the platform.
View membership options
or
Learn why we charge membership fees
We get it - no one likes a content blocker. Take one extra minute and find out why we block content.