From f0f975acaf026d6862d90b1d3d04805cf03a3b84 Mon Sep 17 00:00:00 2001 From: dwissk Date: Fri, 23 Jan 2015 09:37:02 +0100 Subject: [PATCH 01/13] Update readme.md --- readme.md | 1155 +---------------------------------------------------- 1 file changed, 3 insertions(+), 1152 deletions(-) diff --git a/readme.md b/readme.md index 18d85b549..4dc5441d5 100644 --- a/readme.md +++ b/readme.md @@ -1,1154 +1,5 @@ -[![Build Status](https://travis-ci.org/OfficeDev/ews-java-api.svg)](https://travis-ci.org/OfficeDev/ews-java-api) [![Gitter](https://badges.gitter.im/Join Chat.svg)](https://gitter.im/OfficeDev/ews-java-api?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) +forked from OfficeDev/ews-java-api -# Getting Started with the EWS JAVA API +The official Exchange Java SDK from MS is not yet on maven central as it is not production ready. See OfficeDev/ews-java-api/issues/1. -## Using the EWS JAVA API for https - -To make an environment secure, you must be sure that any communication is with "trusted" sites. SSL uses certificates for authentication — these are digitally signed documents that bind the public key to the identity of the private key owner. - -For testing the application with https, you don't have to add any additional code because the code is built into the API. - -## Accessing EWS by using the EWS JAVA API -To access Exchange Web Services (EWS) by using the EWS JAVA API, all you need is an instance of the ExchangeService class, as shown in the following example. -``` -ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010_SP2); -ExchangeCredentials credentials = new WebCredentials("emailAddress", "password"); -service.setCredentials(credentials); -``` - -## Setting the URL of the Service -You can set the URL of the service in one of two ways: -- Manually, if you know the URL of EWS or if you have previously determined it via the Autodiscover service. -- By using the Autodiscover service. - -To set the URL manually, use the following: - -``` -service.setUrl(new Uri("")); -``` -To set the URL by using Autodiscover, use the following: - -``` -service.autodiscoverUrl(""); -``` - -We recommend that you use the Autodiscover service, for the following reasons: - -- Autodiscover determines the best endpoint for a given user (the endpoint that is closest to the user’s Mailbox server). -- The EWS URL might change as your administrators deploy new Client Access servers. - -You can safely cache the URL that is returned by the Autodiscover service and reuse it. Autodiscover should be called periodically, or when EWS connectivity to a given URL is lost. -Note that you should either set the URL manually or call AutodiscoverUrl, but you should not do both. - -## Responding to Autodiscover Redirecting - -If the domain that the user inputs as their email address contains a CNAME that redirects the user this Exception is thrown: - -> microsoft.exchange.webservices.data.AutodiscoverLocalException: Autodiscover blocked a -potentially insecure redirection to **URL**. To allow Autodiscover to follow the redirection, use the AutodiscoverUrl(string, AutodiscoverRedirectionUrlValidationCallback) overload.< - -When this happens, instead of failing, the user can be prompted to accept the redirection or -not. That functionality needs to be implemented inside the autodiscoverRedirectionUrlValidationCallback method. In the example below, it only checks to see that the redirection url starts with "https://". To accomplish this -```Java -static class RedirectionUrlCallback implements IAutodiscoverRedirectionUrl { - public boolean autodiscoverRedirectionUrlValidationCallback( - String redirectionUrl) { - return redirectionUrl.toLowerCase().startsWith("https://"); - } - } -``` - -Now -``` -service.autodiscoverUrl("", new RedirectionUrlCallback()); -``` -can be called to deal with the redirection in a safe manner. - -## Items - -The EWS JAVA API defines a class hierarchy of items. Each class in the hierarchy maps to a given item type in Exchange. For example, the `EmailMessage` class represents email messages and the `Appointment` class represents calendar events and meetings. - -The following figure shows the EWS JAVA API item class hierarchy. - -![Item Hierarchy](images/ItemHierarchy.png) - -## Folders - -The Folder operations provide access to folders in the Exchange data store. A client application can create, update, delete, copy, find, get, and move folders that are associated with a mailbox user. Folders are used to gain access to items in the store, and provide a reference container for items in the store. - -The EWS JAVA API also defines a class hierarchy for folders, as shown in the following figure. - -![Item Hierarchy](images/FolderHierarchy.png) - -## Item and Folder Identifiers - -Items and folders in Exchange are uniquely identified. In the EWS JAVA API, items and folders have an ID property that holds their Exchange unique identity. The ID of an item is of type `ItemId`; the ID of a folder is of type `FolderId`. - -## Binding to an Existing Item - -If you know the unique identifier of an email message and want to retrieve its details from Exchange, you have to write the following. - -``` -// Bind to an existing message using its unique identifier. -EmailMessage message = EmailMessage.bind(service, new ItemId(uniqueId)); - -// Write the sender's name. -System.out.println(message.getSender().getName()); - -``` -If you do not know what type of item the unique identifier maps to, you can also write the following. - -``` -// Bind to an existing item using its unique identifier. -Item item = Item.bind(service, new ItemId(uniqueId)); - -if (item.equals(message)) -{ - // If the item is an e-mail message, write the sender's name. - System.out.println((item(EmailMessage)).getSender().getName()); -} -else if (item.equals(Appointment)) -{ - // If the item is an appointment, write its start time. - System.out.println((item(Appointment).Start)); -} -else -{ - // Handle other types. -} -``` - -## Binding to an Existing Folder - -Bind to an existing folder in the same way that you bind to an existing item. - -``` -// Bind to an existing folder using its unique identifier. -Folder folder = Folder.bind(service, new FolderId(uniqueId)); -``` -You can also bind to a well-known folder (Inbox, Calendar, Tasks, and so on) without knowing its ID. - -``` -// Bind to the Inbox. -Folder inbox = Folder.bind(service, WellKnownFolderName.Inbox); -``` - -## Sending a Message - -``` -EmailMessage msg= new EmailMessage(service); -msg.setSubject("Hello world!"); -msg.setBody(MessageBody.getMessageBodyFromText("Sent using the EWS Java API.")); -msg.getToRecipients().add("someone@contoso.com"); -msg.send(); -``` - -## Creating a Recurring Appointment - -To schedule a recurring appointment, create an appointment for the first meeting time, and choose 'Recurrence.' Outlook will use your initial appointment as a start date. Set the end date by specifying a date for the recurring appointments to end or a number of occurrences for this recurring appointment. You can also specify no end date. If the meeting will occur on more than one day of the week, choose the days on which the meeting/appointment will occur. -You can use the EWS JAVA API to create a recurring appointment, as shown in the following code. - -``` -Appointment appointment = new Appointment(service); -appointment.setSubject("Recurrence Appointment for JAVA XML TEST"); -appointment.setBody(MessageBody.getMessageBodyFromText("Recurrence Test Body Msg")); - -SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); -Date startDate = formatter.parse("2010-05-22 12:00:00"); -Date endDate = formatter.parse("2010-05-22 13:00:00"); - -appointment.setStart(startDate);//new Date(2010-1900,5-1,20,20,00)); -appointment.setEnd(endDate); //new Date(2010-1900,5-1,20,21,00)); - -formatter = new SimpleDateFormat("yyyy-MM-dd"); -Date recurrenceEndDate = formatter.parse("2010-07-20"); - -appointment.setRecurrence(new Recurrence.DailyPattern(appointment.getStart(), 3)); - -appointment.getRecurrence().setStartDate(appointment.getStart()); -appointment.getRecurrence().setEndDate(recurrenceEndDate); -appointment.save(); -``` - -## Inviting Attendees to the Previously Created Appointment to Make it a Meeting - -``` -appointment.getRequiredAttendees().add("someone@contoso.com"); -appointment.update(ConflictResolutionMode.AutoResolve); -``` -*Note:* You can also do this when you create the meeting. - -## Deleting an Item of Any Type - -``` -message.delete(DeleteMode.HardDelete); -``` - -## Creating a Folder - -The following code shows how to create a folder by using the EWS JAVA API. - -``` -Folder folder = new Folder(service); -folder.setDisplayName("EWS-JAVA-Folder"); -// creates the folder as a child of the Inbox folder. -folder.save(WellKnownFolderName.Inbox); -``` - -## Searching - -### List the first 10 items in the Inbox - -You can use EWS to list the first 10 items in the user's mailbox. The following code shows how to search for a list of first 10 items in the Inbox by using the EWS JAVA API. - -``` -public void listFirstTenItems() -{ - ItemView view = new ItemView(10); - FindItemsResults findResults = service.findItems(folder.getId(), view); - - for (Item item : findResults1.getItems()) - { - // Do something with the item as shown - System.out.println("id==========" + item.getId()); - System.out.println("sub==========" + item.getSubject()); - } -} -``` - -### Retrieve all the items in the Inbox by groups of 50 items - -``` -public void pageThroughEntireInbox() -{ - ItemView view = new ItemView(50); - FindItemsResults findResults; - - do - { - findResults = service.FindItems(WellKnownFolderName.Inbox, view); - - for(Item item : findResults.getItems()) - { - // Do something with the item. - } - - view.Offset += 50; - } while (findResults.MoreAvailable); -} -``` - -### Find the first 10 messages in the Inbox that have a subject that contains the words "EWS" or "API", order by date received, and only return the Subject and DateTimeReceived properties. - -``` -public void findItems() -{ - ItemView view = new ItemView(10); - view.getOrderBy().add(ItemSchema.DateTimeReceived, SortDirection.Ascending); - view.setPropertySet(new PropertySet(BasePropertySet.IdOnly, ItemSchema.Subject, ItemSchema.DateTimeReceived)); - - FindItemsResults findResults = - service.findItems(WellKnownFolderName.Inbox, - new SearchFilter.SearchFilterCollection( - LogicalOperator.Or, new SearchFilter.ContainsSubstring(ItemSchema.Subject, "EWS"), - new SearchFilter.ContainsSubstring(ItemSchema.Subject, "API")), view); - - System.out.println("Total number of items found: " + findResults.getTotalCount()); - - for (Item item : findResults) - { - System.out.println(item.getSubject()); - System.out.println(item.getBody()); - // Do something with the item. - } -} -``` - -### Find all child folders of the Inbox folder - -Use the FindFolder operation to search in all child folders of the identified parent folder; for example, you can search all child folders of the Inbox, as shown in the following example. - -``` -public void findChildFolders() -{ - FindFoldersResults findResults = service.findFolders(WellKnownFolderName.Inbox, new FolderView(Integer.MAX_VALUE)); - - for (Folder folder : findResults.getFolders()) - { - System.out.println("Count======" + folder.getChildFolderCount()); - System.out.println("Name=======" + folder.getDisplayName()); - } -} -``` - -### Get all appointments between startDate and endDate in the specified folder, including recurring meeting occurrences - -The following example shows you how to get all appointments between startDate and endDate in the specified folder, including recurring meeting occurrences. - -``` -public void findAppointments(CalendarFolder folder, Date startDate, Date endDate) -{ - SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - Date startDate = formatter.parse("2010-05-01 12:00:00"); - Date endDate = formatter.parse("2010-05-30 13:00:00"); - CalendarFolder cf=CalendarFolder.bind(service, WellKnownFolderName.Calendar); - FindItemsResults findResults = cf.findAppointments(new CalendarView(startDate, endDate)); - for (Appointment appt : findResults.getItems()) - { - System.out.println("SUBJECT====="+appt.getSubject()); - System.out.println("BODY========"+appt.getBody()); - } -} -``` - -## Resolving an Ambiguous Name - -You can resolve a partial name against the Active Directory directory service and the Contacts folder (in that order), as shown in the following example. - -``` -// Resolve a partial name against the Active Directory and the Contacts folder (in that order). -NameResolutionCollection nameResolutions = service.resolveName("test",ResolveNameSearchLocation.ContactsOnly, true); -System.out.println("nameResolutions==="+nameResolutions.getCount()); - -for (NameResolution nameResolution : nameResolutions) -{ - System.out.println("NAME==="+nameResolution.getMailbox().getName()); - System.out.println(" PHONENO===" +nameResolution.getMailbox().getMailboxType()); -} -``` - -## Extended Properties - -Items in the EWS JAVA API expose strongly typed, first-class properties that provide easy access to the most commonly used properties (for example, `Item.Subject`, `Item.Body`, `EmailMessage.ToRecipients`, `Appointment.Start` and `Contact.Birthday`). Exchange allows for additional properties to be added to items. In EWS, these are called extended properties. - -To stamp an email message with a custom extended property, do the following. - -``` -// Create a new email message. -EmailMessage message = new EmailMessage(service); -message.setSubject("Message with custom extended property"); - -// Define a property set identifier. This identifier should be defined once and -// reused wherever the extended property is accessed. For example, you can -// define one property set identifier for your application and use it for all the -// custom extended properties that your application reads and writes. -// -// NOTE: The following is JUST AN EXAMPLE. You should generate NEW GUIDs for your -// property set identifiers. This way, you will ensure that there won't be any conflict -// with the extended properties your application sets and the extended properties -// other applications set. -UUID yourPropertySetId = UUID.fromString("01638372-9F96-43b2-A403-B504ED14A910"); - -// Define the extended property itself. -ExtendedPropertyDefinition extendedPropertyDefinition = new ExtendedPropertyDefinition( - yourPropertySetId, - "MyProperty", - MapiPropertyType.String); - -// Stamp the extended property on a message. -message.setExtendedProperty(extendedPropertyDefinition, "MyValue"); - -// Save the message. -message.save(); -``` - -## Availability Service - -The EWS Java API makes it very easy to consume the Availability service. The Availability service makes it possible to retrieve free/busy information for users for whom the caller does not necessarily have access rights. It also provides meeting time suggestions. - -The following example shows how to call the Availability service by using the EWS Java API. - -``` -// Create a list of attendees for which to request availability -// information and meeting time suggestions. - -List attendees = new ArrayList(); -attendees.add(new AttendeeInfo("test@contoso.com")); -attendees.add(new AttendeeInfo("temp@contoso.com")); - -SimpleDateFormat formatter = new SimpleDateFormat("yyyy/MM/dd"); -Date start = formatter.parse("2010/05/18"); -Date end = formatter.parse("2010/05/19"); - -// Call the availability service. -GetUserAvailabilityResults results = service.getUserAvailability( - attendees, - new TimeWindow(start, end), - AvailabilityData.FreeBusyAndSuggestions); - -// Output attendee availability information. -int attendeeIndex = 0; - -for (AttendeeAvailability attendeeAvailability : results.getAttendeesAvailability()) -{ - System.out.println("Availability for " + attendees.get(attendeeIndex)); - if (attendeeAvailability.getErrorCode() == ServiceError.NoError) - { - for (CalendarEvent calendarEvent : ttendeeAvailability.getCalendarEvents()) - { - System.out.println("Calendar event"); - System.out.println(" Start time: " + CalendarEvent.getStartTime().toString()); - System.out.println(" End time: " + calendarEvent.getEndTime().toString()); - - if (calendarEvent.getDetails() != null) - { - System.out.println(" Subject: " + calendarEvent.getDetails().getSubject()); - // Output additional properties. - } - } - } - - attendeeIndex++; -} - - -// Output suggested meeting times. -for (Suggestion suggestion : results.getSuggestions()) -{ - System.out.println("Suggested day: " + suggestion.getDate().toString()); - System.out.println("Overall quality of the suggested day: " + suggestion.getQuality().toString()); - - for (TimeSuggestion timeSuggestion : suggestion.getTimeSuggestions()) - { - System.out.println(" Suggested time: " + timeSuggestion.getMeetingTime().toString()); - System.out.println(" Suggested time quality: " + timeSuggestion.getQuality().toString()); - // Output additonal properties. - } -} -``` - -## Notifications - -EWS allows client applications to subscribe to event notifications. This makes it possible to determine what events occurred on a specific folder since a specific point in time (for example, what items were created, modified, moved, or deleted). - -There are two types of subscriptions: pull subscriptions and push subscriptions. With pull subscriptions, the client application has to poll the server regularly to retrieve the list of events that occurred since the last time the server was polled. With push subscriptions, Exchange directly notifies the client application when an event occurs. - -### Using pull notifications with the EWS JAVA API - -The following example shows how to subscribe to pull notifications and how to retrieve the latest events. - -``` -// Subscribe to pull notifications in the Inbox folder, and get notified when a new mail is received, when an item or folder is created, or when an item or folder is deleted. - -List folder = new ArrayList(); -folder.add(new FolderId().getFolderIdFromWellKnownFolderName(WellKnownFolderName.Inbox)); - -PullSubscription subscription = service.subscribeToPullNotifications(folder,5 -/* timeOut: the subscription will end if the server is not polled within 5 minutes. */, null /* watermark: null to start a new subscription. */, EventType.NewMail, EventType.Created, EventType.Deleted); - -// Wait a couple minutes, then poll the server for new events. -GetEventsResults events = subscription.getEvents(); - -// Loop through all item-related events. -for(ItemEvent itemEvent : events.getItemEvents()) -{ - if (itemEvent.getEventType()== EventType.NewMail) - { - EmailMessage message = EmailMessage.bind(service, itemEvent.getItemId()); - } - else if(itemEvent.getEventType()==EventType.Created) - { - Item item = Item.bind(service, itemEvent.getItemId()); - } - else if(itemEvent.getEventType()==EventType.Deleted) - { - break; - } - } - -// Loop through all folder-related events. -for (FolderEvent folderEvent : events.getFolderEvents()) -{ - if (folderEvent.getEventType()==EventType.Created) - { - Folder folder = Folder.bind(service, folderEvent.getFolderId()); - } - else if(folderEvent.getEventType()==EventType.Deleted) - { - System.out.println("folder deleted”+ folderEvent.getFolderId.UniqueId); - } -} -``` - -### SubscribeToPullNotifications asynchronously - -``` -WellKnownFolderName wkFolder = WellKnownFolderName.Inbox; - -FolderId folderId = new FolderId(wkFolder); - -List folder = new ArrayList(); - -folder.add(folderId); - -IAsyncResult subscription = getService().beginSubscribeToPullNotifications(new AsyncCallbackImplementation(),null,folder, 5, null, EventType.NewMail, EventType.Created, EventType.Deleted); - -PullSubscription ps= getService().endSubscribeToPullNotifications(subscription); -``` - -### SubscribeToPullNotificationsOnAllFolders asynchronously - -The following example shows how to subscribe to pull notifications on all folders. - -``` -// Subscribe to push notifications on the Inbox folder, and only listen -// to "new mail" events. - -IAsyncResult asyncresult = getService().beginSubscribeToPullNotificationsOnAllFolders(null,null,5,null, - -EventType.NewMail, EventType.Created, EventType.Deleted); - -PullSubscription subscription = getService().endSubscribeToPullNotifications(asyncresult); - -GetEventsResults events = subscription.getEvents(); - -System.out.println("events======" + events.getItemEvents()); -``` - -## Using push notifications with the EWS JAVA API - -The EWS Java API does not provide a built-in push notifications listener. It is the responsibility of the client application to implement such a listener. - -The following example shows how to subscribe to push notifications. - -``` -// Subscribe to push notifications on the Inbox folder, and only listen -// to "new mail" events. -PushSubscription pushSubscription = service.SubscribeToPushNotifications( - new FolderId[] { WellKnownFolderName.Inbox }, - new Uri("https://...") /* The endpoint of the listener. */, - 5 /* Get a status event every 5 minutes if no new events are available. */, - null /* watermark: null to start a new subscription. */, - EventType.NewMail); -``` - -### BeginSubscribeToPushNotifications - -The following example shows how to subscribe to push notifications. - -``` -WellKnownFolderName wkFolder = WellKnownFolderName.Inbox; - FolderId folderId = new FolderId(wkFolder); - List folder = new ArrayList(); - folder.add(folderId); -IAsyncResult result = getService().beginSubscribeToPushNotifications(null, null, folder, new URI(CredentialConstants.URL), 5, null, EventType.NewMail, EventType.Created, EventType.Deleted); -PushSubscription subscription = getService().endSubscribeToPushNotifications(result); -``` - -## Task - -A task specifies a work item. - -You can use EWS to create tasks or to update tasks in a user's mailbox. - -### Create a Task - -The following code example shows how to create a task. - -``` -Task task = new Task(service); -task.setSubject("Task to test in JAVA"); -task.setBody(MessageBody.getMessageBodyFromText("Test body from JAVA")); -task.setStartDate(new Date(2010-1900,5-1,20,17,00)); -task.save(); -``` - -## PostItem - -The PostItem element represents a post item in the Exchange store. - -A PostItem object is not sent to a recipient. You use the Post method, which is analogous to the Send method for the `MailItem` object, to save the `PostItem` to the target public folder instead of mailing it. - -### PostItem Creation - -The following code shows how to create PostItem by using the EWS Java API. - -``` -PostItem post = new PostItem(service); -post.setBody(new MessageBody("Test From JAVA: Body Content")); -post.setImportance(Importance.High); -post.setSubject("Test From JAVA: Subject"); -String id =((Folder)findResults1.getFolders().get(0)).getId().toString(); -System.out.println("Id : " +id); -post.save(new FolderId(id)); -``` - -### PostItem Update - -The following code shows how to update PostItem by using the EWS Java API. - -``` -PostItem post= PostItem.bind(service, new ItemId(uniqueId)); -post.setSubject("post update in java"); -post.setBody(MessageBody.getMessageBodyFromText("update post body in java")); -post.update(ConflictResolutionMode.AlwaysOverwrite); -``` - -## Contact Group - -A contact group is an instance of the groups category. To persist a contact group between logon sessions, the new contact group category instance has to be published to the server. - -You can add contacts even if a contact group does not exist. If you create your first contact group after you have added contacts, you can update each of your contacts to add them to the new contact group. If a contact group exists at the time you are adding a contact, you can place the new contact in the contact group as you are adding the contact. - -### ContactGroup Creation - -``` -ContactGroup cgroup = new ContactGroup(service); -cgroup.setBody(new MessageBody("contact groups ")); -cgroup.setDisplayName("test"); -cgroup.save(folder.getId()); -``` - -### Contact Group Updates - -You can enable users to update their contact list by adding and removing contacts. - -``` -Folder folder = Folder.bind(service, WellKnownFolderName.Contacts); -ItemView view = new ItemView(10); -FindItemsResults findResults = service.findItems(folder.getId(), view); -for (Item item : findResults.getItems()) -{ - System.out.println("id:" + item.getId()); - System.out.println("sub==========" + item.getSubject()); -} -ContactGroup cgroup = new ContactGroup(service); -ContactGroup c=cgroup.bind(service, new ItemId(uniqueId)); -c.getMembers().addPersonalContact(new ItemId(uniqueId)); -c.update(ConflictResolutionMode.AlwaysOverwrite); -``` - -## Contact - -You can use EWS to create contact items in a mailbox. - -### Contact Creation - -You can use EWS to create contact items in a mailbox. -To create a Contact object, bind to the object that will contain the object, create a Contact object, set its properties and save the object to the directory store. - -``` -Contact contact = new Contact(service); -contact.setGivenName("ContactName"); -contact.setMiddleName ("mName"); -contact.setSurname("sName"); -contact.setSubject("Contact Details"); - -// Specify the company name. -contact.setCompanyName("technolgies"); -PhysicalAddressEntry paEntry1 = new PhysicalAddressEntry(); -paEntry1.setStreet("12345 Main Street"); -paEntry1.setCity("Seattle"); -paEntry1.setState("orissa"); -paEntry1.setPostalCode("11111"); -paEntry1.setCountryOrRegion("INDIA"); -contact.getPhysicalAddresses().setPhysicalAddress(PhysicalAddressKey.Home, paEntry1); -contact.save(); -``` - -### Contact Updates - -You can use EWS to update a contact item in the Exchange store. -Bind to an existing contact saves the changes made to a Contact item by updating its entry in the Contact collection. - -``` -Contact contact = Contact.bind(service,new ItemId(uniqueId)); -contact.setSubject("subject"); -contact.setBody(new MessageBody("update contact body")); -contact.update(ConflictResolutionMode.AlwaysOverwrite); -``` - -## Email Message Attachment Support - -You can get the attachment collection used to store data attached to an email message. -Use the collection returned by the Attachments property to add an attachment, such as a file or the contents of a Stream, to a `MailMessage`. - -Create an attachment that contains or references the data to be attached, and then add the attachment to the collection returned by Attachments. - -The following code shows how to support email message attachments by using the EWS JAVA API. - -``` -EmailMessage message = new EmailMessage(service); -message.getToRecipients().add("administrator@contoso.com"); -message.setSubject("attachements"); -message.setBody(MessageBody.getMessageBodyFromText("Email attachements")); -message.getAttachments().addFileAttachment("C:\\Documents and Settings\\test\\Desktop\\scenarios\\attachment.txt"); -message.send(); -``` - -## Appointment Creation - -You can use EWS to create appointments in a user's mailbox. Appointments are blocks of time that appear in the Outlook calendar. - -Appointments can have beginning and ending times, can repeat, and can have a location, as shown in the following example. - -``` -Appointment appointment = new Appointment(service); -appointment.setSubject("Appointment for JAVA XML TEST"); -appointment.setBody(MessageBody.getMessageBodyFromText("Test Body Msg in JAVA")); -SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); -Date startDate = formatter.parse("2012-06-19 12:00:00"); -Date endDate = formatter.parse("2012-06-19 13:00:00"); -appointment.setStart(startDate);//new Date(2010-1900,5-1,20,20,00)); -appointment.setEnd(endDate); //new Date(2010-1900,5-1,20,21,00)); -appointment.save(); -``` - -## Update an Appointment -You can use the EWS JAVA API to update appointments, as shown in the following example. - -``` -Appointment appointment= Appointment.bind(service, new (uniqueId)); -SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); -Date startDate = formatter.parse("2012-06-19 13:00:00"); -Date endDate = formatter.parse("2012-06-19 14:00:00"); - -appointment.setBody(MessageBody.getMessageBodyFromText("Appointement UPDATE done")); - -appointment.setStart(startDate); -appointment.setEnd(endDate); -appointment.setSubject("Appointement UPDATE"); -appointment.getRequiredAttendees().add("someone@contoso.com"); -appointment.update(ConflictResolutionMode.AutoResolve); -``` - -## Meeting Request-Create - -By adding attendees, you make the appointment a meeting. - -Set properties on the appointment. The following code shows how to add a subject, a body, a start time, an end time, a location, two required attendees, and an optional attendee to an appointment, and how to create a meeting and send a meeting request to invitees. - -``` -// Create the appointment. -Appointment appointment = new Appointment(service); - -SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); -Date startDate = formatter.parse("2012-06-19 13:00:00"); -Date endDate = formatter.parse("2012-06-19 14:00:00"); - -// Set properties on the appointment. Add two required attendees and one optional attendee. -appointment.setSubject("Status Meeting"); -appointment.setBody(new MessageBody("The purpose of this meeting is to discuss status."); -appointment.setStart(startDate); -appointment.setEnd(endDate); -appointment.setLocation(“Conf Room"); -appointment.getRequiredAttendees().add("user1@contoso.com"); -appointment.getRequiredAttendees().add("user2@contoso.com"); -appointment.getOptionalAttendees().add("user3@contoso.com"); - -// Send the meeting request to all attendees and save a copy in the Sent Items folder. -appointment.save(); -``` - -## Meeting Request-Update - -The following code example shows how to update the subject, the location, the start time, and the end time of a meeting request, and add a user2@contoso.com as a new required attendee to the meeting request (user1@contoso.com was previously the only attendee). The updated meeting request is sent to all attendees and a copy is saved in the organizer's Sent Items folder. - -``` -// Bind to an existing meeting request by using its unique identifier. -Appointment appointment = Appointment.bind(service, new ItemId(uniqueId)); - -// Update properties on the meeting request. -appointment.setSubject("Status Meeting - Rescheduled/Moved"); -appointment.setLocation("Conf Room 34"); - -// Add a new required attendee to the meeting request. -appointment.getRequiredAttendees().add("user1@contoso.com"); - -// Add a new optional attendee to the meeting request. -appointment.getRequiredAttendees().add("user2@contoso.com"); - -// Save the updated meeting request and send only to the attendees who were added. -appointment.update(ConflictResolutionMode.AlwaysOverwrite, -SendInvitationsOrCancellationsMode.SendOnlyToChanged); -``` - -### MeetingResponse -Accept the meeting invitation by using either the Accept method or the CreateAcceptMessage method. - -The following code shows how to accept a meeting invitation and send the response to the meeting organizer by using the Accept method. To accept a meeting invitation without sending the response to the meeting organizer, set the parameter value to false instead of true. - -``` -// Bind to the meeting request message by using its unique identifier. -Appointment appointment = Appointment.bind(service, new ItemId(uniqueId); -appointment.Accept(true); -``` - -### MeetingCancellation -You can cancel a meeting by using the CancelMeeting method. The following code shows how to cancel a meeting by using the CancelMeeting method and send a generic cancellation message to all attendees. - -``` -Appointment appointment = Appointment.bind(service, new ItemId(uniqueId); -appointment.cancelMeeting(); -``` - -### Date and Time Zone - -Time and date details that you set by using the java.util.Date class are given as UTC. When you set the date by using the Date class, make sure that it is in UTC time. - -For example, if you're creating an Appointment from 10:00 am to 11:00 am on 20-09-2010 as per IST Indian Standard Time (which is +5:30 hours from UTC), the Time should be given in UTC, as shown in the following example. - -``` -Appointment appointment = new Appointment(service); -appointment.setSubject("Appointment TEST for TimeZone Check"); -appointment.setBody(MessageBody.getMessageBodyFromText("Test Body Msg")); -SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); -Date startDate = formatter.parse("2012-09-20 04:30:00"); -Date endDate = formatter.parse("2012-09-20 05:30:00"); -appointment.setStart(startDate); -appointment.setEnd(endDate); -appointment.save(); -``` - -## StreamingNotification - -EWS provides a streaming subscription that enables client applications to discover events that occur in the Exchange store. To subscribe to streaming notifications, call the subscribeToStreamingNotifications method. To create a connection to the server, create an object of the class StreamingSubscriptionConnection, as shown in the following example. - -``` -WellKnownFolderName sd = WellKnownFolderName.Inbox; -FolderId folderId = new FolderId(sd); - -List folder = new ArrayList(); -folder.add(folderId); - -StreamingSubscription subscription = service.subscribeToStreamingNotifications(folder, EventType.NewMail); - -StreamingSubscriptionConnection conn = new StreamingSubscriptionConnection(service, 30); -conn.addSubscription(subscription); -conn.addOnNotificationEvent(this); -conn.addOnDisconnect(this); -conn.open(); - -EmailMessage msg= new EmailMessage(service); -msg.setSubject("Testing Streaming Notification on 16 Aug 2010"); -msg.setBody(MessageBody.getMessageBodyFromText("Streaming Notification ")); -msg.getToRecipients().add("administrator@contoso.com"); -msg.send(); -Thread.sleep(20000) -conn.close(); -System.out.println("end........"); - -void connection_OnDisconnect(Object sender, SubscriptionErrorEventArgs args) -{ - System.out.println("disconnecting........"); -} - -void connection_OnNotificationEvent(Object sender, NotificationEventArgs args) throws Exception -{ - System.out.println("==== hi notification event=========="); - // First retrieve the IDs of all the new emails - List newMailsIds = new ArrayList(); - - Iterator it = args.getEvents().iterator(); - while (it.hasNext()) { - ItemEvent itemEvent = (ItemEvent)it.next(); - if (itemEvent != null) - { - newMailsIds.add(itemEvent.getItemId()); - } - } - - if (newMailsIds.size() > 0) - { - // Now retrieve the Subject property of all the new emails in one call to EWS. - ServiceResponseCollection responses = service.bindToItems( - newMailsIds, - new PropertySet(ItemSchema.Subject)); - System.out.println("count=======" + responses.getCount()); - - //this.listBox1.Items.Add(string.Format("{0} new mail(s)", newMailsIds.Count)); - - for(GetItemResponse response : responses) - { - System.out.println("count=======" + responses.getClass().getName()); - System.out.println("subject=======" + response.getItem().getSubject()); - // Console.WriteLine("subject====" + response.Item.Subject); - } - } -} - -@Override -public void notificationEventDelegate(Object sender, NotificationEventArgs args) { - try { - this.connection_OnNotificationEvent(sender,args); - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } -} - -@Override -public void subscriptionErrorDelegate(Object sender,SubscriptionErrorEventArgs args) { - try { - connection_OnDisconnect(sender,args); - } catch (Exception e) { - e.printStackTrace(); - } -} -``` - -## Using Streaming Notifications Asynchronously - -### BeginSubscribeToStreamingNotifications - -The following code shows how to create a Streaming notification by using asynchronous functionality. - -``` -WellKnownFolderName sd = WellKnownFolderName.Inbox; - -FolderId folderId = new FolderId(sd); - -List folder = new ArrayList(); - -folder.add(folderId); - -IAsyncResult asyncResult = getService().beginSubscribeToStreamingNotifications(new AsyncCallbackImplementation(), null, folder, EventType.NewMail); - -StreamingSubscription subscription = getService().endSubscribeToStreamingNotifications(asyncResult); - -System.out.println(subscription.getId()); -``` - -## CreateInboxRules - -The following code shows how to create an Inbox rule. The object of the class CreateRuleOperation represents an operation to create a new rule. - -``` -// Create an Inbox rule. -// If "Interesting" is in the subject, move it into the Junk folder. -Rule newRule = new Rule(); -newRule.setDisplayName("FinalInboxRule333"); -newRule.setPriority(1); -newRule.setIsEnabled(true); -newRule.getConditions().getContainsSubjectStrings().add("FinalInboxRuleSubject333"); -newRule.getActions().setMoveToFolder(new FolderId(WellKnownFolderName.JunkEmail)); - -CreateRuleOperation createOperation = new CreateRuleOperation(newRule); -List ruleList = new ArrayList(); -ruleList.add(createOperation); -service.updateInboxRules(ruleList, true); - -RuleCollection ruleCollection = service.getInboxRules("someone@contoso.com"); -System.out.println("Collection count: " + ruleCollection.getCount()); - -List deleterules = new ArrayList(); - -// Write the DisplayName and ID of each rule. -for(Rule rule : ruleCollection) -{ - System.out.println(rule.getDisplayName()); - System.out.println(rule.getId()); - DeleteRuleOperation d = new DeleteRuleOperation(rule.getId()); - deleterules.add(d); -} - -service.updateInboxRules(deleterules, true); -ruleCollection = service.getInboxRules("someone@contoso.com"); -System.out.println("Collection count: " + ruleCollection.getCount()); - -// Write the DisplayName and ID of each rule. -for(Rule rule : ruleCollection) -{ - System.out.println(rule.getDisplayName()); - System.out.println(rule.getId()); -} -``` - -## GetInboxRules - -This method retrieves the Inbox rules of the specified user. The following code shows how to retrieve the Inbox rules. - -``` -RuleCollection ruleCollection = service.getInboxRules("someone@contoso.com"); -System.out.println("Collection count: " + ruleCollection.getCount()); - -// Write the DisplayName and Id of each Rule. -for (Rule rule : ruleCollection) -{ - System.out.println(rule.getDisplayName()); - System.out.println(rule.getId()); -} -``` - -## GetConversation - -You can use the findConversation method to find the conversations in specified folder. You can fetch the details of the conversation by using mehods such as getId, which gets the ID; getImportance, which gets the importance; getHasAttachments, which indicates whether at least one message in the conversation has an attachment; and getUnreadCount, which gets the number of unread messages. - -``` -// Enumerating conversations -Collection conversations = service.findConversation( - new ConversationIndexedItemView(10), - new FolderId(WellKnownFolderName.Inbox)); - -for (Conversation conversation : conversations) { - System.out.println("Conversation Id : "+conversation.getId()); - System.out.println("Conversation Importance : "+conversation.getImportance()); - System.out.println("Conversation Has Attachments : "+conversation.getHasAttachments()); - System.out.println("Conversation UnreadCount : "+conversation.getUnreadCount()); -} -``` - -## EnableCategoriesConversation - -By using findConversation method, you can find the conversations in specified folder. To categorize the conversation, use the enableAlwaysCategorizeItems method. - -``` -// Enumerating conversations -Collection conversations = service.findConversation( - new ConversationIndexedItemView(5), - new FolderId(WellKnownFolderName.Inbox)); - -List conv = new ArrayList(); -conv.add("Category1"); -conv.add("Category2"); -for(Conversation conversation : conversations) { - conversation.enableAlwaysCategorizeItems(conv,true); - System.out.println(conversation.getId() + " " + conversation.getImportance() + " " + conversation.getHasAttachments()); -} -``` - -## DeleteConversation - -By using the findConversation method, you can find the conversations in specified folder. You can delete them by using the deleteItems method. The following code shows how to delete the conversations. - -``` -// Enumerating conversations -Collection conversations = service.findConversation( - new ConversationIndexedItemView(10), - new FolderId(WellKnownFolderName.Inbox)); - -for (Conversation conversation : conversations) -{ - conversation.deleteItems(new FolderId(WellKnownFolderName.Inbox), DeleteMode.HardDelete); - System.out.println("Deleting Conversation Id: " + conversation.getId()); -} -``` - -## Empty Folder - -You can empty a folder by using the Empty method, which takes two parameters: -1. Delete Mode - Indicates the type of deletion. There are three types of deletions: HardDelete, which will delete folder/item permanently, SoftDelete, which will move the folder/item to the dumpster, and MoveToDeletedItems, which will move the folder/item to the mailbox. -2. Boolean value - Indicates weather subfolders should also be deleted. - -``` -WellKnownFolderName sd = WellKnownFolderName.Inbox; -FolderId folderId = new FolderId(sd); - -Folder folder = Folder.bind(service, folderId); -folder.empty(DeleteMode.HardDelete, true); -``` - -## Web Proxy - -The WebProxy class contains the proxy settings that WebRequest instances use to override the proxy settings in GlobalProxySelection. - -``` -WebProxy proxy = new WebProxy("proxyServerHostName", 80); -proxy.setCredentials("proxyServerUser", "proxyPassword"); -service.setWebProxy(proxy); -ExchangeCredentials credentials = new WebCredentials("msUser", "msPassword", "domain"); -service.setCredentials(credentials); - -EmailMessage msg = new EmailMessage(service); -msg.setSubject("Exchange WebProxy Test Mail from Java"); -msg.setBody(MessageBody.getMessageBodyFromText("Test Body Message")); -msg.getToRecipients().add("someone@contoso.com"); -msg.send(); -``` - -## Moving an Item to another folder - -To move an item to another folder, use the “move()" method in the Item class. The following code example moves an email message from “WellKnownFolderName.Drafts” to “WellKnownFolderName.Notes”. - -``` -Item item =new EmailMessage(service); -item.setSubject("testing move item to another folder"); -item.setBody(MessageBody.getMessageBodyFromText("Item moved")); -item.setSensitivity(Sensitivity.Confidential); -item.save(new FolderId(WellKnownFolderName.Drafts)); -Item item1 = Item.bind(service, item.getId()); -item1.move(new FolderId(WellKnownFolderName.Notes)); -``` - -## Accessing a calendar from public folder - -To access a calendar from public folder: - -1. Create an Exchange service object. -2. Create a calendar item in the public folder, as shown. -``` -CalendarFolder folder = new CalendarFolder(service); -folder.setDisplayName ( "Test"); -folder.save(WellKnownFolderName.PublicFoldersRoot); -``` -3. Get the folder ID of the public calendar and bind the FolderId to CalendarFolder, as shown. -``` -CalendarFolder calendar = CalendarFolder.bind(service, ); -``` -4. Create an Appointment in the public calendar and save the appointment, as shown. -``` -appointment.save(calendar.getId(), SendInvitationsMode.SendToNone); -``` -5. Check the appointment details created in step 4, by passing the folder ID identified in step 3. - -## UserConfiguration settings - -``` -ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010_SP1); -service.setTraceEnabled(true); -service.setUrl(); -ExchangeCredentials credentials = new WebCredentials(USERNAME,PASSWORD, DOMAIN); -service.setCredentials(credentials); -String name = "test configuration"; -UserConfiguration config1 = new UserConfiguration(service); -byte[] data_value = new byte[4]; -data_value[0] = 'd'; -data_value[1] = 'a'; -data_value[2] = 't'; -data_value[3] = 'a'; - -// Set binary data. -config1.setBinaryData(data_value); - -// Set XML data. -config1.setXmlData(data_value); -config1.save(name, WellKnownFolderName.Calendar); -UserConfiguration config = UserConfiguration.bind(service, name, WellKnownFolderName.Calendar, UserConfigurationProperties.All); - -// Read binary data from user configuration. -byte[] bData=config.getBinaryData(); -System.out.print("config.getBinaryData() value :"); -for (int i = 0; i < bData.length; i++) -{ - System.out.print((char)bData[i]); -} - -System.out.println(); - -// Read XML data from user configuration. -byte[] xData=config.getXmlData(); -System.out.print("config.getXmlData() value :"); -for (int i = 0;i < xData.length; i++) -{ - System.out.print((char)xData[i]); -} -``` - -## Getting Password expiry Date -The following example shows how get the password expiry date for the user’s email mentioned in the request. - -``` -Date d = service.getPasswordExpirationDate("emailid@contoso.com"); -System.out.println(“Password Expiration Date”+ d); -``` - -## BeginSyncFolderItems - -``` -WellKnownFolderName wkFolder = WellKnownFolderName.Inbox; -FolderId folderId = new FolderId(wkFolder); -IAsyncResult asyncResult = getService().beginSyncFolderHierarchy(null, null, folderId, PropertySet.FirstClassProperties, null); -ChangeCollection change = getService().endSyncFolderHierarchy(asyncResult); -assertNotNull(change); -System.out.println(change.getCount()); -``` +This fork's main intention is to get the repository into EBF's dependency management. From 68d2b77f762432d7f7df509e809de91455968fc8 Mon Sep 17 00:00:00 2001 From: dwissk Date: Wed, 28 Jan 2015 10:23:02 +0100 Subject: [PATCH 02/13] add maven parent to pom.xml --- pom.xml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 7966b7dac..af9ce5781 100644 --- a/pom.xml +++ b/pom.xml @@ -28,7 +28,12 @@ Microsoft http://www.microsoft.com/ - + + + de.ebf + maven.parent + 0.3.0 + From f069c66877f5489652a8d9d82de00f1bea05e10c Mon Sep 17 00:00:00 2001 From: dwissk Date: Wed, 28 Jan 2015 14:44:25 +0100 Subject: [PATCH 03/13] uncomment lines preventing PropertyDefinition from setting name field --- .../webservices/data/ServiceObjectSchema.java | 38 +++++++++---------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/src/main/java/microsoft/exchange/webservices/data/ServiceObjectSchema.java b/src/main/java/microsoft/exchange/webservices/data/ServiceObjectSchema.java index 93b3a4cad..85decd8d1 100644 --- a/src/main/java/microsoft/exchange/webservices/data/ServiceObjectSchema.java +++ b/src/main/java/microsoft/exchange/webservices/data/ServiceObjectSchema.java @@ -36,25 +36,25 @@ public abstract class ServiceObjectSchema implements public List> createInstance() { List> typeList = new ArrayList>(); // typeList.add() - /* - * typeList.add(AppointmentSchema.class); - * typeList.add(CalendarResponseObjectSchema.class); - * typeList.add(CancelMeetingMessageSchema.class); - * typeList.add(ContactGroupSchema.class); - * typeList.add(ContactSchema.class); - * typeList.add(EmailMessageSchema.class); - * typeList.add(FolderSchema.class); - * typeList.add(ItemSchema.class); - * typeList.add(MeetingMessageSchema.class); - * typeList.add(MeetingRequestSchema.class); - * typeList.add(PostItemSchema.class); - * typeList.add(PostReplySchema.class); - * typeList.add(ResponseMessageSchema.class); - * typeList.add(ResponseObjectSchema.class); - * typeList.add(ServiceObjectSchema.class); - * typeList.add(SearchFolderSchema.class); - * typeList.add(TaskSchema.class); - */ + + typeList.add(AppointmentSchema.class); + typeList.add(CalendarResponseObjectSchema.class); + typeList.add(CancelMeetingMessageSchema.class); + typeList.add(ContactGroupSchema.class); + typeList.add(ContactSchema.class); + typeList.add(EmailMessageSchema.class); + typeList.add(FolderSchema.class); + typeList.add(ItemSchema.class); + typeList.add(MeetingMessageSchema.class); + typeList.add(MeetingRequestSchema.class); + typeList.add(PostItemSchema.class); + typeList.add(PostReplySchema.class); + typeList.add(ResponseMessageSchema.class); + typeList.add(ResponseObjectSchema.class); + typeList.add(ServiceObjectSchema.class); + typeList.add(SearchFolderSchema.class); + typeList.add(TaskSchema.class); + // Verify that all Schema types in the Managed API assembly // have been included. /* From 948779ae2e1a508256efca57d6188a6fc65c9adc Mon Sep 17 00:00:00 2001 From: dwissk Date: Wed, 28 Jan 2015 14:44:52 +0100 Subject: [PATCH 04/13] comment assertion with incorrect expectation for trace statements --- .../exchange/webservices/data/ExchangeServiceBase.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/microsoft/exchange/webservices/data/ExchangeServiceBase.java b/src/main/java/microsoft/exchange/webservices/data/ExchangeServiceBase.java index 3d812dec3..48320d40c 100644 --- a/src/main/java/microsoft/exchange/webservices/data/ExchangeServiceBase.java +++ b/src/main/java/microsoft/exchange/webservices/data/ExchangeServiceBase.java @@ -784,9 +784,9 @@ protected void processHttpResponseHeaders(TraceFlags traceType, HttpWebRequest r * @param headers The response headers */ private void saveHttpResponseHeaders(Map headers) { - EwsUtilities.EwsAssert(this.httpResponseHeaders.size() == 0, - "ExchangeServiceBase.SaveHttpResponseHeaders", - "expect no headers in the dictionary yet."); +// EwsUtilities.EwsAssert(this.httpResponseHeaders.size() == 0, +// "ExchangeServiceBase.SaveHttpResponseHeaders", +// "expect no headers in the dictionary yet."); this.httpResponseHeaders.clear(); From 001b94bf6c86ab5e53556f2c10bb8665d27525c8 Mon Sep 17 00:00:00 2001 From: dwissk Date: Wed, 28 Jan 2015 14:50:08 +0100 Subject: [PATCH 05/13] add ebf repositories --- pom.xml | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/pom.xml b/pom.xml index 5319d4021..076eb5d0f 100644 --- a/pom.xml +++ b/pom.xml @@ -8,9 +8,6 @@ ews-java-api 1.3-SNAPSHOT - Exchange Web Services Java API - Exchange Web Services (EWS) Java API - http://www.microsoft.com/ @@ -33,6 +30,26 @@ maven.parent 0.3.0 + + + + ebf-releases + http://cindy.ebf.de:8081/nexus/content/repositories/releases/ + + always + false + + + + ebf-snapshots + http://cindy.ebf.de:8081/nexus/content/repositories/snapshots/ + + always + true + + + + From a67924a526a5bdf093648d442215c13eab50ddc1 Mon Sep 17 00:00:00 2001 From: dwissk Date: Tue, 2 Jun 2015 15:22:08 +0200 Subject: [PATCH 06/13] merge changes from upstream --- .gitignore | 7 +- .idea/codeStyleSettings.xml | 72 +- ...Maven__commons_codec_commons_codec_1_6.xml | 13 - .idea/libraries/Maven__junit_junit_4_11.xml | 13 - ...apache_httpcomponents_httpclient_4_3_5.xml | 13 - ...g_apache_httpcomponents_httpcore_4_3_3.xml | 13 - .travis.yml | 53 +- deploy_snapshot.sh | 48 + ews-java-api.iml | 19 +- license.txt | 36 +- pom.xml | 255 ++++- readme.md | 8 +- .../data/AbsoluteDayOfMonthTransition.java | 109 -- .../data/AbstractAsyncCallback.java | 43 - .../data/AbstractFolderIdWrapper.java | 51 - .../data/AbstractItemIdWrapper.java | 41 - .../data/AcceptMeetingInvitationMessage.java | 83 -- .../data/AccountIsLockedException.java | 58 -- .../data/AffectedTaskOccurrence.java | 29 - .../webservices/data/AggregateType.java | 29 - .../data/AlternateMailboxCollection.java | 66 -- .../data/AlternatePublicFolderId.java | 100 -- .../data/AppointmentOccurrenceId.java | 83 -- .../webservices/data/AppointmentType.java | 40 - .../webservices/data/ArgumentException.java | 65 -- .../data/ArgumentNullException.java | 61 -- .../data/ArgumentOutOfRangeException.java | 50 - .../webservices/data/AsyncCallback.java | 32 - .../data/AsyncCallbackImplementation.java | 23 - .../webservices/data/AsyncExecutor.java | 34 - .../exchange/webservices/data/Attachable.java | 24 - .../data/AttachmentsPropertyDefinition.java | 63 -- .../data/AutodiscoverEndpoints.java | 61 -- .../data/AutodiscoverErrorCode.java | 85 -- .../data/AutodiscoverLocalException.java | 50 - .../data/AutodiscoverRemoteException.java | 71 -- .../data/AutodiscoverResponseException.java | 48 - .../data/AutodiscoverResponseType.java | 38 - .../webservices/data/AvailabilityData.java | 36 - .../exchange/webservices/data/Base64.java | 162 --- .../webservices/data/Base64EncoderStream.java | 186 ---- .../webservices/data/BasePropertySet.java | 54 - .../exchange/webservices/data/BodyType.java | 25 - .../data/BoolPropertyDefinition.java | 76 -- .../webservices/data/ByteArrayArray.java | 65 -- .../data/ByteArrayOSRequestEntity.java | 57 - .../data/ByteArrayPropertyDefinition.java | 75 -- .../data/CalendarResponseObjectSchema.java | 47 - .../webservices/data/CallableMethod.java | 45 - .../exchange/webservices/data/Callback.java | 18 - .../data/CancelMeetingMessage.java | 75 -- .../data/CancelMeetingMessageSchema.java | 54 - .../exchange/webservices/data/Change.java | 102 -- .../exchange/webservices/data/ChangeType.java | 41 - .../webservices/data/ComparisonMode.java | 56 - .../data/ComplexFunctionDelegate.java | 16 - .../data/ConfigurationSettingsBase.java | 126 --- .../data/ConflictResolutionMode.java | 37 - .../webservices/data/ConflictType.java | 44 - .../webservices/data/ConnectingIdType.java | 35 - .../data/ConnectionFailureCause.java | 48 - .../webservices/data/ContactSource.java | 29 - .../data/ContainedPropertyDefinition.java | 91 -- .../webservices/data/ContainmentMode.java | 49 - .../data/ConversationActionType.java | 54 - .../data/ConversationFlagStatus.java | 33 - .../webservices/data/ConvertIdResponse.java | 87 -- .../webservices/data/CopyFolderRequest.java | 84 -- .../webservices/data/CopyItemRequest.java | 82 -- .../data/CreateAttachmentException.java | 69 -- .../data/CreateAttachmentResponse.java | 68 -- .../webservices/data/CreateItemRequest.java | 73 -- .../webservices/data/CreateItemResponse.java | 55 - .../data/CreateItemResponseBase.java | 86 -- .../data/CreateResponseObjectRequest.java | 54 - .../data/CreateResponseObjectResponse.java | 49 - .../webservices/data/CreateRuleOperation.java | 91 -- .../webservices/data/CredentialConstants.java | 37 - .../webservices/data/DateTimePrecision.java | 28 - .../data/DateTimePropertyDefinition.java | 127 --- .../webservices/data/DayOfTheWeekIndex.java | 52 - .../data/DeclineMeetingInvitationMessage.java | 42 - .../data/DefaultExtendedPropertySet.java | 72 -- .../data/DelegateFolderPermissionLevel.java | 47 - .../webservices/data/DelegateInformation.java | 66 -- .../data/DelegateManagementRequestBase.java | 114 -- .../data/DelegateUserResponse.java | 72 -- .../data/DeleteAttachmentException.java | 69 -- .../data/DeleteAttachmentResponse.java | 68 -- .../exchange/webservices/data/DeleteMode.java | 37 - .../webservices/data/DeleteRequest.java | 76 -- .../webservices/data/DeleteRuleOperation.java | 85 -- .../data/DeletedOccurrenceInfo.java | 67 -- .../data/DeletedOccurrenceInfoCollection.java | 53 - .../data/DictionaryEntryProperty.java | 127 --- .../data/DisconnectPhoneCallRequest.java | 124 --- .../webservices/data/DnsException.java | 31 - .../exchange/webservices/data/DnsRecord.java | 59 -- .../webservices/data/DnsRecordType.java | 78 -- .../webservices/data/DomainSettingError.java | 95 -- .../webservices/data/DomainSettingName.java | 32 - .../data/DoublePropertyDefinition.java | 34 - .../webservices/data/EWSConstants.java | 37 +- .../webservices/data/EWSHttpException.java | 62 -- .../webservices/data/EditorBrowsable.java | 30 - .../data/EditorBrowsableState.java | 39 - .../webservices/data/EffectiveRights.java | 82 -- .../webservices/data/EmailAddressKey.java | 36 - .../webservices/data/EmptyFolderRequest.java | 172 ---- .../exchange/webservices/data/EventType.java | 74 -- .../exchange/webservices/data/EwsEnum.java | 30 - .../data/EwsSSLProtocolSocketFactory.java | 111 -- .../webservices/data/EwsTraceListener.java | 37 - .../webservices/data/ExchangeCredentials.java | 147 --- .../webservices/data/ExchangeVersion.java | 40 - .../webservices/data/ExpandGroupResponse.java | 52 - .../data/FindConversationResponse.java | 81 -- .../webservices/data/FindFolderRequest.java | 84 -- .../webservices/data/FindFoldersResults.java | 127 --- .../webservices/data/FindItemsResults.java | 130 --- .../webservices/data/FlaggedForAction.java | 73 -- .../exchange/webservices/data/Flags.java | 24 - .../webservices/data/FolderChange.java | 57 - .../webservices/data/FolderIdWrapper.java | 55 - .../data/FolderPermissionLevel.java | 94 -- .../data/FolderPermissionReadAccess.java | 43 - .../webservices/data/FolderTraversal.java | 36 - .../webservices/data/FolderWrapper.java | 55 - .../webservices/data/FormatException.java | 62 -- .../data/GenericItemAttachment.java | 47 - .../data/GetAttachmentResponse.java | 71 -- .../webservices/data/GetDelegateResponse.java | 68 -- .../GetDomainSettingsResponseCollection.java | 55 - .../webservices/data/GetEventsResponse.java | 51 - .../webservices/data/GetFolderRequest.java | 48 - .../data/GetFolderRequestForLoad.java | 46 - .../data/GetInboxRulesRequest.java | 130 --- .../data/GetInboxRulesResponse.java | 59 -- .../webservices/data/GetItemRequest.java | 44 - .../data/GetItemRequestForLoad.java | 45 - .../GetPasswordExpirationDateRequest.java | 100 -- .../GetPasswordExpirationDateResponse.java | 46 - .../webservices/data/GetPhoneCallRequest.java | 123 --- .../data/GetPhoneCallResponse.java | 62 -- .../webservices/data/GetRoomListsRequest.java | 96 -- .../data/GetRoomListsResponse.java | 74 -- .../webservices/data/GetRoomsRequest.java | 123 --- .../data/GetServerTimeZonesResponse.java | 84 -- .../data/GetUserAvailabilityResults.java | 94 -- .../data/GetUserConfigurationResponse.java | 68 -- .../data/GetUserOofSettingsResponse.java | 48 - .../GetUserSettingsResponseCollection.java | 55 - .../webservices/data/HangingTraceStream.java | 137 --- .../webservices/data/HttpErrorException.java | 39 - .../exchange/webservices/data/IAction.java | 28 - .../webservices/data/IAsyncResult.java | 28 - .../data/IAutodiscoverRedirectionUrl.java | 28 - .../data/IComplexPropertyChanged.java | 24 - .../data/IComplexPropertyChangedDelegate.java | 24 - .../data/ICreateComplexPropertyDelegate.java | 27 - ...reateServiceObjectWithAttachmentParam.java | 29 - .../ICreateServiceObjectWithServiceParam.java | 27 - .../data/ICustomXmlSerialization.java | 27 - .../data/ICustomXmlUpdateSerializer.java | 53 - .../data/IDateTimePropertyDefinition.java | 18 - .../webservices/data/IDisposable.java | 22 - .../data/IFileAttachmentContentHandler.java | 30 - .../exchange/webservices/data/IFunc.java | 28 - .../webservices/data/IFuncDelegate.java | 27 - .../exchange/webservices/data/IFunction.java | 28 - .../webservices/data/IFunctionDelegate.java | 45 - .../data/IGetObjectInstanceDelegate.java | 30 - .../data/IGetPropertyDefinitionCallback.java | 25 - .../webservices/data/ILazyMember.java | 26 - .../webservices/data/IOwnedProperty.java | 32 - .../exchange/webservices/data/IPredicate.java | 34 - .../data/IPropertyBagChangedDelegate.java | 26 - .../data/ISearchStringProvider.java | 24 - .../webservices/data/ISelfValidate.java | 35 +- .../data/IServiceObjectChangedDelegate.java | 25 - .../webservices/data/ITraceListener.java | 26 - .../exchange/webservices/data/IdFormat.java | 53 - .../webservices/data/ImAddressEntry.java | 87 -- .../webservices/data/ImAddressKey.java | 35 - .../exchange/webservices/data/Importance.java | 35 - .../data/IntPropertyDefinition.java | 62 -- .../data/InternetMessageHeader.java | 126 --- .../data/InternetMessageHeaderCollection.java | 69 -- .../data/InvalidOperationException.java | 38 - .../exchange/webservices/data/ItemChange.java | 82 -- .../webservices/data/ItemCollection.java | 123 --- .../exchange/webservices/data/ItemGroup.java | 81 -- .../exchange/webservices/data/ItemId.java | 55 - .../webservices/data/ItemIdCollection.java | 45 - .../webservices/data/ItemIdWrapper.java | 45 - .../webservices/data/ItemTraversal.java | 36 - .../webservices/data/ItemWrapper.java | 57 - .../exchange/webservices/data/LazyMember.java | 68 -- .../data/LegacyFreeBusyStatus.java | 66 -- .../webservices/data/LogicalOperator.java | 30 - .../webservices/data/MailboxType.java | 65 -- .../webservices/data/MapiTypeConverter.java | 437 -------- .../data/MapiTypeConverterMap.java | 26 - .../webservices/data/MeetingAttendeeType.java | 48 - .../webservices/data/MeetingRequestType.java | 61 -- .../data/MeetingRequestsDeliveryScope.java | 42 - .../webservices/data/MeetingResponse.java | 85 -- .../webservices/data/MeetingResponseType.java | 54 - .../MeetingTimeZonePropertyDefinition.java | 79 -- .../webservices/data/MemberStatus.java | 36 - .../webservices/data/MessageDisposition.java | 38 - .../webservices/data/MobilePhone.java | 80 -- .../exchange/webservices/data/Month.java | 103 -- .../data/MoveCopyFolderRequest.java | 88 -- .../data/MoveCopyFolderResponse.java | 97 -- .../webservices/data/MoveCopyItemRequest.java | 91 -- .../webservices/data/MoveFolderRequest.java | 84 -- .../webservices/data/MoveItemRequest.java | 83 -- .../data/NoEndRecurrenceRange.java | 57 - .../data/NotSupportedException.java | 36 - .../data/NotificationEventArgs.java | 65 -- .../data/OccurrenceInfoCollection.java | 54 - .../webservices/data/OffsetBasePoint.java | 30 - .../webservices/data/OofExternalAudience.java | 36 - .../exchange/webservices/data/OofState.java | 35 - .../exchange/webservices/data/OutParam.java | 25 - .../webservices/data/OutlookProtocolType.java | 42 - .../exchange/webservices/data/Param.java | 43 - ...ermissionCollectionPropertyDefinition.java | 55 - .../webservices/data/PermissionScope.java | 36 - .../webservices/data/PhoneCallId.java | 90 -- .../webservices/data/PhoneCallState.java | 66 -- .../webservices/data/PhoneNumberEntry.java | 86 -- .../data/PhysicalAddressDictionary.java | 72 -- .../data/PhysicalAddressIndex.java | 41 - .../webservices/data/PhysicalAddressKey.java | 36 - .../webservices/data/PlayOnPhoneResponse.java | 62 -- .../webservices/data/PostReplySchema.java | 39 - .../data/PropertyDefinitionFlags.java | 67 -- .../webservices/data/PropertyException.java | 78 -- .../data/ProtocolConnectionCollection.java | 80 -- .../webservices/data/PushSubscription.java | 27 - .../webservices/data/RecurrenceRange.java | 165 --- .../data/RecurringAppointmentMasterId.java | 53 - .../exchange/webservices/data/RefParam.java | 28 - .../webservices/data/RemoveFromCalendar.java | 107 -- .../data/RequiredServerVersion.java | 30 - .../data/ResolveNameSearchLocation.java | 43 - .../data/ResolveNamesResponse.java | 71 -- .../data/ResponseMessageSchema.java | 41 - .../webservices/data/ResponseMessageType.java | 37 - .../data/ResponseObjectSchema.java | 67 -- .../webservices/data/RuleErrorCollection.java | 56 - .../webservices/data/RuleOperation.java | 32 - .../data/RuleOperationErrorCollection.java | 57 - .../webservices/data/SafeXmlFactory.java | 47 - .../webservices/data/SafeXmlSchema.java | 71 -- .../exchange/webservices/data/Schema.java | 24 - .../webservices/data/SearchFolderSchema.java | 70 -- .../data/SearchFolderTraversal.java | 30 - .../data/SendCancellationsMode.java | 38 - .../webservices/data/SendInvitationsMode.java | 37 - .../SendInvitationsOrCancellationsMode.java | 53 - .../webservices/data/Sensitivity.java | 42 - .../data/ServiceErrorHandling.java | 29 - .../data/ServiceLocalException.java | 50 - .../data/ServiceObjectDefinition.java | 38 - .../data/ServiceObjectPropertyDefinition.java | 83 -- .../webservices/data/ServiceObjectType.java | 35 - .../data/ServiceRemoteException.java | 48 - .../webservices/data/ServiceRequestBase.java | 722 ------------- .../data/ServiceRequestException.java | 48 - .../webservices/data/ServiceResult.java | 35 - .../data/ServiceValidationException.java | 51 - .../data/ServiceVersionException.java | 50 - .../ServiceXmlDeserializationException.java | 52 - .../ServiceXmlSerializationException.java | 52 - .../data/SimpleServiceRequestBase.java | 188 ---- .../webservices/data/SortDirection.java | 29 - .../webservices/data/StandardUser.java | 31 - .../data/StartTimeZonePropertyDefinition.java | 112 -- .../data/StreamingSubscription.java | 65 -- .../data/StringPropertyDefinition.java | 62 -- .../exchange/webservices/data/Strings.java | 279 ----- .../webservices/data/SubscribeResponse.java | 69 -- .../SubscribeToPullNotificationsRequest.java | 119 --- ...scribeToStreamingNotificationsRequest.java | 90 -- .../webservices/data/SuggestionQuality.java | 42 - .../webservices/data/SuggestionsResponse.java | 67 -- .../webservices/data/SuppressReadReceipt.java | 97 -- .../data/SyncFolderHierarchyResponse.java | 59 -- .../data/SyncFolderItemsResponse.java | 59 -- .../data/SyncFolderItemsScope.java | 29 - .../webservices/data/TaskDelegationState.java | 54 - ...TaskDelegationStatePropertyDefinition.java | 134 --- .../exchange/webservices/data/TaskMode.java | 67 -- .../exchange/webservices/data/TaskStatus.java | 48 - .../data/TimeSpanPropertyDefinition.java | 57 - .../data/TimeZoneConversionException.java | 51 - .../data/TimeZonePropertyDefinition.java | 88 -- .../webservices/data/TokenCredentials.java | 44 - .../webservices/data/UnifiedMessaging.java | 84 -- .../exchange/webservices/data/UniqueBody.java | 126 --- .../data/UpdateFolderResponse.java | 89 -- .../data/UpdateInboxRulesException.java | 78 -- .../data/UpdateInboxRulesResponse.java | 60 -- ...UserConfigurationDictionaryObjectType.java | 78 -- .../data/UserConfigurationProperties.java | 79 -- .../exchange/webservices/data/WaitHandle.java | 15 - .../data/WebAsyncCallStateAnchor.java | 67 -- .../data/WebClientUrlCollection.java | 67 -- .../webservices/data/WebProxyCredentials.java | 38 - .../data/WindowsLiveCredentials.java | 15 - .../webservices/data/WorkingPeriod.java | 98 -- .../webservices/data/XmlDtdException.java | 31 - .../webservices/data/XmlException.java | 47 - .../data/attribute/Attachable.java | 37 + .../data/attribute/EditorBrowsable.java | 45 + .../webservices/data/attribute/EwsEnum.java | 43 + .../webservices/data/attribute/Flags.java | 37 + .../data/attribute/RequiredServerVersion.java | 45 + .../webservices/data/attribute/Schema.java | 37 + .../attribute/ServiceObjectDefinition.java | 51 + .../{ => autodiscover}/AlternateMailbox.java | 42 +- .../AlternateMailboxCollection.java | 85 ++ .../AutodiscoverDnsClient.java | 60 +- .../AutodiscoverResponseCollection.java | 59 +- .../AutodiscoverService.java | 382 +++---- .../IAutodiscoverRedirectionUrl.java | 43 + .../webservices/data/autodiscover/IFunc.java | 41 + .../data/autodiscover/IFuncDelegate.java | 42 + .../data/autodiscover/IFunctionDelegate.java | 52 + .../ProtocolConnection.java | 42 +- .../ProtocolConnectionCollection.java | 96 ++ .../data/{ => autodiscover}/WebClientUrl.java | 42 +- .../autodiscover/WebClientUrlCollection.java | 84 ++ .../ConfigurationSettingsBase.java | 148 +++ .../outlook}/OutlookAccount.java | 48 +- .../OutlookConfigurationSettings.java | 92 +- .../outlook}/OutlookProtocol.java | 67 +- .../configuration/outlook}/OutlookUser.java | 47 +- .../enumeration/AutodiscoverEndpoints.java | 74 ++ .../enumeration/AutodiscoverErrorCode.java | 98 ++ .../enumeration/AutodiscoverResponseType.java | 51 + .../enumeration/DomainSettingName.java | 45 + .../enumeration/OutlookProtocolType.java | 55 + .../enumeration}/UserSettingName.java | 42 +- .../exception/AutodiscoverLocalException.java | 65 ++ .../AutodiscoverRemoteException.java | 87 ++ .../AutodiscoverResponseException.java | 63 ++ ...ximumRedirectionHopsExceededException.java | 66 ++ .../exception/error}/AutodiscoverError.java | 45 +- .../exception/error/DomainSettingError.java | 113 ++ .../exception/error}/UserSettingError.java | 51 +- .../ApplyConversationActionRequest.java | 75 +- .../request}/AutodiscoverRequest.java | 195 ++-- .../request}/GetDomainSettingsRequest.java | 89 +- .../request}/GetUserSettingsRequest.java | 130 ++- .../response}/AutodiscoverResponse.java | 51 +- .../response}/GetDomainSettingsResponse.java | 75 +- .../GetDomainSettingsResponseCollection.java | 71 ++ .../response}/GetUserSettingsResponse.java | 80 +- .../GetUserSettingsResponseCollection.java | 71 ++ ...rocessingTargetAuthenticationStrategy.java | 73 ++ .../core/EwsSSLProtocolSocketFactory.java | 170 +++ .../EwsServiceMultiResponseXmlReader.java | 66 +- .../data/{ => core}/EwsServiceXmlReader.java | 93 +- .../data/{ => core}/EwsServiceXmlWriter.java | 176 ++-- .../data/{ => core}/EwsUtilities.java | 852 +++++++-------- .../data/{ => core}/EwsX509TrustManager.java | 34 +- .../data/{ => core}/EwsXmlReader.java | 258 +++-- .../data/{ => core}/ExchangeServerInfo.java | 54 +- .../data/{ => core}/ExchangeService.java | 970 ++++++++++-------- .../data/{ => core}/ExchangeServiceBase.java | 440 ++++---- .../webservices/data/core/IAction.java | 41 + .../data/core/ICustomXmlSerialization.java | 40 + .../data/core/ICustomXmlUpdateSerializer.java | 56 + .../webservices/data/core/IDisposable.java | 35 + .../core/IFileAttachmentContentHandler.java | 43 + .../core/IGetPropertyDefinitionCallback.java | 41 + .../webservices/data/core/ILazyMember.java | 39 + .../webservices/data/core/IPredicate.java | 49 + .../webservices/data/core/LazyMember.java | 77 ++ .../data/{ => core}/PropertyBag.java | 231 +++-- .../data/{ => core}/PropertySet.java | 153 +-- .../data/{ => core}/SimplePropertyBag.java | 70 +- .../data/core/WebAsyncCallStateAnchor.java | 81 ++ .../webservices/data/{ => core}/WebProxy.java | 45 +- .../data/{ => core}/XmlAttributeNames.java | 39 +- .../data/{ => core}/XmlElementNames.java | 44 +- .../attribute/EditorBrowsableState.java | 52 + .../availability/AvailabilityData.java | 49 + .../availability}/FreeBusyViewType.java | 41 +- .../availability/MeetingAttendeeType.java | 61 ++ .../availability/SuggestionQuality.java | 55 + .../core/enumeration/dns/DnsRecordType.java | 91 ++ .../enumeration/misc/ConnectingIdType.java | 48 + .../misc/ConversationActionType.java | 67 ++ .../enumeration/misc/DateTimePrecision.java | 41 + .../enumeration/misc/ExchangeVersion.java | 53 + .../enumeration/misc/FlaggedForAction.java | 86 ++ .../misc/HangingRequestDisconnectReason.java | 50 + .../data/core/enumeration/misc/IdFormat.java | 66 ++ .../enumeration/misc}/TraceFlags.java | 33 +- .../misc/UserConfigurationProperties.java | 92 ++ .../enumeration/misc}/XmlNamespace.java | 43 +- .../enumeration/misc/error}/ServiceError.java | 53 +- .../misc/error}/WebExceptionStatus.java | 33 +- .../enumeration/notification/EventType.java | 91 ++ .../permission/PermissionScope.java | 46 + .../folder/DelegateFolderPermissionLevel.java | 60 ++ .../folder/FolderPermissionLevel.java | 107 ++ .../folder/FolderPermissionReadAccess.java | 56 + .../enumeration/property/BasePropertySet.java | 67 ++ .../core/enumeration/property/BodyType.java | 38 + .../enumeration/property/ConflictType.java | 57 + .../property/DefaultExtendedPropertySet.java | 85 ++ .../enumeration/property/EmailAddressKey.java | 49 + .../enumeration/property/ImAddressKey.java | 48 + .../core/enumeration/property/Importance.java | 48 + .../property/LegacyFreeBusyStatus.java | 79 ++ .../enumeration/property/MailboxType.java | 82 ++ .../property}/MapiPropertyType.java | 35 +- .../property/MeetingResponseType.java | 67 ++ .../enumeration/property/MemberStatus.java | 49 + .../property/OofExternalAudience.java | 49 + .../core/enumeration/property/OofState.java | 48 + .../enumeration/property}/PhoneNumberKey.java | 35 +- .../property/PhysicalAddressIndex.java | 54 + .../property/PhysicalAddressKey.java | 49 + .../property/PropertyDefinitionFlags.java | 80 ++ .../enumeration/property}/RuleProperty.java | 107 +- .../enumeration/property/Sensitivity.java | 55 + .../enumeration/property/StandardUser.java | 44 + .../property/TaskDelegationState.java | 67 ++ ...UserConfigurationDictionaryObjectType.java | 91 ++ .../property}/WellKnownFolderName.java | 46 +- .../property/error}/RuleErrorCode.java | 35 +- .../property/time}/DayOfTheWeek.java | 35 +- .../property/time/DayOfTheWeekIndex.java | 65 ++ .../core/enumeration/property/time/Month.java | 116 +++ .../enumeration/search/AggregateType.java | 42 + .../enumeration/search/ComparisonMode.java | 69 ++ .../enumeration/search/ContainmentMode.java | 62 ++ .../enumeration/search/FolderTraversal.java | 49 + .../enumeration/search/ItemTraversal.java | 52 + .../enumeration/search/LogicalOperator.java | 43 + .../enumeration/search/OffsetBasePoint.java | 43 + .../search/ResolveNameSearchLocation.java | 56 + .../search/SearchFolderTraversal.java | 43 + .../enumeration/search/SortDirection.java | 42 + .../service/ConflictResolutionMode.java | 50 + .../enumeration/service/ContactSource.java | 42 + .../service/ConversationFlagStatus.java | 46 + .../core/enumeration/service/DeleteMode.java | 50 + .../enumeration/service/EffectiveRights.java | 95 ++ .../enumeration/service}/FileAsMapping.java | 39 +- .../service/MeetingRequestType.java | 74 ++ .../service/MeetingRequestsDeliveryScope.java | 58 ++ .../service/MessageDisposition.java | 51 + .../enumeration/service/PhoneCallState.java | 79 ++ .../enumeration/service}/ResponseActions.java | 38 +- .../service/ResponseMessageType.java | 50 + .../service/SendCancellationsMode.java | 51 + .../service/SendInvitationsMode.java | 50 + .../SendInvitationsOrCancellationsMode.java | 66 ++ .../service/ServiceObjectType.java | 48 + .../enumeration/service/ServiceResult.java | 48 + .../service/SyncFolderItemsScope.java | 42 + .../core/enumeration/service/TaskMode.java | 80 ++ .../core/enumeration/service/TaskStatus.java | 61 ++ .../calendar/AffectedTaskOccurrence.java | 42 + .../service/calendar/AppointmentType.java | 53 + .../service/error/ConnectionFailureCause.java | 61 ++ .../service/error/ServiceErrorHandling.java | 42 + .../core/enumeration/sync/ChangeType.java | 54 + .../data/core/exception/dns/DnsException.java | 44 + .../core/exception/http/EWSHttpException.java | 75 ++ .../exception/http/HttpErrorException.java | 52 + .../exception/misc/ArgumentException.java | 142 +++ .../exception/misc/ArgumentNullException.java | 107 ++ .../misc/ArgumentOutOfRangeException.java | 63 ++ .../core/exception/misc/FormatException.java | 75 ++ .../misc/InvalidOperationException.java | 51 + .../exception/misc/NotSupportedException.java | 53 + ...nsupportedTimeZoneDefinitionException.java | 72 ++ .../service/local/PropertyException.java | 93 ++ .../service/local/ServiceLocalException.java | 63 ++ .../ServiceObjectPropertyException.java | 35 +- .../local/ServiceValidationException.java | 66 ++ .../local/ServiceVersionException.java | 63 ++ .../ServiceXmlDeserializationException.java | 66 ++ .../ServiceXmlSerializationException.java | 67 ++ .../local/TimeZoneConversionException.java | 66 ++ .../remote/AccountIsLockedException.java | 73 ++ .../remote/CreateAttachmentException.java | 77 ++ .../remote/DeleteAttachmentException.java | 77 ++ .../remote/ServiceRemoteException.java | 61 ++ .../remote/ServiceRequestException.java | 61 ++ .../remote}/ServiceResponseException.java | 43 +- .../remote/UpdateInboxRulesException.java | 98 ++ .../core/exception/xml/XmlDtdException.java | 44 + .../data/core/exception/xml/XmlException.java | 60 ++ .../request}/AddDelegateRequest.java | 67 +- .../request/ByteArrayOSRequestEntity.java | 70 ++ .../{ => core/request}/ConvertIdRequest.java | 66 +- .../data/core/request/CopyFolderRequest.java | 101 ++ .../data/core/request/CopyItemRequest.java | 99 ++ .../request}/CreateAttachmentRequest.java | 56 +- .../request}/CreateFolderRequest.java | 60 +- .../data/core/request/CreateItemRequest.java | 94 ++ .../request}/CreateItemRequestBase.java | 60 +- .../{ => core/request}/CreateRequest.java | 44 +- .../request/CreateResponseObjectRequest.java | 72 ++ .../CreateUserConfigurationRequest.java | 52 +- .../DelegateManagementRequestBase.java | 132 +++ .../request}/DeleteAttachmentRequest.java | 66 +- .../request}/DeleteFolderRequest.java | 59 +- .../{ => core/request}/DeleteItemRequest.java | 66 +- .../data/core/request/DeleteRequest.java | 101 ++ .../DeleteUserConfigurationRequest.java | 68 +- .../request/DisconnectPhoneCallRequest.java | 140 +++ .../data/core/request/EmptyFolderRequest.java | 189 ++++ .../ExecuteDiagnosticMethodRequest.java | 56 +- .../request}/ExpandGroupRequest.java | 52 +- .../request}/FindConversationRequest.java | 82 +- .../data/core/request/FindFolderRequest.java | 101 ++ .../{ => core/request}/FindItemRequest.java | 49 +- .../data/{ => core/request}/FindRequest.java | 70 +- .../request}/GetAttachmentRequest.java | 77 +- .../request}/GetDelegateRequest.java | 54 +- .../{ => core/request}/GetEventsRequest.java | 56 +- .../data/core/request/GetFolderRequest.java | 64 ++ .../request}/GetFolderRequestBase.java | 53 +- .../core/request/GetFolderRequestForLoad.java | 63 ++ .../core/request/GetInboxRulesRequest.java | 147 +++ .../data/core/request/GetItemRequest.java | 60 ++ .../request}/GetItemRequestBase.java | 54 +- .../core/request/GetItemRequestForLoad.java | 62 ++ .../GetPasswordExpirationDateRequest.java | 113 ++ .../core/request/GetPhoneCallRequest.java | 139 +++ .../data/{ => core/request}/GetRequest.java | 43 +- .../core/request/GetRoomListsRequest.java | 110 ++ .../data/core/request/GetRoomsRequest.java | 139 +++ .../request}/GetServerTimeZonesRequest.java | 55 +- .../request}/GetStreamingEventsRequest.java | 73 +- .../request}/GetUserAvailabilityRequest.java | 78 +- .../request}/GetUserConfigurationRequest.java | 76 +- .../request}/GetUserOofSettingsRequest.java | 75 +- .../HangingRequestDisconnectEventArgs.java | 86 ++ .../request}/HangingServiceRequestBase.java | 238 ++--- .../request}/HttpClientWebRequest.java | 145 +-- .../{ => core/request}/HttpWebRequest.java | 104 +- .../core/request/MoveCopyFolderRequest.java | 114 ++ .../core/request/MoveCopyItemRequest.java | 114 ++ .../{ => core/request}/MoveCopyRequest.java | 46 +- .../data/core/request/MoveFolderRequest.java | 101 ++ .../data/core/request/MoveItemRequest.java | 100 ++ .../request}/MultiResponseServiceRequest.java | 91 +- .../request}/PlayOnPhoneRequest.java | 68 +- .../request}/RemoveDelegateRequest.java | 54 +- .../request}/ResolveNamesRequest.java | 83 +- .../{ => core/request}/SendItemRequest.java | 77 +- .../data/core/request/ServiceRequestBase.java | 762 ++++++++++++++ .../request}/SetUserOofSettingsRequest.java | 65 +- .../request/SimpleServiceRequestBase.java | 109 ++ .../{ => core/request}/SubscribeRequest.java | 68 +- .../SubscribeToPullNotificationsRequest.java | 142 +++ .../SubscribeToPushNotificationsRequest.java | 55 +- ...scribeToStreamingNotificationsRequest.java | 111 ++ .../request}/SyncFolderHierarchyRequest.java | 56 +- .../request}/SyncFolderItemsRequest.java | 66 +- .../request}/UnsubscribeRequest.java | 63 +- .../request}/UpdateDelegateRequest.java | 68 +- .../request}/UpdateFolderRequest.java | 67 +- .../request}/UpdateInboxRulesRequest.java | 77 +- .../{ => core/request}/UpdateItemRequest.java | 83 +- .../UpdateUserConfigurationRequest.java | 58 +- .../data/core/request/WaitHandle.java | 28 + .../response}/AttendeeAvailability.java | 48 +- .../data/core/response/ConvertIdResponse.java | 109 ++ .../response/CreateAttachmentResponse.java | 87 ++ .../response}/CreateFolderResponse.java | 50 +- .../core/response/CreateItemResponse.java | 72 ++ .../core/response/CreateItemResponseBase.java | 107 ++ .../CreateResponseObjectResponse.java | 70 ++ .../response}/DelegateManagementResponse.java | 52 +- .../core/response/DelegateUserResponse.java | 90 ++ .../response/DeleteAttachmentResponse.java | 88 ++ .../ExecuteDiagnosticMethodResponse.java | 54 +- .../core/response/ExpandGroupResponse.java | 68 ++ .../response/FindConversationResponse.java | 99 ++ .../response}/FindFolderResponse.java | 56 +- .../{ => core/response}/FindItemResponse.java | 78 +- .../core/response/GetAttachmentResponse.java | 90 ++ .../core/response/GetDelegateResponse.java | 87 ++ .../data/core/response/GetEventsResponse.java | 67 ++ .../response}/GetFolderResponse.java | 49 +- .../core/response/GetInboxRulesResponse.java | 76 ++ .../{ => core/response}/GetItemResponse.java | 48 +- .../GetPasswordExpirationDateResponse.java | 63 ++ .../core/response/GetPhoneCallResponse.java | 81 ++ .../core/response/GetRoomListsResponse.java | 93 ++ .../{ => core/response}/GetRoomsResponse.java | 42 +- .../response/GetServerTimeZonesResponse.java | 93 ++ .../response}/GetStreamingEventsResponse.java | 51 +- .../GetUserConfigurationResponse.java | 73 ++ .../response/GetUserOofSettingsResponse.java | 63 ++ .../response/IGetObjectInstanceDelegate.java | 46 + .../core/response/MoveCopyFolderResponse.java | 121 +++ .../response}/MoveCopyItemResponse.java | 49 +- .../core/response/PlayOnPhoneResponse.java | 81 ++ .../core/response/ResolveNamesResponse.java | 90 ++ .../{ => core/response}/ServiceResponse.java | 86 +- .../response}/ServiceResponseCollection.java | 56 +- .../data/core/response/SubscribeResponse.java | 74 ++ .../core/response/SuggestionsResponse.java | 85 ++ .../response/SyncFolderHierarchyResponse.java | 76 ++ .../response/SyncFolderItemsResponse.java | 77 ++ .../{ => core/response}/SyncResponse.java | 67 +- .../core/response/UpdateFolderResponse.java | 109 ++ .../response/UpdateInboxRulesResponse.java | 78 ++ .../response}/UpdateItemResponse.java | 59 +- ...reateServiceObjectWithAttachmentParam.java | 44 + .../ICreateServiceObjectWithServiceParam.java | 42 + .../{ => core/service}/ServiceObject.java | 141 ++- .../{ => core/service}/ServiceObjectInfo.java | 66 +- .../service/folder}/CalendarFolder.java | 59 +- .../service/folder}/ContactsFolder.java | 52 +- .../{ => core/service/folder}/Folder.java | 215 ++-- .../service/folder}/SearchFolder.java | 66 +- .../service/folder}/TasksFolder.java | 54 +- .../{ => core/service/item}/Appointment.java | 264 ++--- .../data/{ => core/service/item}/Contact.java | 197 ++-- .../{ => core/service/item}/ContactGroup.java | 61 +- .../{ => core/service/item}/Conversation.java | 258 ++--- .../{ => core/service/item}/EmailMessage.java | 128 ++- .../item}/ICalendarActionProvider.java | 47 +- .../data/{ => core/service/item}/Item.java | 253 +++-- .../service/item}/MeetingCancellation.java | 65 +- .../service/item}/MeetingMessage.java | 90 +- .../service/item}/MeetingRequest.java | 225 ++-- .../core/service/item/MeetingResponse.java | 109 ++ .../{ => core/service/item}/PostItem.java | 98 +- .../data/{ => core/service/item}/Task.java | 136 ++- .../AcceptMeetingInvitationMessage.java | 98 ++ .../response}/CalendarResponseMessage.java | 53 +- .../CalendarResponseMessageBase.java | 57 +- .../response/CancelMeetingMessage.java | 95 ++ .../DeclineMeetingInvitationMessage.java | 60 ++ .../service/response}/PostReply.java | 79 +- .../service/response/RemoveFromCalendar.java | 132 +++ .../service/response}/ResponseMessage.java | 65 +- .../service/response}/ResponseObject.java | 67 +- .../service/response/SuppressReadReceipt.java | 122 +++ .../service/schema}/AppointmentSchema.java | 75 +- .../schema/CalendarResponseObjectSchema.java | 60 ++ .../schema/CancelMeetingMessageSchema.java | 75 ++ .../service/schema}/ContactGroupSchema.java | 56 +- .../service/schema}/ContactSchema.java | 78 +- .../service/schema}/ConversationSchema.java | 62 +- .../service/schema}/EmailMessageSchema.java | 56 +- .../service/schema}/FolderSchema.java | 59 +- .../{ => core/service/schema}/ItemSchema.java | 85 +- .../service/schema}/MeetingMessageSchema.java | 49 +- .../service/schema}/MeetingRequestSchema.java | 54 +- .../service/schema}/PostItemSchema.java | 48 +- .../core/service/schema/PostReplySchema.java | 52 + .../service/schema/ResponseMessageSchema.java | 54 + .../service/schema/ResponseObjectSchema.java | 89 ++ .../service/schema/SearchFolderSchema.java | 91 ++ .../service/schema}/ServiceObjectSchema.java | 132 ++- .../{ => core/service/schema}/TaskSchema.java | 58 +- .../data/credential/CredentialConstants.java | 50 + .../data/credential/ExchangeCredentials.java | 161 +++ .../data/credential/TokenCredentials.java | 60 ++ .../WSSecurityBasedCredentials.java | 94 +- .../data/{ => credential}/WebCredentials.java | 54 +- .../data/credential/WebProxyCredentials.java | 51 + .../credential/WindowsLiveCredentials.java | 28 + .../webservices/data/{ => dns}/DnsClient.java | 45 +- .../webservices/data/dns/DnsRecord.java | 74 ++ .../data/{ => dns}/DnsSrvRecord.java | 47 +- .../data/{ => messaging}/PhoneCall.java | 54 +- .../data/messaging/PhoneCallId.java | 110 ++ .../data/messaging/UnifiedMessaging.java | 106 ++ .../data/misc/AbstractAsyncCallback.java | 62 ++ .../data/misc/AbstractFolderIdWrapper.java | 69 ++ .../data/misc/AbstractItemIdWrapper.java | 57 + .../webservices/data/misc/AsyncCallback.java | 45 + .../misc/AsyncCallbackImplementation.java | 41 + .../webservices/data/misc/AsyncExecutor.java | 53 + .../data/{ => misc}/AsyncRequestResult.java | 59 +- .../{ => misc}/CalendarActionResults.java | 47 +- .../webservices/data/misc/CallableMethod.java | 68 ++ .../webservices/data/misc/Callback.java | 31 + .../data/{ => misc}/ConversationAction.java | 113 +- .../data/misc/DelegateInformation.java | 81 ++ .../data/misc/EwsTraceListener.java | 52 + .../data/{ => misc}/ExpandGroupResults.java | 45 +- .../data/misc/FolderIdWrapper.java | 73 ++ .../data/{ => misc}/FolderIdWrapperList.java | 62 +- .../webservices/data/misc/FolderWrapper.java | 71 ++ .../data/misc/HangingTraceStream.java | 154 +++ .../webservices/data/misc/IAsyncResult.java | 43 + .../webservices/data/misc/IFunction.java | 41 + .../webservices/data/misc/IFunctions.java | 106 ++ .../webservices/data/misc/ITraceListener.java | 39 + .../data/{ => misc}/ImpersonatedUserId.java | 45 +- .../webservices/data/misc/ItemIdWrapper.java | 61 ++ .../data/{ => misc}/ItemIdWrapperList.java | 58 +- .../webservices/data/misc/ItemWrapper.java | 73 ++ .../data/misc/MapiTypeConverter.java | 326 ++++++ .../data/misc/MapiTypeConverterMap.java | 41 + .../{ => misc}/MapiTypeConverterMapEntry.java | 120 ++- .../webservices/data/misc/MobilePhone.java | 96 ++ .../data/{ => misc}/NameResolution.java | 44 +- .../{ => misc}/NameResolutionCollection.java | 55 +- .../webservices/data/misc/OutParam.java | 38 + .../exchange/webservices/data/misc/Param.java | 56 + .../webservices/data/misc/RefParam.java | 41 + .../data/{ => misc}/SoapFaultDetails.java | 82 +- .../webservices/data/{ => misc}/Time.java | 52 +- .../webservices/data/{ => misc}/TimeSpan.java | 43 +- .../data/{ => misc}/UserConfiguration.java | 214 ++-- .../{ => misc/availability}/AttendeeInfo.java | 44 +- .../availability}/AvailabilityOptions.java | 71 +- .../GetUserAvailabilityResults.java | 112 ++ .../LegacyAvailabilityTimeZone.java | 54 +- .../LegacyAvailabilityTimeZoneTime.java | 53 +- .../{ => misc/availability}/OofReply.java | 56 +- .../{ => misc/availability}/TimeWindow.java | 74 +- .../data/{ => misc/id}/AlternateId.java | 48 +- .../data/{ => misc/id}/AlternateIdBase.java | 55 +- .../data/misc/id/AlternatePublicFolderId.java | 119 +++ .../id}/AlternatePublicFolderItemId.java | 49 +- .../data/{ => notification}/FolderEvent.java | 41 +- .../{ => notification}/GetEventsResults.java | 50 +- .../GetStreamingEventsResults.java | 48 +- .../data/{ => notification}/ItemEvent.java | 41 +- .../{ => notification}/NotificationEvent.java | 55 +- .../notification/NotificationEventArgs.java | 78 ++ .../{ => notification}/PullSubscription.java | 45 +- .../data/notification/PushSubscription.java | 42 + .../notification/StreamingSubscription.java | 82 ++ .../StreamingSubscriptionConnection.java | 109 +- .../{ => notification}/SubscriptionBase.java | 45 +- .../SubscriptionErrorEventArgs.java | 33 +- .../complex/AppointmentOccurrenceId.java | 100 ++ .../{ => property/complex}/Attachment.java | 76 +- .../complex}/AttachmentCollection.java | 83 +- .../data/{ => property/complex}/Attendee.java | 45 +- .../complex}/AttendeeCollection.java | 48 +- .../data/property/complex/ByteArrayArray.java | 80 ++ .../{ => property/complex}/CompleteName.java | 44 +- .../complex/ComplexFunctionDelegate.java | 31 + .../complex}/ComplexProperty.java | 102 +- .../complex}/ComplexPropertyCollection.java | 148 +-- .../complex}/ConversationId.java | 40 +- .../property/complex/CreateRuleOperation.java | 107 ++ .../complex}/DelegatePermissions.java | 61 +- .../{ => property/complex}/DelegateUser.java | 65 +- .../property/complex/DeleteRuleOperation.java | 104 ++ .../complex/DeletedOccurrenceInfo.java | 90 ++ .../DeletedOccurrenceInfoCollection.java | 69 ++ .../complex/DictionaryEntryProperty.java | 147 +++ .../complex}/DictionaryProperty.java | 68 +- .../{ => property/complex}/EmailAddress.java | 55 +- .../complex}/EmailAddressCollection.java | 50 +- .../complex}/EmailAddressDictionary.java | 41 +- .../complex}/EmailAddressEntry.java | 62 +- .../complex}/ExtendedProperty.java | 66 +- .../complex}/ExtendedPropertyCollection.java | 95 +- .../complex}/FileAttachment.java | 74 +- .../data/{ => property/complex}/FolderId.java | 54 +- .../complex}/FolderIdCollection.java | 47 +- .../complex}/FolderPermission.java | 122 ++- .../complex}/FolderPermissionCollection.java | 64 +- .../complex/GenericItemAttachment.java | 61 ++ .../{ => property/complex}/GroupMember.java | 63 +- .../complex}/GroupMemberCollection.java | 82 +- .../complex/IComplexPropertyChanged.java | 37 + .../IComplexPropertyChangedDelegate.java | 38 + .../ICreateComplexPropertyDelegate.java | 40 + .../data/property/complex/IOwnedProperty.java | 47 + .../complex/IPropertyBagChangedDelegate.java | 41 + .../complex/ISearchStringProvider.java | 37 + .../IServiceObjectChangedDelegate.java | 40 + .../complex}/ImAddressDictionary.java | 41 +- .../data/property/complex/ImAddressEntry.java | 108 ++ .../complex/InternetMessageHeader.java | 145 +++ .../InternetMessageHeaderCollection.java | 85 ++ .../complex}/ItemAttachment.java | 109 +- .../data/property/complex/ItemCollection.java | 147 +++ .../data/property/complex/ItemId.java | 70 ++ .../property/complex/ItemIdCollection.java | 58 ++ .../data/{ => property/complex}/Mailbox.java | 54 +- .../complex}/ManagedFolderInformation.java | 47 +- .../complex}/MeetingTimeZone.java | 72 +- .../{ => property/complex}/MessageBody.java | 76 +- .../{ => property/complex}/MimeContent.java | 66 +- .../complex}/OccurrenceInfo.java | 42 +- .../complex/OccurrenceInfoCollection.java | 70 ++ .../complex}/PhoneNumberDictionary.java | 41 +- .../property/complex/PhoneNumberEntry.java | 106 ++ .../complex/PhysicalAddressDictionary.java | 90 ++ .../complex}/PhysicalAddressEntry.java | 80 +- .../complex/RecurringAppointmentMasterId.java | 71 ++ .../data/{ => property/complex}/Rule.java | 51 +- .../{ => property/complex}/RuleActions.java | 52 +- .../complex}/RuleCollection.java | 49 +- .../{ => property/complex}/RuleError.java | 40 +- .../property/complex/RuleErrorCollection.java | 70 ++ .../data/property/complex/RuleOperation.java | 45 + .../complex}/RuleOperationError.java | 46 +- .../complex/RuleOperationErrorCollection.java | 71 ++ .../complex}/RulePredicateDateRange.java | 48 +- .../complex}/RulePredicateSizeRange.java | 49 +- .../complex}/RulePredicates.java | 60 +- .../complex}/SearchFolderParameters.java | 67 +- .../{ => property/complex}/ServiceId.java | 65 +- .../complex}/SetRuleOperation.java | 45 +- .../{ => property/complex}/StringList.java | 63 +- .../{ => property/complex}/TimeChange.java | 68 +- .../complex}/TimeChangeRecurrence.java | 52 +- .../data/property/complex/UniqueBody.java | 148 +++ .../complex}/UserConfigurationDictionary.java | 198 ++-- .../data/{ => property/complex}/UserId.java | 50 +- .../complex/availability}/CalendarEvent.java | 42 +- .../availability}/CalendarEventDetails.java | 41 +- .../complex/availability}/Conflict.java | 43 +- .../complex/availability}/OofSettings.java | 67 +- .../complex/availability}/Suggestion.java | 57 +- .../complex/availability}/TimeSuggestion.java | 62 +- .../complex/availability}/WorkingHours.java | 47 +- .../complex/availability/WorkingPeriod.java | 116 +++ .../recurrence}/DayOfTheWeekCollection.java | 70 +- .../recurrence/pattern}/Recurrence.java | 228 ++-- .../range}/EndDateRecurrenceRange.java | 57 +- .../range/NoEndRecurrenceRange.java | 73 ++ .../range}/NumberedRecurrenceRange.java | 57 +- .../recurrence/range/RecurrenceRange.java | 174 ++++ .../complex/time}/AbsoluteDateTransition.java | 54 +- .../time/AbsoluteDayOfMonthTransition.java | 128 +++ .../time}/AbsoluteMonthTransition.java | 56 +- .../complex/time/OlsonTimeZoneDefinition.java | 56 + .../time}/RelativeDayOfMonthTransition.java | 48 +- .../complex/time}/TimeZoneDefinition.java | 98 +- .../complex/time}/TimeZonePeriod.java | 65 +- .../complex/time}/TimeZoneTransition.java | 75 +- .../time}/TimeZoneTransitionGroup.java | 104 +- .../AttachmentsPropertyDefinition.java | 80 ++ .../definition/BoolPropertyDefinition.java | 93 ++ .../ByteArrayPropertyDefinition.java | 90 ++ .../ComplexPropertyDefinition.java | 77 +- .../ComplexPropertyDefinitionBase.java | 63 +- .../ContainedPropertyDefinition.java | 106 ++ .../DateTimePropertyDefinition.java | 144 +++ .../definition/DoublePropertyDefinition.java | 50 + .../EffectiveRightsPropertyDefinition.java | 58 +- .../ExtendedPropertyDefinition.java | 58 +- .../GenericPropertyDefinition.java | 50 +- .../GroupMemberPropertyDefinition.java | 49 +- .../IDateTimePropertyDefinition.java | 31 + .../IndexedPropertyDefinition.java | 47 +- .../definition/IntPropertyDefinition.java | 76 ++ .../MeetingTimeZonePropertyDefinition.java | 97 ++ .../PermissionSetPropertyDefinition.java | 77 ++ .../definition}/PropertyDefinition.java | 105 +- .../definition}/PropertyDefinitionBase.java | 60 +- .../RecurrencePropertyDefinition.java | 68 +- .../ResponseObjectsPropertyDefinition.java | 56 +- .../ServiceObjectPropertyDefinition.java | 103 ++ .../StartTimeZonePropertyDefinition.java | 134 +++ .../definition/StringPropertyDefinition.java | 77 ++ ...TaskDelegationStatePropertyDefinition.java | 147 +++ .../TimeSpanPropertyDefinition.java | 73 ++ .../TimeZonePropertyDefinition.java | 100 ++ .../definition}/TypedPropertyDefinition.java | 75 +- .../data/{ => search}/CalendarView.java | 75 +- .../ConversationIndexedItemView.java | 60 +- .../data/search/FindFoldersResults.java | 142 +++ .../data/search/FindItemsResults.java | 145 +++ .../data/{ => search}/FolderView.java | 52 +- .../{ => search}/GroupedFindItemsResults.java | 59 +- .../data/{ => search}/Grouping.java | 58 +- .../webservices/data/search/ItemGroup.java | 96 ++ .../data/{ => search}/ItemView.java | 71 +- .../data/{ => search}/OrderByCollection.java | 59 +- .../data/{ => search}/PagedView.java | 79 +- .../data/{ => search}/ViewBase.java | 89 +- .../{ => search/filter}/SearchFilter.java | 168 +-- .../data/{ => security}/SafeXmlDocument.java | 56 +- .../data/security/SafeXmlFactory.java | 61 ++ .../data/security/SafeXmlSchema.java | 77 ++ .../data/{ => security}/XmlNameTable.java | 36 +- .../data/{ => security}/XmlNodeType.java | 39 +- .../webservices/data/sync/Change.java | 122 +++ .../data/{ => sync}/ChangeCollection.java | 51 +- .../webservices/data/sync/FolderChange.java | 74 ++ .../webservices/data/sync/ItemChange.java | 99 ++ .../webservices/data/util/DateTimeParser.java | 88 -- .../webservices/data/util/DateTimeUtils.java | 117 +++ .../webservices/data/util/TimeZoneUtils.java | 614 +++++++++++ src/site/resources/License.docx | Bin 22145 -> 0 bytes src/site/site.xml | 26 +- .../exchange/webservices/base/BaseTest.java | 66 ++ .../exchange/webservices/data/BaseTest.java | 49 - .../webservices/data/EmailAddressTest.java | 30 - .../webservices/data/EwsUtilitiesTest.java | 34 - .../webservices/data/TimeSpanTest.java | 50 - .../request}/GetUserSettingsRequestTest.java | 63 +- .../data/core/EwsUtilitiesTest.java | 205 ++++ .../data/core/EwsXmlReaderTest.java | 102 ++ .../webservices/data/core/LazyMemberTest.java | 95 ++ .../data/core/PropertyBagTest.java | 66 ++ .../{ => core/service/items}/TaskTest.java | 41 +- .../WSSecurityBasedCredentialsTest.java | 103 ++ ...portedTimeZoneDefinitionExceptionTest.java | 65 ++ ...mRedirectionHopsExceededExceptionTest.java | 65 ++ .../webservices/data/misc/IFunctionsTest.java | 104 ++ .../webservices/data/misc/TimeSpanTest.java | 64 ++ .../ComplexPropertyCollectionTest.java | 72 ++ .../property/complex/EmailAddressTest.java | 43 + .../ExtendedPropertyCollectionTest.java | 77 ++ .../property/complex/OlsonTimeZoneTest.java | 50 + .../data/property/complex/UniqueBodyTest.java | 93 ++ .../UserConfigurationDictionaryTest.java | 39 +- .../ByteArrayPropertyDefinitionTest.java | 69 ++ .../data/sync/ChangeCollectionTest.java | 112 ++ ...ParserTest.java => DateTimeUtilsTest.java} | 101 +- src/test/resources/logback-test.xml | 42 + 932 files changed, 40688 insertions(+), 28297 deletions(-) delete mode 100644 .idea/libraries/Maven__commons_codec_commons_codec_1_6.xml delete mode 100644 .idea/libraries/Maven__junit_junit_4_11.xml delete mode 100644 .idea/libraries/Maven__org_apache_httpcomponents_httpclient_4_3_5.xml delete mode 100644 .idea/libraries/Maven__org_apache_httpcomponents_httpcore_4_3_3.xml create mode 100644 deploy_snapshot.sh delete mode 100644 src/main/java/microsoft/exchange/webservices/data/AbsoluteDayOfMonthTransition.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/AbstractAsyncCallback.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/AbstractFolderIdWrapper.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/AbstractItemIdWrapper.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/AcceptMeetingInvitationMessage.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/AccountIsLockedException.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/AffectedTaskOccurrence.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/AggregateType.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/AlternateMailboxCollection.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/AlternatePublicFolderId.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/AppointmentOccurrenceId.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/AppointmentType.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/ArgumentException.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/ArgumentNullException.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/ArgumentOutOfRangeException.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/AsyncCallback.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/AsyncCallbackImplementation.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/AsyncExecutor.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/Attachable.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/AttachmentsPropertyDefinition.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/AutodiscoverEndpoints.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/AutodiscoverErrorCode.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/AutodiscoverLocalException.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/AutodiscoverRemoteException.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/AutodiscoverResponseException.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/AutodiscoverResponseType.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/AvailabilityData.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/Base64.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/Base64EncoderStream.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/BasePropertySet.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/BodyType.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/BoolPropertyDefinition.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/ByteArrayArray.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/ByteArrayOSRequestEntity.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/ByteArrayPropertyDefinition.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/CalendarResponseObjectSchema.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/CallableMethod.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/Callback.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/CancelMeetingMessage.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/CancelMeetingMessageSchema.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/Change.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/ChangeType.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/ComparisonMode.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/ComplexFunctionDelegate.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/ConfigurationSettingsBase.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/ConflictResolutionMode.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/ConflictType.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/ConnectingIdType.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/ConnectionFailureCause.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/ContactSource.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/ContainedPropertyDefinition.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/ContainmentMode.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/ConversationActionType.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/ConversationFlagStatus.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/ConvertIdResponse.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/CopyFolderRequest.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/CopyItemRequest.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/CreateAttachmentException.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/CreateAttachmentResponse.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/CreateItemRequest.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/CreateItemResponse.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/CreateItemResponseBase.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/CreateResponseObjectRequest.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/CreateResponseObjectResponse.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/CreateRuleOperation.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/CredentialConstants.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/DateTimePrecision.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/DateTimePropertyDefinition.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/DayOfTheWeekIndex.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/DeclineMeetingInvitationMessage.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/DefaultExtendedPropertySet.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/DelegateFolderPermissionLevel.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/DelegateInformation.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/DelegateManagementRequestBase.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/DelegateUserResponse.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/DeleteAttachmentException.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/DeleteAttachmentResponse.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/DeleteMode.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/DeleteRequest.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/DeleteRuleOperation.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/DeletedOccurrenceInfo.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/DeletedOccurrenceInfoCollection.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/DictionaryEntryProperty.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/DisconnectPhoneCallRequest.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/DnsException.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/DnsRecord.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/DnsRecordType.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/DomainSettingError.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/DomainSettingName.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/DoublePropertyDefinition.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/EWSHttpException.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/EditorBrowsable.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/EditorBrowsableState.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/EffectiveRights.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/EmailAddressKey.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/EmptyFolderRequest.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/EventType.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/EwsEnum.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/EwsSSLProtocolSocketFactory.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/EwsTraceListener.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/ExchangeCredentials.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/ExchangeVersion.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/ExpandGroupResponse.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/FindConversationResponse.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/FindFolderRequest.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/FindFoldersResults.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/FindItemsResults.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/FlaggedForAction.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/Flags.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/FolderChange.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/FolderIdWrapper.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/FolderPermissionLevel.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/FolderPermissionReadAccess.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/FolderTraversal.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/FolderWrapper.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/FormatException.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/GenericItemAttachment.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/GetAttachmentResponse.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/GetDelegateResponse.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/GetDomainSettingsResponseCollection.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/GetEventsResponse.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/GetFolderRequest.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/GetFolderRequestForLoad.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/GetInboxRulesRequest.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/GetInboxRulesResponse.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/GetItemRequest.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/GetItemRequestForLoad.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/GetPasswordExpirationDateRequest.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/GetPasswordExpirationDateResponse.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/GetPhoneCallRequest.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/GetPhoneCallResponse.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/GetRoomListsRequest.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/GetRoomListsResponse.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/GetRoomsRequest.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/GetServerTimeZonesResponse.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/GetUserAvailabilityResults.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/GetUserConfigurationResponse.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/GetUserOofSettingsResponse.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/GetUserSettingsResponseCollection.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/HangingTraceStream.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/HttpErrorException.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/IAction.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/IAsyncResult.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/IAutodiscoverRedirectionUrl.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/IComplexPropertyChanged.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/IComplexPropertyChangedDelegate.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/ICreateComplexPropertyDelegate.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/ICreateServiceObjectWithAttachmentParam.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/ICreateServiceObjectWithServiceParam.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/ICustomXmlSerialization.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/ICustomXmlUpdateSerializer.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/IDateTimePropertyDefinition.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/IDisposable.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/IFileAttachmentContentHandler.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/IFunc.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/IFuncDelegate.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/IFunction.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/IFunctionDelegate.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/IGetObjectInstanceDelegate.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/IGetPropertyDefinitionCallback.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/ILazyMember.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/IOwnedProperty.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/IPredicate.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/IPropertyBagChangedDelegate.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/ISearchStringProvider.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/IServiceObjectChangedDelegate.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/ITraceListener.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/IdFormat.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/ImAddressEntry.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/ImAddressKey.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/Importance.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/IntPropertyDefinition.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/InternetMessageHeader.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/InternetMessageHeaderCollection.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/InvalidOperationException.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/ItemChange.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/ItemCollection.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/ItemGroup.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/ItemId.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/ItemIdCollection.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/ItemIdWrapper.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/ItemTraversal.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/ItemWrapper.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/LazyMember.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/LegacyFreeBusyStatus.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/LogicalOperator.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/MailboxType.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/MapiTypeConverter.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/MapiTypeConverterMap.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/MeetingAttendeeType.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/MeetingRequestType.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/MeetingRequestsDeliveryScope.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/MeetingResponse.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/MeetingResponseType.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/MeetingTimeZonePropertyDefinition.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/MemberStatus.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/MessageDisposition.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/MobilePhone.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/Month.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/MoveCopyFolderRequest.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/MoveCopyFolderResponse.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/MoveCopyItemRequest.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/MoveFolderRequest.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/MoveItemRequest.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/NoEndRecurrenceRange.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/NotSupportedException.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/NotificationEventArgs.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/OccurrenceInfoCollection.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/OffsetBasePoint.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/OofExternalAudience.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/OofState.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/OutParam.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/OutlookProtocolType.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/Param.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/PermissionCollectionPropertyDefinition.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/PermissionScope.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/PhoneCallId.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/PhoneCallState.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/PhoneNumberEntry.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/PhysicalAddressDictionary.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/PhysicalAddressIndex.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/PhysicalAddressKey.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/PlayOnPhoneResponse.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/PostReplySchema.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/PropertyDefinitionFlags.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/PropertyException.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/ProtocolConnectionCollection.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/PushSubscription.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/RecurrenceRange.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/RecurringAppointmentMasterId.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/RefParam.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/RemoveFromCalendar.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/RequiredServerVersion.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/ResolveNameSearchLocation.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/ResolveNamesResponse.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/ResponseMessageSchema.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/ResponseMessageType.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/ResponseObjectSchema.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/RuleErrorCollection.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/RuleOperation.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/RuleOperationErrorCollection.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/SafeXmlFactory.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/SafeXmlSchema.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/Schema.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/SearchFolderSchema.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/SearchFolderTraversal.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/SendCancellationsMode.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/SendInvitationsMode.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/SendInvitationsOrCancellationsMode.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/Sensitivity.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/ServiceErrorHandling.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/ServiceLocalException.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/ServiceObjectDefinition.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/ServiceObjectPropertyDefinition.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/ServiceObjectType.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/ServiceRemoteException.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/ServiceRequestBase.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/ServiceRequestException.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/ServiceResult.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/ServiceValidationException.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/ServiceVersionException.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/ServiceXmlDeserializationException.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/ServiceXmlSerializationException.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/SimpleServiceRequestBase.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/SortDirection.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/StandardUser.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/StartTimeZonePropertyDefinition.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/StreamingSubscription.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/StringPropertyDefinition.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/Strings.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/SubscribeResponse.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/SubscribeToPullNotificationsRequest.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/SubscribeToStreamingNotificationsRequest.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/SuggestionQuality.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/SuggestionsResponse.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/SuppressReadReceipt.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/SyncFolderHierarchyResponse.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/SyncFolderItemsResponse.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/SyncFolderItemsScope.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/TaskDelegationState.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/TaskDelegationStatePropertyDefinition.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/TaskMode.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/TaskStatus.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/TimeSpanPropertyDefinition.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/TimeZoneConversionException.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/TimeZonePropertyDefinition.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/TokenCredentials.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/UnifiedMessaging.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/UniqueBody.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/UpdateFolderResponse.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/UpdateInboxRulesException.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/UpdateInboxRulesResponse.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/UserConfigurationDictionaryObjectType.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/UserConfigurationProperties.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/WaitHandle.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/WebAsyncCallStateAnchor.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/WebClientUrlCollection.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/WebProxyCredentials.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/WindowsLiveCredentials.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/WorkingPeriod.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/XmlDtdException.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/XmlException.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/attribute/Attachable.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/attribute/EditorBrowsable.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/attribute/EwsEnum.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/attribute/Flags.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/attribute/RequiredServerVersion.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/attribute/Schema.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/attribute/ServiceObjectDefinition.java rename src/main/java/microsoft/exchange/webservices/data/{ => autodiscover}/AlternateMailbox.java (64%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/autodiscover/AlternateMailboxCollection.java rename src/main/java/microsoft/exchange/webservices/data/{ => autodiscover}/AutodiscoverDnsClient.java (70%) rename src/main/java/microsoft/exchange/webservices/data/{ => autodiscover}/AutodiscoverResponseCollection.java (61%) rename src/main/java/microsoft/exchange/webservices/data/{ => autodiscover}/AutodiscoverService.java (85%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/autodiscover/IAutodiscoverRedirectionUrl.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/autodiscover/IFunc.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/autodiscover/IFuncDelegate.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/autodiscover/IFunctionDelegate.java rename src/main/java/microsoft/exchange/webservices/data/{ => autodiscover}/ProtocolConnection.java (64%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/autodiscover/ProtocolConnectionCollection.java rename src/main/java/microsoft/exchange/webservices/data/{ => autodiscover}/WebClientUrl.java (58%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/autodiscover/WebClientUrlCollection.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/autodiscover/configuration/ConfigurationSettingsBase.java rename src/main/java/microsoft/exchange/webservices/data/{ => autodiscover/configuration/outlook}/OutlookAccount.java (68%) rename src/main/java/microsoft/exchange/webservices/data/{ => autodiscover/configuration/outlook}/OutlookConfigurationSettings.java (65%) rename src/main/java/microsoft/exchange/webservices/data/{ => autodiscover/configuration/outlook}/OutlookProtocol.java (91%) rename src/main/java/microsoft/exchange/webservices/data/{ => autodiscover/configuration/outlook}/OutlookUser.java (67%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/autodiscover/enumeration/AutodiscoverEndpoints.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/autodiscover/enumeration/AutodiscoverErrorCode.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/autodiscover/enumeration/AutodiscoverResponseType.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/autodiscover/enumeration/DomainSettingName.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/autodiscover/enumeration/OutlookProtocolType.java rename src/main/java/microsoft/exchange/webservices/data/{ => autodiscover/enumeration}/UserSettingName.java (84%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/autodiscover/exception/AutodiscoverLocalException.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/autodiscover/exception/AutodiscoverRemoteException.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/autodiscover/exception/AutodiscoverResponseException.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/autodiscover/exception/MaximumRedirectionHopsExceededException.java rename src/main/java/microsoft/exchange/webservices/data/{ => autodiscover/exception/error}/AutodiscoverError.java (58%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/autodiscover/exception/error/DomainSettingError.java rename src/main/java/microsoft/exchange/webservices/data/{ => autodiscover/exception/error}/UserSettingError.java (54%) rename src/main/java/microsoft/exchange/webservices/data/{ => autodiscover/request}/ApplyConversationActionRequest.java (50%) rename src/main/java/microsoft/exchange/webservices/data/{ => autodiscover/request}/AutodiscoverRequest.java (77%) rename src/main/java/microsoft/exchange/webservices/data/{ => autodiscover/request}/GetDomainSettingsRequest.java (61%) rename src/main/java/microsoft/exchange/webservices/data/{ => autodiscover/request}/GetUserSettingsRequest.java (60%) rename src/main/java/microsoft/exchange/webservices/data/{ => autodiscover/response}/AutodiscoverResponse.java (50%) rename src/main/java/microsoft/exchange/webservices/data/{ => autodiscover/response}/GetDomainSettingsResponse.java (67%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/autodiscover/response/GetDomainSettingsResponseCollection.java rename src/main/java/microsoft/exchange/webservices/data/{ => autodiscover/response}/GetUserSettingsResponse.java (69%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/autodiscover/response/GetUserSettingsResponseCollection.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/CookieProcessingTargetAuthenticationStrategy.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/EwsSSLProtocolSocketFactory.java rename src/main/java/microsoft/exchange/webservices/data/{ => core}/EwsServiceMultiResponseXmlReader.java (51%) rename src/main/java/microsoft/exchange/webservices/data/{ => core}/EwsServiceXmlReader.java (60%) rename src/main/java/microsoft/exchange/webservices/data/{ => core}/EwsServiceXmlWriter.java (72%) rename src/main/java/microsoft/exchange/webservices/data/{ => core}/EwsUtilities.java (59%) rename src/main/java/microsoft/exchange/webservices/data/{ => core}/EwsX509TrustManager.java (62%) rename src/main/java/microsoft/exchange/webservices/data/{ => core}/EwsXmlReader.java (77%) rename src/main/java/microsoft/exchange/webservices/data/{ => core}/ExchangeServerInfo.java (64%) rename src/main/java/microsoft/exchange/webservices/data/{ => core}/ExchangeService.java (79%) rename src/main/java/microsoft/exchange/webservices/data/{ => core}/ExchangeServiceBase.java (60%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/IAction.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/ICustomXmlSerialization.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/ICustomXmlUpdateSerializer.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/IDisposable.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/IFileAttachmentContentHandler.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/IGetPropertyDefinitionCallback.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/ILazyMember.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/IPredicate.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/LazyMember.java rename src/main/java/microsoft/exchange/webservices/data/{ => core}/PropertyBag.java (76%) rename src/main/java/microsoft/exchange/webservices/data/{ => core}/PropertySet.java (74%) rename src/main/java/microsoft/exchange/webservices/data/{ => core}/SimplePropertyBag.java (68%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/WebAsyncCallStateAnchor.java rename src/main/java/microsoft/exchange/webservices/data/{ => core}/WebProxy.java (51%) rename src/main/java/microsoft/exchange/webservices/data/{ => core}/XmlAttributeNames.java (84%) rename src/main/java/microsoft/exchange/webservices/data/{ => core}/XmlElementNames.java (98%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/enumeration/attribute/EditorBrowsableState.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/enumeration/availability/AvailabilityData.java rename src/main/java/microsoft/exchange/webservices/data/{ => core/enumeration/availability}/FreeBusyViewType.java (56%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/enumeration/availability/MeetingAttendeeType.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/enumeration/availability/SuggestionQuality.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/enumeration/dns/DnsRecordType.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/enumeration/misc/ConnectingIdType.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/enumeration/misc/ConversationActionType.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/enumeration/misc/DateTimePrecision.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/enumeration/misc/ExchangeVersion.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/enumeration/misc/FlaggedForAction.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/enumeration/misc/HangingRequestDisconnectReason.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/enumeration/misc/IdFormat.java rename src/main/java/microsoft/exchange/webservices/data/{ => core/enumeration/misc}/TraceFlags.java (50%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/enumeration/misc/UserConfigurationProperties.java rename src/main/java/microsoft/exchange/webservices/data/{ => core/enumeration/misc}/XmlNamespace.java (60%) rename src/main/java/microsoft/exchange/webservices/data/{ => core/enumeration/misc/error}/ServiceError.java (96%) rename src/main/java/microsoft/exchange/webservices/data/{ => core/enumeration/misc/error}/WebExceptionStatus.java (69%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/enumeration/notification/EventType.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/enumeration/permission/PermissionScope.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/enumeration/permission/folder/DelegateFolderPermissionLevel.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/enumeration/permission/folder/FolderPermissionLevel.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/enumeration/permission/folder/FolderPermissionReadAccess.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/enumeration/property/BasePropertySet.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/enumeration/property/BodyType.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/enumeration/property/ConflictType.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/enumeration/property/DefaultExtendedPropertySet.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/enumeration/property/EmailAddressKey.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/enumeration/property/ImAddressKey.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/enumeration/property/Importance.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/enumeration/property/LegacyFreeBusyStatus.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/enumeration/property/MailboxType.java rename src/main/java/microsoft/exchange/webservices/data/{ => core/enumeration/property}/MapiPropertyType.java (64%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/enumeration/property/MeetingResponseType.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/enumeration/property/MemberStatus.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/enumeration/property/OofExternalAudience.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/enumeration/property/OofState.java rename src/main/java/microsoft/exchange/webservices/data/{ => core/enumeration/property}/PhoneNumberKey.java (54%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/enumeration/property/PhysicalAddressIndex.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/enumeration/property/PhysicalAddressKey.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/enumeration/property/PropertyDefinitionFlags.java rename src/main/java/microsoft/exchange/webservices/data/{ => core/enumeration/property}/RuleProperty.java (81%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/enumeration/property/Sensitivity.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/enumeration/property/StandardUser.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/enumeration/property/TaskDelegationState.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/enumeration/property/UserConfigurationDictionaryObjectType.java rename src/main/java/microsoft/exchange/webservices/data/{ => core/enumeration/property}/WellKnownFolderName.java (67%) rename src/main/java/microsoft/exchange/webservices/data/{ => core/enumeration/property/error}/RuleErrorCode.java (61%) rename src/main/java/microsoft/exchange/webservices/data/{ => core/enumeration/property/time}/DayOfTheWeek.java (53%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/enumeration/property/time/DayOfTheWeekIndex.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/enumeration/property/time/Month.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/enumeration/search/AggregateType.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/enumeration/search/ComparisonMode.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/enumeration/search/ContainmentMode.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/enumeration/search/FolderTraversal.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/enumeration/search/ItemTraversal.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/enumeration/search/LogicalOperator.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/enumeration/search/OffsetBasePoint.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/enumeration/search/ResolveNameSearchLocation.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/enumeration/search/SearchFolderTraversal.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/enumeration/search/SortDirection.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/enumeration/service/ConflictResolutionMode.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/enumeration/service/ContactSource.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/enumeration/service/ConversationFlagStatus.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/enumeration/service/DeleteMode.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/enumeration/service/EffectiveRights.java rename src/main/java/microsoft/exchange/webservices/data/{ => core/enumeration/service}/FileAsMapping.java (66%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/enumeration/service/MeetingRequestType.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/enumeration/service/MeetingRequestsDeliveryScope.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/enumeration/service/MessageDisposition.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/enumeration/service/PhoneCallState.java rename src/main/java/microsoft/exchange/webservices/data/{ => core/enumeration/service}/ResponseActions.java (50%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/enumeration/service/ResponseMessageType.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/enumeration/service/SendCancellationsMode.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/enumeration/service/SendInvitationsMode.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/enumeration/service/SendInvitationsOrCancellationsMode.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/enumeration/service/ServiceObjectType.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/enumeration/service/ServiceResult.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/enumeration/service/SyncFolderItemsScope.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/enumeration/service/TaskMode.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/enumeration/service/TaskStatus.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/enumeration/service/calendar/AffectedTaskOccurrence.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/enumeration/service/calendar/AppointmentType.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/enumeration/service/error/ConnectionFailureCause.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/enumeration/service/error/ServiceErrorHandling.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/enumeration/sync/ChangeType.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/exception/dns/DnsException.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/exception/http/EWSHttpException.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/exception/http/HttpErrorException.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/exception/misc/ArgumentException.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/exception/misc/ArgumentNullException.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/exception/misc/ArgumentOutOfRangeException.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/exception/misc/FormatException.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/exception/misc/InvalidOperationException.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/exception/misc/NotSupportedException.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/exception/service/local/InvalidOrUnsupportedTimeZoneDefinitionException.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/exception/service/local/PropertyException.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/exception/service/local/ServiceLocalException.java rename src/main/java/microsoft/exchange/webservices/data/{ => core/exception/service/local}/ServiceObjectPropertyException.java (60%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/exception/service/local/ServiceValidationException.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/exception/service/local/ServiceVersionException.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/exception/service/local/ServiceXmlDeserializationException.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/exception/service/local/ServiceXmlSerializationException.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/exception/service/local/TimeZoneConversionException.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/exception/service/remote/AccountIsLockedException.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/exception/service/remote/CreateAttachmentException.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/exception/service/remote/DeleteAttachmentException.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/exception/service/remote/ServiceRemoteException.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/exception/service/remote/ServiceRequestException.java rename src/main/java/microsoft/exchange/webservices/data/{ => core/exception/service/remote}/ServiceResponseException.java (60%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/exception/service/remote/UpdateInboxRulesException.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/exception/xml/XmlDtdException.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/exception/xml/XmlException.java rename src/main/java/microsoft/exchange/webservices/data/{ => core/request}/AddDelegateRequest.java (57%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/request/ByteArrayOSRequestEntity.java rename src/main/java/microsoft/exchange/webservices/data/{ => core/request}/ConvertIdRequest.java (56%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/request/CopyFolderRequest.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/request/CopyItemRequest.java rename src/main/java/microsoft/exchange/webservices/data/{ => core/request}/CreateAttachmentRequest.java (63%) rename src/main/java/microsoft/exchange/webservices/data/{ => core/request}/CreateFolderRequest.java (55%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/request/CreateItemRequest.java rename src/main/java/microsoft/exchange/webservices/data/{ => core/request}/CreateItemRequestBase.java (63%) rename src/main/java/microsoft/exchange/webservices/data/{ => core/request}/CreateRequest.java (64%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/request/CreateResponseObjectRequest.java rename src/main/java/microsoft/exchange/webservices/data/{ => core/request}/CreateUserConfigurationRequest.java (58%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/request/DelegateManagementRequestBase.java rename src/main/java/microsoft/exchange/webservices/data/{ => core/request}/DeleteAttachmentRequest.java (56%) rename src/main/java/microsoft/exchange/webservices/data/{ => core/request}/DeleteFolderRequest.java (52%) rename src/main/java/microsoft/exchange/webservices/data/{ => core/request}/DeleteItemRequest.java (60%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/request/DeleteRequest.java rename src/main/java/microsoft/exchange/webservices/data/{ => core/request}/DeleteUserConfigurationRequest.java (54%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/request/DisconnectPhoneCallRequest.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/request/EmptyFolderRequest.java rename src/main/java/microsoft/exchange/webservices/data/{ => core/request}/ExecuteDiagnosticMethodRequest.java (58%) rename src/main/java/microsoft/exchange/webservices/data/{ => core/request}/ExpandGroupRequest.java (56%) rename src/main/java/microsoft/exchange/webservices/data/{ => core/request}/FindConversationRequest.java (51%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/request/FindFolderRequest.java rename src/main/java/microsoft/exchange/webservices/data/{ => core/request}/FindItemRequest.java (50%) rename src/main/java/microsoft/exchange/webservices/data/{ => core/request}/FindRequest.java (62%) rename src/main/java/microsoft/exchange/webservices/data/{ => core/request}/GetAttachmentRequest.java (60%) rename src/main/java/microsoft/exchange/webservices/data/{ => core/request}/GetDelegateRequest.java (58%) rename src/main/java/microsoft/exchange/webservices/data/{ => core/request}/GetEventsRequest.java (58%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/request/GetFolderRequest.java rename src/main/java/microsoft/exchange/webservices/data/{ => core/request}/GetFolderRequestBase.java (55%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/request/GetFolderRequestForLoad.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/request/GetInboxRulesRequest.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/request/GetItemRequest.java rename src/main/java/microsoft/exchange/webservices/data/{ => core/request}/GetItemRequestBase.java (53%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/request/GetItemRequestForLoad.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/request/GetPasswordExpirationDateRequest.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/request/GetPhoneCallRequest.java rename src/main/java/microsoft/exchange/webservices/data/{ => core/request}/GetRequest.java (51%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/request/GetRoomListsRequest.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/request/GetRoomsRequest.java rename src/main/java/microsoft/exchange/webservices/data/{ => core/request}/GetServerTimeZonesRequest.java (59%) rename src/main/java/microsoft/exchange/webservices/data/{ => core/request}/GetStreamingEventsRequest.java (53%) rename src/main/java/microsoft/exchange/webservices/data/{ => core/request}/GetUserAvailabilityRequest.java (68%) rename src/main/java/microsoft/exchange/webservices/data/{ => core/request}/GetUserConfigurationRequest.java (63%) rename src/main/java/microsoft/exchange/webservices/data/{ => core/request}/GetUserOofSettingsRequest.java (50%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/request/HangingRequestDisconnectEventArgs.java rename src/main/java/microsoft/exchange/webservices/data/{ => core/request}/HangingServiceRequestBase.java (66%) rename src/main/java/microsoft/exchange/webservices/data/{ => core/request}/HttpClientWebRequest.java (61%) rename src/main/java/microsoft/exchange/webservices/data/{ => core/request}/HttpWebRequest.java (79%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/request/MoveCopyFolderRequest.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/request/MoveCopyItemRequest.java rename src/main/java/microsoft/exchange/webservices/data/{ => core/request}/MoveCopyRequest.java (51%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/request/MoveFolderRequest.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/request/MoveItemRequest.java rename src/main/java/microsoft/exchange/webservices/data/{ => core/request}/MultiResponseServiceRequest.java (54%) rename src/main/java/microsoft/exchange/webservices/data/{ => core/request}/PlayOnPhoneRequest.java (50%) rename src/main/java/microsoft/exchange/webservices/data/{ => core/request}/RemoveDelegateRequest.java (51%) rename src/main/java/microsoft/exchange/webservices/data/{ => core/request}/ResolveNamesRequest.java (70%) rename src/main/java/microsoft/exchange/webservices/data/{ => core/request}/SendItemRequest.java (60%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/request/ServiceRequestBase.java rename src/main/java/microsoft/exchange/webservices/data/{ => core/request}/SetUserOofSettingsRequest.java (55%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/request/SimpleServiceRequestBase.java rename src/main/java/microsoft/exchange/webservices/data/{ => core/request}/SubscribeRequest.java (64%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/request/SubscribeToPullNotificationsRequest.java rename src/main/java/microsoft/exchange/webservices/data/{ => core/request}/SubscribeToPushNotificationsRequest.java (55%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/request/SubscribeToStreamingNotificationsRequest.java rename src/main/java/microsoft/exchange/webservices/data/{ => core/request}/SyncFolderHierarchyRequest.java (64%) rename src/main/java/microsoft/exchange/webservices/data/{ => core/request}/SyncFolderItemsRequest.java (69%) rename src/main/java/microsoft/exchange/webservices/data/{ => core/request}/UnsubscribeRequest.java (53%) rename src/main/java/microsoft/exchange/webservices/data/{ => core/request}/UpdateDelegateRequest.java (54%) rename src/main/java/microsoft/exchange/webservices/data/{ => core/request}/UpdateFolderRequest.java (53%) rename src/main/java/microsoft/exchange/webservices/data/{ => core/request}/UpdateInboxRulesRequest.java (59%) rename src/main/java/microsoft/exchange/webservices/data/{ => core/request}/UpdateItemRequest.java (67%) rename src/main/java/microsoft/exchange/webservices/data/{ => core/request}/UpdateUserConfigurationRequest.java (56%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/request/WaitHandle.java rename src/main/java/microsoft/exchange/webservices/data/{ => core/response}/AttendeeAvailability.java (65%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/response/ConvertIdResponse.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/response/CreateAttachmentResponse.java rename src/main/java/microsoft/exchange/webservices/data/{ => core/response}/CreateFolderResponse.java (50%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/response/CreateItemResponse.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/response/CreateItemResponseBase.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/response/CreateResponseObjectResponse.java rename src/main/java/microsoft/exchange/webservices/data/{ => core/response}/DelegateManagementResponse.java (53%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/response/DelegateUserResponse.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/response/DeleteAttachmentResponse.java rename src/main/java/microsoft/exchange/webservices/data/{ => core/response}/ExecuteDiagnosticMethodResponse.java (65%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/response/ExpandGroupResponse.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/response/FindConversationResponse.java rename src/main/java/microsoft/exchange/webservices/data/{ => core/response}/FindFolderResponse.java (50%) rename src/main/java/microsoft/exchange/webservices/data/{ => core/response}/FindItemResponse.java (62%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/response/GetAttachmentResponse.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/response/GetDelegateResponse.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/response/GetEventsResponse.java rename src/main/java/microsoft/exchange/webservices/data/{ => core/response}/GetFolderResponse.java (52%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/response/GetInboxRulesResponse.java rename src/main/java/microsoft/exchange/webservices/data/{ => core/response}/GetItemResponse.java (53%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/response/GetPasswordExpirationDateResponse.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/response/GetPhoneCallResponse.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/response/GetRoomListsResponse.java rename src/main/java/microsoft/exchange/webservices/data/{ => core/response}/GetRoomsResponse.java (50%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/response/GetServerTimeZonesResponse.java rename src/main/java/microsoft/exchange/webservices/data/{ => core/response}/GetStreamingEventsResponse.java (59%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/response/GetUserConfigurationResponse.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/response/GetUserOofSettingsResponse.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/response/IGetObjectInstanceDelegate.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/response/MoveCopyFolderResponse.java rename src/main/java/microsoft/exchange/webservices/data/{ => core/response}/MoveCopyItemResponse.java (53%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/response/PlayOnPhoneResponse.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/response/ResolveNamesResponse.java rename src/main/java/microsoft/exchange/webservices/data/{ => core/response}/ServiceResponse.java (76%) rename src/main/java/microsoft/exchange/webservices/data/{ => core/response}/ServiceResponseCollection.java (53%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/response/SubscribeResponse.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/response/SuggestionsResponse.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/response/SyncFolderHierarchyResponse.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/response/SyncFolderItemsResponse.java rename src/main/java/microsoft/exchange/webservices/data/{ => core/response}/SyncResponse.java (64%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/response/UpdateFolderResponse.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/response/UpdateInboxRulesResponse.java rename src/main/java/microsoft/exchange/webservices/data/{ => core/response}/UpdateItemResponse.java (64%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/service/ICreateServiceObjectWithAttachmentParam.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/service/ICreateServiceObjectWithServiceParam.java rename src/main/java/microsoft/exchange/webservices/data/{ => core/service}/ServiceObject.java (72%) rename src/main/java/microsoft/exchange/webservices/data/{ => core/service}/ServiceObjectInfo.java (82%) rename src/main/java/microsoft/exchange/webservices/data/{ => core/service/folder}/CalendarFolder.java (59%) rename src/main/java/microsoft/exchange/webservices/data/{ => core/service/folder}/ContactsFolder.java (60%) rename src/main/java/microsoft/exchange/webservices/data/{ => core/service/folder}/Folder.java (73%) rename src/main/java/microsoft/exchange/webservices/data/{ => core/service/folder}/SearchFolder.java (58%) rename src/main/java/microsoft/exchange/webservices/data/{ => core/service/folder}/TasksFolder.java (58%) rename src/main/java/microsoft/exchange/webservices/data/{ => core/service/item}/Appointment.java (79%) rename src/main/java/microsoft/exchange/webservices/data/{ => core/service/item}/Contact.java (77%) rename src/main/java/microsoft/exchange/webservices/data/{ => core/service/item}/ContactGroup.java (59%) rename src/main/java/microsoft/exchange/webservices/data/{ => core/service/item}/Conversation.java (76%) rename src/main/java/microsoft/exchange/webservices/data/{ => core/service/item}/EmailMessage.java (77%) rename src/main/java/microsoft/exchange/webservices/data/{ => core/service/item}/ICalendarActionProvider.java (55%) rename src/main/java/microsoft/exchange/webservices/data/{ => core/service/item}/Item.java (77%) rename src/main/java/microsoft/exchange/webservices/data/{ => core/service/item}/MeetingCancellation.java (51%) rename src/main/java/microsoft/exchange/webservices/data/{ => core/service/item}/MeetingMessage.java (57%) rename src/main/java/microsoft/exchange/webservices/data/{ => core/service/item}/MeetingRequest.java (71%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/service/item/MeetingResponse.java rename src/main/java/microsoft/exchange/webservices/data/{ => core/service/item}/PostItem.java (70%) rename src/main/java/microsoft/exchange/webservices/data/{ => core/service/item}/Task.java (74%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/service/response/AcceptMeetingInvitationMessage.java rename src/main/java/microsoft/exchange/webservices/data/{ => core/service/response}/CalendarResponseMessage.java (66%) rename src/main/java/microsoft/exchange/webservices/data/{ => core/service/response}/CalendarResponseMessageBase.java (70%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/service/response/CancelMeetingMessage.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/service/response/DeclineMeetingInvitationMessage.java rename src/main/java/microsoft/exchange/webservices/data/{ => core/service/response}/PostReply.java (61%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/service/response/RemoveFromCalendar.java rename src/main/java/microsoft/exchange/webservices/data/{ => core/service/response}/ResponseMessage.java (64%) rename src/main/java/microsoft/exchange/webservices/data/{ => core/service/response}/ResponseObject.java (63%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/service/response/SuppressReadReceipt.java rename src/main/java/microsoft/exchange/webservices/data/{ => core/service/schema}/AppointmentSchema.java (87%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/service/schema/CalendarResponseObjectSchema.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/service/schema/CancelMeetingMessageSchema.java rename src/main/java/microsoft/exchange/webservices/data/{ => core/service/schema}/ContactGroupSchema.java (50%) rename src/main/java/microsoft/exchange/webservices/data/{ => core/service/schema}/ContactSchema.java (90%) rename src/main/java/microsoft/exchange/webservices/data/{ => core/service/schema}/ConversationSchema.java (86%) rename src/main/java/microsoft/exchange/webservices/data/{ => core/service/schema}/EmailMessageSchema.java (82%) rename src/main/java/microsoft/exchange/webservices/data/{ => core/service/schema}/FolderSchema.java (70%) rename src/main/java/microsoft/exchange/webservices/data/{ => core/service/schema}/ItemSchema.java (83%) rename src/main/java/microsoft/exchange/webservices/data/{ => core/service/schema}/MeetingMessageSchema.java (65%) rename src/main/java/microsoft/exchange/webservices/data/{ => core/service/schema}/MeetingRequestSchema.java (80%) rename src/main/java/microsoft/exchange/webservices/data/{ => core/service/schema}/PostItemSchema.java (56%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/service/schema/PostReplySchema.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/service/schema/ResponseMessageSchema.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/service/schema/ResponseObjectSchema.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/core/service/schema/SearchFolderSchema.java rename src/main/java/microsoft/exchange/webservices/data/{ => core/service/schema}/ServiceObjectSchema.java (72%) rename src/main/java/microsoft/exchange/webservices/data/{ => core/service/schema}/TaskSchema.java (81%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/credential/CredentialConstants.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/credential/ExchangeCredentials.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/credential/TokenCredentials.java rename src/main/java/microsoft/exchange/webservices/data/{ => credential}/WSSecurityBasedCredentials.java (71%) rename src/main/java/microsoft/exchange/webservices/data/{ => credential}/WebCredentials.java (53%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/credential/WebProxyCredentials.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/credential/WindowsLiveCredentials.java rename src/main/java/microsoft/exchange/webservices/data/{ => dns}/DnsClient.java (56%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/dns/DnsRecord.java rename src/main/java/microsoft/exchange/webservices/data/{ => dns}/DnsSrvRecord.java (55%) rename src/main/java/microsoft/exchange/webservices/data/{ => messaging}/PhoneCall.java (64%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/messaging/PhoneCallId.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/messaging/UnifiedMessaging.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/misc/AbstractAsyncCallback.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/misc/AbstractFolderIdWrapper.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/misc/AbstractItemIdWrapper.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/misc/AsyncCallback.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/misc/AsyncCallbackImplementation.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/misc/AsyncExecutor.java rename src/main/java/microsoft/exchange/webservices/data/{ => misc}/AsyncRequestResult.java (61%) rename src/main/java/microsoft/exchange/webservices/data/{ => misc}/CalendarActionResults.java (64%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/misc/CallableMethod.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/misc/Callback.java rename src/main/java/microsoft/exchange/webservices/data/{ => misc}/ConversationAction.java (69%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/misc/DelegateInformation.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/misc/EwsTraceListener.java rename src/main/java/microsoft/exchange/webservices/data/{ => misc}/ExpandGroupResults.java (59%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/misc/FolderIdWrapper.java rename src/main/java/microsoft/exchange/webservices/data/{ => misc}/FolderIdWrapperList.java (51%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/misc/FolderWrapper.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/misc/HangingTraceStream.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/misc/IAsyncResult.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/misc/IFunction.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/misc/IFunctions.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/misc/ITraceListener.java rename src/main/java/microsoft/exchange/webservices/data/{ => misc}/ImpersonatedUserId.java (53%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/misc/ItemIdWrapper.java rename src/main/java/microsoft/exchange/webservices/data/{ => misc}/ItemIdWrapperList.java (50%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/misc/ItemWrapper.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/misc/MapiTypeConverter.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/misc/MapiTypeConverterMap.java rename src/main/java/microsoft/exchange/webservices/data/{ => misc}/MapiTypeConverterMapEntry.java (64%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/misc/MobilePhone.java rename src/main/java/microsoft/exchange/webservices/data/{ => misc}/NameResolution.java (51%) rename src/main/java/microsoft/exchange/webservices/data/{ => misc}/NameResolutionCollection.java (57%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/misc/OutParam.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/misc/Param.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/misc/RefParam.java rename src/main/java/microsoft/exchange/webservices/data/{ => misc}/SoapFaultDetails.java (77%) rename src/main/java/microsoft/exchange/webservices/data/{ => misc}/Time.java (63%) rename src/main/java/microsoft/exchange/webservices/data/{ => misc}/TimeSpan.java (89%) rename src/main/java/microsoft/exchange/webservices/data/{ => misc}/UserConfiguration.java (67%) rename src/main/java/microsoft/exchange/webservices/data/{ => misc/availability}/AttendeeInfo.java (68%) rename src/main/java/microsoft/exchange/webservices/data/{ => misc/availability}/AvailabilityOptions.java (79%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/misc/availability/GetUserAvailabilityResults.java rename src/main/java/microsoft/exchange/webservices/data/{ => misc/availability}/LegacyAvailabilityTimeZone.java (61%) rename src/main/java/microsoft/exchange/webservices/data/{ => misc/availability}/LegacyAvailabilityTimeZoneTime.java (76%) rename src/main/java/microsoft/exchange/webservices/data/{ => misc/availability}/OofReply.java (59%) rename src/main/java/microsoft/exchange/webservices/data/{ => misc/availability}/TimeWindow.java (58%) rename src/main/java/microsoft/exchange/webservices/data/{ => misc/id}/AlternateId.java (68%) rename src/main/java/microsoft/exchange/webservices/data/{ => misc/id}/AlternateIdBase.java (50%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/misc/id/AlternatePublicFolderId.java rename src/main/java/microsoft/exchange/webservices/data/{ => misc/id}/AlternatePublicFolderItemId.java (50%) rename src/main/java/microsoft/exchange/webservices/data/{ => notification}/FolderEvent.java (62%) rename src/main/java/microsoft/exchange/webservices/data/{ => notification}/GetEventsResults.java (77%) rename src/main/java/microsoft/exchange/webservices/data/{ => notification}/GetStreamingEventsResults.java (67%) rename src/main/java/microsoft/exchange/webservices/data/{ => notification}/ItemEvent.java (56%) rename src/main/java/microsoft/exchange/webservices/data/{ => notification}/NotificationEvent.java (55%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/notification/NotificationEventArgs.java rename src/main/java/microsoft/exchange/webservices/data/{ => notification}/PullSubscription.java (67%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/notification/PushSubscription.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/notification/StreamingSubscription.java rename src/main/java/microsoft/exchange/webservices/data/{ => notification}/StreamingSubscriptionConnection.java (80%) rename src/main/java/microsoft/exchange/webservices/data/{ => notification}/SubscriptionBase.java (58%) rename src/main/java/microsoft/exchange/webservices/data/{ => notification}/SubscriptionErrorEventArgs.java (58%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/property/complex/AppointmentOccurrenceId.java rename src/main/java/microsoft/exchange/webservices/data/{ => property/complex}/Attachment.java (77%) rename src/main/java/microsoft/exchange/webservices/data/{ => property/complex}/AttachmentCollection.java (79%) rename src/main/java/microsoft/exchange/webservices/data/{ => property/complex}/Attendee.java (63%) rename src/main/java/microsoft/exchange/webservices/data/{ => property/complex}/AttendeeCollection.java (61%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/property/complex/ByteArrayArray.java rename src/main/java/microsoft/exchange/webservices/data/{ => property/complex}/CompleteName.java (76%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/property/complex/ComplexFunctionDelegate.java rename src/main/java/microsoft/exchange/webservices/data/{ => property/complex}/ComplexProperty.java (68%) rename src/main/java/microsoft/exchange/webservices/data/{ => property/complex}/ComplexPropertyCollection.java (69%) rename src/main/java/microsoft/exchange/webservices/data/{ => property/complex}/ConversationId.java (57%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/property/complex/CreateRuleOperation.java rename src/main/java/microsoft/exchange/webservices/data/{ => property/complex}/DelegatePermissions.java (80%) rename src/main/java/microsoft/exchange/webservices/data/{ => property/complex}/DelegateUser.java (66%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/property/complex/DeleteRuleOperation.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/property/complex/DeletedOccurrenceInfo.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/property/complex/DeletedOccurrenceInfoCollection.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/property/complex/DictionaryEntryProperty.java rename src/main/java/microsoft/exchange/webservices/data/{ => property/complex}/DictionaryProperty.java (77%) rename src/main/java/microsoft/exchange/webservices/data/{ => property/complex}/EmailAddress.java (81%) rename src/main/java/microsoft/exchange/webservices/data/{ => property/complex}/EmailAddressCollection.java (72%) rename src/main/java/microsoft/exchange/webservices/data/{ => property/complex}/EmailAddressDictionary.java (54%) rename src/main/java/microsoft/exchange/webservices/data/{ => property/complex}/EmailAddressEntry.java (61%) rename src/main/java/microsoft/exchange/webservices/data/{ => property/complex}/ExtendedProperty.java (68%) rename src/main/java/microsoft/exchange/webservices/data/{ => property/complex}/ExtendedPropertyCollection.java (64%) rename src/main/java/microsoft/exchange/webservices/data/{ => property/complex}/FileAttachment.java (72%) rename src/main/java/microsoft/exchange/webservices/data/{ => property/complex}/FolderId.java (74%) rename src/main/java/microsoft/exchange/webservices/data/{ => property/complex}/FolderIdCollection.java (61%) rename src/main/java/microsoft/exchange/webservices/data/{ => property/complex}/FolderPermission.java (86%) rename src/main/java/microsoft/exchange/webservices/data/{ => property/complex}/FolderPermissionCollection.java (67%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/property/complex/GenericItemAttachment.java rename src/main/java/microsoft/exchange/webservices/data/{ => property/complex}/GroupMember.java (74%) rename src/main/java/microsoft/exchange/webservices/data/{ => property/complex}/GroupMemberCollection.java (77%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/property/complex/IComplexPropertyChanged.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/property/complex/IComplexPropertyChangedDelegate.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/property/complex/ICreateComplexPropertyDelegate.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/property/complex/IOwnedProperty.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/property/complex/IPropertyBagChangedDelegate.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/property/complex/ISearchStringProvider.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/property/complex/IServiceObjectChangedDelegate.java rename src/main/java/microsoft/exchange/webservices/data/{ => property/complex}/ImAddressDictionary.java (53%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/property/complex/ImAddressEntry.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/property/complex/InternetMessageHeader.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/property/complex/InternetMessageHeaderCollection.java rename src/main/java/microsoft/exchange/webservices/data/{ => property/complex}/ItemAttachment.java (55%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/property/complex/ItemCollection.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/property/complex/ItemId.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/property/complex/ItemIdCollection.java rename src/main/java/microsoft/exchange/webservices/data/{ => property/complex}/Mailbox.java (71%) rename src/main/java/microsoft/exchange/webservices/data/{ => property/complex}/ManagedFolderInformation.java (75%) rename src/main/java/microsoft/exchange/webservices/data/{ => property/complex}/MeetingTimeZone.java (67%) rename src/main/java/microsoft/exchange/webservices/data/{ => property/complex}/MessageBody.java (55%) rename src/main/java/microsoft/exchange/webservices/data/{ => property/complex}/MimeContent.java (56%) rename src/main/java/microsoft/exchange/webservices/data/{ => property/complex}/OccurrenceInfo.java (57%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/property/complex/OccurrenceInfoCollection.java rename src/main/java/microsoft/exchange/webservices/data/{ => property/complex}/PhoneNumberDictionary.java (54%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/property/complex/PhoneNumberEntry.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/property/complex/PhysicalAddressDictionary.java rename src/main/java/microsoft/exchange/webservices/data/{ => property/complex}/PhysicalAddressEntry.java (74%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/property/complex/RecurringAppointmentMasterId.java rename src/main/java/microsoft/exchange/webservices/data/{ => property/complex}/Rule.java (79%) rename src/main/java/microsoft/exchange/webservices/data/{ => property/complex}/RuleActions.java (89%) rename src/main/java/microsoft/exchange/webservices/data/{ => property/complex}/RuleCollection.java (52%) rename src/main/java/microsoft/exchange/webservices/data/{ => property/complex}/RuleError.java (54%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/property/complex/RuleErrorCollection.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/property/complex/RuleOperation.java rename src/main/java/microsoft/exchange/webservices/data/{ => property/complex}/RuleOperationError.java (56%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/property/complex/RuleOperationErrorCollection.java rename src/main/java/microsoft/exchange/webservices/data/{ => property/complex}/RulePredicateDateRange.java (56%) rename src/main/java/microsoft/exchange/webservices/data/{ => property/complex}/RulePredicateSizeRange.java (57%) rename src/main/java/microsoft/exchange/webservices/data/{ => property/complex}/RulePredicates.java (92%) rename src/main/java/microsoft/exchange/webservices/data/{ => property/complex}/SearchFolderParameters.java (63%) rename src/main/java/microsoft/exchange/webservices/data/{ => property/complex}/ServiceId.java (67%) rename src/main/java/microsoft/exchange/webservices/data/{ => property/complex}/SetRuleOperation.java (50%) rename src/main/java/microsoft/exchange/webservices/data/{ => property/complex}/StringList.java (77%) rename src/main/java/microsoft/exchange/webservices/data/{ => property/complex}/TimeChange.java (68%) rename src/main/java/microsoft/exchange/webservices/data/{ => property/complex}/TimeChangeRecurrence.java (63%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/property/complex/UniqueBody.java rename src/main/java/microsoft/exchange/webservices/data/{ => property/complex}/UserConfigurationDictionary.java (73%) rename src/main/java/microsoft/exchange/webservices/data/{ => property/complex}/UserId.java (72%) rename src/main/java/microsoft/exchange/webservices/data/{ => property/complex/availability}/CalendarEvent.java (58%) rename src/main/java/microsoft/exchange/webservices/data/{ => property/complex/availability}/CalendarEventDetails.java (71%) rename src/main/java/microsoft/exchange/webservices/data/{ => property/complex/availability}/Conflict.java (70%) rename src/main/java/microsoft/exchange/webservices/data/{ => property/complex/availability}/OofSettings.java (69%) rename src/main/java/microsoft/exchange/webservices/data/{ => property/complex/availability}/Suggestion.java (54%) rename src/main/java/microsoft/exchange/webservices/data/{ => property/complex/availability}/TimeSuggestion.java (62%) rename src/main/java/microsoft/exchange/webservices/data/{ => property/complex/availability}/WorkingHours.java (65%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/property/complex/availability/WorkingPeriod.java rename src/main/java/microsoft/exchange/webservices/data/{ => property/complex/recurrence}/DayOfTheWeekCollection.java (61%) rename src/main/java/microsoft/exchange/webservices/data/{ => property/complex/recurrence/pattern}/Recurrence.java (81%) rename src/main/java/microsoft/exchange/webservices/data/{ => property/complex/recurrence/range}/EndDateRecurrenceRange.java (50%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/property/complex/recurrence/range/NoEndRecurrenceRange.java rename src/main/java/microsoft/exchange/webservices/data/{ => property/complex/recurrence/range}/NumberedRecurrenceRange.java (51%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/property/complex/recurrence/range/RecurrenceRange.java rename src/main/java/microsoft/exchange/webservices/data/{ => property/complex/time}/AbsoluteDateTransition.java (55%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/property/complex/time/AbsoluteDayOfMonthTransition.java rename src/main/java/microsoft/exchange/webservices/data/{ => property/complex/time}/AbsoluteMonthTransition.java (54%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/property/complex/time/OlsonTimeZoneDefinition.java rename src/main/java/microsoft/exchange/webservices/data/{ => property/complex/time}/RelativeDayOfMonthTransition.java (58%) rename src/main/java/microsoft/exchange/webservices/data/{ => property/complex/time}/TimeZoneDefinition.java (74%) rename src/main/java/microsoft/exchange/webservices/data/{ => property/complex/time}/TimeZonePeriod.java (54%) rename src/main/java/microsoft/exchange/webservices/data/{ => property/complex/time}/TimeZoneTransition.java (63%) rename src/main/java/microsoft/exchange/webservices/data/{ => property/complex/time}/TimeZoneTransitionGroup.java (70%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/property/definition/AttachmentsPropertyDefinition.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/property/definition/BoolPropertyDefinition.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/property/definition/ByteArrayPropertyDefinition.java rename src/main/java/microsoft/exchange/webservices/data/{ => property/definition}/ComplexPropertyDefinition.java (60%) rename src/main/java/microsoft/exchange/webservices/data/{ => property/definition}/ComplexPropertyDefinitionBase.java (64%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/property/definition/ContainedPropertyDefinition.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/property/definition/DateTimePropertyDefinition.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/property/definition/DoublePropertyDefinition.java rename src/main/java/microsoft/exchange/webservices/data/{ => property/definition}/EffectiveRightsPropertyDefinition.java (56%) rename src/main/java/microsoft/exchange/webservices/data/{ => property/definition}/ExtendedPropertyDefinition.java (83%) rename src/main/java/microsoft/exchange/webservices/data/{ => property/definition}/GenericPropertyDefinition.java (52%) rename src/main/java/microsoft/exchange/webservices/data/{ => property/definition}/GroupMemberPropertyDefinition.java (51%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/property/definition/IDateTimePropertyDefinition.java rename src/main/java/microsoft/exchange/webservices/data/{ => property/definition}/IndexedPropertyDefinition.java (63%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/property/definition/IntPropertyDefinition.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/property/definition/MeetingTimeZonePropertyDefinition.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/property/definition/PermissionSetPropertyDefinition.java rename src/main/java/microsoft/exchange/webservices/data/{ => property/definition}/PropertyDefinition.java (50%) rename src/main/java/microsoft/exchange/webservices/data/{ => property/definition}/PropertyDefinitionBase.java (51%) rename src/main/java/microsoft/exchange/webservices/data/{ => property/definition}/RecurrencePropertyDefinition.java (57%) rename src/main/java/microsoft/exchange/webservices/data/{ => property/definition}/ResponseObjectsPropertyDefinition.java (60%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/property/definition/ServiceObjectPropertyDefinition.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/property/definition/StartTimeZonePropertyDefinition.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/property/definition/StringPropertyDefinition.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/property/definition/TaskDelegationStatePropertyDefinition.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/property/definition/TimeSpanPropertyDefinition.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/property/definition/TimeZonePropertyDefinition.java rename src/main/java/microsoft/exchange/webservices/data/{ => property/definition}/TypedPropertyDefinition.java (52%) rename src/main/java/microsoft/exchange/webservices/data/{ => search}/CalendarView.java (60%) rename src/main/java/microsoft/exchange/webservices/data/{ => search}/ConversationIndexedItemView.java (55%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/search/FindFoldersResults.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/search/FindItemsResults.java rename src/main/java/microsoft/exchange/webservices/data/{ => search}/FolderView.java (53%) rename src/main/java/microsoft/exchange/webservices/data/{ => search}/GroupedFindItemsResults.java (51%) rename src/main/java/microsoft/exchange/webservices/data/{ => search}/Grouping.java (63%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/search/ItemGroup.java rename src/main/java/microsoft/exchange/webservices/data/{ => search}/ItemView.java (54%) rename src/main/java/microsoft/exchange/webservices/data/{ => search}/OrderByCollection.java (71%) rename src/main/java/microsoft/exchange/webservices/data/{ => search}/PagedView.java (57%) rename src/main/java/microsoft/exchange/webservices/data/{ => search}/ViewBase.java (52%) rename src/main/java/microsoft/exchange/webservices/data/{ => search/filter}/SearchFilter.java (86%) rename src/main/java/microsoft/exchange/webservices/data/{ => security}/SafeXmlDocument.java (73%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/security/SafeXmlFactory.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/security/SafeXmlSchema.java rename src/main/java/microsoft/exchange/webservices/data/{ => security}/XmlNameTable.java (65%) rename src/main/java/microsoft/exchange/webservices/data/{ => security}/XmlNodeType.java (83%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/sync/Change.java rename src/main/java/microsoft/exchange/webservices/data/{ => sync}/ChangeCollection.java (54%) create mode 100644 src/main/java/microsoft/exchange/webservices/data/sync/FolderChange.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/sync/ItemChange.java delete mode 100644 src/main/java/microsoft/exchange/webservices/data/util/DateTimeParser.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/util/DateTimeUtils.java create mode 100644 src/main/java/microsoft/exchange/webservices/data/util/TimeZoneUtils.java delete mode 100644 src/site/resources/License.docx create mode 100644 src/test/java/microsoft/exchange/webservices/base/BaseTest.java delete mode 100644 src/test/java/microsoft/exchange/webservices/data/BaseTest.java delete mode 100644 src/test/java/microsoft/exchange/webservices/data/EmailAddressTest.java delete mode 100644 src/test/java/microsoft/exchange/webservices/data/EwsUtilitiesTest.java delete mode 100644 src/test/java/microsoft/exchange/webservices/data/TimeSpanTest.java rename src/test/java/microsoft/exchange/webservices/data/{ => autodiscover/request}/GetUserSettingsRequestTest.java (66%) create mode 100644 src/test/java/microsoft/exchange/webservices/data/core/EwsUtilitiesTest.java create mode 100644 src/test/java/microsoft/exchange/webservices/data/core/EwsXmlReaderTest.java create mode 100644 src/test/java/microsoft/exchange/webservices/data/core/LazyMemberTest.java create mode 100644 src/test/java/microsoft/exchange/webservices/data/core/PropertyBagTest.java rename src/test/java/microsoft/exchange/webservices/data/{ => core/service/items}/TaskTest.java (73%) create mode 100644 src/test/java/microsoft/exchange/webservices/data/credential/WSSecurityBasedCredentialsTest.java create mode 100644 src/test/java/microsoft/exchange/webservices/data/exception/InvalidOrUnsupportedTimeZoneDefinitionExceptionTest.java create mode 100644 src/test/java/microsoft/exchange/webservices/data/exception/MaximumRedirectionHopsExceededExceptionTest.java create mode 100644 src/test/java/microsoft/exchange/webservices/data/misc/IFunctionsTest.java create mode 100644 src/test/java/microsoft/exchange/webservices/data/misc/TimeSpanTest.java create mode 100644 src/test/java/microsoft/exchange/webservices/data/property/complex/ComplexPropertyCollectionTest.java create mode 100644 src/test/java/microsoft/exchange/webservices/data/property/complex/EmailAddressTest.java create mode 100644 src/test/java/microsoft/exchange/webservices/data/property/complex/ExtendedPropertyCollectionTest.java create mode 100644 src/test/java/microsoft/exchange/webservices/data/property/complex/OlsonTimeZoneTest.java create mode 100644 src/test/java/microsoft/exchange/webservices/data/property/complex/UniqueBodyTest.java rename src/test/java/microsoft/exchange/webservices/data/{ => property/complex}/UserConfigurationDictionaryTest.java (79%) create mode 100644 src/test/java/microsoft/exchange/webservices/data/property/definition/ByteArrayPropertyDefinitionTest.java create mode 100644 src/test/java/microsoft/exchange/webservices/data/sync/ChangeCollectionTest.java rename src/test/java/microsoft/exchange/webservices/data/util/{DateTimeParserTest.java => DateTimeUtilsTest.java} (69%) create mode 100644 src/test/resources/logback-test.xml diff --git a/.gitignore b/.gitignore index f49213b91..27c0e9a1e 100644 --- a/.gitignore +++ b/.gitignore @@ -15,11 +15,16 @@ # User-specific stuff: .idea/workspace.xml .idea/tasks.xml +.idea/findbugs-idea.xml +.idea/codeStyleSettings.xml .idea/dictionaries +.idea/shelf *.iws +*.ipr # Sensitive or high-churn files: .idea/dataSources.ids .idea/dataSources.xml .idea/sqlDataSources.xml .idea/dynamic.xml -.idea/uiDesigner.xml \ No newline at end of file +.idea/uiDesigner.xml +.idea/* diff --git a/.idea/codeStyleSettings.xml b/.idea/codeStyleSettings.xml index fbf4d0404..ddacdf3e8 100644 --- a/.idea/codeStyleSettings.xml +++ b/.idea/codeStyleSettings.xml @@ -3,20 +3,73 @@ - - + \ No newline at end of file diff --git a/.idea/libraries/Maven__commons_codec_commons_codec_1_6.xml b/.idea/libraries/Maven__commons_codec_commons_codec_1_6.xml deleted file mode 100644 index e8a6a9f91..000000000 --- a/.idea/libraries/Maven__commons_codec_commons_codec_1_6.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/Maven__junit_junit_4_11.xml b/.idea/libraries/Maven__junit_junit_4_11.xml deleted file mode 100644 index f33320d8e..000000000 --- a/.idea/libraries/Maven__junit_junit_4_11.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_httpcomponents_httpclient_4_3_5.xml b/.idea/libraries/Maven__org_apache_httpcomponents_httpclient_4_3_5.xml deleted file mode 100644 index 5601459cf..000000000 --- a/.idea/libraries/Maven__org_apache_httpcomponents_httpclient_4_3_5.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_httpcomponents_httpcore_4_3_3.xml b/.idea/libraries/Maven__org_apache_httpcomponents_httpcore_4_3_3.xml deleted file mode 100644 index a821fc2fd..000000000 --- a/.idea/libraries/Maven__org_apache_httpcomponents_httpcore_4_3_3.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/.travis.yml b/.travis.yml index 9ad07365d..f9a9cf069 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,9 +1,54 @@ +# The MIT License +# Copyright (c) 2012 Microsoft Corporation +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. + language: java +jdk: + - oraclejdk8 + - oraclejdk7 + - openjdk6 + +# enable container-based infrastructure +sudo: false + +env: + global: + - secure: "V37/WY3//w4fQUxmtKXw9dsU4iH5Z6HvTpBkZj+5DaX5h2Lj98FzALvkGSt7KvqVKQBbgETjs3HTMQkz6hwbLgX2okLKCQbmhZu3vQLqkWe6KPqnO1NOKSaU4vhCoGpScNWMiVxrzCHLHZf5tQu7d+1WVMk5GNlgGqeKVSnz5LY=" + - secure: "O9Mjx/mU5MLQsngcVbTf7AVMFo2Bh3ZWXwTyiLVXAfU7/VZX39vx30Mf2laNpewYqbiouix7fOkK76YS8459QRoLVBAQSwzjuGsZAwQvz7b7+r3kCS7rwGm7eCobJDbwItoxAxA00rI3gpyX/BnaX8aFutQw/0ZoPSPOH+LzR+4=" + +# cache local repository for speed of build +cache: + directories: + - $HOME/.m2/repository +before_cache: + - rm -rf $HOME/.m2/repository/com/microsoft/ews-java-api + notifications: webhooks: urls: - - https://webhooks.gitter.im/e/04643d955d03eb39e24e - on_success: change # options: [always|never|change] default: always - on_failure: always # options: [always|never|change] default: always - on_start: false # default: false + - https://webhooks.gitter.im/e/04643d955d03eb39e24e + on_success: change + +before_install: + - chmod +x ./deploy_snapshot.sh + +after_success: + - ./deploy_snapshot.sh diff --git a/deploy_snapshot.sh b/deploy_snapshot.sh new file mode 100644 index 000000000..6d9ffd47f --- /dev/null +++ b/deploy_snapshot.sh @@ -0,0 +1,48 @@ +#!/bin/bash + +# The MIT License +# Copyright (c) 2012 Microsoft Corporation +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. + +if [ "$TRAVIS_REPO_SLUG" != "OfficeDev/ews-java-api" ]; then + echo "[DEPLOY] Skipping snapshot deployment for repo:'$TRAVIS_REPO_SLUG'." +elif [ "$TRAVIS_PULL_REQUEST" != "false" ]; then + echo "[DEPLOY] Skipping snapshot deployment for a pull request." +elif [ "$TRAVIS_BRANCH" != "master" ]; then + echo "[DEPLOY] Skipping snapshot deployment for branch:'$TRAVIS_BRANCH'." +elif [ "$TRAVIS_SECURE_ENV_VARS" == "false" ]; then + echo "[DEPLOY] Skipping snapshot deployment due to TRAVIS_SECURE_ENV_VARS is set to '$TRAVIS_SECURE_ENV_VARS'." +elif [ "$TRAVIS_JDK_VERSION" != "oraclejdk7" ]; then + echo "[DEPLOY] Skipping snapshot deployment for jdk:'$TRAVIS_JDK_VERSION'." +else + echo "[DEPLOY] Deploying snapshot for commit:'$TRAVIS_COMMIT' @ build-id:'$TRAVIS_BUILD_ID'" + # create settings.xml + echo "ossrh-snapshot${OSSRHUSER}${OSSRHPASS}" > $HOME/.m2/settings.xml + # deploy + if [ -z "${GPG_PASSPHRASE+xxx}" ]; then + echo "[INFO] Deploying unsigned artifacts" + mvn clean deploy --settings="$HOME/.m2/settings.xml" -Dmaven.test.skip=true + else + echo "[INFO] Deploying signed artifacts" + mvn clean deploy --settings="$HOME/.m2/settings.xml" -Dmaven.test.skip=true -Dgpg.passphrase=$GPG_PASSPHRASE + fi + # clean up + rm -f $HOME/.m2/settings.xml +fi diff --git a/ews-java-api.iml b/ews-java-api.iml index e90b18dac..cbb85ce64 100644 --- a/ews-java-api.iml +++ b/ews-java-api.iml @@ -6,17 +6,26 @@ + - - - + + + + - + + + + + + + + - \ No newline at end of file + diff --git a/license.txt b/license.txt index d60bc954c..364ee36bf 100644 --- a/license.txt +++ b/license.txt @@ -1,22 +1,20 @@ -Exchange Web Services Java API +The MIT License +Copyright (c) 2012 Microsoft Corporation -Copyright (c) Microsoft Corporation -All rights reserved. +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: -MIT License +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. -Permission is hereby granted, free of charge, to any person obtaining a copy of this -software and associated documentation files (the ""Software""), to deal in the Software -without restriction, including without limitation the rights to use, copy, modify, merge, -publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons -to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or -substantial portions of the Software. - -THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, -INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR -PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE -FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/pom.xml b/pom.xml index 076eb5d0f..3f03f3bb9 100644 --- a/pom.xml +++ b/pom.xml @@ -1,12 +1,37 @@ + 4.0.0 - com.microsoft.office + com.microsoft.ews-java-api ews-java-api - 1.3-SNAPSHOT + + 2.0-SNAPSHOT http://www.microsoft.com/ @@ -55,59 +80,260 @@ should probably be UTF-8 nowadays. --> UTF-8 1.6 + + + + 1.6 + 2.10.3 + 3.3 + 1.6.5 + 2.4 + 1.14 + 1.1 + + 3.4 + 2.8 + 2.1 + 2.5 + 2.18.1 + + 4.4.1 + 4.4.1 + 1.2 + 2.7 + 3.3.2 + + 4.12 + 1.3 + 1.10.19 + 1.7.12 + 1.1.3 + + + + default-jdk18-profile + + [1.8,) + + + -Xdoclint:none + + + + release-sign-artifacts + + + gpg.passphrase + + + + + + org.apache.maven.plugins + maven-gpg-plugin + ${maven-gpg-plugin.version} + + + sign-artifacts + verify + + sign + + + + + + + + + + + + MIT License + http://opensource.org/licenses/MIT + repo + + + + + https://github.com/OfficeDev/ews-java-api/issues + GitHub Issues + + + + travis + https://travis-ci.org/OfficeDev/ews-java-api + + + + https://github.com/OfficeDev/ews-java-api + scm:git:ssh://git@github.com:OfficeDev/ews-java-api.git + scm:git:ssh://git@github.com:OfficeDev/ews-java-api.git + + + + + ossrh-snapshot + https://oss.sonatype.org/content/repositories/snapshots + + + ossrh + https://oss.sonatype.org/service/local/staging/deploy/maven2 + + + org.apache.httpcomponents httpclient - 4.3.5 + ${httpclient.version} org.apache.httpcomponents httpcore - 4.3.3 + ${httpcore.version} commons-logging commons-logging - 1.2 + ${commons-logging.version} + + + + org.apache.commons + commons-lang3 + ${commons-lang3.version} joda-time joda-time - 2.7 + ${joda-time.version} junit junit - 4.11 + ${junit.version} test org.hamcrest hamcrest-all - 1.3 + ${hamcrest-all.version} + test + + + + org.mockito + mockito-core + ${mockito-core.version} + test + + + + org.slf4j + slf4j-api + ${slf4j.version} + test + + + + ch.qos.logback + logback-classic + ${logback.version} + test + + + + org.slf4j + jcl-over-slf4j + ${slf4j.version} test + + + + org.sonatype.plugins + nexus-staging-maven-plugin + ${nexus-staging-maven-plugin.version} + true + + + true + + org.apache.maven.plugins maven-compiler-plugin + ${maven-compiler-plugin.version} ${project.build.sourceEncoding} ${javaLanguage.version} ${javaLanguage.version} + + org.apache.maven.plugins + maven-javadoc-plugin + ${maven-javadoc-plugin.version} + + true + ${javadoc.doclint.param} + + + + attach-javadocs + + jar + + + + + + org.apache.maven.plugins + maven-source-plugin + ${maven-source-plugin.version} + + + attach-sources + + jar-no-fork + + + + + + org.codehaus.mojo + animal-sniffer-maven-plugin + ${animal-sniffer-maven-plugin.version} + + + org.codehaus.mojo.signature + java16-sun + ${animal-sniffer-maven-plugin.signature.version} + + + + + check-java16-sun + test + + check + + + + + Maven @@ -11,10 +35,8 @@ - - diff --git a/src/test/java/microsoft/exchange/webservices/base/BaseTest.java b/src/test/java/microsoft/exchange/webservices/base/BaseTest.java new file mode 100644 index 000000000..46b07d915 --- /dev/null +++ b/src/test/java/microsoft/exchange/webservices/base/BaseTest.java @@ -0,0 +1,66 @@ +/* + * The MIT License + * Copyright (c) 2012 Microsoft Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +package microsoft.exchange.webservices.base; + +import microsoft.exchange.webservices.data.core.ExchangeService; +import microsoft.exchange.webservices.data.core.ExchangeServiceBase; +import microsoft.exchange.webservices.data.core.request.HttpWebRequest; +import org.junit.BeforeClass; +import org.junit.runner.RunWith; +import org.junit.runners.JUnit4; + +/** + * A base class with "Common-Services" + */ +@RunWith(JUnit4.class) +public abstract class BaseTest { + + /** + * Mock for the ExchangeServiceBase + */ + protected static ExchangeServiceBase exchangeServiceBaseMock; + + /** + * Mock for the ExchangeService + */ + protected static ExchangeService exchangeServiceMock; + + /** + * Setup Mocks + * + * @throws Exception + */ + @BeforeClass + public static final void setUpBaseClass() throws Exception { + // Mock up ExchangeServiceBase + exchangeServiceBaseMock = new ExchangeServiceBase() { + @Override + protected void processHttpErrorResponse(HttpWebRequest httpWebResponse, Exception webException) + throws Exception { + throw webException; + } + }; + exchangeServiceMock = new ExchangeService(); + } +} diff --git a/src/test/java/microsoft/exchange/webservices/data/BaseTest.java b/src/test/java/microsoft/exchange/webservices/data/BaseTest.java deleted file mode 100644 index 8262b8f08..000000000 --- a/src/test/java/microsoft/exchange/webservices/data/BaseTest.java +++ /dev/null @@ -1,49 +0,0 @@ -/************************************************************************** - Exchange Web Services Java API - Copyright (c) Microsoft Corporation - All rights reserved. - MIT License - Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ""Software""), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - **************************************************************************/ -package microsoft.exchange.webservices.data; - -import org.junit.BeforeClass; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; - -/** - * A base class with "Common-Services" - */ -@RunWith(JUnit4.class) -public abstract class BaseTest { - - /** - * Mock for the ExchangeServiceBase - */ - protected static ExchangeServiceBase exchangeServiceBaseMock; - - /** - * Mock for the ExchangeService - */ - protected static ExchangeService exchangeServiceMock; - - /** - * Setup Mocks - * - * @throws Exception - */ - @BeforeClass - public static final void setUpBaseClass() throws Exception { - // Mock up ExchangeServiceBase - exchangeServiceBaseMock = new ExchangeServiceBase() { - @Override - protected void processHttpErrorResponse(HttpWebRequest httpWebResponse, Exception webException) - throws Exception { - throw webException; - } - }; - exchangeServiceMock = new ExchangeService(); - } -} diff --git a/src/test/java/microsoft/exchange/webservices/data/EmailAddressTest.java b/src/test/java/microsoft/exchange/webservices/data/EmailAddressTest.java deleted file mode 100644 index 994a68fed..000000000 --- a/src/test/java/microsoft/exchange/webservices/data/EmailAddressTest.java +++ /dev/null @@ -1,30 +0,0 @@ -/************************************************************************** - Exchange Web Services Java API - Copyright (c) Microsoft Corporation - All rights reserved. - MIT License - Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ""Software""), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - **************************************************************************/ -package microsoft.exchange.webservices.data; - -import org.junit.Assert; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; - -@RunWith(JUnit4.class) -public class EmailAddressTest { - - @Test - public void testEmailAddressToString() { - Assert.assertTrue(EwsUtilities.stringEquals(null, null)); - EmailAddress address = new EmailAddress(); - address.setAddress("ews@ews.com"); - Assert.assertEquals(address.toString(), "ews@ews.com"); - address.setName("ews"); - Assert.assertEquals(address.toString(), "ews "); - } - -} diff --git a/src/test/java/microsoft/exchange/webservices/data/EwsUtilitiesTest.java b/src/test/java/microsoft/exchange/webservices/data/EwsUtilitiesTest.java deleted file mode 100644 index 24e28a332..000000000 --- a/src/test/java/microsoft/exchange/webservices/data/EwsUtilitiesTest.java +++ /dev/null @@ -1,34 +0,0 @@ -/************************************************************************** - Exchange Web Services Java API - Copyright (c) Microsoft Corporation - All rights reserved. - MIT License - Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ""Software""), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - **************************************************************************/ - -package microsoft.exchange.webservices.data; - -import org.junit.Assert; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; - -@RunWith(JUnit4.class) -public class EwsUtilitiesTest { - @Test - public void testGetBuildVersion() { - Assert.assertEquals("Build version must be 0s", "0.0.0.0", EwsUtilities.getBuildVersion()); - } - - @Test - public void testStringEquals() { - Assert.assertTrue(EwsUtilities.stringEquals(null, null)); - Assert.assertTrue(EwsUtilities.stringEquals("x", "x")); - - Assert.assertFalse(EwsUtilities.stringEquals(null, "x")); - Assert.assertFalse(EwsUtilities.stringEquals("x", null)); - Assert.assertFalse(EwsUtilities.stringEquals("x", "X")); - } -} diff --git a/src/test/java/microsoft/exchange/webservices/data/TimeSpanTest.java b/src/test/java/microsoft/exchange/webservices/data/TimeSpanTest.java deleted file mode 100644 index 724a5a57d..000000000 --- a/src/test/java/microsoft/exchange/webservices/data/TimeSpanTest.java +++ /dev/null @@ -1,50 +0,0 @@ -/************************************************************************** - Exchange Web Services Java API - Copyright (c) Microsoft Corporation - All rights reserved. - MIT License - Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ""Software""), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - **************************************************************************/ - -package microsoft.exchange.webservices.data; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; - -import java.util.Calendar; -import java.util.GregorianCalendar; - -/** - * The Class TimeSpanTest. - */ -@RunWith(JUnit4.class) -public class TimeSpanTest extends BaseTest { - - /** - * testTimeSpanToXSDuration - */ - @Test - public void testTimeSpanToXSDuration() { - Calendar calendar = new GregorianCalendar(2008, Calendar.OCTOBER, 10); - timeSpanToXSDuration(calendar); - } - - /** - * Time span to xs duration. - * - * @param timeSpan the time span - * @return the string - */ - public String timeSpanToXSDuration(Calendar timeSpan) { - String offsetStr = (timeSpan.SECOND < 0) ? "-" : ""; - String obj = String.format("%s %s %s %s %s ", offsetStr, Math - .abs(timeSpan.DAY_OF_MONTH), Math.abs(timeSpan.HOUR_OF_DAY), - Math.abs(timeSpan.MINUTE), Math.abs(timeSpan.SECOND) + "." + - Math.abs(timeSpan.MILLISECOND)); - - return obj; - } -} diff --git a/src/test/java/microsoft/exchange/webservices/data/GetUserSettingsRequestTest.java b/src/test/java/microsoft/exchange/webservices/data/autodiscover/request/GetUserSettingsRequestTest.java similarity index 66% rename from src/test/java/microsoft/exchange/webservices/data/GetUserSettingsRequestTest.java rename to src/test/java/microsoft/exchange/webservices/data/autodiscover/request/GetUserSettingsRequestTest.java index d7de1f227..717d88f79 100644 --- a/src/test/java/microsoft/exchange/webservices/data/GetUserSettingsRequestTest.java +++ b/src/test/java/microsoft/exchange/webservices/data/autodiscover/request/GetUserSettingsRequestTest.java @@ -1,16 +1,36 @@ -/************************************************************************** - Exchange Web Services Java API - Copyright (c) Microsoft Corporation - All rights reserved. - MIT License - Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ""Software""), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - **************************************************************************/ +/* + * The MIT License + * Copyright (c) 2012 Microsoft Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ -package microsoft.exchange.webservices.data; +package microsoft.exchange.webservices.data.autodiscover.request; +import microsoft.exchange.webservices.base.BaseTest; +import microsoft.exchange.webservices.data.autodiscover.AutodiscoverService; +import microsoft.exchange.webservices.data.core.EwsServiceXmlWriter; +import microsoft.exchange.webservices.data.core.enumeration.misc.ExchangeVersion; +import microsoft.exchange.webservices.data.core.exception.misc.ArgumentException; +import microsoft.exchange.webservices.data.core.exception.service.local.ServiceValidationException; +import microsoft.exchange.webservices.data.core.exception.service.local.ServiceXmlSerializationException; import org.hamcrest.core.IsNot; import org.hamcrest.core.IsNull; import org.junit.Assert; @@ -20,6 +40,7 @@ Permission is hereby granted, free of charge, to any person obtaining a copy of import org.junit.runners.Parameterized; import javax.xml.stream.XMLStreamException; + import java.io.ByteArrayOutputStream; import java.net.URI; import java.util.ArrayList; @@ -98,11 +119,11 @@ public void setup() { } /** - * Nothing should be writen to the Outputstream if expectPartnerToken is not set + * Nothing should be written to the OutputStream if expectPartnerToken is not set. * * @throws ServiceValidationException - * @throws XMLStreamException - * @throws ServiceXmlSerializationException + * @throws XMLStreamException the XML stream exception + * @throws ServiceXmlSerializationException the service xml serialization exception */ @Test public void testWriteExtraCustomSoapHeadersToXmlWithoutPartnertoken() @@ -116,7 +137,7 @@ public void testWriteExtraCustomSoapHeadersToXmlWithoutPartnertoken() getUserSettingsRequest.writeExtraCustomSoapHeadersToXml( new EwsServiceXmlWriter(exchangeServiceBaseMock, byteArrayOutputStream)); - // nothing should be writen to the outputstream + // nothing should be writyen to the outputstream Assert.assertArrayEquals(byteArrayOutputStream.toByteArray(), new ByteArrayOutputStream().toByteArray()); // HTTP @@ -127,16 +148,16 @@ public void testWriteExtraCustomSoapHeadersToXmlWithoutPartnertoken() getUserSettingsRequest.writeExtraCustomSoapHeadersToXml( new EwsServiceXmlWriter(exchangeServiceBaseMock, byteArrayOutputStream)); - // nothing should be writen to the outputstream + // nothing should be written to the outputstream Assert.assertArrayEquals(byteArrayOutputStream.toByteArray(), new ByteArrayOutputStream().toByteArray()); } /** - * Test if content is added correctly if expectPartnerToken is set + * Test if content is added correctly if expectPartnerToken is set. * * @throws ServiceValidationException - * @throws XMLStreamException - * @throws ServiceXmlSerializationException + * @throws XMLStreamException the XML stream exception + * @throws ServiceXmlSerializationException the service xml serialization exception */ @Test public void testWriteExtraCustomSoapHeadersToXmlWithPartnertoken() @@ -157,11 +178,11 @@ public void testWriteExtraCustomSoapHeadersToXmlWithPartnertoken() } /** - * Initialising a GetUserSettingsRequest with Http should lead to an ServiceValidationException + * Initialising a GetUserSettingsRequest with Http should lead to an ServiceValidationException. * * @throws ServiceValidationException - * @throws XMLStreamException - * @throws ServiceXmlSerializationException + * @throws XMLStreamException the XML stream exception + * @throws ServiceXmlSerializationException the service xml serialization exception */ @Test(expected = ServiceValidationException.class) public void testWriteExtraCustomSoapHeadersToXmlWithPartnertoken2() diff --git a/src/test/java/microsoft/exchange/webservices/data/core/EwsUtilitiesTest.java b/src/test/java/microsoft/exchange/webservices/data/core/EwsUtilitiesTest.java new file mode 100644 index 000000000..b93023cea --- /dev/null +++ b/src/test/java/microsoft/exchange/webservices/data/core/EwsUtilitiesTest.java @@ -0,0 +1,205 @@ +/* + * The MIT License + * Copyright (c) 2012 Microsoft Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +package microsoft.exchange.webservices.data.core; + +import static org.junit.Assert.assertEquals; + +import microsoft.exchange.webservices.data.core.service.folder.CalendarFolder; +import microsoft.exchange.webservices.data.core.service.folder.ContactsFolder; +import microsoft.exchange.webservices.data.core.service.folder.Folder; +import microsoft.exchange.webservices.data.core.service.folder.SearchFolder; +import microsoft.exchange.webservices.data.core.service.folder.TasksFolder; +import microsoft.exchange.webservices.data.core.service.item.Appointment; +import microsoft.exchange.webservices.data.core.service.item.Contact; +import microsoft.exchange.webservices.data.core.service.item.ContactGroup; +import microsoft.exchange.webservices.data.core.service.item.Conversation; +import microsoft.exchange.webservices.data.core.service.item.EmailMessage; +import microsoft.exchange.webservices.data.core.service.item.Item; +import microsoft.exchange.webservices.data.core.service.item.MeetingCancellation; +import microsoft.exchange.webservices.data.core.service.item.MeetingMessage; +import microsoft.exchange.webservices.data.core.service.item.MeetingRequest; +import microsoft.exchange.webservices.data.core.service.item.MeetingResponse; +import microsoft.exchange.webservices.data.core.service.item.PostItem; +import microsoft.exchange.webservices.data.core.service.item.Task; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.JUnit4; + +import java.math.BigDecimal; +import java.math.BigInteger; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; + +@RunWith(JUnit4.class) +public class EwsUtilitiesTest { + + @Test + public void testGetBuildVersion() { + assertEquals("Build version must be 0s", "0.0.0.0", EwsUtilities.getBuildVersion()); + } + + @Test + public void testGetItemTypeFromXmlElementName() { + assertEquals(Task.class, EwsUtilities.getItemTypeFromXmlElementName("Task")); + assertEquals(EmailMessage.class, EwsUtilities.getItemTypeFromXmlElementName("Message")); + assertEquals(PostItem.class, EwsUtilities.getItemTypeFromXmlElementName("PostItem")); + assertEquals(SearchFolder.class, EwsUtilities.getItemTypeFromXmlElementName("SearchFolder")); + assertEquals(Conversation.class, EwsUtilities.getItemTypeFromXmlElementName("Conversation")); + assertEquals(Folder.class, EwsUtilities.getItemTypeFromXmlElementName("Folder")); + assertEquals(CalendarFolder.class, EwsUtilities.getItemTypeFromXmlElementName("CalendarFolder")); + assertEquals(MeetingMessage.class, EwsUtilities.getItemTypeFromXmlElementName("MeetingMessage")); + assertEquals(Contact.class, EwsUtilities.getItemTypeFromXmlElementName("Contact")); + assertEquals(Item.class, EwsUtilities.getItemTypeFromXmlElementName("Item")); + assertEquals(Appointment.class, EwsUtilities.getItemTypeFromXmlElementName("CalendarItem")); + assertEquals(ContactsFolder.class, EwsUtilities.getItemTypeFromXmlElementName("ContactsFolder")); + assertEquals(MeetingRequest.class, EwsUtilities.getItemTypeFromXmlElementName("MeetingRequest")); + assertEquals(TasksFolder.class, EwsUtilities.getItemTypeFromXmlElementName("TasksFolder")); + assertEquals(MeetingCancellation.class, EwsUtilities.getItemTypeFromXmlElementName("MeetingCancellation")); + assertEquals(MeetingResponse.class, EwsUtilities.getItemTypeFromXmlElementName("MeetingResponse")); + assertEquals(ContactGroup.class, EwsUtilities.getItemTypeFromXmlElementName("DistributionList")); + } + + @Test + public void testEwsAssert() { + EwsUtilities.ewsAssert(true, null, null); + + try { + EwsUtilities.ewsAssert(false, "a", "b"); + } catch (final RuntimeException ex) { + assertEquals("[a] b", ex.getMessage()); + } + } + + @Test + public void testParseBigInt() throws ParseException { + assertEquals(BigInteger.TEN, EwsUtilities.parse(BigInteger.class, BigInteger.TEN.toString())); + } + + @Test + public void testParseBigDec() throws ParseException { + assertEquals(BigDecimal.TEN, EwsUtilities.parse(BigDecimal.class, BigDecimal.TEN.toString())); + } + + @Test + public void testParseString() throws ParseException { + final String input = "lorem ipsum dolor sit amet"; + assertEquals(input, EwsUtilities.parse(input.getClass(), input)); + } + + @Test + public void testParseDouble() throws ParseException { + Double input = Double.MAX_VALUE; + assertEquals(input, EwsUtilities.parse(input.getClass(), input.toString())); + + input = 0.0; + assertEquals(input, EwsUtilities.parse(input.getClass(), input.toString())); + + input = Double.MIN_VALUE; + assertEquals(input, EwsUtilities.parse(input.getClass(), input.toString())); + } + + @Test + public void testParseInteger() throws ParseException { + Integer input = Integer.MAX_VALUE; + assertEquals(input, EwsUtilities.parse(input.getClass(), input.toString())); + + input = 0; + assertEquals(input, EwsUtilities.parse(input.getClass(), input.toString())); + + input = Integer.MIN_VALUE; + assertEquals(input, EwsUtilities.parse(input.getClass(), input.toString())); + } + + @Test + public void testParseBoolean() throws ParseException { + Boolean input = Boolean.TRUE; + assertEquals(input, EwsUtilities.parse(input.getClass(), input.toString())); + + input = Boolean.FALSE; + assertEquals(input, EwsUtilities.parse(input.getClass(), input.toString())); + } + + @Test + public void testParseLong() throws ParseException { + Long input = Long.MAX_VALUE; + assertEquals(input, EwsUtilities.parse(input.getClass(), input.toString())); + + input = 0l; + assertEquals(input, EwsUtilities.parse(input.getClass(), input.toString())); + + input = Long.MIN_VALUE; + assertEquals(input, EwsUtilities.parse(input.getClass(), input.toString())); + } + + @Test + public void testParseFloat() throws ParseException { + Float input = Float.MAX_VALUE; + assertEquals(input, EwsUtilities.parse(input.getClass(), input.toString())); + + input = 0f; + assertEquals(input, EwsUtilities.parse(input.getClass(), input.toString())); + + input = Float.MIN_VALUE; + assertEquals(input, EwsUtilities.parse(input.getClass(), input.toString())); + } + + @Test + public void testParseShort() throws ParseException { + Short input = Short.MAX_VALUE; + assertEquals(input, EwsUtilities.parse(input.getClass(), input.toString())); + + input = 0; + assertEquals(input, EwsUtilities.parse(input.getClass(), input.toString())); + + input = Short.MIN_VALUE; + assertEquals(input, EwsUtilities.parse(input.getClass(), input.toString())); + } + + @Test + public void testParseByte() throws ParseException { + Byte input = Byte.MAX_VALUE; + assertEquals(input, EwsUtilities.parse(input.getClass(), input.toString())); + + input = 0; + assertEquals(input, EwsUtilities.parse(input.getClass(), input.toString())); + + input = Byte.MIN_VALUE; + assertEquals(input, EwsUtilities.parse(input.getClass(), input.toString())); + } + + @Test + public void testParseDate() throws ParseException { + final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); + String input = sdf.format(new Date()); + assertEquals(input, EwsUtilities.parse(input.getClass(), input)); + } + + @Test + public void testParseNullValue() throws ParseException { + final String input = null; + assertEquals(input, EwsUtilities.parse(String.class, input)); + } + +} diff --git a/src/test/java/microsoft/exchange/webservices/data/core/EwsXmlReaderTest.java b/src/test/java/microsoft/exchange/webservices/data/core/EwsXmlReaderTest.java new file mode 100644 index 000000000..b84ed4b0a --- /dev/null +++ b/src/test/java/microsoft/exchange/webservices/data/core/EwsXmlReaderTest.java @@ -0,0 +1,102 @@ +/* + * The MIT License + * Copyright (c) 2012 Microsoft Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +package microsoft.exchange.webservices.data.core; + +import static org.mockito.Mockito.doReturn; + +import microsoft.exchange.webservices.data.security.XmlNodeType; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.mockito.MockitoAnnotations; + +import javax.xml.stream.XMLEventReader; +import javax.xml.stream.events.Characters; +import javax.xml.stream.events.XMLEvent; + +import java.io.ByteArrayInputStream; + +public class EwsXmlReaderTest { + + @Mock(name="presentEvent") XMLEvent presentEvent; + @Mock(name="xmlReader") XMLEventReader xmlReader; + @InjectMocks EwsXmlReader impl; + @Mock Characters character; + + @Before + public void setUp() throws Exception { + impl = new EwsXmlReader(new ByteArrayInputStream(("" + + "").getBytes("UTF-8"))); + MockitoAnnotations.initMocks(this); + + } + + @Test + public void testReadValueWhenCharacterDataIsNull() throws Exception { + + doReturn(false).when(presentEvent).isStartElement(); + doReturn(XmlNodeType.CHARACTERS).when(presentEvent).getEventType(); + doReturn(true).when(presentEvent).isCharacters(); + doReturn(character).when(presentEvent).asCharacters(); + + //next event, then end event, then no more event + doReturn(true).doReturn(true).doReturn(false).when(xmlReader).hasNext(); + Characters nextEvent = Mockito.mock(Characters.class); + doReturn(true).when(nextEvent).isCharacters(); + doReturn(XmlNodeType.CHARACTERS).when(nextEvent).getEventType(); + XMLEvent endEvent = Mockito.mock(XMLEvent.class); + doReturn(nextEvent).doReturn(endEvent).when(xmlReader).nextEvent(); + doReturn(true).when(endEvent).isEndElement(); + + impl.readValue(true); //must not throw npe even if character.getData() is null + + Assert.assertNull(character.getData()); + } + + @Test + public void testReadValueWhenCharacterDataIsNullForStartElement() throws Exception { + + doReturn(true).when(presentEvent).isStartElement(); + doReturn(XmlNodeType.CHARACTERS).when(presentEvent).getEventType(); + doReturn(true).when(presentEvent).isCharacters(); + doReturn(character).when(presentEvent).asCharacters(); + + //next event, then end event, then no more event + doReturn(true).doReturn(true).doReturn(false).when(xmlReader).hasNext(); + Characters nextEvent = Mockito.mock(Characters.class); + doReturn(true).when(nextEvent).isCharacters(); + doReturn(XmlNodeType.CHARACTERS).when(nextEvent).getEventType(); + XMLEvent endEvent = Mockito.mock(XMLEvent.class); + doReturn(nextEvent).doReturn(endEvent).when(xmlReader).nextEvent(); + doReturn(true).when(endEvent).isEndElement(); + + impl.readValue(true); //must not throw npe even if character.getData() is null + + Assert.assertNull(character.getData()); + } + +} diff --git a/src/test/java/microsoft/exchange/webservices/data/core/LazyMemberTest.java b/src/test/java/microsoft/exchange/webservices/data/core/LazyMemberTest.java new file mode 100644 index 000000000..a3abf8848 --- /dev/null +++ b/src/test/java/microsoft/exchange/webservices/data/core/LazyMemberTest.java @@ -0,0 +1,95 @@ +/* + * The MIT License + * Copyright (c) 2012 Microsoft Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +package microsoft.exchange.webservices.data.core; + +import static org.junit.Assert.fail; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; + +import org.junit.Before; +import org.junit.Test; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; + +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; + +public class LazyMemberTest { + + LazyMember impl; + + @Mock ILazyMember iLazyMember; + + @Before + public void setUp() throws Exception { + + MockitoAnnotations.initMocks(this); + impl = new LazyMember(iLazyMember); + + doReturn(new Object()).when(iLazyMember).createInstance(); + + } + + @Test public void testGetMember() throws Exception { + impl.getMember(); + impl.getMember(); + + //createInstance has been called only one time + verify(iLazyMember, times(1)).createInstance(); + + } + + @Test public void testGetMemberMultiThread() throws Exception { + final int poolSize = 3; + final CountDownLatch latch = new CountDownLatch(poolSize); + final ExecutorService pool = Executors.newFixedThreadPool(poolSize); + + final Runnable runnableUsingSingleton = new Runnable() { + @Override public void run() { + try { + //just to ensure all threads will try to get the signleton at the same time + latch.await(); + impl.getMember(); + } catch (InterruptedException e) { + fail(e.getMessage()); + } + } + }; + + for(int i = 0; i < poolSize; ++i) { + pool.submit(runnableUsingSingleton); + latch.countDown(); //decrease countdown + } + + pool.shutdown(); + pool.awaitTermination(3, TimeUnit.SECONDS); + + //createInstance has been called only one time + verify(iLazyMember, times(1)).createInstance(); + + } +} diff --git a/src/test/java/microsoft/exchange/webservices/data/core/PropertyBagTest.java b/src/test/java/microsoft/exchange/webservices/data/core/PropertyBagTest.java new file mode 100644 index 000000000..f811fb106 --- /dev/null +++ b/src/test/java/microsoft/exchange/webservices/data/core/PropertyBagTest.java @@ -0,0 +1,66 @@ +/* + * The MIT License + * Copyright (c) 2012 Microsoft Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +package microsoft.exchange.webservices.data.core; + +import microsoft.exchange.webservices.data.core.service.ServiceObject; +import microsoft.exchange.webservices.data.core.service.item.Item; +import microsoft.exchange.webservices.data.core.enumeration.misc.ExchangeVersion; +import microsoft.exchange.webservices.data.core.exception.misc.ArgumentException; +import microsoft.exchange.webservices.data.core.exception.service.local.ServiceObjectPropertyException; +import microsoft.exchange.webservices.data.misc.OutParam; +import microsoft.exchange.webservices.data.property.definition.IntPropertyDefinition; +import microsoft.exchange.webservices.data.property.definition.RecurrencePropertyDefinition; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.JUnit4; + +@RunWith(JUnit4.class) +public class PropertyBagTest { + + /** + * Calling tryGetPropertyType with invalid data. + * Expecting exception + * + * @throws Exception + */ + @Test(expected=ArgumentException.class) + public void tryGetPropertyType() throws Exception{ + PropertyBag pb = createPropertyBag(); + pb.tryGetPropertyType(String.class, new RecurrencePropertyDefinition("test", "none", null, ExchangeVersion.Exchange2010_SP2), new OutParam()); + } + + @Test(expected = ServiceObjectPropertyException.class) + public void testGetObjectFromPropertyDefinition() throws Exception { + PropertyBag pb = createPropertyBag(); + pb.getObjectFromPropertyDefinition(new IntPropertyDefinition("", "none", ExchangeVersion.Exchange2007_SP1)); + } + + + private PropertyBag createPropertyBag() throws Exception { + ExchangeService es = new ExchangeService(); + ServiceObject owner = new Item(es); + return new PropertyBag(owner); + } + +} diff --git a/src/test/java/microsoft/exchange/webservices/data/TaskTest.java b/src/test/java/microsoft/exchange/webservices/data/core/service/items/TaskTest.java similarity index 73% rename from src/test/java/microsoft/exchange/webservices/data/TaskTest.java rename to src/test/java/microsoft/exchange/webservices/data/core/service/items/TaskTest.java index f0fac655e..524b4a07e 100644 --- a/src/test/java/microsoft/exchange/webservices/data/TaskTest.java +++ b/src/test/java/microsoft/exchange/webservices/data/core/service/items/TaskTest.java @@ -1,14 +1,33 @@ -/************************************************************************** - Exchange Web Services Java API - Copyright (c) Microsoft Corporation - All rights reserved. - MIT License - Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ""Software""), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - **************************************************************************/ -package microsoft.exchange.webservices.data; +/* + * The MIT License + * Copyright (c) 2012 Microsoft Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +package microsoft.exchange.webservices.data.core.service.items; + +import static org.junit.Assert.assertThat; +import microsoft.exchange.webservices.base.BaseTest; +import microsoft.exchange.webservices.data.core.service.item.Task; +import microsoft.exchange.webservices.data.core.exception.service.local.ServiceObjectPropertyException; import org.hamcrest.core.IsEqual; import org.hamcrest.core.IsInstanceOf; import org.hamcrest.core.IsNot; @@ -18,8 +37,6 @@ Permission is hereby granted, free of charge, to any person obtaining a copy of import org.junit.runner.RunWith; import org.junit.runners.JUnit4; -import static org.junit.Assert.assertThat; - /** * Testclass for methods of Task */ diff --git a/src/test/java/microsoft/exchange/webservices/data/credential/WSSecurityBasedCredentialsTest.java b/src/test/java/microsoft/exchange/webservices/data/credential/WSSecurityBasedCredentialsTest.java new file mode 100644 index 000000000..317e0fddd --- /dev/null +++ b/src/test/java/microsoft/exchange/webservices/data/credential/WSSecurityBasedCredentialsTest.java @@ -0,0 +1,103 @@ +/* + * The MIT License + * Copyright (c) 2012 Microsoft Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +package microsoft.exchange.webservices.data.credential; + +import static org.hamcrest.CoreMatchers.allOf; +import static org.hamcrest.CoreMatchers.not; +import static org.hamcrest.core.StringContains.containsString; +import static org.hamcrest.text.IsEmptyString.isEmptyOrNullString; +import static org.junit.Assert.assertThat; + +import microsoft.exchange.webservices.data.core.EwsUtilities; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.JUnit4; + +import javax.xml.stream.XMLOutputFactory; +import javax.xml.stream.XMLStreamException; +import javax.xml.stream.XMLStreamWriter; + +import java.io.IOException; +import java.io.StringWriter; +import java.io.Writer; + +@RunWith(JUnit4.class) public class WSSecurityBasedCredentialsTest { + + private static final Log LOG = LogFactory.getLog(WSSecurityBasedCredentialsTest.class); + + private WSSecurityBasedCredentials wsSecurityBasedCredentials; + private XMLStreamWriter xmlStreamWriter = null; + private Writer stringWriter = null; + + @Before public void initTest() throws XMLStreamException { + // testObject + wsSecurityBasedCredentials = new WSSecurityBasedCredentials() { + + }; + + // testContext + stringWriter = new StringWriter(); + xmlStreamWriter = XMLOutputFactory.newInstance().createXMLStreamWriter(stringWriter); + } + + @After public void tearDown() { + if (stringWriter != null) { + try { + stringWriter.close(); + } catch (IOException e) { + LOG.warn(e.getMessage(), e); + } + } + if (xmlStreamWriter != null) { + try { + xmlStreamWriter.close(); + } catch (XMLStreamException e) { + LOG.warn(e.getMessage(), e); + } + } + } + + @Test public void testEmitExtraSoapHeaderNamespaceAliases() throws XMLStreamException, IOException { + xmlStreamWriter.writeStartDocument(); + xmlStreamWriter.writeStartElement("test"); + + wsSecurityBasedCredentials.emitExtraSoapHeaderNamespaceAliases(xmlStreamWriter); + + xmlStreamWriter.writeEndElement(); + xmlStreamWriter.writeEndDocument(); + xmlStreamWriter.flush(); + + assertThat(stringWriter.toString(), + allOf(not(isEmptyOrNullString()), containsString("xmlns"), containsString("test"), + containsString(EwsUtilities.WSSecuritySecExtNamespacePrefix), + containsString(EwsUtilities.WSAddressingNamespacePrefix), + containsString(EwsUtilities.WSSecuritySecExtNamespace), + containsString(EwsUtilities.WSAddressingNamespace))); + } + +} diff --git a/src/test/java/microsoft/exchange/webservices/data/exception/InvalidOrUnsupportedTimeZoneDefinitionExceptionTest.java b/src/test/java/microsoft/exchange/webservices/data/exception/InvalidOrUnsupportedTimeZoneDefinitionExceptionTest.java new file mode 100644 index 000000000..93d4f8c2b --- /dev/null +++ b/src/test/java/microsoft/exchange/webservices/data/exception/InvalidOrUnsupportedTimeZoneDefinitionExceptionTest.java @@ -0,0 +1,65 @@ +/* + * The MIT License + * Copyright (c) 2012 Microsoft Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +package microsoft.exchange.webservices.data.exception; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertSame; + +import microsoft.exchange.webservices.data.core.exception.service.local.InvalidOrUnsupportedTimeZoneDefinitionException; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.JUnit4; + +@RunWith(JUnit4.class) +public class InvalidOrUnsupportedTimeZoneDefinitionExceptionTest { + + private final String msg = "some message"; + private final Exception rootCause = new Exception(); + + + @Test public void testInvalidOrUnsupportedTimeZoneDefinitionExceptionStringException() { + InvalidOrUnsupportedTimeZoneDefinitionException + impl = + new InvalidOrUnsupportedTimeZoneDefinitionException(msg, rootCause); + assertEquals(msg, impl.getMessage()); + assertSame(rootCause, impl.getCause()); + } + + @Test public void testInvalidOrUnsupportedTimeZoneDefinitionExceptionString() { + InvalidOrUnsupportedTimeZoneDefinitionException + impl = + new InvalidOrUnsupportedTimeZoneDefinitionException(msg); + assertEquals(msg, impl.getMessage()); + assertNull(impl.getCause()); + } + + @Test public void testInvalidOrUnsupportedTimeZoneDefinitionException() { + InvalidOrUnsupportedTimeZoneDefinitionException + impl = + new InvalidOrUnsupportedTimeZoneDefinitionException(); + assertNull(impl.getMessage()); + assertNull(impl.getCause()); + } +} diff --git a/src/test/java/microsoft/exchange/webservices/data/exception/MaximumRedirectionHopsExceededExceptionTest.java b/src/test/java/microsoft/exchange/webservices/data/exception/MaximumRedirectionHopsExceededExceptionTest.java new file mode 100644 index 000000000..5ae191821 --- /dev/null +++ b/src/test/java/microsoft/exchange/webservices/data/exception/MaximumRedirectionHopsExceededExceptionTest.java @@ -0,0 +1,65 @@ +/* + * The MIT License + * Copyright (c) 2012 Microsoft Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +package microsoft.exchange.webservices.data.exception; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertSame; + +import microsoft.exchange.webservices.data.autodiscover.exception.MaximumRedirectionHopsExceededException; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.JUnit4; + +@RunWith(JUnit4.class) +public class MaximumRedirectionHopsExceededExceptionTest { + + private final String msg = "some message"; + private final Exception rootCause = new Exception(); + + + @Test public void testMaximumRedirectionHopsExceededException() { + + MaximumRedirectionHopsExceededException impl = new MaximumRedirectionHopsExceededException(); + assertNull(impl.getMessage()); + assertNull(impl.getCause()); + } + + @Test public void testMaximumRedirectionHopsExceededExceptionString() { + + MaximumRedirectionHopsExceededException impl = new MaximumRedirectionHopsExceededException(msg); + assertEquals(msg, impl.getMessage()); + assertNull(impl.getCause()); + } + + @Test public void testMaximumRedirectionHopsExceededExceptionStringException() { + + MaximumRedirectionHopsExceededException + impl = + new MaximumRedirectionHopsExceededException(msg, rootCause); + assertEquals(msg, impl.getMessage()); + assertSame(rootCause, impl.getCause()); + } + +} diff --git a/src/test/java/microsoft/exchange/webservices/data/misc/IFunctionsTest.java b/src/test/java/microsoft/exchange/webservices/data/misc/IFunctionsTest.java new file mode 100644 index 000000000..4ee453423 --- /dev/null +++ b/src/test/java/microsoft/exchange/webservices/data/misc/IFunctionsTest.java @@ -0,0 +1,104 @@ +/* + * The MIT License + * Copyright (c) 2012 Microsoft Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +package microsoft.exchange.webservices.data.misc; + +import microsoft.exchange.webservices.data.core.EwsUtilities; +import org.apache.commons.codec.binary.Base64; +import org.apache.commons.codec.binary.StringUtils; +import org.junit.Assert; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.JUnit4; + +import java.util.Date; +import java.util.UUID; + +@RunWith(JUnit4.class) +public class IFunctionsTest { + + @Test + public void testToString() { + final IFunctions.ToString f = IFunctions.ToString.INSTANCE; + Assert.assertEquals("null", f.func(null)); + Assert.assertEquals("", f.func("")); + Assert.assertEquals("1", f.func(1)); + } + + @Test + public void testToBoolean() { + final IFunctions.ToBoolean f = IFunctions.ToBoolean.INSTANCE; + Assert.assertFalse(f.func(null)); + Assert.assertFalse(f.func("")); + Assert.assertFalse(f.func("false")); + Assert.assertTrue(f.func("true")); + } + + @Test + public void testStringToObject() { + final IFunctions.StringToObject f = IFunctions.StringToObject.INSTANCE; + Assert.assertNull(f.func(null)); + Assert.assertEquals("", f.func("")); + } + + @Test + public void testToUUID() { + final IFunctions.ToUUID f = IFunctions.ToUUID.INSTANCE; + try { + Assert.assertNull(f.func(null)); + } catch (final Throwable ex) { + final UUID uuid = UUID.randomUUID(); + Assert.assertEquals(uuid, f.func(uuid.toString())); + } + } + + @Test + public void testBase64Decoder() { + final String value = "123"; + final IFunctions.Base64Decoder f = IFunctions.Base64Decoder.INSTANCE; + Assert.assertArrayEquals(Base64.decodeBase64(value), (byte[]) f.func(value)); + } + + @Test + public void testBase64Encoder() { + final byte[] value = StringUtils.getBytesUtf8("123"); + final IFunctions.Base64Encoder f = IFunctions.Base64Encoder.INSTANCE; + Assert.assertEquals(Base64.encodeBase64String(value), f.func(value)); + } + + @Test + public void testToLowerCase() { + final IFunctions.ToLowerCase f = IFunctions.ToLowerCase.INSTANCE; + Assert.assertNull(f.func(null)); + Assert.assertEquals("", f.func("")); + Assert.assertEquals("abc", f.func("AbC")); + } + + @Test + public void testDateTimeToXSDateTime() { + final IFunctions.DateTimeToXSDateTime f = IFunctions.DateTimeToXSDateTime.INSTANCE; + final Date value = new Date(); + Assert.assertEquals(EwsUtilities.dateTimeToXSDateTime(value), f.func(value)); + } + +} diff --git a/src/test/java/microsoft/exchange/webservices/data/misc/TimeSpanTest.java b/src/test/java/microsoft/exchange/webservices/data/misc/TimeSpanTest.java new file mode 100644 index 000000000..22eb337c9 --- /dev/null +++ b/src/test/java/microsoft/exchange/webservices/data/misc/TimeSpanTest.java @@ -0,0 +1,64 @@ +/* + * The MIT License + * Copyright (c) 2012 Microsoft Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +package microsoft.exchange.webservices.data.misc; + +import microsoft.exchange.webservices.base.BaseTest; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.JUnit4; + +import java.util.Calendar; +import java.util.GregorianCalendar; + +/** + * The Class TimeSpanTest. + */ +@RunWith(JUnit4.class) +public class TimeSpanTest extends BaseTest { + + /** + * testTimeSpanToXSDuration + */ + @Test + public void testTimeSpanToXSDuration() { + Calendar calendar = new GregorianCalendar(2008, Calendar.OCTOBER, 10); + timeSpanToXSDuration(calendar); + } + + /** + * Time span to xs duration. + * + * @param timeSpan the time span + * @return the string + */ + public String timeSpanToXSDuration(Calendar timeSpan) { + String offsetStr = (timeSpan.SECOND < 0) ? "-" : ""; + String obj = String.format("%s %s %s %s %s ", offsetStr, Math + .abs(timeSpan.DAY_OF_MONTH), Math.abs(timeSpan.HOUR_OF_DAY), + Math.abs(timeSpan.MINUTE), Math.abs(timeSpan.SECOND) + "." + + Math.abs(timeSpan.MILLISECOND)); + + return obj; + } +} diff --git a/src/test/java/microsoft/exchange/webservices/data/property/complex/ComplexPropertyCollectionTest.java b/src/test/java/microsoft/exchange/webservices/data/property/complex/ComplexPropertyCollectionTest.java new file mode 100644 index 000000000..90f11b5ae --- /dev/null +++ b/src/test/java/microsoft/exchange/webservices/data/property/complex/ComplexPropertyCollectionTest.java @@ -0,0 +1,72 @@ +/* + * The MIT License + * Copyright (c) 2012 Microsoft Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +package microsoft.exchange.webservices.data.property.complex; + +import org.junit.Assert; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.JUnit4; + +import java.util.List; + + +@RunWith(JUnit4.class) +public class ComplexPropertyCollectionTest { + + @Test + public void testComplexPropertyChangedPositive() { + final ComplexPropertyCollection collection = createFakeComplexPropertyCollection(); + + final ComplexProperty property = createFakeComplexProperty(); + collection.complexPropertyChanged(property); + + final List modifiedItems = collection.getModifiedItems(); + Assert.assertTrue(collection.getAddedItems().isEmpty()); + Assert.assertTrue(modifiedItems.contains(property)); + Assert.assertEquals(1, modifiedItems.size()); + } + + @Test(expected = RuntimeException.class) + public void testComplexPropertyChangedNegative() { + final ComplexPropertyCollection collection = createFakeComplexPropertyCollection(); + collection.complexPropertyChanged(null); + } + + + private ComplexProperty createFakeComplexProperty() { + return new ComplexProperty() {}; + } + + private ComplexPropertyCollection createFakeComplexPropertyCollection() { + return new ComplexPropertyCollection() { + @Override protected ComplexProperty createComplexProperty(final String xmlElementName) { + return null; + } + @Override protected String getCollectionItemXmlElementName(final ComplexProperty complexProperty) { + return null; + } + }; + } + +} diff --git a/src/test/java/microsoft/exchange/webservices/data/property/complex/EmailAddressTest.java b/src/test/java/microsoft/exchange/webservices/data/property/complex/EmailAddressTest.java new file mode 100644 index 000000000..e696e4ba2 --- /dev/null +++ b/src/test/java/microsoft/exchange/webservices/data/property/complex/EmailAddressTest.java @@ -0,0 +1,43 @@ +/* + * The MIT License + * Copyright (c) 2012 Microsoft Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +package microsoft.exchange.webservices.data.property.complex; + +import org.junit.Assert; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.JUnit4; + +@RunWith(JUnit4.class) +public class EmailAddressTest { + + @Test + public void testEmailAddressToString() { + EmailAddress address = new EmailAddress(); + address.setAddress("ews@ews.com"); + Assert.assertEquals(address.toString(), "ews@ews.com"); + address.setName("ews"); + Assert.assertEquals(address.toString(), "ews "); + } + +} diff --git a/src/test/java/microsoft/exchange/webservices/data/property/complex/ExtendedPropertyCollectionTest.java b/src/test/java/microsoft/exchange/webservices/data/property/complex/ExtendedPropertyCollectionTest.java new file mode 100644 index 000000000..436b5e356 --- /dev/null +++ b/src/test/java/microsoft/exchange/webservices/data/property/complex/ExtendedPropertyCollectionTest.java @@ -0,0 +1,77 @@ +/* + * The MIT License + * Copyright (c) 2012 Microsoft Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +package microsoft.exchange.webservices.data.property.complex; + +import java.util.ArrayList; + +import microsoft.exchange.webservices.data.core.enumeration.property.MapiPropertyType; +import org.junit.Assert; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.JUnit4; + +import microsoft.exchange.webservices.data.core.exception.misc.ArgumentException; +import microsoft.exchange.webservices.data.misc.OutParam; +import microsoft.exchange.webservices.data.property.definition.ExtendedPropertyDefinition; + +@RunWith(JUnit4.class) +public class ExtendedPropertyCollectionTest { + + /** + * Calling tryGetValue with invalid input + * expecting exception. + * + * @throws Exception + */ + @Test(expected=ArgumentException.class) + public void tryGetValue() throws Exception{ + ExtendedPropertyCollection epc = new ExtendedPropertyCollection(); + epc.setExtendedProperty(new ExtendedPropertyDefinition(), new ArrayList()); + Class cls = Long.class; + // By default - type of ExtendedPropertyDefinition will be String + ExtendedPropertyDefinition propertyDefinition = new ExtendedPropertyDefinition(); + + OutParam propertyValueOut = new OutParam(); + // It should fail here due to incompatibility between default String and passed Long + Assert.assertTrue(epc.tryGetValue(cls, propertyDefinition, propertyValueOut)); + } + + /** + * Calling tryGetValue with non-default input + * expecting positive result. + * + */ + @Test() + public void tryGetValueWithProperInput() throws Exception{ + ExtendedPropertyCollection epc = new ExtendedPropertyCollection(); + Class cls = Integer.class; + Integer testValue = new Integer(456); + ExtendedPropertyDefinition propertyDefinition = new ExtendedPropertyDefinition(123, MapiPropertyType.Integer); + epc.setExtendedProperty(propertyDefinition, testValue); + + OutParam propertyValueOut = new OutParam(); + Assert.assertTrue(epc.tryGetValue(cls, propertyDefinition, propertyValueOut)); + Assert.assertTrue(propertyValueOut.getParam().equals(testValue)); + } +} diff --git a/src/test/java/microsoft/exchange/webservices/data/property/complex/OlsonTimeZoneTest.java b/src/test/java/microsoft/exchange/webservices/data/property/complex/OlsonTimeZoneTest.java new file mode 100644 index 000000000..cc183304d --- /dev/null +++ b/src/test/java/microsoft/exchange/webservices/data/property/complex/OlsonTimeZoneTest.java @@ -0,0 +1,50 @@ +/* + * The MIT License + * Copyright (c) 2012 Microsoft Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +package microsoft.exchange.webservices.data.property.complex; + +import microsoft.exchange.webservices.data.property.complex.time.OlsonTimeZoneDefinition; +import org.junit.Assert; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.JUnit4; + +import java.util.TimeZone; + +@RunWith(JUnit4.class) +public class OlsonTimeZoneTest { + + @Test + public void testOlsonTimeZoneConversion() { + final String[] timeZoneIds = TimeZone.getAvailableIDs(); + for (String timeZoneId : timeZoneIds) { + if(timeZoneId.startsWith("America") || timeZoneId.startsWith("Europe") || timeZoneId.startsWith("Africa")) { + //there are a few timezones that are out of date or don't have direct microsoft mappings according to the Unicode source we use so we will only test Americas, Europe and Africa + final OlsonTimeZoneDefinition olsonTimeZone = new OlsonTimeZoneDefinition(TimeZone.getTimeZone(timeZoneId)); + Assert.assertNotNull(olsonTimeZone.getId()); + } + + } + + } +} diff --git a/src/test/java/microsoft/exchange/webservices/data/property/complex/UniqueBodyTest.java b/src/test/java/microsoft/exchange/webservices/data/property/complex/UniqueBodyTest.java new file mode 100644 index 000000000..02895f730 --- /dev/null +++ b/src/test/java/microsoft/exchange/webservices/data/property/complex/UniqueBodyTest.java @@ -0,0 +1,93 @@ +/* + * The MIT License + * Copyright (c) 2012 Microsoft Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +package microsoft.exchange.webservices.data.property.complex; + +import static org.junit.Assert.assertEquals; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.verify; + +import microsoft.exchange.webservices.data.core.EwsServiceXmlReader; +import microsoft.exchange.webservices.data.core.EwsServiceXmlWriter; +import microsoft.exchange.webservices.data.core.XmlAttributeNames; +import microsoft.exchange.webservices.data.core.XmlElementNames; +import microsoft.exchange.webservices.data.core.enumeration.property.BodyType; +import org.junit.Before; +import org.junit.Test; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; + +public class UniqueBodyTest { + + UniqueBody impl; + + final String text = "test"; + + final BodyType bodyType = BodyType.HTML; + + @Mock EwsServiceXmlReader reader; + @Mock EwsServiceXmlWriter writer; + + + @Before public void setUp() throws Exception { + impl = new UniqueBody(); + MockitoAnnotations.initMocks(this); + } + + @Test public void testReadAttributesFromXml() throws Exception { + doReturn(BodyType.Text).when(reader).readAttributeValue(BodyType.class, XmlAttributeNames.BodyType); + impl.readAttributesFromXml(reader); + assertEquals(BodyType.Text, impl.getBodyType()); + } + + @Test public void testReadTextValueFromXml() throws Exception { + setTextToImpl(text); + assertEquals(text, impl.getText()); + assertEquals(text, UniqueBody.getStringFromUniqueBody(impl)); + } + + @Test public void testWriteAttributesToXml() throws Exception { + impl.writeAttributesToXml(writer); + verify(writer).writeAttributeValue(XmlAttributeNames.BodyType, impl.getBodyType()); + } + + @Test public void testWriteElementsToXml() throws Exception { + impl.writeElementsToXml(writer); + verify(writer, never()).writeValue(this.text, XmlElementNames.UniqueBody); + setTextToImpl(text); + impl.writeElementsToXml(writer); + verify(writer).writeValue(text, XmlElementNames.UniqueBody); + } + + @Test public void testToString() throws Exception { + assertEquals("", impl.toString()); + setTextToImpl(text); + assertEquals(text, impl.toString()); + } + + private void setTextToImpl(String myText) throws Exception { + doReturn(myText).when(reader).readValue(); + impl.readTextValueFromXml(reader); + } +} \ No newline at end of file diff --git a/src/test/java/microsoft/exchange/webservices/data/UserConfigurationDictionaryTest.java b/src/test/java/microsoft/exchange/webservices/data/property/complex/UserConfigurationDictionaryTest.java similarity index 79% rename from src/test/java/microsoft/exchange/webservices/data/UserConfigurationDictionaryTest.java rename to src/test/java/microsoft/exchange/webservices/data/property/complex/UserConfigurationDictionaryTest.java index e51211d6a..c0bfaa0ba 100644 --- a/src/test/java/microsoft/exchange/webservices/data/UserConfigurationDictionaryTest.java +++ b/src/test/java/microsoft/exchange/webservices/data/property/complex/UserConfigurationDictionaryTest.java @@ -1,14 +1,31 @@ -/************************************************************************** - Exchange Web Services Java API - Copyright (c) Microsoft Corporation - All rights reserved. - MIT License - Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ""Software""), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - **************************************************************************/ -package microsoft.exchange.webservices.data; +/* + * The MIT License + * Copyright (c) 2012 Microsoft Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +package microsoft.exchange.webservices.data.property.complex; +import microsoft.exchange.webservices.base.BaseTest; +import microsoft.exchange.webservices.data.core.EwsServiceXmlWriter; +import microsoft.exchange.webservices.data.core.exception.service.local.ServiceLocalException; import org.junit.Assert; import org.junit.Before; import org.junit.Test; @@ -43,7 +60,7 @@ public void setup() throws Exception { */ @Test(expected = ServiceLocalException.class) public void testAddUnsupportedElementsToDictionary() throws Exception { - this.userConfigurationDictionary.addElement("someDouble", (Double) 1.0); + this.userConfigurationDictionary.addElement("someDouble", 1.0); } /** diff --git a/src/test/java/microsoft/exchange/webservices/data/property/definition/ByteArrayPropertyDefinitionTest.java b/src/test/java/microsoft/exchange/webservices/data/property/definition/ByteArrayPropertyDefinitionTest.java new file mode 100644 index 000000000..75887ca35 --- /dev/null +++ b/src/test/java/microsoft/exchange/webservices/data/property/definition/ByteArrayPropertyDefinitionTest.java @@ -0,0 +1,69 @@ +/* + * The MIT License + * Copyright (c) 2012 Microsoft Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +package microsoft.exchange.webservices.data.property.definition; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +import microsoft.exchange.webservices.data.core.enumeration.misc.ExchangeVersion; +import microsoft.exchange.webservices.data.core.enumeration.property.PropertyDefinitionFlags; +import org.apache.commons.codec.binary.Base64; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.JUnit4; + +import java.util.EnumSet; + +@RunWith(JUnit4.class) +public class ByteArrayPropertyDefinitionTest { + + private ByteArrayPropertyDefinition testObject; + + private static final String TEST_STRING = "Lorem ipsum dolor sit amet"; + private static final String BASE64_ENCODEDSTRING = Base64.encodeBase64String(TEST_STRING.getBytes()); + + /** + * setup + */ + @Before + public void init(){ + this.testObject = + new ByteArrayPropertyDefinition("myTestObject", "myTestUri", + EnumSet.of(PropertyDefinitionFlags.None), + ExchangeVersion.Exchange2010_SP2); + } + + /** + * Test for ByteArrayPropertyDefinition.toString() + * This Test should guarantee that toString() byte encoding works + */ + @Test + public void testToString(){ + String result = testObject.toString(TEST_STRING.getBytes()); + assertNotNull(result); + assertEquals(BASE64_ENCODEDSTRING, result); + } + +} diff --git a/src/test/java/microsoft/exchange/webservices/data/sync/ChangeCollectionTest.java b/src/test/java/microsoft/exchange/webservices/data/sync/ChangeCollectionTest.java new file mode 100644 index 000000000..0c9e15eae --- /dev/null +++ b/src/test/java/microsoft/exchange/webservices/data/sync/ChangeCollectionTest.java @@ -0,0 +1,112 @@ +/* + * The MIT License + * Copyright (c) 2012 Microsoft Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +package microsoft.exchange.webservices.data.sync; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertSame; +import static org.junit.Assert.assertTrue; +import static org.mockito.Mockito.verify; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.runners.MockitoJUnitRunner; + +import java.util.List; + +@RunWith(MockitoJUnitRunner.class) public class ChangeCollectionTest { + + private static final String STATE = "SOME_STATE"; + @Mock Change change0; + @Mock Change change1; + @Mock Change change2; + + ChangeCollection impl; + @InjectMocks ChangeCollection spiedImpl; + + @Mock(name = "changes") List innerList; + + + @Before public void setUp() throws Exception { + + impl = new ChangeCollection(); + } + + @Test public void testAdd() throws Exception { + + assertEquals(impl.getCount(), 0); + impl.add(change0); + assertEquals(1, impl.getCount()); + impl.add(change1); + assertEquals(2, impl.getCount()); + + } + + + @Test public void testGetChangeAtIndex() throws Exception { + assertEquals(impl.getCount(), 0); + impl.add(change0); + impl.add(change1); + impl.add(change2); + assertSame(change0, impl.getChangeAtIndex(0)); + assertSame(change1, impl.getChangeAtIndex(1)); + assertSame(change2, impl.getChangeAtIndex(2)); + + } + + @Test(expected = IndexOutOfBoundsException.class) + public void testGetChangeAtIndexThrowsIndexOutOfBoundException() throws Exception { + assertEquals(impl.getCount(), 0); + impl.add(change0); + impl.add(change1); + impl.add(change2); + + impl.getChangeAtIndex(99); + } + + @Test public void testGetSyncState() throws Exception { + + impl.setSyncState(STATE); + assertSame(STATE, impl.getSyncState()); + + } + + + @Test public void testGetMoreChangesAvailable() throws Exception { + impl.setMoreChangesAvailable(true); + assertTrue(impl.getMoreChangesAvailable()); + + impl.setMoreChangesAvailable(false); + assertFalse(impl.getMoreChangesAvailable()); + } + + @Test public void testIterator() throws Exception { + spiedImpl.iterator(); + + verify(innerList).iterator(); + } +} diff --git a/src/test/java/microsoft/exchange/webservices/data/util/DateTimeParserTest.java b/src/test/java/microsoft/exchange/webservices/data/util/DateTimeUtilsTest.java similarity index 69% rename from src/test/java/microsoft/exchange/webservices/data/util/DateTimeParserTest.java rename to src/test/java/microsoft/exchange/webservices/data/util/DateTimeUtilsTest.java index 611d34061..c04bd4845 100644 --- a/src/test/java/microsoft/exchange/webservices/data/util/DateTimeParserTest.java +++ b/src/test/java/microsoft/exchange/webservices/data/util/DateTimeUtilsTest.java @@ -1,16 +1,31 @@ -/************************************************************************** - Exchange Web Services Java API - Copyright (c) Microsoft Corporation - All rights reserved. - MIT License - Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ""Software""), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - **************************************************************************/ +/* + * The MIT License + * Copyright (c) 2012 Microsoft Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ package microsoft.exchange.webservices.data.util; -import org.junit.Before; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; + import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; @@ -20,33 +35,21 @@ Permission is hereby granted, free of charge, to any person obtaining a copy of import java.util.GregorianCalendar; import java.util.TimeZone; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNull; - @RunWith(JUnit4.class) -public class DateTimeParserTest { - - private DateTimeParser parser; - - @Before - public void setUp() { - parser = new DateTimeParser(); - } - +public class DateTimeUtilsTest { - - // Tests for DateTimeParser.convertDateTimeStringToDate() + // Tests for DateTimeUtils.convertDateTimeStringToDate() @Test public void testDateTimeEmpty() { - assertNull(parser.convertDateTimeStringToDate(null)); - assertNull(parser.convertDateTimeStringToDate("")); + assertNull(DateTimeUtils.convertDateTimeStringToDate(null)); + assertNull(DateTimeUtils.convertDateTimeStringToDate("")); } @Test public void testDateTimeZulu() { String dateString = "2015-01-08T10:11:12Z"; - Date parsed = parser.convertDateTimeStringToDate(dateString); + Date parsed = DateTimeUtils.convertDateTimeStringToDate(dateString); Calendar calendar = new GregorianCalendar(TimeZone.getTimeZone("UTC")); calendar.setTime(parsed); assertEquals(2015, calendar.get(Calendar.YEAR)); @@ -60,7 +63,7 @@ public void testDateTimeZulu() { @Test public void testDateTimeZuluLowerZ() { String dateString = "2015-01-08T10:11:12z"; - Date parsed = parser.convertDateTimeStringToDate(dateString); + Date parsed = DateTimeUtils.convertDateTimeStringToDate(dateString); Calendar calendar = new GregorianCalendar(TimeZone.getTimeZone("UTC")); calendar.setTime(parsed); assertEquals(2015, calendar.get(Calendar.YEAR)); @@ -74,7 +77,7 @@ public void testDateTimeZuluLowerZ() { @Test public void testDateTimeZuluWithPrecision() { String dateString = "2015-01-08T10:11:12.123Z"; - Date parsed = parser.convertDateTimeStringToDate(dateString); + Date parsed = DateTimeUtils.convertDateTimeStringToDate(dateString); Calendar calendar = new GregorianCalendar(TimeZone.getTimeZone("UTC")); calendar.setTime(parsed); assertEquals(2015, calendar.get(Calendar.YEAR)); @@ -85,10 +88,24 @@ public void testDateTimeZuluWithPrecision() { assertEquals(12, calendar.get(Calendar.SECOND)); } + @Test + public void testDateTimeZuluWithMilliseconds() { + String dateString = "9999-12-30T23:59:59.9999999Z"; + Date parsed = DateTimeUtils.convertDateTimeStringToDate(dateString); + Calendar calendar = new GregorianCalendar(TimeZone.getTimeZone("UTC")); + calendar.setTime(parsed); + assertEquals(9999, calendar.get(Calendar.YEAR)); + assertEquals(11, calendar.get(Calendar.MONTH)); + assertEquals(30, calendar.get(Calendar.DATE)); + assertEquals(23, calendar.get(Calendar.HOUR_OF_DAY)); + assertEquals(59, calendar.get(Calendar.MINUTE)); + assertEquals(59, calendar.get(Calendar.SECOND)); + } + @Test public void testDateTimeWithTimeZone() { String dateString = "2015-01-08T10:11:12+0200"; - Date parsed = parser.convertDateTimeStringToDate(dateString); + Date parsed = DateTimeUtils.convertDateTimeStringToDate(dateString); Calendar calendar = new GregorianCalendar(TimeZone.getTimeZone("UTC")); calendar.setTime(parsed); assertEquals(2015, calendar.get(Calendar.YEAR)); @@ -102,7 +119,7 @@ public void testDateTimeWithTimeZone() { @Test public void testDateTimeWithTimeZoneWithColon() { String dateString = "2015-01-08T10:11:12-02:00"; - Date parsed = parser.convertDateTimeStringToDate(dateString); + Date parsed = DateTimeUtils.convertDateTimeStringToDate(dateString); Calendar calendar = new GregorianCalendar(TimeZone.getTimeZone("UTC")); calendar.setTime(parsed); assertEquals(2015, calendar.get(Calendar.YEAR)); @@ -116,7 +133,7 @@ public void testDateTimeWithTimeZoneWithColon() { @Test public void testDateTime() { String dateString = "2015-01-08T10:11:12"; - Date parsed = parser.convertDateTimeStringToDate(dateString); + Date parsed = DateTimeUtils.convertDateTimeStringToDate(dateString); Calendar calendar = new GregorianCalendar(TimeZone.getTimeZone("UTC")); calendar.setTime(parsed); assertEquals(2015, calendar.get(Calendar.YEAR)); @@ -130,7 +147,7 @@ public void testDateTime() { @Test public void testDateZulu() { String dateString = "2015-01-08Z"; - Date parsed = parser.convertDateTimeStringToDate(dateString); + Date parsed = DateTimeUtils.convertDateTimeStringToDate(dateString); Calendar calendar = new GregorianCalendar(TimeZone.getTimeZone("UTC")); calendar.setTime(parsed); assertEquals(2015, calendar.get(Calendar.YEAR)); @@ -141,7 +158,7 @@ public void testDateZulu() { @Test public void testDateOnly() { String dateString = "2015-01-08"; - Date parsed = parser.convertDateTimeStringToDate(dateString); + Date parsed = DateTimeUtils.convertDateTimeStringToDate(dateString); Calendar calendar = new GregorianCalendar(TimeZone.getTimeZone("UTC")); calendar.setTime(parsed); assertEquals(2015, calendar.get(Calendar.YEAR)); @@ -151,18 +168,18 @@ public void testDateOnly() { - // Tests for DateTimeParser.convertDateStringToDate() + // Tests for DateTimeUtils.convertDateStringToDate() @Test public void testDateOnlyEmpty() { - assertNull(parser.convertDateStringToDate(null)); - assertNull(parser.convertDateStringToDate("")); + assertNull(DateTimeUtils.convertDateStringToDate(null)); + assertNull(DateTimeUtils.convertDateStringToDate("")); } @Test public void testDateOnlyZulu() { String dateString = "2015-01-08Z"; - Date parsed = parser.convertDateStringToDate(dateString); + Date parsed = DateTimeUtils.convertDateStringToDate(dateString); Calendar calendar = new GregorianCalendar(TimeZone.getTimeZone("UTC")); calendar.setTime(parsed); assertEquals(2015, calendar.get(Calendar.YEAR)); @@ -176,7 +193,7 @@ public void testDateOnlyZulu() { @Test public void testDateOnlyZuluWithLowerZ() { String dateString = "2015-01-08z"; - Date parsed = parser.convertDateStringToDate(dateString); + Date parsed = DateTimeUtils.convertDateStringToDate(dateString); Calendar calendar = new GregorianCalendar(TimeZone.getTimeZone("UTC")); calendar.setTime(parsed); assertEquals(2015, calendar.get(Calendar.YEAR)); @@ -190,7 +207,7 @@ public void testDateOnlyZuluWithLowerZ() { @Test public void testDateOnlyWithTimeZone() { String dateString = "2015-01-08+0200"; - Date parsed = parser.convertDateStringToDate(dateString); + Date parsed = DateTimeUtils.convertDateStringToDate(dateString); Calendar calendar = new GregorianCalendar(TimeZone.getTimeZone("UTC")); calendar.setTime(parsed); assertEquals(2015, calendar.get(Calendar.YEAR)); @@ -204,7 +221,7 @@ public void testDateOnlyWithTimeZone() { @Test public void testDateOnlyWithTimeZoneWithColon() { String dateString = "2015-01-08-02:00"; - Date parsed = parser.convertDateStringToDate(dateString); + Date parsed = DateTimeUtils.convertDateStringToDate(dateString); Calendar calendar = new GregorianCalendar(TimeZone.getTimeZone("UTC")); calendar.setTime(parsed); assertEquals(2015, calendar.get(Calendar.YEAR)); @@ -218,7 +235,7 @@ public void testDateOnlyWithTimeZoneWithColon() { @Test public void testDateOnlyWithoutTimeZone() { String dateString = "2015-01-08"; - Date parsed = parser.convertDateStringToDate(dateString); + Date parsed = DateTimeUtils.convertDateStringToDate(dateString); Calendar calendar = new GregorianCalendar(TimeZone.getTimeZone("UTC")); calendar.setTime(parsed); assertEquals(2015, calendar.get(Calendar.YEAR)); diff --git a/src/test/resources/logback-test.xml b/src/test/resources/logback-test.xml new file mode 100644 index 000000000..721bb8aed --- /dev/null +++ b/src/test/resources/logback-test.xml @@ -0,0 +1,42 @@ + + + + + + false + + %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n + + + + + + + From cc3b6ac598f71f26b9f7002a253d3409fcae8ef0 Mon Sep 17 00:00:00 2001 From: dwissk Date: Tue, 2 Jun 2015 15:25:39 +0200 Subject: [PATCH 07/13] update version --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 3f03f3bb9..a181b943f 100644 --- a/pom.xml +++ b/pom.xml @@ -31,7 +31,7 @@ com.microsoft.ews-java-api ews-java-api - 2.0-SNAPSHOT + 2.0.1-SNAPSHOT http://www.microsoft.com/ From 40a152101f29dfc1c7d7e7c859644633076a7bb6 Mon Sep 17 00:00:00 2001 From: dwissk Date: Tue, 2 Jun 2015 15:36:25 +0200 Subject: [PATCH 08/13] change distribution management urls --- pom.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pom.xml b/pom.xml index a181b943f..154631582 100644 --- a/pom.xml +++ b/pom.xml @@ -175,12 +175,12 @@ - ossrh-snapshot - https://oss.sonatype.org/content/repositories/snapshots + ebf-snapshots + http://cindy.ebf.de:8081/nexus/content/repositories/snapshots/ - ossrh - https://oss.sonatype.org/service/local/staging/deploy/maven2 + ebf-releases + http://cindy.ebf.de:8081/nexus/content/repositories/releases/ From 570a4206665366418d2167799f48d4b2e1df105f Mon Sep 17 00:00:00 2001 From: dwissk Date: Tue, 2 Jun 2015 15:58:44 +0200 Subject: [PATCH 09/13] update distribution management repositories --- pom.xml | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/pom.xml b/pom.xml index 154631582..bf8dcfb8f 100644 --- a/pom.xml +++ b/pom.xml @@ -174,14 +174,16 @@ - - ebf-snapshots - http://cindy.ebf.de:8081/nexus/content/repositories/snapshots/ - - ebf-releases + ebf-releases-deployment + Internal Releases http://cindy.ebf.de:8081/nexus/content/repositories/releases/ + + ebf-snapshots-deployment + Internal Releases + http://cindy.ebf.de:8081/nexus/content/repositories/snapshots/ + From 57234d02945993213a13daac7d73e7bf20411537 Mon Sep 17 00:00:00 2001 From: dwissk Date: Fri, 12 May 2017 09:51:08 +0200 Subject: [PATCH 10/13] attempt to fix Could not read value from END_ELEMENT. Could not find CHARACTERS CXSRV-1114 #done https://ebf-dev.atlassian.net/browse/CXSRV-1114 https://github.com/OfficeDev/ews-java-api/issues/262 https://github.com/OfficeDev/ews-java-api/pull/337 https://github.com/OfficeDev/ews-java-api/pull/364/ --- .../exchange/webservices/data/core/EwsXmlReader.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/main/java/microsoft/exchange/webservices/data/core/EwsXmlReader.java b/src/main/java/microsoft/exchange/webservices/data/core/EwsXmlReader.java index 94206e655..192233bad 100644 --- a/src/main/java/microsoft/exchange/webservices/data/core/EwsXmlReader.java +++ b/src/main/java/microsoft/exchange/webservices/data/core/EwsXmlReader.java @@ -472,11 +472,13 @@ public String readValue(boolean keepWhiteSpace) throws XMLStreamException, // Element) // this.read(); return elementValue.toString(); - } else { - throw new ServiceXmlDeserializationException( - getReadValueErrMsg("Could not find " + XmlNodeType.getString(XmlNodeType.CHARACTERS)) - ); - } + } else if (this.presentEvent.isEndElement()) { + return ""; + } else { + throw new ServiceXmlDeserializationException( + getReadValueErrMsg("Could not find " + XmlNodeType.getString(XmlNodeType.CHARACTERS)) + ); + } } else if (this.presentEvent.getEventType() == XmlNodeType.CHARACTERS && this.presentEvent.isCharacters()) { /* From 8ca0df5102e82d47aeba3b69525a23e7bb594baa Mon Sep 17 00:00:00 2001 From: dwissk Date: Fri, 12 May 2017 09:52:51 +0200 Subject: [PATCH 11/13] update to 2.0.2-SNAPSHOT --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index bf8dcfb8f..ed383a10d 100644 --- a/pom.xml +++ b/pom.xml @@ -31,7 +31,7 @@ com.microsoft.ews-java-api ews-java-api - 2.0.1-SNAPSHOT + 2.0.2-SNAPSHOT http://www.microsoft.com/ From 87d2a79843eb84b3408edd07ac05b286347acab6 Mon Sep 17 00:00:00 2001 From: dwissk Date: Fri, 12 May 2017 10:04:16 +0200 Subject: [PATCH 12/13] update repositories --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index ed383a10d..a49543c7f 100644 --- a/pom.xml +++ b/pom.xml @@ -59,7 +59,7 @@ ebf-releases - http://cindy.ebf.de:8081/nexus/content/repositories/releases/ + http://repository.dev.ebf.de/nexus/content/repositories/releases/ always false @@ -67,7 +67,7 @@ ebf-snapshots - http://cindy.ebf.de:8081/nexus/content/repositories/snapshots/ + http://repository.dev.ebf.de/nexus/content/repositories/snapshots/ always true From 8e90bea5cfd49a3c117d2aab9c0f2bc8bfea302f Mon Sep 17 00:00:00 2001 From: dwissk Date: Fri, 12 May 2017 10:07:25 +0200 Subject: [PATCH 13/13] update distribution repositories --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index a49543c7f..d839caf39 100644 --- a/pom.xml +++ b/pom.xml @@ -177,12 +177,12 @@ ebf-releases-deployment Internal Releases - http://cindy.ebf.de:8081/nexus/content/repositories/releases/ + http://repository.dev.ebf.de/nexus/content/repositories/releases/ ebf-snapshots-deployment Internal Releases - http://cindy.ebf.de:8081/nexus/content/repositories/snapshots/ + http://repository.dev.ebf.de/nexus/content/repositories/snapshots/