getRemovedItems() {
}
/**
- * Gets the modified item. The modified item.
+ * Gets the modified item.
*
* @return the modified item
*/
diff --git a/src/main/java/microsoft/exchange/webservices/data/core/XmlAttributeNames.java b/src/main/java/microsoft/exchange/webservices/data/core/XmlAttributeNames.java
index c1d97c3e0..1f4adbb07 100644
--- a/src/main/java/microsoft/exchange/webservices/data/core/XmlAttributeNames.java
+++ b/src/main/java/microsoft/exchange/webservices/data/core/XmlAttributeNames.java
@@ -156,6 +156,8 @@ public class XmlAttributeNames {
*/
public static final String ConflictResolution = "ConflictResolution";
+ public static final String CreateAction = "CreateAction";
+
/**
* The Constant SendMeetingInvitationsOrCancellations.
*/
diff --git a/src/main/java/microsoft/exchange/webservices/data/core/XmlElementNames.java b/src/main/java/microsoft/exchange/webservices/data/core/XmlElementNames.java
index 8fca4f048..ff6131ee4 100644
--- a/src/main/java/microsoft/exchange/webservices/data/core/XmlElementNames.java
+++ b/src/main/java/microsoft/exchange/webservices/data/core/XmlElementNames.java
@@ -626,6 +626,16 @@ public class XmlElementNames {
*/
public static final String End = "End";
+ /**
+ * The Constant ProposedStart.
+ */
+ public static final String ProposedStart = "ProposedStart";
+
+ /**
+ * The Constant End.
+ */
+ public static final String ProposedEnd = "ProposedEnd";
+
/**
* The Constant OriginalStart.
*/
@@ -666,6 +676,11 @@ public class XmlElementNames {
*/
public static final String IsRecurring = "IsRecurring";
+ /**
+ * The Constant IsRecurring.
+ */
+ public static final String IsOrganizer = "IsOrganizer";
+
/**
* The Constant MeetingRequestWasSent.
*/
@@ -877,6 +892,8 @@ public class XmlElementNames {
*/
public static final String DailyRegeneration = "DailyRegeneration";
+ public static final String Data = "Data";
+
/**
* The Constant WeeklyRegeneration.
*/
@@ -3981,6 +3998,22 @@ public class XmlElementNames {
public static final String DeleteItemResponseMessage =
"DeleteItemResponseMessage";
+ // ExportItems
+ public static final String ExportItems = "ExportItems";
+
+ public static final String ExportItemsResponse = "ExportItemsResponse";
+
+ public static final String ExportItemsResponseMessage =
+ "ExportItemsResponseMessage";
+
+ // ExportItems
+ public static final String UploadItems = "UploadItems";
+
+ public static final String UploadItemsResponse = "UploadItemsResponse";
+
+ public static final String UploadItemsResponseMessage =
+ "UploadItemsResponseMessage";
+
// UpdateItem
/**
* The Constant UpdateItem.
diff --git a/src/main/java/microsoft/exchange/webservices/data/core/enumeration/misc/ExchangeVersion.java b/src/main/java/microsoft/exchange/webservices/data/core/enumeration/misc/ExchangeVersion.java
index d58db3dda..e3e50d66a 100644
--- a/src/main/java/microsoft/exchange/webservices/data/core/enumeration/misc/ExchangeVersion.java
+++ b/src/main/java/microsoft/exchange/webservices/data/core/enumeration/misc/ExchangeVersion.java
@@ -50,4 +50,10 @@ public enum ExchangeVersion {
* Exchange2010_SP2.
*/
Exchange2010_SP2,
+
+ // Microsoft Exchange 2013
+ /**
+ * Exchange2013.
+ */
+ Exchange2013,
}
diff --git a/src/main/java/microsoft/exchange/webservices/data/core/enumeration/property/WellKnownFolderName.java b/src/main/java/microsoft/exchange/webservices/data/core/enumeration/property/WellKnownFolderName.java
index dbd7fc862..5e0d0b91a 100644
--- a/src/main/java/microsoft/exchange/webservices/data/core/enumeration/property/WellKnownFolderName.java
+++ b/src/main/java/microsoft/exchange/webservices/data/core/enumeration/property/WellKnownFolderName.java
@@ -42,6 +42,12 @@ public enum WellKnownFolderName {
*/
Contacts,
+ // The ExternalContacts folder.
+ /**
+ * The External Contacts.
+ */
+ ExternalContacts,
+
// The Deleted Items folder
/**
* The Deleted item.
diff --git a/src/main/java/microsoft/exchange/webservices/data/core/exception/misc/ArgumentException.java b/src/main/java/microsoft/exchange/webservices/data/core/exception/misc/ArgumentException.java
index f2b278c31..7d9b329e0 100644
--- a/src/main/java/microsoft/exchange/webservices/data/core/exception/misc/ArgumentException.java
+++ b/src/main/java/microsoft/exchange/webservices/data/core/exception/misc/ArgumentException.java
@@ -69,14 +69,14 @@ public ArgumentException(String s, String paramName) {
/**
* Constructs a new exception with the specified detail message and cause.
- *
+ *
* Note that the detail message associated with cause is not automatically
* incorporated in this exception's detail message.
*
* @param message the detail message (which is saved for later retrieval by the {@link
* Throwable#getMessage()} method).
* @param cause the cause (which is saved for later retrieval by the {@link Throwable#getCause()} method).
- * (A null value is permitted, and indicates that the cause is nonexistent or
+ * (A null value is permitted, and indicates that the cause is nonexistent or
* unknown.)
* @since 1.5
*/
@@ -85,13 +85,13 @@ public ArgumentException(String message, Throwable cause) {
}
/**
- * Constructs a new exception with the specified cause and a detail message of (cause==null ? null :
- * cause.toString()) (which typically contains the class and detail message of cause). This
+ * Constructs a new exception with the specified cause and a detail message of (cause==null ? null :
+ * cause.toString()) (which typically contains the class and detail message of cause). This
* constructor is useful for exceptions that are little more than wrappers for other throwables (for
* example, {@link PrivilegedActionException}).
*
* @param cause the cause (which is saved for later retrieval by the {@link Throwable#getCause()} method).
- * (A null value is permitted, and indicates that the cause is nonexistent or
+ * (A null value is permitted, and indicates that the cause is nonexistent or
* unknown.)
* @since 1.5
*/
@@ -100,13 +100,13 @@ public ArgumentException(Throwable cause) {
}
/**
- * Constructs a new exception with the specified cause and a detail message of (cause==null ? null :
- * cause.toString()) (which typically contains the class and detail message of cause). This
+ * Constructs a new exception with the specified cause and a detail message of (cause==null ? null :
+ * cause.toString()) (which typically contains the class and detail message of cause). This
* constructor is useful for exceptions that are little more than wrappers for other throwables (for
* example, {@link PrivilegedActionException}).
*
* @param cause the cause (which is saved for later retrieval by the {@link Throwable#getCause()}
- * method). (A null value is permitted, and indicates that the cause is
+ * method). (A null value is permitted, and indicates that the cause is
* nonexistent or unknown.)
* @param paramName the Name of the Param that causes the exception
*/
@@ -121,7 +121,7 @@ public ArgumentException(Throwable cause, String paramName) {
*
* @param message The error message that explains the reason for the exception.
* @param cause the cause (which is saved for later retrieval by the {@link Throwable#getCause()}
- * method). (A null value is permitted, and indicates that the cause is
+ * method). (A null value is permitted, and indicates that the cause is
* nonexistent or unknown.)
* @param paramName the Name of the Param that causes the exception
*/
diff --git a/src/main/java/microsoft/exchange/webservices/data/core/exception/misc/ArgumentNullException.java b/src/main/java/microsoft/exchange/webservices/data/core/exception/misc/ArgumentNullException.java
index 1bc9c18bd..629477d29 100644
--- a/src/main/java/microsoft/exchange/webservices/data/core/exception/misc/ArgumentNullException.java
+++ b/src/main/java/microsoft/exchange/webservices/data/core/exception/misc/ArgumentNullException.java
@@ -46,14 +46,14 @@ public ArgumentNullException(String s, String paramName) {
/**
* Constructs a new exception with the specified detail message and cause.
- *
+ *
* Note that the detail message associated with cause is not automatically
* incorporated in this exception's detail message.
*
* @param message the detail message (which is saved for later retrieval by the {@link
* Throwable#getMessage()} method).
* @param cause the cause (which is saved for later retrieval by the {@link Throwable#getCause()} method).
- * (A null value is permitted, and indicates that the cause is nonexistent or
+ * (A null value is permitted, and indicates that the cause is nonexistent or
* unknown.)
* @since 1.5
*/
@@ -62,13 +62,13 @@ public ArgumentNullException(String message, Throwable cause) {
}
/**
- * Constructs a new exception with the specified cause and a detail message of (cause==null ? null :
- * cause.toString()) (which typically contains the class and detail message of cause). This
+ * Constructs a new exception with the specified cause and a detail message of (cause==null ? null :
+ * cause.toString()) (which typically contains the class and detail message of cause). This
* constructor is useful for exceptions that are little more than wrappers for other throwables (for
* example, {@link java.security.PrivilegedActionException}).
*
* @param cause the cause (which is saved for later retrieval by the {@link Throwable#getCause()} method).
- * (A null value is permitted, and indicates that the cause is nonexistent or
+ * (A null value is permitted, and indicates that the cause is nonexistent or
* unknown.)
* @since 1.5
*/
@@ -77,13 +77,13 @@ public ArgumentNullException(Throwable cause) {
}
/**
- * Constructs a new exception with the specified cause and a detail message of (cause==null ? null :
- * cause.toString()) (which typically contains the class and detail message of cause). This
+ * Constructs a new exception with the specified cause and a detail message of (cause==null ? null :
+ * cause.toString()) (which typically contains the class and detail message of cause). This
* constructor is useful for exceptions that are little more than wrappers for other throwables (for
* example, {@link java.security.PrivilegedActionException}).
*
* @param cause the cause (which is saved for later retrieval by the {@link Throwable#getCause()}
- * method). (A null value is permitted, and indicates that the cause is
+ * method). (A null value is permitted, and indicates that the cause is
* nonexistent or unknown.)
* @param paramName the Name of the Param that causes the exception
*/
@@ -97,7 +97,7 @@ public ArgumentNullException(Throwable cause, String paramName) {
*
* @param message The error message that explains the reason for the exception.
* @param cause the cause (which is saved for later retrieval by the {@link Throwable#getCause()}
- * method). (A null value is permitted, and indicates that the cause is
+ * method). (A null value is permitted, and indicates that the cause is
* nonexistent or unknown.)
* @param paramName the Name of the Param that causes the exception
*/
diff --git a/src/main/java/microsoft/exchange/webservices/data/core/exception/service/local/InvalidOrUnsupportedTimeZoneDefinitionException.java b/src/main/java/microsoft/exchange/webservices/data/core/exception/service/local/InvalidOrUnsupportedTimeZoneDefinitionException.java
index f750b443d..d51122397 100644
--- a/src/main/java/microsoft/exchange/webservices/data/core/exception/service/local/InvalidOrUnsupportedTimeZoneDefinitionException.java
+++ b/src/main/java/microsoft/exchange/webservices/data/core/exception/service/local/InvalidOrUnsupportedTimeZoneDefinitionException.java
@@ -62,7 +62,7 @@ public InvalidOrUnsupportedTimeZoneDefinitionException(String message) {
* @param message the detail message (which is saved for later retrieval by the {@link
* Throwable#getMessage()} method).
* @param innerException the cause (which is saved for later retrieval by the {@link Throwable#getCause()}
- * method). (A null value is permitted, and indicates that the cause is nonexistent
+ * method). (A null value is permitted, and indicates that the cause is nonexistent
* or unknown.)
*/
public InvalidOrUnsupportedTimeZoneDefinitionException(String message, Exception innerException) {
diff --git a/src/main/java/microsoft/exchange/webservices/data/core/request/AddDelegateRequest.java b/src/main/java/microsoft/exchange/webservices/data/core/request/AddDelegateRequest.java
index fac5d8f3f..fb0f73cec 100644
--- a/src/main/java/microsoft/exchange/webservices/data/core/request/AddDelegateRequest.java
+++ b/src/main/java/microsoft/exchange/webservices/data/core/request/AddDelegateRequest.java
@@ -150,8 +150,7 @@ protected ExchangeVersion getMinimumRequiredServerVersion() {
}
/**
- * Gets the meeting request delivery scope. The meeting
- * request delivery scope.
+ * Gets the meeting request delivery scope.
*
* @return the meeting request delivery scope
*/
@@ -170,7 +169,7 @@ public void setMeetingRequestsDeliveryScope(
}
/**
- * Gets the delegate users. The delegate users.
+ * Gets the delegate users.
*
* @return the delegate users
*/
diff --git a/src/main/java/microsoft/exchange/webservices/data/core/request/CreateRequest.java b/src/main/java/microsoft/exchange/webservices/data/core/request/CreateRequest.java
index a3601f1f3..bc5447a96 100644
--- a/src/main/java/microsoft/exchange/webservices/data/core/request/CreateRequest.java
+++ b/src/main/java/microsoft/exchange/webservices/data/core/request/CreateRequest.java
@@ -145,7 +145,7 @@ protected Iterable getObjects() {
/**
* Sets the service objects.
*
- * @param value Iterator
+ * @param value
*/
protected void setObjects(Collection value) {
this.objects = value;
diff --git a/src/main/java/microsoft/exchange/webservices/data/core/request/CreateUserConfigurationRequest.java b/src/main/java/microsoft/exchange/webservices/data/core/request/CreateUserConfigurationRequest.java
index 7db2fcfaa..214cd70d0 100644
--- a/src/main/java/microsoft/exchange/webservices/data/core/request/CreateUserConfigurationRequest.java
+++ b/src/main/java/microsoft/exchange/webservices/data/core/request/CreateUserConfigurationRequest.java
@@ -132,8 +132,8 @@ protected void writeElementsToXml(EwsServiceXmlWriter writer)
}
/**
- * Initializes a new instance of the class.
+ * Initializes a new instance of the {@link CreateUserConfigurationRequest}
+ * class.
*
* @param service The service.
* @throws Exception
diff --git a/src/main/java/microsoft/exchange/webservices/data/core/request/DelegateManagementRequestBase.java b/src/main/java/microsoft/exchange/webservices/data/core/request/DelegateManagementRequestBase.java
index 257493fa4..802aade69 100644
--- a/src/main/java/microsoft/exchange/webservices/data/core/request/DelegateManagementRequestBase.java
+++ b/src/main/java/microsoft/exchange/webservices/data/core/request/DelegateManagementRequestBase.java
@@ -113,7 +113,7 @@ public TResponse execute() throws Exception {
}
/**
- * Gets the mailbox. The mailbox.
+ * Gets the mailbox.
*
* @return the mailbox
*/
diff --git a/src/main/java/microsoft/exchange/webservices/data/core/request/EmptyFolderRequest.java b/src/main/java/microsoft/exchange/webservices/data/core/request/EmptyFolderRequest.java
index 064107ea2..b64110bf9 100644
--- a/src/main/java/microsoft/exchange/webservices/data/core/request/EmptyFolderRequest.java
+++ b/src/main/java/microsoft/exchange/webservices/data/core/request/EmptyFolderRequest.java
@@ -171,7 +171,7 @@ public FolderIdWrapperList getFolderIds() {
/**
* Gets a value indicating whether empty folder should also delete sub folder.
*
- * @value true if empty folder should also delete sub folder, otherwise false.
+ * @return true if empty folder should also delete sub folder, otherwise false.
*/
protected boolean getDeleteSubFolders() {
return deleteSubFolders;
@@ -179,8 +179,6 @@ protected boolean getDeleteSubFolders() {
/**
* Sets a value indicating whether empty folder should also delete sub folder.
- *
- * @value true if empty folder should also delete sub folder, otherwise false.
*/
public void setDeleteSubFolders(boolean value) {
this.deleteSubFolders = value;
diff --git a/src/main/java/microsoft/exchange/webservices/data/core/request/ExportItemsRequest.java b/src/main/java/microsoft/exchange/webservices/data/core/request/ExportItemsRequest.java
new file mode 100644
index 000000000..64478e9f8
--- /dev/null
+++ b/src/main/java/microsoft/exchange/webservices/data/core/request/ExportItemsRequest.java
@@ -0,0 +1,145 @@
+/*
+ * 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.request;
+
+import microsoft.exchange.webservices.data.core.*;
+import microsoft.exchange.webservices.data.core.enumeration.misc.ExchangeVersion;
+import microsoft.exchange.webservices.data.core.enumeration.misc.XmlNamespace;
+import microsoft.exchange.webservices.data.core.enumeration.service.error.ServiceErrorHandling;
+import microsoft.exchange.webservices.data.core.response.ExportItemsResponse;
+import microsoft.exchange.webservices.data.misc.ItemIdWrapperList;
+
+/**
+ * Represents a DeleteItem request.
+ */
+public final class ExportItemsRequest extends MultiResponseServiceRequest {
+
+ /**
+ * The item ids.
+ */
+ private ItemIdWrapperList itemIds = new ItemIdWrapperList();
+
+ /**
+ * Initializes a new instance of the class.
+ *
+ * @param service the service
+ * @param errorHandlingMode the error handling mode
+ * @throws Exception
+ */
+ public ExportItemsRequest(ExchangeService service, ServiceErrorHandling errorHandlingMode)
+ throws Exception {
+ super(service, errorHandlingMode);
+ }
+
+ @Override
+ protected void validate() throws Exception {
+ EwsUtilities.validateParamCollection(itemIds.iterator(), "itemIds");
+ }
+
+ /**
+ * Gets the expected response message count.
+ *
+ * @return Number of expected response messages
+ */
+ @Override
+ protected int getExpectedResponseMessageCount() {
+ return itemIds.getCount();
+ }
+
+ /**
+ * Creates the service response.
+ *
+ * @param service the service
+ * @param responseIndex the response index
+ * @return Service response.
+ */
+ @Override
+ protected ExportItemsResponse createServiceResponse(ExchangeService service,
+ int responseIndex) {
+ return new ExportItemsResponse();
+ }
+
+ /**
+ * Gets the name of the XML element.
+ *
+ * @return XML element name
+ */
+ @Override public String getXmlElementName() {
+ return XmlElementNames.ExportItems;
+ }
+
+ /**
+ * Gets the name of the response XML element.
+ *
+ * @return XML element name
+ */
+ @Override
+ protected String getResponseXmlElementName() {
+ return XmlElementNames.ExportItemsResponse;
+ }
+
+ /**
+ * Gets the name of the response message XML element.
+ *
+ * @return XML element name
+ */
+ @Override
+ protected String getResponseMessageXmlElementName() {
+ return XmlElementNames.ExportItemsResponseMessage;
+ }
+
+ /**
+ * Writes XML elements.
+ *
+ * @param writer the writer
+ * @throws Exception the exception
+ */
+ @Override
+ protected void writeElementsToXml(EwsServiceXmlWriter writer)
+ throws Exception {
+ itemIds.writeToXml(writer, XmlNamespace.Messages,
+ XmlElementNames.ItemIds);
+ }
+
+ /**
+ * Gets the request version.
+ *
+ * @return Earliest Exchange version in which this request is supported.
+ */
+ @Override
+ protected ExchangeVersion getMinimumRequiredServerVersion() {
+ return ExchangeVersion.Exchange2010_SP1;
+ }
+
+ /**
+ * Gets the item ids.
+ *
+ * @return the item ids
+ */
+ public ItemIdWrapperList getItemIds() {
+ return itemIds;
+ }
+
+
+}
diff --git a/src/main/java/microsoft/exchange/webservices/data/core/request/GetDelegateRequest.java b/src/main/java/microsoft/exchange/webservices/data/core/request/GetDelegateRequest.java
index 8d1079147..cd0ce26e4 100644
--- a/src/main/java/microsoft/exchange/webservices/data/core/request/GetDelegateRequest.java
+++ b/src/main/java/microsoft/exchange/webservices/data/core/request/GetDelegateRequest.java
@@ -140,7 +140,7 @@ protected ExchangeVersion getMinimumRequiredServerVersion() {
}
/**
- * Gets the user ids. The user ids.
+ * Gets the user ids.
*
* @return the user ids
*/
diff --git a/src/main/java/microsoft/exchange/webservices/data/core/request/GetUserConfigurationRequest.java b/src/main/java/microsoft/exchange/webservices/data/core/request/GetUserConfigurationRequest.java
index cc983b332..a810a693c 100644
--- a/src/main/java/microsoft/exchange/webservices/data/core/request/GetUserConfigurationRequest.java
+++ b/src/main/java/microsoft/exchange/webservices/data/core/request/GetUserConfigurationRequest.java
@@ -186,7 +186,7 @@ public GetUserConfigurationRequest(ExchangeService service)
}
/**
- * Gets the name. The name.
+ * Gets the name.
*
* @return the name
*/
@@ -204,7 +204,7 @@ public void setName(String name) {
}
/**
- * Gets the parent folder Id. The parent folder Id.
+ * Gets the parent folder Id.
*
* @return the parent folder id
*/
@@ -222,8 +222,7 @@ public void setParentFolderId(FolderId parentFolderId) {
}
/**
- * Gets the user configuration. The user
- * configuration.
+ * Gets the user configuration.
*
* @return the user configuration
*/
diff --git a/src/main/java/microsoft/exchange/webservices/data/core/request/HttpClientWebRequest.java b/src/main/java/microsoft/exchange/webservices/data/core/request/HttpClientWebRequest.java
index 8cd6ccb8f..618ef4126 100644
--- a/src/main/java/microsoft/exchange/webservices/data/core/request/HttpClientWebRequest.java
+++ b/src/main/java/microsoft/exchange/webservices/data/core/request/HttpClientWebRequest.java
@@ -128,31 +128,33 @@ public void prepareConnection() {
.setTargetPreferredAuthSchemes(Arrays.asList(AuthSchemes.NTLM, AuthSchemes.BASIC))
.setProxyPreferredAuthSchemes(Arrays.asList(AuthSchemes.NTLM, AuthSchemes.BASIC));
- CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
-
- // Add proxy credential if necessary.
- WebProxy proxy = getProxy();
- if (proxy != null) {
- HttpHost proxyHost = new HttpHost(proxy.getHost(), proxy.getPort());
- requestConfigBuilder.setProxy(proxyHost);
-
- if (proxy.hasCredentials()) {
- NTCredentials
- proxyCredentials =
- new NTCredentials(proxy.getCredentials().getUsername(), proxy.getCredentials().getPassword(), "",
- proxy.getCredentials().getDomain());
+ if (httpContext.getCredentialsProvider() == null) {
+ CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
+ // Add proxy credential if necessary.
+ WebProxy proxy = getProxy();
+ if (proxy != null) {
+ HttpHost proxyHost = new HttpHost(proxy.getHost(), proxy.getPort());
+ requestConfigBuilder.setProxy(proxyHost);
+
+ if (proxy.hasCredentials()) {
+ NTCredentials
+ proxyCredentials =
+ new NTCredentials(proxy.getCredentials().getUsername(), proxy.getCredentials().getPassword(), "",
+ proxy.getCredentials().getDomain());
+
+ credentialsProvider.setCredentials(new AuthScope(proxyHost), proxyCredentials);
+ }
+ }
- credentialsProvider.setCredentials(new AuthScope(proxyHost), proxyCredentials);
+ // Add web service credential if necessary.
+ if (isAllowAuthentication() && getUsername() != null) {
+ NTCredentials webServiceCredentials = new NTCredentials(getUsername(), getPassword(), "", getDomain());
+ credentialsProvider.setCredentials(new AuthScope(AuthScope.ANY), webServiceCredentials);
}
- }
- // Add web service credential if necessary.
- if (isAllowAuthentication() && getUsername() != null) {
- NTCredentials webServiceCredentials = new NTCredentials(getUsername(), getPassword(), "", getDomain());
- credentialsProvider.setCredentials(new AuthScope(AuthScope.ANY), webServiceCredentials);
+ httpContext.setCredentialsProvider(credentialsProvider);
}
- httpContext.setCredentialsProvider(credentialsProvider);
httpPost.setConfig(requestConfigBuilder.build());
}
diff --git a/src/main/java/microsoft/exchange/webservices/data/core/request/ResolveNamesRequest.java b/src/main/java/microsoft/exchange/webservices/data/core/request/ResolveNamesRequest.java
index 7b1fd1060..4b2f035fe 100644
--- a/src/main/java/microsoft/exchange/webservices/data/core/request/ResolveNamesRequest.java
+++ b/src/main/java/microsoft/exchange/webservices/data/core/request/ResolveNamesRequest.java
@@ -311,7 +311,7 @@ public FolderIdWrapperList getParentFolderIds() {
/**
* Gets or sets the PropertySet for Contact Data
- *
+ *
* The PropertySet
*/
public void setContactDataPropertySet(PropertySet propertySet) {
diff --git a/src/main/java/microsoft/exchange/webservices/data/core/request/SendItemRequest.java b/src/main/java/microsoft/exchange/webservices/data/core/request/SendItemRequest.java
index 7a7291efa..848910b15 100644
--- a/src/main/java/microsoft/exchange/webservices/data/core/request/SendItemRequest.java
+++ b/src/main/java/microsoft/exchange/webservices/data/core/request/SendItemRequest.java
@@ -184,7 +184,7 @@ public SendItemRequest(ExchangeService service, ServiceErrorHandling errorHandli
}
/**
- * Gets the item. The item.
+ * Gets the item.
*
* @return the item
*/
diff --git a/src/main/java/microsoft/exchange/webservices/data/core/request/ServiceRequestBase.java b/src/main/java/microsoft/exchange/webservices/data/core/request/ServiceRequestBase.java
index aafd48cf6..0477904e3 100644
--- a/src/main/java/microsoft/exchange/webservices/data/core/request/ServiceRequestBase.java
+++ b/src/main/java/microsoft/exchange/webservices/data/core/request/ServiceRequestBase.java
@@ -23,42 +23,22 @@
package microsoft.exchange.webservices.data.core.request;
-import microsoft.exchange.webservices.data.core.EwsServiceXmlReader;
-import microsoft.exchange.webservices.data.core.EwsServiceXmlWriter;
-import microsoft.exchange.webservices.data.core.EwsUtilities;
-import microsoft.exchange.webservices.data.core.ExchangeServerInfo;
-import microsoft.exchange.webservices.data.core.ExchangeService;
-import microsoft.exchange.webservices.data.core.XmlAttributeNames;
-import microsoft.exchange.webservices.data.core.XmlElementNames;
-import microsoft.exchange.webservices.data.core.response.ServiceResponse;
-import microsoft.exchange.webservices.data.core.enumeration.misc.DateTimePrecision;
-import microsoft.exchange.webservices.data.core.enumeration.misc.ExchangeVersion;
-import microsoft.exchange.webservices.data.core.enumeration.misc.TraceFlags;
-import microsoft.exchange.webservices.data.core.enumeration.misc.XmlNamespace;
-import microsoft.exchange.webservices.data.core.exception.http.EWSHttpException;
-import microsoft.exchange.webservices.data.core.exception.http.HttpErrorException;
-import microsoft.exchange.webservices.data.core.exception.service.local.ServiceLocalException;
-import microsoft.exchange.webservices.data.core.exception.service.remote.ServiceRequestException;
-import microsoft.exchange.webservices.data.core.exception.service.remote.ServiceResponseException;
-import microsoft.exchange.webservices.data.core.exception.service.local.ServiceVersionException;
-import microsoft.exchange.webservices.data.core.exception.service.local.ServiceXmlDeserializationException;
-import microsoft.exchange.webservices.data.core.exception.service.local.ServiceXmlSerializationException;
-import microsoft.exchange.webservices.data.core.exception.xml.XmlException;
-import microsoft.exchange.webservices.data.misc.SoapFaultDetails;
-import microsoft.exchange.webservices.data.security.XmlNodeType;
-import org.apache.commons.io.IOUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import javax.xml.stream.XMLStreamException;
-import javax.xml.ws.http.HTTPException;
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.zip.GZIPInputStream;
-import java.util.zip.InflaterInputStream;
+import microsoft.exchange.webservices.data.core.*;
+import microsoft.exchange.webservices.data.core.enumeration.misc.*;
+import microsoft.exchange.webservices.data.core.exception.http.*;
+import microsoft.exchange.webservices.data.core.exception.service.local.*;
+import microsoft.exchange.webservices.data.core.exception.service.remote.*;
+import microsoft.exchange.webservices.data.core.exception.xml.*;
+import microsoft.exchange.webservices.data.core.response.*;
+import microsoft.exchange.webservices.data.misc.*;
+import microsoft.exchange.webservices.data.security.*;
+import org.apache.commons.io.*;
+import org.apache.commons.logging.*;
+
+import javax.xml.stream.*;
+import javax.xml.ws.http.*;
+import java.io.*;
+import java.util.zip.*;
/**
* Represents an abstract service request.
@@ -719,18 +699,23 @@ private HttpWebRequest buildEwsHttpWebRequest(HttpWebRequest request) throws Exc
*/
protected HttpWebRequest getEwsHttpWebResponse(HttpWebRequest request) throws Exception {
try {
+ service.traceServiceRequestStart(this, request);
request.executeRequest();
if (request.getResponseCode() >= 400) {
- throw new HttpErrorException(
- "The remote server returned an error: (" + request.getResponseCode() + ")" +
- request.getResponseText(), request.getResponseCode());
+ HttpErrorException e = new HttpErrorException(
+ "The remote server returned an error: (" + request.getResponseCode() + ")" +
+ request.getResponseText(), request.getResponseCode());
+ service.traceServiceRequestError(this, request, e);
+ throw e;
}
} catch (IOException e) {
// Wrap exception.
+ service.traceServiceRequestError(this, request, e);
throw new ServiceRequestException(String.format("The request failed. %s", e.getMessage()), e);
}
+ service.traceServiceRequestSuccess(this, request);
return request;
}
diff --git a/src/main/java/microsoft/exchange/webservices/data/core/request/SyncFolderHierarchyRequest.java b/src/main/java/microsoft/exchange/webservices/data/core/request/SyncFolderHierarchyRequest.java
index dbd5e6ebf..a4e5494a1 100644
--- a/src/main/java/microsoft/exchange/webservices/data/core/request/SyncFolderHierarchyRequest.java
+++ b/src/main/java/microsoft/exchange/webservices/data/core/request/SyncFolderHierarchyRequest.java
@@ -170,7 +170,7 @@ protected ExchangeVersion getMinimumRequiredServerVersion() {
}
/**
- * Gets or sets the property set. The property set.
+ * Gets or sets the property set.
*
* @return the property set
*/
@@ -188,7 +188,7 @@ public void setPropertySet(PropertySet value) {
}
/**
- * Gets or sets the property set. The property set.
+ * Gets or sets the property set.
*
* @return the sync folder id
*/
@@ -206,8 +206,7 @@ public void setSyncFolderId(FolderId value) {
}
/**
- * Gets or sets the state of the sync. The state of the
- * sync.
+ * Gets or sets the state of the sync.
*
* @return the sync state
*/
diff --git a/src/main/java/microsoft/exchange/webservices/data/core/request/SyncFolderItemsRequest.java b/src/main/java/microsoft/exchange/webservices/data/core/request/SyncFolderItemsRequest.java
index 42814b384..88b8c697c 100644
--- a/src/main/java/microsoft/exchange/webservices/data/core/request/SyncFolderItemsRequest.java
+++ b/src/main/java/microsoft/exchange/webservices/data/core/request/SyncFolderItemsRequest.java
@@ -211,7 +211,7 @@ protected ExchangeVersion getMinimumRequiredServerVersion() {
}
/**
- * Gets or sets the property set. The property set.
+ * Gets or sets the property set.
*
* @return the property set
*/
@@ -229,7 +229,7 @@ public void setPropertySet(PropertySet propertySet) {
}
/**
- * Gets the sync folder id. The sync folder id.
+ * Gets the sync folder id.
*
* @return the sync folder id
*/
@@ -247,8 +247,7 @@ public void setSyncFolderId(FolderId syncFolderId) {
}
/**
- * Gets the scope of the sync. The scope of the
- * sync.
+ * Gets the scope of the sync.
*
* @return the sync scope
*/
@@ -266,8 +265,7 @@ public void setSyncScope(SyncFolderItemsScope syncScope) {
}
/**
- * Gets the state of the sync. The state of the
- * sync.
+ * Gets the state of the sync.
*
* @return the sync state
*/
@@ -285,7 +283,7 @@ public void setSyncState(String syncState) {
}
/**
- * Gets the list of ignored item ids. The ignored item ids.
+ * Gets the list of ignored item ids.
*
* @return the ignored item ids
*/
diff --git a/src/main/java/microsoft/exchange/webservices/data/core/request/UpdateInboxRulesRequest.java b/src/main/java/microsoft/exchange/webservices/data/core/request/UpdateInboxRulesRequest.java
index bba576eb2..91c234077 100644
--- a/src/main/java/microsoft/exchange/webservices/data/core/request/UpdateInboxRulesRequest.java
+++ b/src/main/java/microsoft/exchange/webservices/data/core/request/UpdateInboxRulesRequest.java
@@ -56,7 +56,7 @@ public final class UpdateInboxRulesRequest extends SimpleServiceRequestBase class.
+ * {@link UpdateInboxRulesRequest} class.
*
* @param service The service.
*/
diff --git a/src/main/java/microsoft/exchange/webservices/data/core/request/UploadItemsRequest.java b/src/main/java/microsoft/exchange/webservices/data/core/request/UploadItemsRequest.java
new file mode 100644
index 000000000..9d21ad324
--- /dev/null
+++ b/src/main/java/microsoft/exchange/webservices/data/core/request/UploadItemsRequest.java
@@ -0,0 +1,131 @@
+package microsoft.exchange.webservices.data.core.request;
+
+import microsoft.exchange.webservices.data.core.*;
+import microsoft.exchange.webservices.data.core.enumeration.misc.*;
+import microsoft.exchange.webservices.data.core.enumeration.service.error.*;
+import microsoft.exchange.webservices.data.core.response.*;
+import microsoft.exchange.webservices.data.core.service.item.*;
+
+import java.util.*;
+
+public class UploadItemsRequest extends MultiResponseServiceRequest {
+
+ private List items;
+
+ /**
+ * The item ids.
+ */
+
+ /**
+ * Initializes a new instance of the class.
+ *
+ * @param service the service
+ * @param errorHandlingMode the error handling mode
+ * @throws Exception
+ */
+ public UploadItemsRequest(ExchangeService service, ServiceErrorHandling errorHandlingMode)
+ throws Exception {
+ super(service, errorHandlingMode);
+ }
+
+ /**
+ * Validate request.
+ *
+ * @throws Exception the exception
+ */
+ @Override
+ protected void validate() throws Exception {
+ super.validate();
+ EwsUtilities.validateParam(items, "items");
+ for (UploadItem i : items) {
+ i.validate();
+ }
+ }
+
+ /**
+ * Gets the expected response message count.
+ *
+ * @return Number of expected response messages
+ */
+ @Override
+ protected int getExpectedResponseMessageCount() {
+ return items.size();
+ }
+
+ /**
+ * Creates the service response.
+ *
+ * @param service the service
+ * @param responseIndex the response index
+ * @return Service response.
+ */
+ @Override
+ protected UploadItemsResponse createServiceResponse(ExchangeService service,
+ int responseIndex) {
+ return new UploadItemsResponse();
+ }
+
+ /**
+ * Gets the name of the XML element.
+ *
+ * @return XML element name
+ */
+ @Override
+ public String getXmlElementName() {
+ return XmlElementNames.UploadItems;
+ }
+
+ /**
+ * Gets the name of the response XML element.
+ *
+ * @return XML element name
+ */
+ @Override
+ protected String getResponseXmlElementName() {
+ return XmlElementNames.UploadItemsResponse;
+ }
+
+ /**
+ * Gets the name of the response message XML element.
+ *
+ * @return XML element name
+ */
+ @Override
+ protected String getResponseMessageXmlElementName() {
+ return XmlElementNames.UploadItemsResponseMessage;
+ }
+
+ /**
+ * Writes XML elements.
+ *
+ * @param writer the writer
+ * @throws Exception the exception
+ */
+ @Override
+ protected void writeElementsToXml(EwsServiceXmlWriter writer)
+ throws Exception {
+ if (!items.isEmpty()) {
+ writer.writeStartElement(XmlNamespace.Messages, XmlElementNames.Items);
+ items.stream().forEach(item -> item.writeToXml(writer));
+ writer.writeEndElement();
+ }
+ }
+
+ /**
+ * Gets the request version.
+ *
+ * @return Earliest Exchange version in which this request is supported.
+ */
+ @Override
+ protected ExchangeVersion getMinimumRequiredServerVersion() {
+ return ExchangeVersion.Exchange2010_SP1;
+ }
+
+ public void setItems(List items) {
+ this.items = items;
+ }
+
+ public List getItems() {
+ return items;
+ }
+}
diff --git a/src/main/java/microsoft/exchange/webservices/data/core/response/ExecuteDiagnosticMethodResponse.java b/src/main/java/microsoft/exchange/webservices/data/core/response/ExecuteDiagnosticMethodResponse.java
index f67322ab0..8d4136fa5 100644
--- a/src/main/java/microsoft/exchange/webservices/data/core/response/ExecuteDiagnosticMethodResponse.java
+++ b/src/main/java/microsoft/exchange/webservices/data/core/response/ExecuteDiagnosticMethodResponse.java
@@ -23,15 +23,7 @@
package microsoft.exchange.webservices.data.core.response;
-import microsoft.exchange.webservices.data.core.EwsServiceXmlReader;
-import microsoft.exchange.webservices.data.core.EwsUtilities;
-import microsoft.exchange.webservices.data.core.ExchangeService;
-import microsoft.exchange.webservices.data.core.XmlElementNames;
-import microsoft.exchange.webservices.data.core.enumeration.misc.XmlNamespace;
-import microsoft.exchange.webservices.data.security.XmlNodeType;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
+import java.util.Iterator;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
@@ -42,7 +34,16 @@
import javax.xml.stream.events.StartElement;
import javax.xml.stream.events.XMLEvent;
-import java.util.Iterator;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+import microsoft.exchange.webservices.data.core.EwsServiceXmlReader;
+import microsoft.exchange.webservices.data.core.EwsUtilities;
+import microsoft.exchange.webservices.data.core.ExchangeService;
+import microsoft.exchange.webservices.data.core.XmlElementNames;
+import microsoft.exchange.webservices.data.core.enumeration.misc.XmlNamespace;
+import microsoft.exchange.webservices.data.security.XmlNodeType;
/**
@@ -116,18 +117,15 @@ public Document retriveDocument(XMLEventReader xmlEventReader)
element = document.createElementNS(ele.getName()
.getNamespaceURI(), ele.getName().getLocalPart());
- Iterator ite = ele.getAttributes();
-
- while (ite.hasNext()) {
+ for (Iterator ite = ele.getAttributes(); ite.hasNext();) {
Attribute attr = ite.next();
element.setAttribute(attr.getName().getLocalPart(),
attr.getValue());
}
String xmlns = EwsUtilities.WSTrustFebruary2005Namespace;//"http://schemas.xmlsoap.org/wsdl/";
- ite = ele.getNamespaces();
- while (ite.hasNext()) {
- Namespace ns = (Namespace) ite.next();
+ for (Iterator ite = ele.getNamespaces(); ite.hasNext();) {
+ Namespace ns = ite.next();
String name = ns.getPrefix();
if (!name.isEmpty()) {
element.setAttributeNS(xmlns, name,
diff --git a/src/main/java/microsoft/exchange/webservices/data/core/response/ExportItemsResponse.java b/src/main/java/microsoft/exchange/webservices/data/core/response/ExportItemsResponse.java
new file mode 100644
index 000000000..c2acf48be
--- /dev/null
+++ b/src/main/java/microsoft/exchange/webservices/data/core/response/ExportItemsResponse.java
@@ -0,0 +1,59 @@
+/*
+ * 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.response;
+
+import microsoft.exchange.webservices.data.core.EwsServiceXmlReader;
+import microsoft.exchange.webservices.data.core.XmlElementNames;
+import microsoft.exchange.webservices.data.core.enumeration.misc.XmlNamespace;
+import microsoft.exchange.webservices.data.property.complex.ItemId;
+
+public final class ExportItemsResponse extends ServiceResponse {
+
+ private ItemId itemId;
+
+ private byte[] data;
+
+ @Override
+ protected void readElementsFromXml(EwsServiceXmlReader reader) throws Exception {
+ super.readElementsFromXml(reader);
+
+ reader.read();
+
+ itemId = new ItemId();
+ itemId.setNamespace(XmlNamespace.Messages);
+ itemId.loadFromXml(reader, XmlElementNames.ItemId);
+ itemId.setNamespace(XmlNamespace.Types);
+
+ reader.readStartElement(XmlNamespace.Messages, XmlElementNames.Data);
+ data = reader.readBase64ElementValue();
+ }
+
+ public ItemId getItemId() {
+ return this.itemId;
+ }
+
+ public byte[] getData() {
+ return data;
+ }
+}
diff --git a/src/main/java/microsoft/exchange/webservices/data/core/response/UploadItemsResponse.java b/src/main/java/microsoft/exchange/webservices/data/core/response/UploadItemsResponse.java
new file mode 100644
index 000000000..e2ccf79ee
--- /dev/null
+++ b/src/main/java/microsoft/exchange/webservices/data/core/response/UploadItemsResponse.java
@@ -0,0 +1,27 @@
+package microsoft.exchange.webservices.data.core.response;
+
+import microsoft.exchange.webservices.data.core.EwsServiceXmlReader;
+import microsoft.exchange.webservices.data.core.XmlElementNames;
+import microsoft.exchange.webservices.data.core.enumeration.misc.XmlNamespace;
+import microsoft.exchange.webservices.data.property.complex.ItemId;
+
+public class UploadItemsResponse extends ServiceResponse {
+
+ private ItemId itemId;
+
+ @Override
+ protected void readElementsFromXml(EwsServiceXmlReader reader) throws Exception {
+ super.readElementsFromXml(reader);
+
+ reader.read();
+
+ itemId = new ItemId();
+ itemId.setNamespace(XmlNamespace.Messages);
+ itemId.loadFromXml(reader, XmlElementNames.ItemId);
+ itemId.setNamespace(XmlNamespace.Types);
+ }
+
+ public ItemId getItemId() {
+ return this.itemId;
+ }
+}
diff --git a/src/main/java/microsoft/exchange/webservices/data/core/service/ServiceObject.java b/src/main/java/microsoft/exchange/webservices/data/core/service/ServiceObject.java
index 2c4d87ccc..97ec6dd1f 100644
--- a/src/main/java/microsoft/exchange/webservices/data/core/service/ServiceObject.java
+++ b/src/main/java/microsoft/exchange/webservices/data/core/service/ServiceObject.java
@@ -232,6 +232,13 @@ protected ServiceObject(ExchangeService service) throws Exception {
this.propertyBag = new PropertyBag(this);
}
+ protected ServiceObject(ExchangeService service, ServiceId serviceId) throws Exception {
+ this(service);
+ propertyBag.setLoading(true);
+ propertyBag.setObjectFromPropertyDefinition(getIdPropertyDefinition(), serviceId);
+ propertyBag.setLoading(false);
+ }
+
/**
* Gets the schema associated with this type of object.
*
diff --git a/src/main/java/microsoft/exchange/webservices/data/core/service/folder/Folder.java b/src/main/java/microsoft/exchange/webservices/data/core/service/folder/Folder.java
index 77849c1f2..2cc33c40c 100644
--- a/src/main/java/microsoft/exchange/webservices/data/core/service/folder/Folder.java
+++ b/src/main/java/microsoft/exchange/webservices/data/core/service/folder/Folder.java
@@ -62,6 +62,10 @@
import java.util.ArrayList;
import java.util.EnumSet;
+import java.util.Map;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
/**
* Represents a generic folder.
@@ -70,6 +74,9 @@
public class Folder extends ServiceObject {
private static final Log LOG = LogFactory.getLog(Folder.class);
+
+ private static final Map WELL_KNOWN_FOLDER_MAP = Stream.of(WellKnownFolderName.values())
+ .collect(Collectors.toMap(k -> k.toString().toLowerCase(), Function.identity()));
/**
* Initializes an unsaved local instance of {@link Folder}.
@@ -668,6 +675,16 @@ public String getDisplayName() throws ServiceLocalException {
FolderSchema.DisplayName);
}
+ /**
+ * Gets the well known folder name.
+ *
+ * @return the WellKnownFolderName
+ * @throws ServiceLocalException the service local exception
+ */
+ public WellKnownFolderName getWellKnownFolderName() throws ServiceLocalException {
+ return WELL_KNOWN_FOLDER_MAP.get(getPropertyBag().getObjectFromPropertyDefinition(FolderSchema.WellKnownFolderName));
+ }
+
/**
* Sets the display name of the folder.
*
diff --git a/src/main/java/microsoft/exchange/webservices/data/core/service/item/Appointment.java b/src/main/java/microsoft/exchange/webservices/data/core/service/item/Appointment.java
index 74a40149b..cc717e01b 100644
--- a/src/main/java/microsoft/exchange/webservices/data/core/service/item/Appointment.java
+++ b/src/main/java/microsoft/exchange/webservices/data/core/service/item/Appointment.java
@@ -774,6 +774,17 @@ public Boolean getIsRecurring() throws ServiceLocalException {
AppointmentSchema.IsRecurring);
}
+ /**
+ * Gets a value indicating whether the appointment is recurring.
+ *
+ * @return the checks if is recurring
+ * @throws ServiceLocalException the service local exception
+ */
+ public Boolean getIsOrganizer() throws ServiceLocalException {
+ return getPropertyBag().getObjectFromPropertyDefinition(
+ AppointmentSchema.IsOrganizer);
+ }
+
/**
* Gets a value indicating whether the meeting request has already been
* sent.
@@ -820,6 +831,19 @@ public AppointmentType getAppointmentType() throws ServiceLocalException {
AppointmentSchema.AppointmentType);
}
+ /**
+ * Gets a value indicating what was the last response of the user that
+ * loaded this meeting.
+ *
+ * @param value the my response type
+ * @throws Exception
+ */
+ public void setMyResponseType(MeetingResponseType value)
+ throws Exception {
+ this.getPropertyBag().setObjectFromPropertyDefinition(
+ AppointmentSchema.MyResponseType, value);
+ }
+
/**
* Gets a value indicating what was the last response of the user that
* loaded this meeting.
diff --git a/src/main/java/microsoft/exchange/webservices/data/core/service/item/Conversation.java b/src/main/java/microsoft/exchange/webservices/data/core/service/item/Conversation.java
index eb70e10f7..d3f30aa0f 100644
--- a/src/main/java/microsoft/exchange/webservices/data/core/service/item/Conversation.java
+++ b/src/main/java/microsoft/exchange/webservices/data/core/service/item/Conversation.java
@@ -416,7 +416,7 @@ public void copyItemsInConversation(
* belong to in order for their read state to
* be set. If contextFolderId is null, the read states of
* item across the entire mailbox are set.
- * @param isRead if set to true, conversation item are marked as read;
+ * @param isRead if set to true, conversation item are marked as read;
* otherwise they are marked as unread.
* @throws Exception
* @throws IndexOutOfBoundsException
diff --git a/src/main/java/microsoft/exchange/webservices/data/core/service/item/EmailMessage.java b/src/main/java/microsoft/exchange/webservices/data/core/service/item/EmailMessage.java
index 00ff93df0..733f7137d 100644
--- a/src/main/java/microsoft/exchange/webservices/data/core/service/item/EmailMessage.java
+++ b/src/main/java/microsoft/exchange/webservices/data/core/service/item/EmailMessage.java
@@ -68,6 +68,10 @@ public EmailMessage(ExchangeService service) throws Exception {
super(service);
}
+ public EmailMessage(ExchangeService service, ItemId itemId) throws Exception {
+ super(service, itemId);
+ }
+
/**
* Initializes a new instance of the "EmailMessage" class.
*
@@ -398,6 +402,7 @@ public void setFrom(EmailAddress value) throws Exception {
* @return the checks if is associated
* @throws ServiceLocalException the service local exception
*/
+ @Override
public boolean getIsAssociated() throws ServiceLocalException {
return super.getIsAssociated();
}
diff --git a/src/main/java/microsoft/exchange/webservices/data/core/service/item/Item.java b/src/main/java/microsoft/exchange/webservices/data/core/service/item/Item.java
index bf23473cf..3674da59b 100644
--- a/src/main/java/microsoft/exchange/webservices/data/core/service/item/Item.java
+++ b/src/main/java/microsoft/exchange/webservices/data/core/service/item/Item.java
@@ -83,8 +83,8 @@ public class Item extends ServiceObject {
private ItemAttachment parentAttachment;
/**
- * Initializes an unsaved local instance of . To bind to
- * an existing item, use Item.Bind() instead.
+ * Initializes an unsaved local instance of {@link Item}. To bind to
+ * an existing item, use {@link Item#bind(ExchangeService, ItemId)} instead.
*
* @param service the service
* @throws Exception the exception
@@ -93,6 +93,10 @@ public Item(ExchangeService service) throws Exception {
super(service);
}
+ public Item(ExchangeService service, ItemId itemId) throws Exception {
+ super(service, itemId);
+ }
+
/**
* Initializes a new instance of the item class.
*
@@ -173,6 +177,7 @@ protected void throwIfThisIsAttachment() throws InvalidOperationException {
*
* @return A PropertyDefinition instance.
*/
+ @Override
public PropertyDefinition getIdPropertyDefinition() {
return ItemSchema.Id;
}
@@ -514,6 +519,7 @@ public boolean removeExtendedProperty(
* @return true if a time zone SOAP header should be emitted;
* otherwise,false
*/
+ @Override
public boolean getIsTimeZoneHeaderRequired(boolean isUpdateOperation)
throws Exception {
// Starting E14SP2, attachment will be sent along with CreateItem
@@ -588,6 +594,7 @@ public boolean getIsNew() throws ServiceLocalException {
* @return the id
* @throws ServiceLocalException the service local exception
*/
+ @Override
public ItemId getId() throws ServiceLocalException {
return getPropertyBag().getObjectFromPropertyDefinition(
getIdPropertyDefinition());
diff --git a/src/main/java/microsoft/exchange/webservices/data/core/service/item/MeetingMessage.java b/src/main/java/microsoft/exchange/webservices/data/core/service/item/MeetingMessage.java
index 801922a3c..0549f4dd0 100644
--- a/src/main/java/microsoft/exchange/webservices/data/core/service/item/MeetingMessage.java
+++ b/src/main/java/microsoft/exchange/webservices/data/core/service/item/MeetingMessage.java
@@ -155,6 +155,17 @@ public MeetingResponseType getResponseType()
MeetingMessageSchema.ResponseType);
}
+ /**
+ * Sets the response type.
+ *
+ * @param value the response type
+ * @throws Exception
+ */
+ public void setResponseType(MeetingResponseType value) throws Exception {
+ this.getPropertyBag().setObjectFromPropertyDefinition(
+ MeetingMessageSchema.ResponseType, value);
+ }
+
/**
* Gets the ICalendar Uid.
*
@@ -166,6 +177,17 @@ public String getICalUid() throws ServiceLocalException {
MeetingMessageSchema.ICalUid);
}
+ /**
+ * Sets the ICalendar Uid.
+ *
+ * @param value the i cal uid
+ * @throws Exception
+ */
+ public void setICalUid(String value) throws Exception {
+ this.getPropertyBag().setObjectFromPropertyDefinition(
+ MeetingMessageSchema.ICalUid, value);
+ }
+
/**
* Gets the ICalendar RecurrenceId.
*
diff --git a/src/main/java/microsoft/exchange/webservices/data/core/service/item/MeetingRequest.java b/src/main/java/microsoft/exchange/webservices/data/core/service/item/MeetingRequest.java
index f8c8b5a82..22c1829f3 100644
--- a/src/main/java/microsoft/exchange/webservices/data/core/service/item/MeetingRequest.java
+++ b/src/main/java/microsoft/exchange/webservices/data/core/service/item/MeetingRequest.java
@@ -273,7 +273,7 @@ public LegacyFreeBusyStatus getIntendedFreeBusyStatus()
*/
public Date getStart() throws ServiceLocalException {
return getPropertyBag().getObjectFromPropertyDefinition(
- AppointmentSchema.Start);
+ MeetingRequestSchema.Start);
}
/**
@@ -284,9 +284,32 @@ public Date getStart() throws ServiceLocalException {
*/
public Date getEnd() throws ServiceLocalException {
return getPropertyBag().getObjectFromPropertyDefinition(
- AppointmentSchema.End);
+ MeetingRequestSchema.End);
}
+ /**
+ * Sets the start.
+ *
+ * @param value the new start
+ * @throws Exception the exception
+ */
+ public void setStart(Date value) throws Exception {
+ this.getPropertyBag().setObjectFromPropertyDefinition(
+ MeetingRequestSchema.Start, value);
+ }
+
+ /**
+ * Sets the end.
+ *
+ * @param value the new end
+ * @throws Exception the exception
+ */
+ public void setEnd(Date value) throws Exception {
+ this.getPropertyBag().setObjectFromPropertyDefinition(
+ MeetingRequestSchema.End, value);
+ }
+
+
/**
* Gets the original start time of the appointment.
*
@@ -306,7 +329,18 @@ public Date getOriginalStart() throws ServiceLocalException {
*/
public boolean getIsAllDayEvent() throws ServiceLocalException {
return getPropertyBag().getObjectFromPropertyDefinition(
- AppointmentSchema.IsAllDayEvent) != null;
+ MeetingRequestSchema.IsAllDayEvent) != null;
+ }
+
+ /**
+ * Sets the checks if is all day event.
+ *
+ * @param value the new checks if is all day event
+ * @throws Exception the exception
+ */
+ public void setIsAllDayEvent(Boolean value) throws Exception {
+ this.getPropertyBag().setObjectFromPropertyDefinition(
+ MeetingRequestSchema.IsAllDayEvent, value);
}
/**
@@ -330,7 +364,18 @@ public LegacyFreeBusyStatus legacyFreeBusyStatus()
*/
public String getLocation() throws ServiceLocalException {
return getPropertyBag().getObjectFromPropertyDefinition(
- AppointmentSchema.Location);
+ MeetingRequestSchema.Location);
+ }
+
+ /**
+ * Sets the location.
+ *
+ * @param value the new location
+ * @throws Exception the exception
+ */
+ public void setLocation(String value) throws Exception {
+ this.getPropertyBag().setObjectFromPropertyDefinition(
+ MeetingRequestSchema.Location, value);
}
/**
@@ -646,7 +691,7 @@ public DeletedOccurrenceInfoCollection getDeletedOccurrences()
*/
public TimeZoneDefinition getStartTimeZone() throws ServiceLocalException {
return getPropertyBag().getObjectFromPropertyDefinition(
- AppointmentSchema.StartTimeZone);
+ MeetingRequestSchema.StartTimeZone);
}
/**
@@ -657,7 +702,30 @@ public TimeZoneDefinition getStartTimeZone() throws ServiceLocalException {
*/
public TimeZoneDefinition getEndTimeZone() throws ServiceLocalException {
return getPropertyBag().getObjectFromPropertyDefinition(
- AppointmentSchema.EndTimeZone);
+ MeetingRequestSchema.EndTimeZone);
+ }
+ /**
+ * Sets the start time zone.
+ *
+ * @param value the new start time zone
+ * @throws Exception the exception
+ */
+ public void setStartTimeZone(TimeZoneDefinition value) throws Exception {
+ this.getPropertyBag().setObjectFromPropertyDefinition(
+ MeetingRequestSchema.StartTimeZone, value);
+
+ }
+
+ /**
+ * Sets the start time zone.
+ *
+ * @param value the new end time zone
+ * @throws Exception the exception
+ */
+ public void setEndTimeZone(TimeZoneDefinition value) throws Exception {
+ this.getPropertyBag().setObjectFromPropertyDefinition(
+ MeetingRequestSchema.EndTimeZone, value);
+
}
/**
diff --git a/src/main/java/microsoft/exchange/webservices/data/core/service/item/MeetingResponse.java b/src/main/java/microsoft/exchange/webservices/data/core/service/item/MeetingResponse.java
index 72823478b..ba986dc9d 100644
--- a/src/main/java/microsoft/exchange/webservices/data/core/service/item/MeetingResponse.java
+++ b/src/main/java/microsoft/exchange/webservices/data/core/service/item/MeetingResponse.java
@@ -23,15 +23,23 @@
package microsoft.exchange.webservices.data.core.service.item;
+import java.util.Date;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
import microsoft.exchange.webservices.data.attribute.ServiceObjectDefinition;
import microsoft.exchange.webservices.data.core.ExchangeService;
import microsoft.exchange.webservices.data.core.PropertySet;
import microsoft.exchange.webservices.data.core.XmlElementNames;
import microsoft.exchange.webservices.data.core.enumeration.misc.ExchangeVersion;
+import microsoft.exchange.webservices.data.core.enumeration.service.calendar.AppointmentType;
+import microsoft.exchange.webservices.data.core.exception.service.local.ServiceLocalException;
+import microsoft.exchange.webservices.data.core.service.schema.MeetingResponseSchema;
+import microsoft.exchange.webservices.data.core.service.schema.ServiceObjectSchema;
import microsoft.exchange.webservices.data.property.complex.ItemAttachment;
import microsoft.exchange.webservices.data.property.complex.ItemId;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
+import microsoft.exchange.webservices.data.property.complex.recurrence.pattern.Recurrence;
/**
* Represents a response to a meeting request. Properties available on meeting
@@ -97,6 +105,15 @@ public static MeetingResponse bind(ExchangeService service, ItemId id) {
.getFirstClassProperties());
}
+ /**
+ * Internal method to return the schema associated with this type of object.
+ *
+ * @return The schema associated with this type of object.
+ */
+ @Override public ServiceObjectSchema getSchema() {
+ return MeetingResponseSchema.Instance;
+ }
+
/**
* Gets the minimum required server version.
*
@@ -106,4 +123,108 @@ public static MeetingResponse bind(ExchangeService service, ItemId id) {
@Override public ExchangeVersion getMinimumRequiredServerVersion() {
return ExchangeVersion.Exchange2007_SP1;
}
+
+ // Properties
+
+ /**
+ * Gets the start time of the appointment.
+ *
+ * @return the start
+ * @throws ServiceLocalException the service local exception
+ */
+ public Date getStart() throws ServiceLocalException {
+ return getPropertyBag().getObjectFromPropertyDefinition(
+ MeetingResponseSchema.Start);
+ }
+
+ /**
+ * Gets or sets the end time of the appointment.
+ *
+ * @return the end
+ * @throws ServiceLocalException the service local exception
+ */
+ public Date getEnd() throws ServiceLocalException {
+ return getPropertyBag().getObjectFromPropertyDefinition(
+ MeetingResponseSchema.End);
+ }
+
+ /**
+ * Gets the location of this appointment.
+ *
+ * @return the location
+ * @throws ServiceLocalException the service local exception
+ */
+ public String getLocation() throws ServiceLocalException {
+ return getPropertyBag().getObjectFromPropertyDefinition(
+ MeetingResponseSchema.Location);
+ }
+
+ /**
+ * Gets the recurrence pattern for this appointment. Available
+ * recurrence pattern classes include Recurrence.DailyPattern,
+ * Recurrence.MonthlyPattern and Recurrence.YearlyPattern.
+ *
+ * @return the recurrence
+ * @throws ServiceLocalException the service local exception
+ */
+ public Recurrence getRecurrence() throws ServiceLocalException {
+ return getPropertyBag().getObjectFromPropertyDefinition(
+ MeetingResponseSchema.Recurrence);
+ }
+
+ /**
+ * Gets a value indicating the type of this appointment.
+ *
+ * @return the appointment type
+ * @throws ServiceLocalException the service local exception
+ */
+ public AppointmentType getAppointmentType() throws ServiceLocalException {
+ return getPropertyBag().getObjectFromPropertyDefinition(
+ MeetingResponseSchema.AppointmentType);
+ }
+
+ /**
+ * Gets the proposed start time.
+ *
+ * @return the start
+ * @throws ServiceLocalException the service local exception
+ */
+ public Date getProposedStart() throws ServiceLocalException {
+ return getPropertyBag().getObjectFromPropertyDefinition(
+ MeetingResponseSchema.ProposedStart);
+ }
+
+ /**
+ * Sets the proposed start.
+ *
+ * @param value the proposed start
+ * @throws Exception
+ */
+ public void setProposedStart(Date value) throws Exception {
+ this.getPropertyBag().setObjectFromPropertyDefinition(
+ MeetingResponseSchema.ProposedStart, value);
+ }
+
+ /**
+ * Gets the proposed end time.
+ *
+ * @return the start
+ * @throws ServiceLocalException the service local exception
+ */
+ public Date getProposedEnd() throws ServiceLocalException {
+ return getPropertyBag().getObjectFromPropertyDefinition(
+ MeetingResponseSchema.ProposedEnd);
+ }
+
+ /**
+ * Sets the proposed end.
+ *
+ * @param value the proposed start
+ * @throws Exception
+ */
+ public void setProposedEnd(Date value) throws Exception {
+ this.getPropertyBag().setObjectFromPropertyDefinition(
+ MeetingResponseSchema.ProposedEnd, value);
+ }
+
}
diff --git a/src/main/java/microsoft/exchange/webservices/data/core/service/item/Task.java b/src/main/java/microsoft/exchange/webservices/data/core/service/item/Task.java
index 9183ded03..9c0f4ab08 100644
--- a/src/main/java/microsoft/exchange/webservices/data/core/service/item/Task.java
+++ b/src/main/java/microsoft/exchange/webservices/data/core/service/item/Task.java
@@ -582,8 +582,7 @@ public void setTotalWork(Integer value) throws Exception {
/**
* Gets the default setting for how to treat affected task occurrences on
- * Delete. AffectedTaskOccurrence.AllOccurrences: All affected Task
- * occurrences will be deleted.
+ * Delete.
*
* @return the default affected task occurrences
*/
diff --git a/src/main/java/microsoft/exchange/webservices/data/core/service/item/UploadItem.java b/src/main/java/microsoft/exchange/webservices/data/core/service/item/UploadItem.java
new file mode 100644
index 000000000..763d216f1
--- /dev/null
+++ b/src/main/java/microsoft/exchange/webservices/data/core/service/item/UploadItem.java
@@ -0,0 +1,83 @@
+package microsoft.exchange.webservices.data.core.service.item;
+
+import microsoft.exchange.webservices.data.core.*;
+import microsoft.exchange.webservices.data.core.enumeration.misc.*;
+import microsoft.exchange.webservices.data.property.complex.*;
+
+public class UploadItem {
+
+ public enum CreateAction {
+ CreateNew,
+ Update
+ }
+
+ private CreateAction createAction;
+
+ private FolderId parentFolderId;
+
+ private ItemId itemId;
+
+ private byte[] data;
+
+ public void writeToXml(EwsServiceXmlWriter writer) {
+ try {
+ writer.writeStartElement(XmlNamespace.Types, XmlElementNames.Item);
+ writer.writeAttributeValue(XmlAttributeNames.CreateAction, createAction);
+ parentFolderId.writeToXml(writer, XmlElementNames.ParentFolderId);
+ if (itemId != null) {
+ itemId.writeToXml(writer);
+ }
+ writer.writeStartElement(XmlNamespace.Types, XmlElementNames.Data);
+ writer.writeBase64ElementValue(data);
+ writer.writeEndElement();
+ writer.writeEndElement();
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ public void validate() throws Exception {
+ EwsUtilities.validateParam(createAction, "createAction");
+ EwsUtilities.validateParam(parentFolderId, "parentFolderId");
+ EwsUtilities.validateParam(data, "data");
+ if (createAction == CreateAction.Update) {
+ EwsUtilities.validateParam(itemId, "itemId required for updates");
+ }
+ }
+
+ public CreateAction getCreateAction() {
+ return createAction;
+ }
+
+ public UploadItem setCreateAction(CreateAction createAction) {
+ this.createAction = createAction;
+ return this;
+ }
+
+ public FolderId getParentFolderId() {
+ return parentFolderId;
+ }
+
+ public UploadItem setParentFolderId(FolderId parentFolderId) {
+ this.parentFolderId = parentFolderId;
+ return this;
+ }
+
+ public ItemId getItemId() {
+ return itemId;
+ }
+
+ public UploadItem setItemId(ItemId itemId) {
+ this.itemId = itemId;
+ return this;
+ }
+
+ public byte[] getData() {
+ return data;
+ }
+
+ public UploadItem setData(byte[] data) {
+ this.data = data;
+ return this;
+ }
+}
diff --git a/src/main/java/microsoft/exchange/webservices/data/core/service/response/CalendarResponseMessage.java b/src/main/java/microsoft/exchange/webservices/data/core/service/response/CalendarResponseMessage.java
index 0645b2a0d..351037174 100644
--- a/src/main/java/microsoft/exchange/webservices/data/core/service/response/CalendarResponseMessage.java
+++ b/src/main/java/microsoft/exchange/webservices/data/core/service/response/CalendarResponseMessage.java
@@ -23,15 +23,19 @@
package microsoft.exchange.webservices.data.core.service.response;
+import java.util.Date;
+
import microsoft.exchange.webservices.data.attribute.EditorBrowsable;
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.schema.CalendarResponseObjectSchema;
import microsoft.exchange.webservices.data.core.service.schema.EmailMessageSchema;
import microsoft.exchange.webservices.data.core.service.schema.ItemSchema;
+import microsoft.exchange.webservices.data.core.service.schema.MeetingResponseSchema;
import microsoft.exchange.webservices.data.core.service.schema.ServiceObjectSchema;
import microsoft.exchange.webservices.data.core.enumeration.attribute.EditorBrowsableState;
import microsoft.exchange.webservices.data.core.enumeration.property.Sensitivity;
+import microsoft.exchange.webservices.data.core.exception.service.local.ServiceLocalException;
import microsoft.exchange.webservices.data.property.complex.AttachmentCollection;
import microsoft.exchange.webservices.data.property.complex.EmailAddress;
import microsoft.exchange.webservices.data.property.complex.EmailAddressCollection;
@@ -215,4 +219,50 @@ public void setSender(EmailAddress value) throws Exception {
this.getPropertyBag().setObjectFromPropertyDefinition(
EmailMessageSchema.Sender, value);
}
+
+ /**
+ * Gets the proposed start time.
+ *
+ * @return the start
+ * @throws ServiceLocalException the service local exception
+ */
+ public Date getProposedStart() throws ServiceLocalException {
+ return getPropertyBag().getObjectFromPropertyDefinition(
+ MeetingResponseSchema.ProposedStart);
+ }
+
+ /**
+ * Sets the proposed start time.
+ *
+ * @param value the new start time
+ * @throws Exception the exception
+ */
+ public void setProposedStart(Date value) throws Exception {
+ this.getPropertyBag().setObjectFromPropertyDefinition(
+ MeetingResponseSchema.ProposedStart, value);
+ }
+
+ /**
+ * Gets the proposed end time.
+ *
+ * @return the start
+ * @throws ServiceLocalException the service local exception
+ */
+ public Date getProposedEnd() throws ServiceLocalException {
+ return getPropertyBag().getObjectFromPropertyDefinition(
+ MeetingResponseSchema.ProposedEnd);
+ }
+
+
+ /**
+ * Sets the proposed end time.
+ *
+ * @param value the new end time
+ * @throws Exception the exception
+ */
+ public void setProposedEnd(Date value) throws Exception {
+ this.getPropertyBag().setObjectFromPropertyDefinition(
+ MeetingResponseSchema.ProposedEnd, value);
+ }
+
}
diff --git a/src/main/java/microsoft/exchange/webservices/data/core/service/schema/AppointmentSchema.java b/src/main/java/microsoft/exchange/webservices/data/core/service/schema/AppointmentSchema.java
index 36514a67c..20e9ef617 100644
--- a/src/main/java/microsoft/exchange/webservices/data/core/service/schema/AppointmentSchema.java
+++ b/src/main/java/microsoft/exchange/webservices/data/core/service/schema/AppointmentSchema.java
@@ -135,6 +135,11 @@ private static interface FieldUris {
*/
String MyResponseType = "calendar:MyResponseType";
+ /**
+ * Are we the organiser
+ */
+ String IsOrganizer = "calendar:IsOrganizer";
+
/**
* The Organizer.
*/
@@ -347,7 +352,8 @@ private static interface FieldUris {
PropertyDefinitionFlags.CanSet,
PropertyDefinitionFlags.CanUpdate,
PropertyDefinitionFlags.CanFind),
- ExchangeVersion.Exchange2007_SP1);
+ ExchangeVersion.Exchange2007_SP1,
+ true);
// Defines the LegacyFreeBusyStatus property.
/**
@@ -418,6 +424,16 @@ private static interface FieldUris {
.of(PropertyDefinitionFlags.CanFind),
ExchangeVersion.Exchange2007_SP1);
+ // Defines the IsOrganizer property.
+ /**
+ * The Constant IsOrganizer.
+ */
+ public static final PropertyDefinition IsOrganizer =
+ new BoolPropertyDefinition(
+ XmlElementNames.IsOrganizer, FieldUris.IsOrganizer, EnumSet
+ .of(PropertyDefinitionFlags.CanFind),
+ ExchangeVersion.Exchange2007_SP1);
+
// Defines the MeetingRequestWasSent property.
/**
* The Constant MeetingRequestWasSent.
@@ -752,8 +768,9 @@ public DeletedOccurrenceInfoCollection createComplexProperty() {
FieldUris.AllowNewTimeProposal, EnumSet.of(
PropertyDefinitionFlags.CanSet,
PropertyDefinitionFlags.CanUpdate,
- PropertyDefinitionFlags.CanFind),
- ExchangeVersion.Exchange2007_SP1);
+ PropertyDefinitionFlags.CanFind,
+ PropertyDefinitionFlags.CanDelete),
+ ExchangeVersion.Exchange2007_SP1, true);
// Defines the IsOnlineMeeting property.
/**
@@ -800,7 +817,8 @@ public DeletedOccurrenceInfoCollection createComplexProperty() {
public static final PropertyDefinition ICalUid =
new StringPropertyDefinition(
XmlElementNames.Uid, FieldUris.Uid, EnumSet
- .of(PropertyDefinitionFlags.CanFind),
+ .of(PropertyDefinitionFlags.CanSet,
+ PropertyDefinitionFlags.CanFind),
ExchangeVersion.Exchange2007_SP1);
// Defines the iCalendar RecurrenceId property.
@@ -883,6 +901,7 @@ protected void registerProperties() {
this.registerProperty(ICalUid);
this.registerProperty(ICalRecurrenceId);
this.registerProperty(ICalDateTimeStamp);
+ this.registerProperty(IsOrganizer);
}
/**
diff --git a/src/main/java/microsoft/exchange/webservices/data/core/service/schema/CalendarResponseObjectSchema.java b/src/main/java/microsoft/exchange/webservices/data/core/service/schema/CalendarResponseObjectSchema.java
index cf8951bc6..025fc5b9e 100644
--- a/src/main/java/microsoft/exchange/webservices/data/core/service/schema/CalendarResponseObjectSchema.java
+++ b/src/main/java/microsoft/exchange/webservices/data/core/service/schema/CalendarResponseObjectSchema.java
@@ -56,5 +56,8 @@ protected void registerProperties() {
this.registerProperty(EmailMessageSchema.IsReadReceiptRequested);
this.registerProperty(EmailMessageSchema.IsDeliveryReceiptRequested);
this.registerProperty(ResponseObjectSchema.ReferenceItemId);
+
+ this.registerProperty(MeetingResponseSchema.ProposedStart);
+ this.registerProperty(MeetingResponseSchema.ProposedEnd);
}
}
diff --git a/src/main/java/microsoft/exchange/webservices/data/core/service/schema/ContactSchema.java b/src/main/java/microsoft/exchange/webservices/data/core/service/schema/ContactSchema.java
index da6ba708d..be727592b 100644
--- a/src/main/java/microsoft/exchange/webservices/data/core/service/schema/ContactSchema.java
+++ b/src/main/java/microsoft/exchange/webservices/data/core/service/schema/ContactSchema.java
@@ -527,7 +527,7 @@ public PhoneNumberDictionary createComplexProperty() {
/**
* Defines the BusinessHomePage property.
- *
+ *
* Defined as anyURI in the EWS schema. String is fine here.
*/
public static final PropertyDefinition BusinessHomePage =
@@ -1193,7 +1193,7 @@ public EmailAddressCollection createComplexProperty()
/**
* Registers property.
- *
+ *
* IMPORTANT NOTE: PROPERTIES MUST BE REGISTERED IN SCHEMA ORDER (i.e. the
* same order as they are defined in types.xsd)
*/
diff --git a/src/main/java/microsoft/exchange/webservices/data/core/service/schema/FolderSchema.java b/src/main/java/microsoft/exchange/webservices/data/core/service/schema/FolderSchema.java
index 0388baad6..dfcd4438f 100644
--- a/src/main/java/microsoft/exchange/webservices/data/core/service/schema/FolderSchema.java
+++ b/src/main/java/microsoft/exchange/webservices/data/core/service/schema/FolderSchema.java
@@ -100,6 +100,11 @@ private static class FieldUris {
* The Constant PermissionSet.
*/
public final static String PermissionSet = "folder:PermissionSet";
+
+ /**
+ * The Constant DistinguishedFolderId.
+ */
+ public final static String DistinguishedFolderId = "folder:DistinguishedFolderId";
}
@@ -119,6 +124,10 @@ public FolderId createComplexProperty() {
}
);
+
+ public static final PropertyDefinition WellKnownFolderName = new StringPropertyDefinition(
+ XmlElementNames.DistinguishedFolderId, FieldUris.DistinguishedFolderId,
+ EnumSet.of(PropertyDefinitionFlags.CanSet, PropertyDefinitionFlags.CanFind), ExchangeVersion.Exchange2013);
/**
* Defines the FolderClass property.
@@ -247,5 +256,6 @@ protected void registerProperties() {
this.registerProperty(EffectiveRights);
this.registerProperty(Permissions);
this.registerProperty(UnreadCount);
+ this.registerProperty(WellKnownFolderName);
}
}
diff --git a/src/main/java/microsoft/exchange/webservices/data/core/service/schema/MeetingMessageSchema.java b/src/main/java/microsoft/exchange/webservices/data/core/service/schema/MeetingMessageSchema.java
index 21b927459..7e6142c23 100644
--- a/src/main/java/microsoft/exchange/webservices/data/core/service/schema/MeetingMessageSchema.java
+++ b/src/main/java/microsoft/exchange/webservices/data/core/service/schema/MeetingMessageSchema.java
@@ -124,7 +124,8 @@ public ItemId createComplexProperty() {
new GenericPropertyDefinition(
MeetingResponseType.class,
XmlElementNames.ResponseType, FieldUris.ResponseType, EnumSet
- .of(PropertyDefinitionFlags.CanFind),
+ .of(PropertyDefinitionFlags.CanFind,
+ PropertyDefinitionFlags.CanSet),
ExchangeVersion.Exchange2007_SP1);
/**
@@ -161,7 +162,7 @@ public static MeetingMessageSchema getInstance() {
/**
* Registers property.
- *
+ *
* IMPORTANT NOTE: PROPERTIES MUST BE REGISTERED IN SCHEMA ORDER (i.e. the
* same order as they are defined in types.xsd)
*/
diff --git a/src/main/java/microsoft/exchange/webservices/data/core/service/schema/MeetingRequestSchema.java b/src/main/java/microsoft/exchange/webservices/data/core/service/schema/MeetingRequestSchema.java
index bca9b18b6..9052c8486 100644
--- a/src/main/java/microsoft/exchange/webservices/data/core/service/schema/MeetingRequestSchema.java
+++ b/src/main/java/microsoft/exchange/webservices/data/core/service/schema/MeetingRequestSchema.java
@@ -315,7 +315,7 @@ private static interface FieldUris {
/**
* Registers property.
- *
+ *
* IMPORTANT NOTE: PROPERTIES MUST BE REGISTERED IN SCHEMA ORDER (i.e. the
* same order as they are defined in types.xsd)
*/
diff --git a/src/main/java/microsoft/exchange/webservices/data/core/service/schema/MeetingResponseSchema.java b/src/main/java/microsoft/exchange/webservices/data/core/service/schema/MeetingResponseSchema.java
new file mode 100644
index 000000000..c45adcfcf
--- /dev/null
+++ b/src/main/java/microsoft/exchange/webservices/data/core/service/schema/MeetingResponseSchema.java
@@ -0,0 +1,142 @@
+/*
+ * 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.schema;
+
+import java.util.EnumSet;
+
+import microsoft.exchange.webservices.data.attribute.Schema;
+import microsoft.exchange.webservices.data.core.XmlElementNames;
+import microsoft.exchange.webservices.data.core.enumeration.misc.ExchangeVersion;
+import microsoft.exchange.webservices.data.core.enumeration.property.PropertyDefinitionFlags;
+import microsoft.exchange.webservices.data.property.definition.DateTimePropertyDefinition;
+import microsoft.exchange.webservices.data.property.definition.PropertyDefinition;
+
+/**
+ * Represents the schema for meeting request.
+ */
+@Schema
+public class MeetingResponseSchema extends MeetingMessageSchema {
+
+ /**
+ * Field URIs for MeetingRequest.
+ */
+ private static interface FieldUris {
+
+ /**
+ * The Start.
+ */
+ String ProposedStart = "meetingResponse:ProposedStart";
+
+ /**
+ * The End.
+ */
+ String ProposedEnd = "meetingResponse:ProposedEnd";
+ }
+
+ /**
+ * Defines the Start property.
+ */
+ public static final PropertyDefinition Start = AppointmentSchema.Start;
+
+ /**
+ * Defines the End property.
+ */
+ public static final PropertyDefinition End = AppointmentSchema.End;
+
+ /**
+ * Defines the Location property.
+ */
+ public static final PropertyDefinition Location =
+ AppointmentSchema.Location;
+
+ /**
+ * Defines the Recurrence property.
+ */
+ public static final PropertyDefinition Recurrence =
+ AppointmentSchema.Recurrence;
+
+ /**
+ * Defines the AppointmentType property.
+ */
+ public static final PropertyDefinition AppointmentType =
+ AppointmentSchema.AppointmentType;
+
+ // Defines the Start property.
+ /**
+ * The Constant Start.
+ */
+ public static final PropertyDefinition ProposedStart =
+ new DateTimePropertyDefinition(
+ XmlElementNames.ProposedStart, FieldUris.ProposedStart, EnumSet.of(
+ PropertyDefinitionFlags.CanSet,
+ PropertyDefinitionFlags.CanFind),
+ ExchangeVersion.Exchange2007_SP1,
+ true);
+
+ // Defines the End property.
+ /**
+ * The Constant End.
+ */
+ public static final PropertyDefinition ProposedEnd
+ = new DateTimePropertyDefinition(
+ XmlElementNames.ProposedEnd, FieldUris.ProposedEnd, EnumSet.of(
+ PropertyDefinitionFlags.CanSet,
+ PropertyDefinitionFlags.CanFind),
+ ExchangeVersion.Exchange2007_SP1,
+ true);
+
+ /**
+ * This must be after the declaration of property definitions.
+ */
+ public static final MeetingResponseSchema Instance =
+ new MeetingResponseSchema();
+
+ /**
+ * Registers property.
+ *
+ * IMPORTANT NOTE: PROPERTIES MUST BE REGISTERED IN SCHEMA ORDER (i.e. the
+ * same order as they are defined in types.xsd)
+ */
+ @Override
+ protected void registerProperties() {
+ super.registerProperties();
+
+ this.registerProperty(Start);
+ this.registerProperty(End);
+ this.registerProperty(Location);
+ this.registerProperty(Recurrence);
+ this.registerProperty(AppointmentType);
+
+ this.registerProperty(ProposedStart);
+ this.registerProperty(ProposedEnd);
+
+ }
+
+ /**
+ * Initializes a new instance of the class.
+ */
+ protected MeetingResponseSchema() {
+ super();
+ }
+}
diff --git a/src/main/java/microsoft/exchange/webservices/data/core/service/schema/PostItemSchema.java b/src/main/java/microsoft/exchange/webservices/data/core/service/schema/PostItemSchema.java
index 4a31ac7e4..d157cd62c 100644
--- a/src/main/java/microsoft/exchange/webservices/data/core/service/schema/PostItemSchema.java
+++ b/src/main/java/microsoft/exchange/webservices/data/core/service/schema/PostItemSchema.java
@@ -106,7 +106,7 @@ private static interface FieldUris {
/**
* Registers property.
- *
+ *
* IMPORTANT NOTE: PROPERTIES MUST BE REGISTERED IN SCHEMA ORDER (i.e. the
* same order as they are defined in types.xsd)
*/
diff --git a/src/main/java/microsoft/exchange/webservices/data/core/service/schema/PostReplySchema.java b/src/main/java/microsoft/exchange/webservices/data/core/service/schema/PostReplySchema.java
index 97c82498e..8e2bb6130 100644
--- a/src/main/java/microsoft/exchange/webservices/data/core/service/schema/PostReplySchema.java
+++ b/src/main/java/microsoft/exchange/webservices/data/core/service/schema/PostReplySchema.java
@@ -36,7 +36,7 @@ public final class PostReplySchema extends ServiceObjectSchema {
/**
* Registers property.
- *
+ *
* IMPORTANT NOTE: PROPERTIES MUST BE REGISTERED IN SCHEMA ORDER (i.e. the
* same order as they are defined in types.xsd)
*/
diff --git a/src/main/java/microsoft/exchange/webservices/data/credential/ExchangeCredentials.java b/src/main/java/microsoft/exchange/webservices/data/credential/ExchangeCredentials.java
index 8c052645c..60af44fef 100644
--- a/src/main/java/microsoft/exchange/webservices/data/credential/ExchangeCredentials.java
+++ b/src/main/java/microsoft/exchange/webservices/data/credential/ExchangeCredentials.java
@@ -39,9 +39,7 @@
public abstract class ExchangeCredentials {
/**
- * Performs an implicit conversion from to . This
+ * Performs an implicit conversion to {@link ExchangeCredentials}. This
* allows a NetworkCredential object to be implictly converted to an
* ExchangeCredential which is useful when setting credential on an
* ExchangeService.
diff --git a/src/main/java/microsoft/exchange/webservices/data/misc/AbstractItemIdWrapper.java b/src/main/java/microsoft/exchange/webservices/data/misc/AbstractItemIdWrapper.java
index 2acd24a41..52bfbbb3d 100644
--- a/src/main/java/microsoft/exchange/webservices/data/misc/AbstractItemIdWrapper.java
+++ b/src/main/java/microsoft/exchange/webservices/data/misc/AbstractItemIdWrapper.java
@@ -29,7 +29,7 @@
/**
* Represents the abstraction of an item Id.
*/
-abstract class AbstractItemIdWrapper {
+public abstract class AbstractItemIdWrapper {
/**
* Initializes a new instance of the class.
diff --git a/src/main/java/microsoft/exchange/webservices/data/misc/CalendarActionResults.java b/src/main/java/microsoft/exchange/webservices/data/misc/CalendarActionResults.java
index c1afe48a0..3b02f86a0 100644
--- a/src/main/java/microsoft/exchange/webservices/data/misc/CalendarActionResults.java
+++ b/src/main/java/microsoft/exchange/webservices/data/misc/CalendarActionResults.java
@@ -74,7 +74,7 @@ public CalendarActionResults(Iterable- items) {
/**
* Gets the meeting that was accepted, tentatively accepted or declined.
- *
+ *
* When a meeting is accepted or tentatively accepted via an Appointment
* object, EWS recreates the meeting, and Appointment represents that new
* version. When a meeting is accepted or tentatively accepted via a
@@ -87,6 +87,7 @@ public CalendarActionResults(Iterable- items) {
* Appointment represents that meeting. When a meeting is declined via
* either an Appointment or a MeetingRequest object from the Deleted Items
* folder, Appointment is null.
+ *
*
* @return appointment
*/
diff --git a/src/main/java/microsoft/exchange/webservices/data/misc/FolderIdWrapper.java b/src/main/java/microsoft/exchange/webservices/data/misc/FolderIdWrapper.java
index 03e71f3c7..16304b9aa 100644
--- a/src/main/java/microsoft/exchange/webservices/data/misc/FolderIdWrapper.java
+++ b/src/main/java/microsoft/exchange/webservices/data/misc/FolderIdWrapper.java
@@ -70,4 +70,16 @@ protected void validate(ExchangeVersion version)
throws ServiceVersionException {
this.folderId.validate(version);
}
+
+ public FolderId getFolderId() {
+ return folderId;
+ }
+
+ @Override
+ public String toString() {
+ if (folderId.getFolderName() != null ){
+ return folderId.getFolderName().toString();
+ }
+ return folderId.getUniqueId();
+ }
}
diff --git a/src/main/java/microsoft/exchange/webservices/data/misc/FolderIdWrapperList.java b/src/main/java/microsoft/exchange/webservices/data/misc/FolderIdWrapperList.java
index 5496fa522..d6f607be3 100644
--- a/src/main/java/microsoft/exchange/webservices/data/misc/FolderIdWrapperList.java
+++ b/src/main/java/microsoft/exchange/webservices/data/misc/FolderIdWrapperList.java
@@ -123,8 +123,7 @@ public int getCount() {
}
/**
- * Gets the at
+ * Gets the {@link AbstractFolderIdWrapper} at
* the specified index.
*
* @param i the i
@@ -157,4 +156,8 @@ public Iterator iterator() {
return ids.iterator();
}
+ @Override
+ public String toString() {
+ return ids.toString();
+ }
}
diff --git a/src/main/java/microsoft/exchange/webservices/data/misc/ItemIdWrapper.java b/src/main/java/microsoft/exchange/webservices/data/misc/ItemIdWrapper.java
index 1d704202d..78059aa78 100644
--- a/src/main/java/microsoft/exchange/webservices/data/misc/ItemIdWrapper.java
+++ b/src/main/java/microsoft/exchange/webservices/data/misc/ItemIdWrapper.java
@@ -30,7 +30,7 @@
/**
* Represents an item Id provided by a ItemId object.
*/
-class ItemIdWrapper extends AbstractItemIdWrapper {
+public class ItemIdWrapper extends AbstractItemIdWrapper {
/**
* The ItemId object providing the Id.
@@ -58,4 +58,12 @@ protected void writeToXml(EwsServiceXmlWriter writer) throws Exception {
this.itemId.writeToXml(writer);
}
+ public ItemId getItemId() {
+ return itemId;
+ }
+
+ @Override
+ public String toString() {
+ return itemId.toString();
+ }
}
diff --git a/src/main/java/microsoft/exchange/webservices/data/misc/ItemIdWrapperList.java b/src/main/java/microsoft/exchange/webservices/data/misc/ItemIdWrapperList.java
index 7a5f9ef02..6c03734bb 100644
--- a/src/main/java/microsoft/exchange/webservices/data/misc/ItemIdWrapperList.java
+++ b/src/main/java/microsoft/exchange/webservices/data/misc/ItemIdWrapperList.java
@@ -24,9 +24,9 @@
package microsoft.exchange.webservices.data.misc;
import microsoft.exchange.webservices.data.core.EwsServiceXmlWriter;
-import microsoft.exchange.webservices.data.core.service.item.Item;
import microsoft.exchange.webservices.data.core.enumeration.misc.XmlNamespace;
import microsoft.exchange.webservices.data.core.exception.service.local.ServiceLocalException;
+import microsoft.exchange.webservices.data.core.service.item.Item;
import microsoft.exchange.webservices.data.property.complex.ItemId;
import java.util.ArrayList;
@@ -42,7 +42,7 @@ public class ItemIdWrapperList implements Iterable {
* The item ids.
*/
private List itemIds =
- new ArrayList();
+ new ArrayList();
/**
* Initializes a new instance of the class.
@@ -68,7 +68,7 @@ protected void add(Item item) throws ServiceLocalException {
* @throws ServiceLocalException the service local exception
*/
public void addRangeItem(Iterable- items)
- throws ServiceLocalException {
+ throws ServiceLocalException {
for (Item item : items) {
this.add(item);
}
@@ -144,4 +144,9 @@ public Iterator iterator() {
return itemIds.iterator();
}
+
+ @Override
+ public String toString() {
+ return itemIds.toString();
+ }
}
diff --git a/src/main/java/microsoft/exchange/webservices/data/misc/ItemWrapper.java b/src/main/java/microsoft/exchange/webservices/data/misc/ItemWrapper.java
index 5b13cbe3a..c61964e03 100644
--- a/src/main/java/microsoft/exchange/webservices/data/misc/ItemWrapper.java
+++ b/src/main/java/microsoft/exchange/webservices/data/misc/ItemWrapper.java
@@ -31,7 +31,7 @@
/**
* Represents an item Id provided by a ItemBase object.
*/
-class ItemWrapper extends AbstractItemIdWrapper {
+public class ItemWrapper extends AbstractItemIdWrapper {
/**
* The ItemBase object providing the Id.
diff --git a/src/main/java/microsoft/exchange/webservices/data/misc/MapiTypeConverterMapEntry.java b/src/main/java/microsoft/exchange/webservices/data/misc/MapiTypeConverterMapEntry.java
index 6ca1f0228..ab6c32c82 100644
--- a/src/main/java/microsoft/exchange/webservices/data/misc/MapiTypeConverterMapEntry.java
+++ b/src/main/java/microsoft/exchange/webservices/data/misc/MapiTypeConverterMapEntry.java
@@ -104,7 +104,7 @@ public Map, Object> createInstance() {
*
* @param type The type. y default, converting a type to string is done by
* calling value.ToString. Instances can override this behavior.
- *
+ *
* By default, converting a string to the appropriate value type
* is done by calling Convert.ChangeType Instances may override
* this behavior.
@@ -120,7 +120,7 @@ public MapiTypeConverterMapEntry(Class> type) {
/**
* Change value to a value of compatible type.
- *
+ *
* The type of a simple value should match exactly or be convertible to the
* appropriate type. An array value has to be a single dimension (rank),
* contain at least one value and contain elements that exactly match the
@@ -166,7 +166,7 @@ public Object changeType(Object value) throws Exception {
/**
* Converts a string to value consistent with type.
- *
+ *
* For array types, this method is called for each array element.
*
* @param stringValue String to convert to a value.
diff --git a/src/main/java/microsoft/exchange/webservices/data/misc/MobilePhone.java b/src/main/java/microsoft/exchange/webservices/data/misc/MobilePhone.java
index 6ec0b2d6d..cb425b02a 100644
--- a/src/main/java/microsoft/exchange/webservices/data/misc/MobilePhone.java
+++ b/src/main/java/microsoft/exchange/webservices/data/misc/MobilePhone.java
@@ -42,7 +42,7 @@ public final class MobilePhone implements ISelfValidate {
private String phoneNumber;
/**
- * Initializes a new instance of the class.
+ * Initializes a new instance of the {@link MobilePhone} class.
*/
public MobilePhone() {
}
diff --git a/src/main/java/microsoft/exchange/webservices/data/misc/NameResolutionCollection.java b/src/main/java/microsoft/exchange/webservices/data/misc/NameResolutionCollection.java
index bc62daf3d..d9db598f6 100644
--- a/src/main/java/microsoft/exchange/webservices/data/misc/NameResolutionCollection.java
+++ b/src/main/java/microsoft/exchange/webservices/data/misc/NameResolutionCollection.java
@@ -91,7 +91,7 @@ public void loadFromXml(EwsServiceXmlReader reader) throws Exception {
}
/**
- * Gets the session. The session.
+ * Gets the session.
*
* @return the session
*/
diff --git a/src/main/java/microsoft/exchange/webservices/data/misc/ServiceRequestTraceListener.java b/src/main/java/microsoft/exchange/webservices/data/misc/ServiceRequestTraceListener.java
new file mode 100644
index 000000000..829fdbe9d
--- /dev/null
+++ b/src/main/java/microsoft/exchange/webservices/data/misc/ServiceRequestTraceListener.java
@@ -0,0 +1,11 @@
+package microsoft.exchange.webservices.data.misc;
+
+import microsoft.exchange.webservices.data.core.request.*;
+
+public interface ServiceRequestTraceListener {
+ void requestStart(ServiceRequestBase> serviceRequest, HttpWebRequest request);
+
+ void requestError(ServiceRequestBase> serviceRequest, HttpWebRequest request, Exception e);
+
+ void requestFinish(ServiceRequestBase> serviceRequest, HttpWebRequest request);
+}
diff --git a/src/main/java/microsoft/exchange/webservices/data/misc/UserConfiguration.java b/src/main/java/microsoft/exchange/webservices/data/misc/UserConfiguration.java
index 24cc11512..b8c488ae0 100644
--- a/src/main/java/microsoft/exchange/webservices/data/misc/UserConfiguration.java
+++ b/src/main/java/microsoft/exchange/webservices/data/misc/UserConfiguration.java
@@ -132,7 +132,7 @@ public class UserConfiguration {
private boolean isNew = false;
/**
- * Initializes a new instance of class.
+ * Initializes a new instance of {@link UserConfiguration} class.
*
* @param service The service to which the user configuration is bound.
* @throws Exception the exception
@@ -194,7 +194,7 @@ public static void writeUserConfigurationNameToXml(EwsServiceXmlWriter writer, X
}
/**
- * Initializes a new instance of class.
+ * Initializes a new instance of {@link UserConfiguration} class.
*
* @param service The service to which the user configuration is bound.
* @param requestedProperties The property requested for this user configuration.
diff --git a/src/main/java/microsoft/exchange/webservices/data/notification/FolderEvent.java b/src/main/java/microsoft/exchange/webservices/data/notification/FolderEvent.java
index 93ff8fe32..6eed6ae79 100644
--- a/src/main/java/microsoft/exchange/webservices/data/notification/FolderEvent.java
+++ b/src/main/java/microsoft/exchange/webservices/data/notification/FolderEvent.java
@@ -62,6 +62,19 @@ public class FolderEvent extends NotificationEvent {
protected FolderEvent(EventType eventType, Date timestamp) {
super(eventType, timestamp);
}
+
+ /**
+ * Initializes a new instance.
+ *
+ * @param eventType the event type
+ * @param folderId of the folder that this event refers to
+ * @param parentFolderId of the folder this event refers to
+ */
+ public FolderEvent(EventType eventType, FolderId folderId, FolderId parentFolderId) {
+ super(eventType, null);
+ this.folderId = folderId;
+ setParentFolderId(parentFolderId);
+ }
/**
* Load from XML.
@@ -91,8 +104,8 @@ protected void internalLoadFromXml(EwsServiceXmlReader reader)
reader.read();
- setParentFolderId(new FolderId());
- getParentFolderId().loadFromXml(reader, reader.getLocalName());
+ setOldParentFolderId(new FolderId());
+ getOldParentFolderId().loadFromXml(reader, reader.getLocalName());
break;
case Modified:
diff --git a/src/main/java/microsoft/exchange/webservices/data/notification/GetEventsResults.java b/src/main/java/microsoft/exchange/webservices/data/notification/GetEventsResults.java
index 7a1c8910c..aa706343f 100644
--- a/src/main/java/microsoft/exchange/webservices/data/notification/GetEventsResults.java
+++ b/src/main/java/microsoft/exchange/webservices/data/notification/GetEventsResults.java
@@ -187,7 +187,7 @@ private void loadNotificationEventFromXml(EwsServiceXmlReader reader,
*
* @return the subscription id
*/
- protected String getSubscriptionId() {
+ public String getSubscriptionId() {
return subscriptionId;
}
@@ -196,7 +196,7 @@ protected String getSubscriptionId() {
*
* @return the previous watermark
*/
- protected String getPreviousWatermark() {
+ public String getPreviousWatermark() {
return previousWatermark;
}
@@ -205,7 +205,7 @@ protected String getPreviousWatermark() {
*
* @return the new watermark
*/
- protected String getNewWatermark() {
+ public String getNewWatermark() {
return newWatermark;
}
@@ -215,7 +215,7 @@ protected String getNewWatermark() {
*
* @return true, if is more events available
*/
- protected boolean isMoreEventsAvailable() {
+ public boolean isMoreEventsAvailable() {
return moreEventsAvailable;
}
diff --git a/src/main/java/microsoft/exchange/webservices/data/notification/GetStreamingEventsResults.java b/src/main/java/microsoft/exchange/webservices/data/notification/GetStreamingEventsResults.java
index 8cf433fb3..bafb82462 100644
--- a/src/main/java/microsoft/exchange/webservices/data/notification/GetStreamingEventsResults.java
+++ b/src/main/java/microsoft/exchange/webservices/data/notification/GetStreamingEventsResults.java
@@ -60,8 +60,8 @@ protected static class NotificationGroup {
new ArrayList();
/**
- * Initializes a new instance of the class.
+ * Initializes a new instance of the {@link GetStreamingEventsResults}
+ * class.
*/
public GetStreamingEventsResults() {
}
@@ -155,7 +155,7 @@ private void loadNotificationEventFromXml(
/**
* Gets the notification collection.
*
- * @value The notification collection.
+ * @return The notification collection.
*/
protected Collection getNotifications() {
return this.events;
diff --git a/src/main/java/microsoft/exchange/webservices/data/notification/ItemEvent.java b/src/main/java/microsoft/exchange/webservices/data/notification/ItemEvent.java
index 02ff5b122..77c8e5a34 100644
--- a/src/main/java/microsoft/exchange/webservices/data/notification/ItemEvent.java
+++ b/src/main/java/microsoft/exchange/webservices/data/notification/ItemEvent.java
@@ -58,6 +58,19 @@ protected ItemEvent(EventType eventType, Date timestamp) {
super(eventType, timestamp);
}
+ /**
+ * Initializes a new instance.
+ *
+ * @param eventType the event type
+ * @param itemId of the item that this event refers to
+ * @param parentFolderId of the item this event refers to
+ */
+ public ItemEvent(EventType eventType, ItemId itemId, FolderId parentFolderId) {
+ super(eventType, null);
+ this.itemId = itemId;
+ setParentFolderId(parentFolderId);
+ }
+
/**
* Load from XML.
*
diff --git a/src/main/java/microsoft/exchange/webservices/data/property/complex/Attachment.java b/src/main/java/microsoft/exchange/webservices/data/property/complex/Attachment.java
index 493b60b2b..1f234cb34 100644
--- a/src/main/java/microsoft/exchange/webservices/data/property/complex/Attachment.java
+++ b/src/main/java/microsoft/exchange/webservices/data/property/complex/Attachment.java
@@ -112,7 +112,7 @@ protected void throwIfThisIsNotNew() {
/**
* Sets value of field.
- *
+ *
* We override the base implementation. Attachments cannot be modified so
* any attempts the change a property on an existing attachment is an error.
*
diff --git a/src/main/java/microsoft/exchange/webservices/data/property/complex/AttachmentCollection.java b/src/main/java/microsoft/exchange/webservices/data/property/complex/AttachmentCollection.java
index b39477312..7f3349284 100644
--- a/src/main/java/microsoft/exchange/webservices/data/property/complex/AttachmentCollection.java
+++ b/src/main/java/microsoft/exchange/webservices/data/property/complex/AttachmentCollection.java
@@ -153,6 +153,19 @@ public FileAttachment addFileAttachment(String name, byte[] content) {
return fileAttachment;
}
+ /**
+ * Adds a file attachment to the collection.
+ *
+ * @param name the name
+ * @param content accepts byte byte arrays representing the content of the
+ * attachment.
+ * @return FileAttachment
+ */
+ public Attachment addAttachment(Attachment attachment) {
+ this.internalAdd(attachment);
+ return attachment;
+ }
+
/**
* Adds an item attachment to the collection.
*
diff --git a/src/main/java/microsoft/exchange/webservices/data/property/complex/CreateRuleOperation.java b/src/main/java/microsoft/exchange/webservices/data/property/complex/CreateRuleOperation.java
index c47c9823a..f0dd0211f 100644
--- a/src/main/java/microsoft/exchange/webservices/data/property/complex/CreateRuleOperation.java
+++ b/src/main/java/microsoft/exchange/webservices/data/property/complex/CreateRuleOperation.java
@@ -39,8 +39,8 @@ public final class CreateRuleOperation extends RuleOperation {
private Rule rule;
/**
- * Initializes a new instance of the
- * class.
+ * Initializes a new instance of the {@link CreateRuleOperation}
+ * class.
*/
public CreateRuleOperation() {
super();
@@ -48,7 +48,7 @@ public CreateRuleOperation() {
/**
* Initializes a new instance of the
- * class.
+ * {@link CreateRuleOperation} class.
*
* @param rule The inbox rule to create.
*/
diff --git a/src/main/java/microsoft/exchange/webservices/data/property/complex/DelegateUser.java b/src/main/java/microsoft/exchange/webservices/data/property/complex/DelegateUser.java
index 1f283cde0..3679bab35 100644
--- a/src/main/java/microsoft/exchange/webservices/data/property/complex/DelegateUser.java
+++ b/src/main/java/microsoft/exchange/webservices/data/property/complex/DelegateUser.java
@@ -56,7 +56,7 @@ public final class DelegateUser extends ComplexProperty {
private boolean viewPrivateItems;
/**
- * Initializes a new instance of the class.
+ * Initializes a new instance of the {@link DelegateUser} class.
*/
public DelegateUser() {
super();
@@ -65,7 +65,7 @@ public DelegateUser() {
}
/**
- * Initializes a new instance of the class.
+ * Initializes a new instance of the {@link DelegateUser} class.
*
* @param primarySmtpAddress the primary smtp address
*/
@@ -75,7 +75,7 @@ public DelegateUser(String primarySmtpAddress) {
}
/**
- * Initializes a new instance of the class.
+ * Initializes a new instance of the {@link DelegateUser} class.
*
* @param standardUser the standard user
*/
diff --git a/src/main/java/microsoft/exchange/webservices/data/property/complex/DeleteRuleOperation.java b/src/main/java/microsoft/exchange/webservices/data/property/complex/DeleteRuleOperation.java
index 800c1427d..9fdce4192 100644
--- a/src/main/java/microsoft/exchange/webservices/data/property/complex/DeleteRuleOperation.java
+++ b/src/main/java/microsoft/exchange/webservices/data/property/complex/DeleteRuleOperation.java
@@ -42,7 +42,7 @@ public final class DeleteRuleOperation extends RuleOperation {
/**
* Initializes a new instance of the
- * class.
+ * {@link DeleteRuleOperation} class.
*/
public DeleteRuleOperation() {
super();
@@ -50,7 +50,7 @@ public DeleteRuleOperation() {
/**
* Initializes a new instance of the
- * class.
+ * {@link DeleteRuleOperation} class.
*
* @param ruleId The Id of the inbox rule to delete.
*/
diff --git a/src/main/java/microsoft/exchange/webservices/data/property/complex/DictionaryEntryProperty.java b/src/main/java/microsoft/exchange/webservices/data/property/complex/DictionaryEntryProperty.java
index 008e5c334..49b8e6224 100644
--- a/src/main/java/microsoft/exchange/webservices/data/property/complex/DictionaryEntryProperty.java
+++ b/src/main/java/microsoft/exchange/webservices/data/property/complex/DictionaryEntryProperty.java
@@ -35,7 +35,7 @@
/**
* Represents an entry of a DictionaryProperty object.
- *
+ *
* All descendants of DictionaryEntryProperty must implement a parameterless
* constructor. That constructor does not have to be public. That constructor
* does not have to be public.
diff --git a/src/main/java/microsoft/exchange/webservices/data/property/complex/EmailAddressEntry.java b/src/main/java/microsoft/exchange/webservices/data/property/complex/EmailAddressEntry.java
index c91b581dd..ac1b3ba36 100644
--- a/src/main/java/microsoft/exchange/webservices/data/property/complex/EmailAddressEntry.java
+++ b/src/main/java/microsoft/exchange/webservices/data/property/complex/EmailAddressEntry.java
@@ -48,7 +48,7 @@ public final class EmailAddressEntry extends DictionaryEntryProperty class.
+ * Initializes a new instance of the {@link EmailAddressEntry} class.
*/
protected EmailAddressEntry() {
super(EmailAddressKey.class);
@@ -57,7 +57,7 @@ protected EmailAddressEntry() {
}
/**
- * Initializes a new instance of the "EmailAddressEntry" class.
+ * Initializes a new instance of the {@link EmailAddressEntry} class.
*
* @param key The key.
* @param emailAddress The email address.
diff --git a/src/main/java/microsoft/exchange/webservices/data/property/complex/ExtendedProperty.java b/src/main/java/microsoft/exchange/webservices/data/property/complex/ExtendedProperty.java
index 14ec132a3..c3d181cd8 100644
--- a/src/main/java/microsoft/exchange/webservices/data/property/complex/ExtendedProperty.java
+++ b/src/main/java/microsoft/exchange/webservices/data/property/complex/ExtendedProperty.java
@@ -205,10 +205,9 @@ private String getStringValue() {
}
/**
- * Determines whether the specified is equal
- * to the current true if the specified is equal to the current
+ * Determines whether the specified {@link Object} is equal
+ * to the current {@link Object}. true if the specified
+ * {@link Object} is equal to the current {@link Object}
*
* @param obj the obj
* @return boolean
diff --git a/src/main/java/microsoft/exchange/webservices/data/property/complex/FileAttachment.java b/src/main/java/microsoft/exchange/webservices/data/property/complex/FileAttachment.java
index de3567f36..eee1afcf6 100644
--- a/src/main/java/microsoft/exchange/webservices/data/property/complex/FileAttachment.java
+++ b/src/main/java/microsoft/exchange/webservices/data/property/complex/FileAttachment.java
@@ -76,7 +76,7 @@ public final class FileAttachment extends Attachment {
*
* @param owner the owner
*/
- protected FileAttachment(Item owner) {
+ public FileAttachment(Item owner) {
super(owner);
}
diff --git a/src/main/java/microsoft/exchange/webservices/data/property/complex/FolderIdCollection.java b/src/main/java/microsoft/exchange/webservices/data/property/complex/FolderIdCollection.java
index f9fc4c0e3..fccfa771e 100644
--- a/src/main/java/microsoft/exchange/webservices/data/property/complex/FolderIdCollection.java
+++ b/src/main/java/microsoft/exchange/webservices/data/property/complex/FolderIdCollection.java
@@ -35,7 +35,7 @@
public final class FolderIdCollection extends ComplexPropertyCollection {
/**
- * Initializes a new instance of the class.
+ * Initializes a new instance of the {@link FolderIdCollection} class.
*/
protected FolderIdCollection() {
super();
diff --git a/src/main/java/microsoft/exchange/webservices/data/property/complex/ItemAttachment.java b/src/main/java/microsoft/exchange/webservices/data/property/complex/ItemAttachment.java
index e8f0040ee..201f93c80 100644
--- a/src/main/java/microsoft/exchange/webservices/data/property/complex/ItemAttachment.java
+++ b/src/main/java/microsoft/exchange/webservices/data/property/complex/ItemAttachment.java
@@ -137,7 +137,7 @@ public boolean tryReadElementFromXml(EwsServiceXmlReader reader)
* For ItemAttachment, AttachmentId and Item should be patched.
*
* @param reader The reader.
- *
+ *
* True if element was read.
*/
public boolean tryReadElementFromXmlToPatch(EwsServiceXmlReader reader) throws Exception {
diff --git a/src/main/java/microsoft/exchange/webservices/data/property/complex/ItemId.java b/src/main/java/microsoft/exchange/webservices/data/property/complex/ItemId.java
index 15ab7a558..f5f0dd328 100644
--- a/src/main/java/microsoft/exchange/webservices/data/property/complex/ItemId.java
+++ b/src/main/java/microsoft/exchange/webservices/data/property/complex/ItemId.java
@@ -58,6 +58,10 @@ public ItemId(String uniqueId) throws Exception {
super(uniqueId);
}
+ public ItemId(String uniqueId, String changeKey) throws Exception {
+ super(uniqueId, changeKey);
+ }
+
/**
* Gets the name of the XML element.
*
diff --git a/src/main/java/microsoft/exchange/webservices/data/property/complex/ItemIdCollection.java b/src/main/java/microsoft/exchange/webservices/data/property/complex/ItemIdCollection.java
index c23e5c04e..d123a68ea 100644
--- a/src/main/java/microsoft/exchange/webservices/data/property/complex/ItemIdCollection.java
+++ b/src/main/java/microsoft/exchange/webservices/data/property/complex/ItemIdCollection.java
@@ -28,7 +28,7 @@
*/
public final class ItemIdCollection extends ComplexPropertyCollection {
/**
- * Initializes a new instance of the class.
+ * Initializes a new instance of the {@link ItemIdCollection} class.
*/
public ItemIdCollection() {
super();
diff --git a/src/main/java/microsoft/exchange/webservices/data/property/complex/OccurrenceInfoCollection.java b/src/main/java/microsoft/exchange/webservices/data/property/complex/OccurrenceInfoCollection.java
index 03f417055..e436219ef 100644
--- a/src/main/java/microsoft/exchange/webservices/data/property/complex/OccurrenceInfoCollection.java
+++ b/src/main/java/microsoft/exchange/webservices/data/property/complex/OccurrenceInfoCollection.java
@@ -34,7 +34,7 @@
public final class OccurrenceInfoCollection extends ComplexPropertyCollection {
/**
- * Initializes a new instance of the
+ * Initializes a new instance of the {@link OccurrenceInfoCollection}
* class.
*/
public OccurrenceInfoCollection() {
diff --git a/src/main/java/microsoft/exchange/webservices/data/property/complex/PhoneNumberEntry.java b/src/main/java/microsoft/exchange/webservices/data/property/complex/PhoneNumberEntry.java
index ae4736684..2c30d2b43 100644
--- a/src/main/java/microsoft/exchange/webservices/data/property/complex/PhoneNumberEntry.java
+++ b/src/main/java/microsoft/exchange/webservices/data/property/complex/PhoneNumberEntry.java
@@ -43,14 +43,14 @@ public final class PhoneNumberEntry extends DictionaryEntryProperty class.
+ * Initializes a new instance of the {@link PhoneNumberEntry} class.
*
* @param key The key.
* @param phoneNumber The phone number.
diff --git a/src/main/java/microsoft/exchange/webservices/data/property/complex/RuleOperation.java b/src/main/java/microsoft/exchange/webservices/data/property/complex/RuleOperation.java
index c8ee0167a..030751b08 100644
--- a/src/main/java/microsoft/exchange/webservices/data/property/complex/RuleOperation.java
+++ b/src/main/java/microsoft/exchange/webservices/data/property/complex/RuleOperation.java
@@ -30,7 +30,7 @@ public abstract class RuleOperation extends ComplexProperty {
protected String xmlElementName;
/**
- * Initializes a new instance of the class.
+ * Initializes a new instance of the {@link RuleOperation} class.
*/
protected RuleOperation() {
super();
diff --git a/src/main/java/microsoft/exchange/webservices/data/property/complex/RuleOperationErrorCollection.java b/src/main/java/microsoft/exchange/webservices/data/property/complex/RuleOperationErrorCollection.java
index e7a04ece1..5b27694e7 100644
--- a/src/main/java/microsoft/exchange/webservices/data/property/complex/RuleOperationErrorCollection.java
+++ b/src/main/java/microsoft/exchange/webservices/data/property/complex/RuleOperationErrorCollection.java
@@ -32,7 +32,7 @@ public final class RuleOperationErrorCollection extends ComplexPropertyCollectio
/**
* Initializes a new instance of the
- * class.
+ * {@link RuleOperationErrorCollection} class.
*/
public RuleOperationErrorCollection() {
super();
diff --git a/src/main/java/microsoft/exchange/webservices/data/property/complex/ServiceId.java b/src/main/java/microsoft/exchange/webservices/data/property/complex/ServiceId.java
index be673debf..d1e7221f2 100644
--- a/src/main/java/microsoft/exchange/webservices/data/property/complex/ServiceId.java
+++ b/src/main/java/microsoft/exchange/webservices/data/property/complex/ServiceId.java
@@ -64,6 +64,12 @@ public ServiceId(String uniqueId) throws Exception {
this.uniqueId = uniqueId;
}
+ public ServiceId(String uniqueId, String changeKey) throws Exception {
+ this(uniqueId);
+ EwsUtilities.validateParam(changeKey, "changeKey");
+ this.changeKey = changeKey;
+ }
+
/**
* Read attribute from XML.
*
diff --git a/src/main/java/microsoft/exchange/webservices/data/property/complex/StringList.java b/src/main/java/microsoft/exchange/webservices/data/property/complex/StringList.java
index 6268d3fab..e208170ae 100644
--- a/src/main/java/microsoft/exchange/webservices/data/property/complex/StringList.java
+++ b/src/main/java/microsoft/exchange/webservices/data/property/complex/StringList.java
@@ -52,13 +52,13 @@ public class StringList extends ComplexProperty implements Iterable {
private String itemXmlElementName = XmlElementNames.String;
/**
- * Initializes a new instance of the "StringList" class.
+ * Initializes a new instance of the {@link StringList} class.
*/
public StringList() {
}
/**
- * Initializes a new instance of the class.
+ * Initializes a new instance of the {@link StringList} class.
*
* @param strings The strings.
*/
@@ -199,17 +199,17 @@ public void clearList() {
* this object. The result should be a concise but informative
* representation that is easy for a person to read. It is recommended that
* all subclasses override this method.
- *
+ *
* The
toString method for class Object returns a
* string consisting of the name of the class of which the object is an
* instance, the at-sign character `@', and the unsigned
* hexadecimal representation of the hash code of the object. In other
* words, this method returns a string equal to the value of:
- *
+ *
*
* getClass().getName() + '@' + Integer.toHexString(hashCode())
*
- *
+ *
*
*
* @return a string representation of the object.
@@ -274,7 +274,7 @@ public Iterator getIterator() {
/**
* Indicates whether some other object is "equal to" this one.
- *
+ *
* The equals method implements an equivalence relation on
* non-null object references:
*
@@ -291,23 +291,23 @@ public Iterator getIterator() {
* x.equals(z) should return true.
* - It is consistent: for any non-null reference values
*
x and y, multiple invocations of
- * x.equals(y) consistently return true or
+ * x.equals(y) consistently return true or
* consistently return false, provided no information used in
* equals comparisons on the objects is modified.
* - For any non-null reference value
x,
* x.equals(null) should return false.
*
- *
- * The equals method for class Object implements the
+ *
+ * The equals method for class Object implements the
* most discriminating possible equivalence relation on objects; that is,
* for any non-null reference values x and y, this
* method returns true if and only if x and
* y refer to the same object (x == y has the
* value true).
- *
- * Note that it is generally necessary to override the hashCode
+ *
+ * Note that it is generally necessary to override the hashCode
* method whenever this method is overridden, so as to maintain the general
- * contract for the hashCode method, which states that equal
+ * contract for the hashCode method, which states that equal
* objects must have equal hash codes.
*
* @param obj the reference object with which to compare.
diff --git a/src/main/java/microsoft/exchange/webservices/data/property/complex/TimeChange.java b/src/main/java/microsoft/exchange/webservices/data/property/complex/TimeChange.java
index b1186cf73..9e3ab173b 100644
--- a/src/main/java/microsoft/exchange/webservices/data/property/complex/TimeChange.java
+++ b/src/main/java/microsoft/exchange/webservices/data/property/complex/TimeChange.java
@@ -75,14 +75,14 @@ public final class TimeChange extends ComplexProperty {
private TimeChangeRecurrence recurrence;
/**
- * Initializes a new instance of the "TimeChange" class.
+ * Initializes a new instance of the {@link TimeChange} class.
*/
public TimeChange() {
super();
}
/**
- * Initializes a new instance of the class.
+ * Initializes a new instance of the {@link TimeChange} class.
*
* @param offset The offset since the beginning of the year when the change
* occurs.
diff --git a/src/main/java/microsoft/exchange/webservices/data/property/complex/recurrence/pattern/Recurrence.java b/src/main/java/microsoft/exchange/webservices/data/property/complex/recurrence/pattern/Recurrence.java
index 0eec2d065..a7d8f9a0d 100644
--- a/src/main/java/microsoft/exchange/webservices/data/property/complex/recurrence/pattern/Recurrence.java
+++ b/src/main/java/microsoft/exchange/webservices/data/property/complex/recurrence/pattern/Recurrence.java
@@ -638,8 +638,7 @@ public MonthlyRegenerationPattern(Date startDate, int interval)
}
/**
- * Gets the name of the XML element. The name of the XML
- * element.
+ * Gets the name of the XML element.
*
* @return the xml element name
*/
@@ -650,8 +649,8 @@ public String getXmlElementName() {
/**
* Gets a value indicating whether this instance is regeneration
- * pattern. true if this instance is regeneration
- * pattern; otherwise, false.
+ * pattern. true if this instance is regeneration
+ * pattern; otherwise, false.
*
* @return true, if is regeneration pattern
*/
@@ -860,8 +859,7 @@ public final static class RelativeYearlyPattern extends Recurrence {
private Month month;
/**
- * Gets the name of the XML element. The name of the XML
- * element.
+ * Gets the name of the XML element.
*
* @return the xml element name
*/
@@ -1111,8 +1109,7 @@ private void daysOfTheWeekChanged(ComplexProperty complexProperty) {
}
/**
- * Gets the name of the XML element. The name of the XML
- * element.
+ * Gets the name of the XML element.
*
* @return the xml element name
*/
@@ -1262,8 +1259,7 @@ public WeeklyRegenerationPattern(Date startDate, int interval)
}
/**
- * Gets the name of the XML element. The name of the XML
- * element.
+ * Gets the name of the XML element.
*
* @return the xml element name
*/
@@ -1274,8 +1270,8 @@ public String getXmlElementName() {
/**
* Gets a value indicating whether this instance is regeneration
- * pattern. true if this instance is regeneration
- * pattern; otherwise, false.
+ * pattern. true if this instance is regeneration
+ * pattern; otherwise, false.
*
* @return true, if is regeneration pattern
*/
@@ -1324,8 +1320,7 @@ public YearlyPattern(Date startDate, Month month, int dayOfMonth) {
}
/**
- * Gets the name of the XML element. The name of the XML
- * element.
+ * Gets the name of the XML element.
*
* @return the xml element name
*/
@@ -1468,8 +1463,7 @@ public final static class YearlyRegenerationPattern extends
IntervalPattern {
/**
- * Gets the name of the XML element. The name of the XML
- * element.
+ * Gets the name of the XML element.
*
* @return the xml element name
*/
diff --git a/src/main/java/microsoft/exchange/webservices/data/property/complex/time/TimeZoneTransitionGroup.java b/src/main/java/microsoft/exchange/webservices/data/property/complex/time/TimeZoneTransitionGroup.java
index e918486cd..db2593ab1 100644
--- a/src/main/java/microsoft/exchange/webservices/data/property/complex/time/TimeZoneTransitionGroup.java
+++ b/src/main/java/microsoft/exchange/webservices/data/property/complex/time/TimeZoneTransitionGroup.java
@@ -282,8 +282,8 @@ protected void setDaylightDisplayName(String daylightDisplayName) {
/**
* Gets a value indicating whether the custom time zone should have a
- * daylight period. true if the custom time zone should
- * have a daylight period; otherwise, false.
+ * daylight period. true if the custom time zone should
+ * have a daylight period; otherwise, false.
*
* @return the checks for daylight period
*/
@@ -295,8 +295,8 @@ protected boolean getHasDaylightPeriod() {
/**
* Gets a value indicating whether this group contains a transition to the
- * Daylight period. true if this group contains a transition
- * to daylight; otherwise, false.
+ * Daylight period. true if this group contains a transition
+ * to daylight; otherwise, false.
*
* @return the supports daylight
*/
diff --git a/src/main/java/microsoft/exchange/webservices/data/property/definition/StartTimeZonePropertyDefinition.java b/src/main/java/microsoft/exchange/webservices/data/property/definition/StartTimeZonePropertyDefinition.java
index ed0d37c85..5ce302402 100644
--- a/src/main/java/microsoft/exchange/webservices/data/property/definition/StartTimeZonePropertyDefinition.java
+++ b/src/main/java/microsoft/exchange/webservices/data/property/definition/StartTimeZonePropertyDefinition.java
@@ -117,8 +117,8 @@ public void writeToXml(EwsServiceXmlWriter writer)
*
* @param flag The flag.
* @param version Requested version.
- * @return true if the specified
- * flag is set; otherwise, false.
+ * @return true if the specified
+ * flag is set; otherwise, false.
*/
@Override public boolean hasFlag(PropertyDefinitionFlags flag, ExchangeVersion version) {
if (version != null && (version == ExchangeVersion.Exchange2007_SP1)) {
diff --git a/src/main/java/microsoft/exchange/webservices/data/search/ConversationIndexedItemView.java b/src/main/java/microsoft/exchange/webservices/data/search/ConversationIndexedItemView.java
index 1c14b8e7a..bf6319ff3 100644
--- a/src/main/java/microsoft/exchange/webservices/data/search/ConversationIndexedItemView.java
+++ b/src/main/java/microsoft/exchange/webservices/data/search/ConversationIndexedItemView.java
@@ -46,7 +46,7 @@ public final class ConversationIndexedItemView extends PagedView {
/**
* Gets the type of service object this view applies to.
*
- * @return A ServiceObjectType value.
+ * @return A {@link ServiceObjectType} value.
*/
@Override
protected ServiceObjectType getServiceObjectType() {
@@ -120,7 +120,7 @@ public void writeToXml(EwsServiceXmlWriter writer) throws Exception {
}
/**
- * Initializes a new instance of the class.
+ * Initializes a new instance of the {@link ItemView} class.
*
* @param pageSize The maximum number of elements the search operation should return.
*/
@@ -129,7 +129,7 @@ public ConversationIndexedItemView(int pageSize) {
}
/**
- * Initializes a new instance of the ItemView class.
+ * Initializes a new instance of the {@link ItemView} class.
*
* @param pageSize The maximum number of elements the search operation should return.
* @param offset The offset of the view from the base point.
@@ -140,7 +140,7 @@ public ConversationIndexedItemView(int pageSize, int offset) {
}
/**
- * Initializes a new instance of the ItemView class.
+ * Initializes a new instance of the {@link ItemView} class.
*
* @param pageSize The maximum number of elements the search operation should return.
* @param offset The offset of the view from the base point.
diff --git a/src/main/java/microsoft/exchange/webservices/data/search/FindFoldersResults.java b/src/main/java/microsoft/exchange/webservices/data/search/FindFoldersResults.java
index 463112713..0227a1cc3 100644
--- a/src/main/java/microsoft/exchange/webservices/data/search/FindFoldersResults.java
+++ b/src/main/java/microsoft/exchange/webservices/data/search/FindFoldersResults.java
@@ -54,7 +54,7 @@ public final class FindFoldersResults implements Iterable {
private ArrayList folders = new ArrayList();
/**
- * Initializes a new instance of the class.
+ * Initializes a new instance of the {@link FindFoldersResults} class.
*/
public FindFoldersResults() {
diff --git a/src/main/java/microsoft/exchange/webservices/data/search/filter/SearchFilter.java b/src/main/java/microsoft/exchange/webservices/data/search/filter/SearchFilter.java
index 2bd0d0f26..2ac813340 100644
--- a/src/main/java/microsoft/exchange/webservices/data/search/filter/SearchFilter.java
+++ b/src/main/java/microsoft/exchange/webservices/data/search/filter/SearchFilter.java
@@ -1363,10 +1363,10 @@ public void writeElementsToXml(EwsServiceXmlWriter writer)
/**
* Adds a search filter of any type to the collection.
*
- * @param searchFilter >The search filter to add. Available search filter classes
- * include SearchFilter.IsEqualTo,
- * SearchFilter.ContainsSubstring and
- * SearchFilter.SearchFilterCollection.
+ * @param searchFilter The search filter to add. Available search filter classes
+ * include {@link IsEqualTo},
+ * {@link ContainsSubstring} and
+ * {@link SearchFilterCollection}
*/
public void add(SearchFilter searchFilter) {
if (searchFilter == null) {
@@ -1381,9 +1381,9 @@ public void add(SearchFilter searchFilter) {
* Adds multiple search filter to the collection.
*
* @param searchFilters The search filter to add. Available search filter classes
- * include SearchFilter.IsEqualTo,
- * SearchFilter.ContainsSubstring and
- * SearchFilter.SearchFilterCollection
+ * include {@link IsEqualTo},
+ * {@link ContainsSubstring} and
+ * {@link SearchFilterCollection}
*/
public void addRange(Iterable searchFilters) {
if (searchFilters == null) {
diff --git a/src/main/java/microsoft/exchange/webservices/data/security/XmlNameTable.java b/src/main/java/microsoft/exchange/webservices/data/security/XmlNameTable.java
index f4ee0d988..10223c13c 100644
--- a/src/main/java/microsoft/exchange/webservices/data/security/XmlNameTable.java
+++ b/src/main/java/microsoft/exchange/webservices/data/security/XmlNameTable.java
@@ -56,10 +56,6 @@ protected XmlNameTable() {
* @param length The number of characters in the name.
* @return The new atomized String or the existing one if it already exists.
* If length is zero, String.Empty is returned
- * @throws ArgumentOutOfRangeException 0 > offset -or- offset >= array.Length -or- length >
- * array.Length The above conditions do not cause an exception
- * to be thrown if length =0.
- * @throws ArgumentOutOfRangeException length < 0.
*/
public abstract String Add(char[] array, int offset, int length);
@@ -85,10 +81,6 @@ protected XmlNameTable() {
* @param length The number of characters in the name.
* @return The atomized String or null if the String has not already been
* atomized. If length is zero, String.Empty is returned
- * @throws ArgumentOutOfRangeException 0 > offset -or- offset >= array.Length -or- length >
- * array.Length The above conditions do not cause an exception
- * to be thrown if length =0.
- * @throws ArgumentOutOfRangeException length < 0.
*/
public abstract String Get(char[] array, int offset, int length);
diff --git a/src/main/java/microsoft/exchange/webservices/data/security/XmlNodeType.java b/src/main/java/microsoft/exchange/webservices/data/security/XmlNodeType.java
index 83b6179ee..bdaded1bc 100644
--- a/src/main/java/microsoft/exchange/webservices/data/security/XmlNodeType.java
+++ b/src/main/java/microsoft/exchange/webservices/data/security/XmlNodeType.java
@@ -50,17 +50,17 @@ public XmlNodeType(int nodeType) {
* this object. The result should be a concise but informative
* representation that is easy for a person to read. It is recommended that
* all subclasses override this method.
- *
+ *
* The toString method for class Object returns a
* string consisting of the name of the class of which the object is an
* instance, the at-sign character `@', and the unsigned
* hexadecimal representation of the hash code of the object. In other
* words, this method returns a string equal to the value of:
- *
+ *
*
* getClass().getName() + '@' + Integer.toHexString(hashCode())
*
- *
+ *
*
*
* @return a string representation of the object.
@@ -135,7 +135,7 @@ public static String getString(int nodeType) {
/**
* Indicates whether some other object is "equal to" this one.
- *
+ *
* The equals method implements an equivalence relation on
* non-null object references:
*
@@ -152,23 +152,23 @@ public static String getString(int nodeType) {
* x.equals(z) should return true.
* - It is consistent: for any non-null reference values
*
x and y, multiple invocations of
- * x.equals(y) consistently return true or
+ * x.equals(y) consistently return true or
* consistently return false, provided no information used in
* equals comparisons on the objects is modified.
* - For any non-null reference value
x,
* x.equals(null) should return false.
*
- *
- * The equals method for class Object implements the
+ *
+ * The equals method for class Object implements the
* most discriminating possible equivalence relation on objects; that is,
* for any non-null reference values x and y, this
* method returns true if and only if x and
* y refer to the same object (x == y has the
* value true).
- *
- * Note that it is generally necessary to override the hashCode
+ *
+ * Note that it is generally necessary to override the hashCode
* method whenever this method is overridden, so as to maintain the general
- * contract for the hashCode method, which states that equal
+ * contract for the hashCode method, which states that equal
* objects must have equal hash codes.
*
* @param obj the reference object with which to compare.
@@ -194,31 +194,31 @@ public boolean equals(Object obj) {
* Returns a hash code value for the object. This method is supported for
* the benefit of hashtables such as those provided by
* java.util.Hashtable.
- *
+ *
* The general contract of hashCode is:
*
* - Whenever it is invoked on the same object more than once during an
- * execution of a Java application, the hashCode method must
+ * execution of a Java application, the
hashCode method must
* consistently return the same integer, provided no information used in
- * equals comparisons on the object is modified. This integer need
+ * equals comparisons on the object is modified. This integer need
* not remain consistent from one execution of an application to another
* execution of the same application.
- * - If two objects are equal according to the equals(Object)
+ *
- If two objects are equal according to the
equals(Object)
* method, then calling the hashCode method on each of the two
* objects must produce the same integer result.
* - It is not required that if two objects are unequal according
* to the {@link Object#equals(Object)} method, then
- * calling the hashCode method on each of the two objects must
+ * calling the
hashCode method on each of the two objects must
* produce distinct integer results. However, the programmer should be aware
* that producing distinct integer results for unequal objects may improve
* the performance of hashtables.
*
- *
+ *
* As much as is reasonably practical, the hashCode method defined by class
- * Object does return distinct integers for distinct objects. (This
+ * Object does return distinct integers for distinct objects. (This
* is typically implemented by converting the internal address of the object
* into an integer, but this implementation technique is not required by the
- * JavaTM programming language.)
+ * Java programming language.)
*
* @return a hash code value for this object.
* @see Object#equals(Object)
diff --git a/src/test/java/microsoft/exchange/webservices/data/core/request/ExportUploadItemsTest.java b/src/test/java/microsoft/exchange/webservices/data/core/request/ExportUploadItemsTest.java
new file mode 100644
index 000000000..1800f2662
--- /dev/null
+++ b/src/test/java/microsoft/exchange/webservices/data/core/request/ExportUploadItemsTest.java
@@ -0,0 +1,159 @@
+package microsoft.exchange.webservices.data.core.request;
+
+import microsoft.exchange.webservices.data.core.*;
+import microsoft.exchange.webservices.data.core.enumeration.misc.*;
+import microsoft.exchange.webservices.data.core.enumeration.service.error.*;
+import microsoft.exchange.webservices.data.core.exception.service.remote.*;
+import microsoft.exchange.webservices.data.core.response.*;
+import microsoft.exchange.webservices.data.core.service.item.*;
+import microsoft.exchange.webservices.data.core.service.item.UploadItem.*;
+import microsoft.exchange.webservices.data.property.complex.*;
+import org.apache.commons.io.*;
+import org.junit.*;
+import org.junit.runner.*;
+import org.junit.runners.*;
+import org.mockito.*;
+
+import java.io.*;
+import java.util.*;
+
+import static org.hamcrest.MatcherAssert.*;
+import static org.hamcrest.Matchers.*;
+import static org.hamcrest.core.Is.is;
+import static org.mockito.Mockito.*;
+
+@RunWith(JUnit4.class)
+public class ExportUploadItemsTest {
+
+ private static final String DATA = "DATA";
+
+ private static byte[] fixture(String folder, String name) {
+ try (InputStream in = fixtureStream(folder, name)) {
+ return IOUtils.toByteArray(in);
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ private static InputStream fixtureStream(String folder, String name) {
+ return ExportUploadItemsTest.class
+ .getResourceAsStream(String.format("/%s/%s.xml", folder, name));
+ }
+
+ private final ExchangeService exchangeService = Mockito.mock(ExchangeService.class);
+
+ @Before
+ public void setUp() {
+ when(exchangeService.getRequestedServerVersion()).thenReturn(ExchangeVersion.Exchange2013);
+ when(exchangeService.getDateTimePrecision()).thenReturn(DateTimePrecision.Default);
+ }
+
+ @Test
+ public void testExportRequest() throws Exception {
+ ExportItemsRequest request = new ExportItemsRequest(exchangeService, ServiceErrorHandling.ReturnErrors);
+ request.getItemIds().addRange(Arrays.asList(new ItemId("12345"), new ItemId("23456")));
+
+ try (ByteArrayOutputStream os = new ByteArrayOutputStream()) {
+ EwsServiceXmlWriter writer = new EwsServiceXmlWriter(exchangeService, os);
+ request.writeToXml(writer);
+ assertThat(os.toByteArray(), is(equalTo(fixture("test-data", "ExportItemsRequest"))));
+ }
+
+ try (InputStream in = fixtureStream("test-data", "ExportItemsResponse")) {
+ EwsServiceXmlReader reader = new EwsServiceXmlReader(in, exchangeService);
+ ServiceResponseCollection responses = request.readResponse(reader);
+ assertThat(responses.getCount(), is(equalTo(2)));
+
+ ExportItemsResponse response1 = responses.getResponseAtIndex(0);
+ assertThat(response1.getItemId().getUniqueId(), is(equalTo("AAMkADNiMDU5YzBhLTgzYzgtNGMxZi1iYTZlLTgzOTkxMzBjYmVhZgBGAAAAAABPTDZfYrvVTr8HgEV+HADsBwCLjN8GwkCsQKoM14gF2rmPAAAAAAENAACLjN8GwkCsQKoM14gF2rmPAAAiEWxoAAA=")));
+ ExportItemsResponse response2 = responses.getResponseAtIndex(1);
+ assertThat(response2.getItemId().getUniqueId(), is(equalTo("AAMkADNiMDU5YzBhLTgzYzgtNGMxZi1iYTZlLTgzOTkxMzBjYmVhZgBGAAAAAABPTDZfYrvVTr8HgEV+HADsBwCLjN8GwkCsQKoM14gF2rmPAAAAAAENAACLjN8GwkCsQKoM14gF2rmPAAAiEWxoAAB=")));
+ }
+ }
+
+ @Test(expected = ServiceResponseException.class)
+ public void testExportRequestFails() throws Exception {
+ ExportItemsRequest request = new ExportItemsRequest(exchangeService, ServiceErrorHandling.ThrowOnError);
+ request.getItemIds().addRange(Arrays.asList(new ItemId("12345")));
+
+ try (ByteArrayOutputStream os = new ByteArrayOutputStream()) {
+ EwsServiceXmlWriter writer = new EwsServiceXmlWriter(exchangeService, os);
+ request.writeToXml(writer);
+ }
+
+ try (InputStream in = fixtureStream("test-data", "ExportItemsResponseFail")) {
+ EwsServiceXmlReader reader = new EwsServiceXmlReader(in, exchangeService);
+ ServiceResponseCollection responses = request.readResponse(reader);
+ responses.getResponseAtIndex(0).throwIfNecessary();
+ }
+ }
+
+ @Test
+ public void testUploadRequest() throws Exception {
+ UploadItemsRequest request = new UploadItemsRequest(exchangeService, ServiceErrorHandling.ReturnErrors);
+
+ UploadItem uploadItem1 = new UploadItem();
+ uploadItem1.setCreateAction(CreateAction.CreateNew);
+ uploadItem1.setParentFolderId(new FolderId("1234"));
+ uploadItem1.setData(DATA.getBytes("UTF-8"));
+
+ UploadItem uploadItem2 = new UploadItem();
+ uploadItem2.setCreateAction(CreateAction.Update);
+ uploadItem2.setParentFolderId(new FolderId("2345"));
+ uploadItem2.setItemId(new ItemId("3456"));
+ uploadItem2.setData(DATA.getBytes("UTF-8"));
+
+ request.setItems(Arrays.asList(uploadItem1, uploadItem2));
+
+ try (ByteArrayOutputStream os = new ByteArrayOutputStream()) {
+ EwsServiceXmlWriter writer = new EwsServiceXmlWriter(exchangeService, os);
+ request.writeToXml(writer);
+ assertThat(os.toByteArray(), is(equalTo(fixture("test-data", "UploadItemsRequest"))));
+ }
+
+ try (InputStream in = fixtureStream("test-data", "UploadItemsResponse")) {
+ EwsServiceXmlReader reader = new EwsServiceXmlReader(in, exchangeService);
+ ServiceResponseCollection responses = request.readResponse(reader);
+ assertThat(responses.getCount(), is(equalTo(2)));
+
+ UploadItemsResponse response1 = responses.getResponseAtIndex(0);
+ assertThat(response1.getItemId().getUniqueId(), is(equalTo("AAMkADhhUFZ/AAA=")));
+ UploadItemsResponse response2 = responses.getResponseAtIndex(1);
+ assertThat(response2.getItemId().getUniqueId(), is(equalTo("AAMkADhhOGZ7AAA=")));
+ }
+ }
+
+ @Test(expected = Exception.class)
+ public void testUploadRequestValidateEmpty() throws Exception {
+ UploadItem item = new UploadItem();
+ item.validate();
+ }
+
+ @Test
+ public void testUploadRequestValidateFine() throws Exception {
+ UploadItem item = new UploadItem();
+ item.setData(new byte[]{});
+ item.setParentFolderId(new FolderId("1234"));
+ item.setCreateAction(CreateAction.CreateNew);
+ item.validate();
+ }
+
+ @Test(expected = Exception.class)
+ public void testUploadRequestValidateUpdateFails() throws Exception {
+ UploadItem item = new UploadItem();
+ item.setData(new byte[]{});
+ item.setParentFolderId(new FolderId("1234"));
+ item.setCreateAction(CreateAction.Update);
+ item.validate();
+ }
+
+ @Test
+ public void testUploadRequestValidateUpdateFine() throws Exception {
+ UploadItem item = new UploadItem();
+ item.setData(new byte[]{});
+ item.setParentFolderId(new FolderId("1234"));
+ item.setCreateAction(CreateAction.Update);
+ item.setItemId(new ItemId("1234"));
+ item.validate();
+ }
+}
diff --git a/src/test/java/microsoft/exchange/webservices/data/core/service/item/MeetingResponseTest.java b/src/test/java/microsoft/exchange/webservices/data/core/service/item/MeetingResponseTest.java
new file mode 100644
index 000000000..0130776c7
--- /dev/null
+++ b/src/test/java/microsoft/exchange/webservices/data/core/service/item/MeetingResponseTest.java
@@ -0,0 +1,84 @@
+package microsoft.exchange.webservices.data.core.service.item;
+
+import static org.hamcrest.Matchers.equalTo;
+import static org.hamcrest.core.Is.is;
+import static org.junit.Assert.assertThat;
+
+import java.io.InputStream;
+
+import org.joda.time.DateTime;
+import org.joda.time.DateTimeZone;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+
+import microsoft.exchange.webservices.data.core.EwsServiceXmlReader;
+import microsoft.exchange.webservices.data.core.ExchangeService;
+import microsoft.exchange.webservices.data.core.XmlElementNames;
+import microsoft.exchange.webservices.data.core.enumeration.misc.XmlNamespace;
+import microsoft.exchange.webservices.data.core.enumeration.service.calendar.AppointmentType;
+import microsoft.exchange.webservices.data.security.XmlNodeType;
+
+@RunWith(JUnit4.class)
+public class MeetingResponseTest {
+
+ private static MeetingResponse getInput(String folder, String name) throws Exception {
+
+ try (InputStream inputStream = MeetingResponseTest.class
+ .getResourceAsStream(String.format("/%s/%s.xml", folder, name))) {
+ EwsServiceXmlReader reader = new EwsServiceXmlReader(inputStream, null);
+
+ // read xml preamble
+ reader.read(new XmlNodeType(XmlNodeType.START_DOCUMENT));
+ reader.readStartElement(XmlNamespace.Soap, XmlElementNames.SOAPEnvelopeElementName);
+
+ // read soap header
+ reader.readStartElement(XmlNamespace.Soap, XmlElementNames.SOAPHeaderElementName);
+ do {
+ reader.read();
+
+ if (reader.isStartElement(XmlNamespace.Types, XmlElementNames.ServerVersionInfo)) {
+ reader.readAttributeValue("Version");
+ }
+
+ // Ignore anything else inside the SOAP header
+ } while (!reader.isEndElement(XmlNamespace.Soap, XmlElementNames.SOAPHeaderElementName));
+
+ // body
+ reader.readStartElement(XmlNamespace.Soap, XmlElementNames.SOAPBodyElementName);
+
+ reader.readStartElement(XmlNamespace.Messages, XmlElementNames.GetItemResponse);
+ reader.readStartElement(XmlNamespace.Messages, XmlElementNames.ResponseMessages);
+ reader.readStartElement(XmlNamespace.Messages, XmlElementNames.GetItemResponseMessage);
+ reader.readElementValue(XmlNamespace.Messages, XmlElementNames.ResponseCode);
+ reader.readStartElement(XmlNamespace.Messages, XmlElementNames.Items);
+
+ return readMeetingResponse(reader);
+ }
+ }
+
+ private static MeetingResponse readMeetingResponse(EwsServiceXmlReader reader) throws Exception {
+ reader.readStartElement(XmlNamespace.Types, XmlElementNames.MeetingResponse);
+ ExchangeService exchangeService = new ExchangeService();
+ MeetingResponse meetingResponse = new MeetingResponse(exchangeService);
+ meetingResponse.loadFromXml(reader, false);
+
+ return meetingResponse;
+ }
+
+ @Test
+ public void testLoadXml() throws Exception {
+ MeetingResponse meetingResponse = getInput("test-data", "GetMeetingResponse");
+ assertThat(meetingResponse.getStart(),
+ is(equalTo(new DateTime(2019, 1, 31, 10, 30, 0, DateTimeZone.UTC).toDate())));
+ assertThat(meetingResponse.getEnd(),
+ is(equalTo(new DateTime(2019, 1, 31, 11, 30, 0, DateTimeZone.UTC).toDate())));
+ assertThat(meetingResponse.getProposedStart(),
+ is(equalTo(new DateTime(2019, 1, 31, 12, 0, 0, DateTimeZone.UTC).toDate())));
+ assertThat(meetingResponse.getProposedEnd(),
+ is(equalTo(new DateTime(2019, 1, 31, 14, 30, 0, DateTimeZone.UTC).toDate())));
+ assertThat(meetingResponse.getLocation(), is(equalTo("the location")));
+ assertThat(meetingResponse.getAppointmentType(), is(equalTo(AppointmentType.Single)));
+ }
+
+}
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
index 3278e4b7a..8e86cd0bc 100644
--- a/src/test/java/microsoft/exchange/webservices/data/property/complex/OlsonTimeZoneTest.java
+++ b/src/test/java/microsoft/exchange/webservices/data/property/complex/OlsonTimeZoneTest.java
@@ -23,19 +23,32 @@
package microsoft.exchange.webservices.data.property.complex;
-import microsoft.exchange.webservices.data.property.complex.time.OlsonTimeZoneDefinition;
-import microsoft.exchange.webservices.data.util.TimeZoneUtils;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+import java.util.TimeZone;
+
import org.apache.commons.lang3.StringUtils;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
-import java.util.Map;
-import java.util.TimeZone;
+import microsoft.exchange.webservices.data.property.complex.time.OlsonTimeZoneDefinition;
+import microsoft.exchange.webservices.data.util.TimeZoneUtils;
@RunWith(JUnit4.class)
public class OlsonTimeZoneTest {
+
+ private final static Set BROKEN_TZ = new HashSet<>();
+
+ static {
+ BROKEN_TZ.add("America/Punta_Arenas");
+ BROKEN_TZ.add("Europe/Astrakhan");
+ BROKEN_TZ.add("Europe/Kirov");
+ BROKEN_TZ.add("Europe/Saratov");
+ BROKEN_TZ.add("Europe/Ulyanovsk");
+ }
@Test
public void testOlsonTimeZoneConversion() {
@@ -46,8 +59,9 @@ public void testOlsonTimeZoneConversion() {
final boolean america = timeZoneId.startsWith("America");
final boolean europe = timeZoneId.startsWith("Europe");
final boolean africa = timeZoneId.startsWith("Africa");
+ final boolean knownBroken = BROKEN_TZ.contains(timeZoneId);
- if (america || europe || africa) {
+ if ((america || europe || africa) && !knownBroken) {
// 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 TimeZone timeZone = TimeZone.getTimeZone(timeZoneId);
diff --git a/src/test/resources/test-data/ExportItemsRequest.xml b/src/test/resources/test-data/ExportItemsRequest.xml
new file mode 100644
index 000000000..2bdb58ac4
--- /dev/null
+++ b/src/test/resources/test-data/ExportItemsRequest.xml
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/test/resources/test-data/ExportItemsResponse.xml b/src/test/resources/test-data/ExportItemsResponse.xml
new file mode 100644
index 000000000..577ca6524
--- /dev/null
+++ b/src/test/resources/test-data/ExportItemsResponse.xml
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+
+ NoError
+
+
+ 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
+
+
+
+ NoError
+
+
+ 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
+
+
+
+
+
+
diff --git a/src/test/resources/test-data/ExportItemsResponseFail.xml b/src/test/resources/test-data/ExportItemsResponseFail.xml
new file mode 100644
index 000000000..43dfb64a7
--- /dev/null
+++ b/src/test/resources/test-data/ExportItemsResponseFail.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+ No mailbox with such guid.
+ ErrorNonExistentMailbox
+ 0
+
+ f3f6f699-2254-40ce-9994-388d9d98419e
+
+
+
+
+
+
diff --git a/src/test/resources/test-data/GetMeetingResponse.xml b/src/test/resources/test-data/GetMeetingResponse.xml
new file mode 100644
index 000000000..cceb333a1
--- /dev/null
+++ b/src/test/resources/test-data/GetMeetingResponse.xml
@@ -0,0 +1,156 @@
+
+
+
+
+
+
+
+
+
+ NoError
+
+
+
+
+ IPM.Schedule.Meeting.Resp.Tent
+ New Time Proposed: something 2
+ Normal
+ <html>
+ <head>
+ <meta http-equiv="Content-Type" content="text/html;
+ charset=utf-8">
+ <style type="text/css" style="display:none;"><!-- P
+ {margin-top:0;margin-bottom:0;} --></style>
+ </head>
+ <body dir="ltr">
+ <div id="divtagdefaultwrapper"
+ style="font-size:12pt;color:#000000;font-family:Calibri,Helvetica,sans-serif;"
+ dir="ltr">
+ <p><br>
+ </p>
+ </div>
+ </body>
+ </html>
+ 2019-01-31T10:40:04Z
+ 5220
+ Normal
+ false
+ false
+ false
+ false
+ false
+ 2019-01-31T10:40:04Z
+ 2019-01-31T10:40:04Z
+
+
+
+
+
+ 2019-01-31T10:30:00Z
+ 2019-01-31T10:15:00Z
+
+ test user 1
+ false
+ en-GB
+
+ false
+ false
+ false
+ true
+ true
+ true
+ true
+
+ test user 2
+ 2019-01-31T10:40:04Z
+ false
+ ?ItemID=AAMkAGI1NDk4ZGY3LWNkYjQtNGU1ZC05YjNlLWI5N2I5NzJlZDJiYQBGAAAAAADO3K8HRAPzQ7ckCuRCxxaLBwAPKhbVptluTr8d74Dnvry0AAAAAAEJAAAPKhbVptluTr8d74Dnvry0AAAQRE2OAAA%3D&exvsurl=1&viewmodel=ReadMessageItem
+
+
+ NotFlagged
+
+ AQAAAAAAAQkBAAAAEERNjgAAAAA=
+
+
+
+ test user 2
+ testuser2@example.com
+ SMTP
+ Mailbox
+
+
+
+
+ test user 1
+ testuser1@example.com
+ SMTP
+ Mailbox
+
+
+ false
+ AdS5T4l4kx2OQCX7TkObqqKOSqeVIgAAcoKp
+ something 2
+
+
+ test user 2
+ testuser2@example.com
+ SMTP
+ Mailbox
+
+
+ <26311bb61ca44b14a9a0cc6da3c20594@example.com>
+ true
+
+
+ test user 2
+ testuser2@example.com
+ SMTP
+ Mailbox
+
+
+
+
+ test user 2
+ testuser2@example.com
+ SMTP
+ Mailbox
+
+
+
+ false
+ false
+ Tentative
+ 040000008200E00074C5B7101A82E00800000000275B68894FB9D4010000000000000000100000003C04B5365B02D34ABCD1016A0AABA716
+ 2019-01-31T10:40:04Z
+ false
+ 2019-01-31T10:30:00Z
+ 2019-01-31T11:30:00Z
+ the location
+ Single
+ 2019-01-31T12:00:00Z
+ 2019-01-31T14:30:00Z
+
+
+
+
+
+
+
diff --git a/src/test/resources/test-data/UploadItemsRequest.xml b/src/test/resources/test-data/UploadItemsRequest.xml
new file mode 100644
index 000000000..f6be74705
--- /dev/null
+++ b/src/test/resources/test-data/UploadItemsRequest.xml
@@ -0,0 +1 @@
+REFUQQ==REFUQQ==
\ No newline at end of file
diff --git a/src/test/resources/test-data/UploadItemsResponse.xml b/src/test/resources/test-data/UploadItemsResponse.xml
new file mode 100644
index 000000000..a0f480817
--- /dev/null
+++ b/src/test/resources/test-data/UploadItemsResponse.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+ NoError
+
+
+
+ NoError
+
+
+
+
+
+
\ No newline at end of file