mirror of
https://github.com/moparisthebest/davmail
synced 2025-01-06 03:08:02 -05:00
EWS: fixes from audit
git-svn-id: http://svn.code.sf.net/p/davmail/code/trunk@1166 3d1905a2-6b24-0410-a738-b14d5a86fcbd
This commit is contained in:
parent
72e57df57a
commit
dcf3232161
@ -30,11 +30,13 @@ public abstract class AttributeOption extends Option {
|
||||
super(name, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
public void appendTo(StringBuilder buffer) {
|
||||
buffer.append(' ').append(name).append("=\"").append(value).append('"');
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
|
@ -18,9 +18,6 @@
|
||||
*/
|
||||
package davmail.exchange.ews;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.Writer;
|
||||
|
||||
/**
|
||||
* Item or folder base shape.
|
||||
*/
|
||||
|
@ -22,7 +22,7 @@ package davmail.exchange.ews;
|
||||
* Contains comparison mode.
|
||||
*/
|
||||
public class ContainmentComparison extends AttributeOption {
|
||||
private ContainmentComparison(String value) {
|
||||
private ContainmentComparison(String value) {
|
||||
super("ContainmentComparison", value);
|
||||
}
|
||||
|
||||
|
@ -34,7 +34,9 @@ public class ContainmentMode extends AttributeOption {
|
||||
* Starts with.
|
||||
*/
|
||||
public static final ContainmentMode Prefixed = new ContainmentMode("Prefixed");
|
||||
|
||||
/**
|
||||
* Contains
|
||||
*/
|
||||
public static final ContainmentMode Substring = new ContainmentMode("Substring");
|
||||
public static final ContainmentMode PrefixOnWords = new ContainmentMode("PrefixOnWords");
|
||||
public static final ContainmentMode ExactPhrase = new ContainmentMode("ExactPhrase");
|
||||
|
@ -22,6 +22,12 @@ package davmail.exchange.ews;
|
||||
* Copy item to another folder.
|
||||
*/
|
||||
public class CopyItemMethod extends EWSMethod {
|
||||
/**
|
||||
* Copy item method.
|
||||
*
|
||||
* @param itemId item id
|
||||
* @param toFolderId target folder id
|
||||
*/
|
||||
public CopyItemMethod(ItemId itemId, FolderId toFolderId) {
|
||||
super("Item", "CopyItem");
|
||||
this.itemId = itemId;
|
||||
|
@ -22,6 +22,12 @@ package davmail.exchange.ews;
|
||||
* Create Folder method.
|
||||
*/
|
||||
public class CreateFolderMethod extends EWSMethod {
|
||||
/**
|
||||
* Update folder method.
|
||||
*
|
||||
* @param parentFolderId parent folder id
|
||||
* @param item folder item
|
||||
*/
|
||||
public CreateFolderMethod(FolderId parentFolderId, Item item) {
|
||||
super("Folder", "CreateFolder");
|
||||
this.parentFolderId = parentFolderId;
|
||||
|
@ -22,6 +22,13 @@ package davmail.exchange.ews;
|
||||
* Create Item method.
|
||||
*/
|
||||
public class CreateItemMethod extends EWSMethod {
|
||||
/**
|
||||
* Create exchange item.
|
||||
*
|
||||
* @param messageDisposition save or send option
|
||||
* @param savedItemFolderId saved item folder id
|
||||
* @param item item content
|
||||
*/
|
||||
public CreateItemMethod(MessageDisposition messageDisposition, FolderId savedItemFolderId, EWSMethod.Item item) {
|
||||
super("Item", "CreateItem");
|
||||
this.savedItemFolderId = savedItemFolderId;
|
||||
@ -29,6 +36,14 @@ public class CreateItemMethod extends EWSMethod {
|
||||
addMethodOption(messageDisposition);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create exchange item.
|
||||
*
|
||||
* @param messageDisposition save or send option
|
||||
* @param sendMeetingInvitations send invitation option
|
||||
* @param savedItemFolderId saved item folder id
|
||||
* @param item item content
|
||||
*/
|
||||
public CreateItemMethod(MessageDisposition messageDisposition, SendMeetingInvitations sendMeetingInvitations, FolderId savedItemFolderId, EWSMethod.Item item) {
|
||||
super("Item", "CreateItem");
|
||||
this.savedItemFolderId = savedItemFolderId;
|
||||
@ -36,5 +51,5 @@ public class CreateItemMethod extends EWSMethod {
|
||||
addMethodOption(messageDisposition);
|
||||
addMethodOption(sendMeetingInvitations);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
@ -22,6 +22,11 @@ package davmail.exchange.ews;
|
||||
* Delete Folder method.
|
||||
*/
|
||||
public class DeleteFolderMethod extends EWSMethod {
|
||||
/**
|
||||
* Delete folder method.
|
||||
*
|
||||
* @param folderId folder id
|
||||
*/
|
||||
public DeleteFolderMethod(FolderId folderId) {
|
||||
super("Folder", "DeleteFolder");
|
||||
this.folderId = folderId;
|
||||
|
@ -22,6 +22,12 @@ package davmail.exchange.ews;
|
||||
* Delete Item method.
|
||||
*/
|
||||
public class DeleteItemMethod extends EWSMethod {
|
||||
/**
|
||||
* Delete item method.
|
||||
*
|
||||
* @param itemId item id
|
||||
* @param deleteType delete mode
|
||||
*/
|
||||
public DeleteItemMethod(ItemId itemId, DeleteType deleteType) {
|
||||
super("Item", "DeleteItem");
|
||||
addMethodOption(deleteType);
|
||||
|
@ -18,9 +18,6 @@
|
||||
*/
|
||||
package davmail.exchange.ews;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.Writer;
|
||||
|
||||
/**
|
||||
* Disposal.
|
||||
*/
|
||||
|
@ -66,6 +66,9 @@ public abstract class EWSMethod extends PostMethod {
|
||||
|
||||
/**
|
||||
* Build EWS method
|
||||
*
|
||||
* @param itemType item type
|
||||
* @param methodName method name
|
||||
*/
|
||||
public EWSMethod(String itemType, String methodName) {
|
||||
super("/ews/exchange.asmx");
|
||||
@ -226,6 +229,7 @@ public abstract class EWSMethod extends PostMethod {
|
||||
}
|
||||
|
||||
protected void startChanges(Writer writer) throws IOException {
|
||||
//noinspection VariableNotUsedInsideIf
|
||||
if (updates != null) {
|
||||
writer.write("<m:");
|
||||
writer.write(itemType);
|
||||
@ -248,6 +252,7 @@ public abstract class EWSMethod extends PostMethod {
|
||||
|
||||
|
||||
protected void endChanges(Writer writer) throws IOException {
|
||||
//noinspection VariableNotUsedInsideIf
|
||||
if (updates != null) {
|
||||
writer.write("</t:");
|
||||
writer.write(itemType);
|
||||
@ -322,7 +327,13 @@ public abstract class EWSMethod extends PostMethod {
|
||||
return inputFactory;
|
||||
}
|
||||
|
||||
/**
|
||||
* Item
|
||||
*/
|
||||
public static class Item extends HashMap<String, String> {
|
||||
/**
|
||||
* Item type.
|
||||
*/
|
||||
public String type;
|
||||
protected byte[] mimeContent;
|
||||
protected Set<FieldUpdate> fieldUpdates;
|
||||
@ -366,10 +377,21 @@ public abstract class EWSMethod extends PostMethod {
|
||||
writer.write(">");
|
||||
}
|
||||
|
||||
/**
|
||||
* Field updates.
|
||||
*
|
||||
* @param fieldUpdates field updates
|
||||
*/
|
||||
public void setFieldUpdates(Set<FieldUpdate> fieldUpdates) {
|
||||
this.fieldUpdates = fieldUpdates;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get property value as int
|
||||
*
|
||||
* @param key property response name
|
||||
* @return property value
|
||||
*/
|
||||
public int getInt(String key) {
|
||||
int result = 0;
|
||||
String value = get(key);
|
||||
@ -379,6 +401,12 @@ public abstract class EWSMethod extends PostMethod {
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get property value as long
|
||||
*
|
||||
* @param key property response name
|
||||
* @return property value
|
||||
*/
|
||||
public long getLong(String key) {
|
||||
long result = 0;
|
||||
String value = get(key);
|
||||
@ -389,6 +417,12 @@ public abstract class EWSMethod extends PostMethod {
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get property value as boolean
|
||||
*
|
||||
* @param key property response name
|
||||
* @return property value
|
||||
*/
|
||||
public boolean getBoolean(String key) {
|
||||
boolean result = false;
|
||||
String value = get(key);
|
||||
@ -400,17 +434,34 @@ public abstract class EWSMethod extends PostMethod {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Check method success.
|
||||
*
|
||||
* @throws EWSException on error
|
||||
*/
|
||||
public void checkSuccess() throws EWSException {
|
||||
if (errorDetail != null) {
|
||||
throw new EWSException(errorDetail + "\n request: " + new String(generateSoapEnvelope()));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get response items.
|
||||
*
|
||||
* @return response items
|
||||
* @throws EWSException on error
|
||||
*/
|
||||
public List<Item> getResponseItems() throws EWSException {
|
||||
checkSuccess();
|
||||
return responseItems;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get single response item.
|
||||
*
|
||||
* @return response item
|
||||
* @throws EWSException on error
|
||||
*/
|
||||
public Item getResponseItem() throws EWSException {
|
||||
checkSuccess();
|
||||
if (responseItems != null && responseItems.size() == 1) {
|
||||
@ -420,6 +471,12 @@ public abstract class EWSMethod extends PostMethod {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get response mime content.
|
||||
*
|
||||
* @return mime content
|
||||
* @throws EWSException on error
|
||||
*/
|
||||
public byte[] getMimeContent() throws EWSException {
|
||||
checkSuccess();
|
||||
Item responseItem = getResponseItem();
|
||||
@ -509,13 +566,13 @@ public abstract class EWSMethod extends PostMethod {
|
||||
reader.next();
|
||||
if (reader.getEventType() == XMLStreamConstants.START_ELEMENT) {
|
||||
String tagLocalName = reader.getLocalName();
|
||||
if (tagLocalName.equals("ExtendedFieldURI")) {
|
||||
if ("ExtendedFieldURI".equals(tagLocalName)) {
|
||||
propertyTag = getAttributeValue(reader, "PropertyTag");
|
||||
// property name is in PropertyId with DistinguishedPropertySetId
|
||||
if (propertyTag == null) {
|
||||
propertyTag = getAttributeValue(reader, "PropertyId");
|
||||
}
|
||||
} else if (tagLocalName.equals("Value")) {
|
||||
} else if ("Value".equals(tagLocalName)) {
|
||||
propertyValue = reader.getElementText();
|
||||
}
|
||||
}
|
||||
@ -555,7 +612,7 @@ public abstract class EWSMethod extends PostMethod {
|
||||
Header contentTypeHeader = getResponseHeader("Content-Type");
|
||||
if (contentTypeHeader != null && "text/xml; charset=utf-8".equals(contentTypeHeader.getValue())) {
|
||||
responseItems = new ArrayList<Item>();
|
||||
XMLStreamReader reader = null;
|
||||
XMLStreamReader reader;
|
||||
try {
|
||||
XMLInputFactory xmlInputFactory = getXmlInputFactory();
|
||||
reader = xmlInputFactory.createXMLStreamReader(getResponseBodyAsStream());
|
||||
|
@ -40,27 +40,42 @@ public class ExtendedFieldURI implements FieldURI {
|
||||
protected int propertyId;
|
||||
protected PropertyType propertyType;
|
||||
|
||||
/**
|
||||
* Create extended field uri.
|
||||
*
|
||||
* @param intPropertyTag property tag as int
|
||||
* @param propertyType property type
|
||||
*/
|
||||
public ExtendedFieldURI(int intPropertyTag, PropertyType propertyType) {
|
||||
this.propertyTag = "0x" + Integer.toHexString(intPropertyTag);
|
||||
this.propertyType = propertyType;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create extended field uri.
|
||||
*
|
||||
* @param distinguishedPropertySetId distinguished property set id
|
||||
* @param propertyId property id
|
||||
* @param propertyType property type
|
||||
*/
|
||||
public ExtendedFieldURI(DistinguishedPropertySetType distinguishedPropertySetId, int propertyId, PropertyType propertyType) {
|
||||
this.distinguishedPropertySetId = distinguishedPropertySetId;
|
||||
this.propertyId = propertyId;
|
||||
this.propertyType = propertyType;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create extended field uri.
|
||||
*
|
||||
* @param distinguishedPropertySetId distinguished property set id
|
||||
* @param propertyName property name
|
||||
*/
|
||||
public ExtendedFieldURI(DistinguishedPropertySetType distinguishedPropertySetId, String propertyName) {
|
||||
this.distinguishedPropertySetId = distinguishedPropertySetId;
|
||||
this.propertyName = propertyName;
|
||||
this.propertyType = PropertyType.String;
|
||||
}
|
||||
|
||||
public String getPropertyTag() {
|
||||
return propertyTag;
|
||||
}
|
||||
|
||||
public void appendTo(StringBuilder buffer) {
|
||||
buffer.append("<t:ExtendedFieldURI ");
|
||||
if (propertyTag != null) {
|
||||
@ -104,6 +119,11 @@ public class ExtendedFieldURI implements FieldURI {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Field name in EWS response.
|
||||
*
|
||||
* @return field name in response
|
||||
*/
|
||||
public String getResponseName() {
|
||||
if (propertyTag != null) {
|
||||
return propertyTag;
|
||||
|
@ -27,6 +27,9 @@ import java.util.Map;
|
||||
public class Field {
|
||||
protected static final Map<String, FieldURI> FIELD_MAP = new HashMap<String, FieldURI>();
|
||||
|
||||
private Field() {
|
||||
}
|
||||
|
||||
static {
|
||||
// items
|
||||
FIELD_MAP.put("etag", new ExtendedFieldURI(0x3008, ExtendedFieldURI.PropertyType.SystemTime));
|
||||
@ -37,7 +40,7 @@ public class Field {
|
||||
FIELD_MAP.put("permanenturl", new ExtendedFieldURI(0x670E, ExtendedFieldURI.PropertyType.String)); //PR_FLAT_URL_NAME
|
||||
FIELD_MAP.put("instancetype", new ExtendedFieldURI(ExtendedFieldURI.DistinguishedPropertySetType.PublicStrings, "urn:schemas:calendar:instancetype"));
|
||||
|
||||
FIELD_MAP.put("mimeContent", new UnindexedFieldURI("item:MimeContent"));
|
||||
FIELD_MAP.put("mimeContent", new UnindexedFieldURI("item:MimeContent"));
|
||||
|
||||
// use PR_RECORD_KEY as unique key
|
||||
FIELD_MAP.put("uid", new ExtendedFieldURI(0x0FF9, ExtendedFieldURI.PropertyType.Binary));
|
||||
@ -68,7 +71,7 @@ public class Field {
|
||||
|
||||
FIELD_MAP.put("homepostaladdress", new ExtendedFieldURI(ExtendedFieldURI.DistinguishedPropertySetType.Address, 0x801A, ExtendedFieldURI.PropertyType.String));
|
||||
FIELD_MAP.put("otherpostaladdress", new ExtendedFieldURI(ExtendedFieldURI.DistinguishedPropertySetType.Address, 0x801C, ExtendedFieldURI.PropertyType.String));
|
||||
FIELD_MAP.put("mailingaddressid", new ExtendedFieldURI(ExtendedFieldURI.DistinguishedPropertySetType.Address,0x8022, ExtendedFieldURI.PropertyType.String ));
|
||||
FIELD_MAP.put("mailingaddressid", new ExtendedFieldURI(ExtendedFieldURI.DistinguishedPropertySetType.Address, 0x8022, ExtendedFieldURI.PropertyType.String));
|
||||
FIELD_MAP.put("workaddress", new ExtendedFieldURI(ExtendedFieldURI.DistinguishedPropertySetType.Address, 0x801B, ExtendedFieldURI.PropertyType.String));
|
||||
|
||||
FIELD_MAP.put("alternaterecipient", new ExtendedFieldURI(ExtendedFieldURI.DistinguishedPropertySetType.PublicStrings, "urn:schemas:contacts:alternaterecipient"));
|
||||
|
@ -25,13 +25,17 @@ public interface FieldURI {
|
||||
|
||||
/**
|
||||
* Append field to buffer
|
||||
*
|
||||
* @param buffer current buffer
|
||||
*/
|
||||
public void appendTo(StringBuilder buffer);
|
||||
|
||||
/**
|
||||
* Append updated field value to buffer
|
||||
* @param buffer current buffer
|
||||
*
|
||||
* @param buffer current buffer
|
||||
* @param itemType item type
|
||||
* @param value field value
|
||||
*/
|
||||
public void appendValue(StringBuilder buffer, String itemType, String value);
|
||||
|
||||
|
@ -28,13 +28,27 @@ public class FieldUpdate {
|
||||
FieldURI fieldURI;
|
||||
String value;
|
||||
|
||||
/**
|
||||
* Create field update with value.
|
||||
*
|
||||
* @param fieldURI target field
|
||||
* @param value field value
|
||||
*/
|
||||
public FieldUpdate(FieldURI fieldURI, String value) {
|
||||
this.fieldURI = fieldURI;
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Write field to request writer.
|
||||
*
|
||||
* @param itemType item type
|
||||
* @param writer request writer
|
||||
* @throws IOException on error
|
||||
*/
|
||||
public void write(String itemType, Writer writer) throws IOException {
|
||||
String action;
|
||||
//noinspection VariableNotUsedInsideIf
|
||||
if (value == null) {
|
||||
action = "Delete";
|
||||
} else {
|
||||
|
@ -28,9 +28,9 @@ public class FindFolderMethod extends EWSMethod {
|
||||
/**
|
||||
* Find Exchange Folder.
|
||||
*
|
||||
* @param traversal traversal type
|
||||
* @param baseShape base shape
|
||||
* @param parentFolderId parent folder id
|
||||
* @param traversal traversal type
|
||||
* @param baseShape base shape
|
||||
* @param parentFolderId parent folder id
|
||||
* @param additionalProperties folder properties
|
||||
*/
|
||||
public FindFolderMethod(FolderQueryTraversal traversal, BaseShape baseShape, FolderId parentFolderId, Set<FieldURI> additionalProperties) {
|
||||
@ -44,11 +44,11 @@ public class FindFolderMethod extends EWSMethod {
|
||||
/**
|
||||
* Find Exchange Folder.
|
||||
*
|
||||
* @param traversal traversal type
|
||||
* @param baseShape base shape
|
||||
* @param parentFolderId parent folder id
|
||||
* @param traversal traversal type
|
||||
* @param baseShape base shape
|
||||
* @param parentFolderId parent folder id
|
||||
* @param additionalProperties folder properties
|
||||
* @param searchExpression search expression
|
||||
* @param searchExpression search expression
|
||||
*/
|
||||
public FindFolderMethod(FolderQueryTraversal traversal, BaseShape baseShape, FolderId parentFolderId,
|
||||
Set<FieldURI> additionalProperties, SearchExpression searchExpression) {
|
||||
|
@ -22,6 +22,13 @@ package davmail.exchange.ews;
|
||||
* EWS Find Item Method.
|
||||
*/
|
||||
public class FindItemMethod extends EWSMethod {
|
||||
/**
|
||||
* Find item method.
|
||||
*
|
||||
* @param traversal folder traversal mode
|
||||
* @param baseShape base item shape
|
||||
* @param parentFolderId parent folder id
|
||||
*/
|
||||
public FindItemMethod(FolderQueryTraversal traversal, BaseShape baseShape, FolderId parentFolderId) {
|
||||
super("Item", "FindItem");
|
||||
this.traversal = traversal;
|
||||
|
@ -27,15 +27,23 @@ import java.io.Writer;
|
||||
public class FolderId extends Option {
|
||||
protected String changeKey;
|
||||
|
||||
/**
|
||||
* Create FolderId with specified tag name.
|
||||
*
|
||||
* @param name field tag name
|
||||
* @param value id value
|
||||
* @param changeKey folder change key
|
||||
*/
|
||||
protected FolderId(String name, String value, String changeKey) {
|
||||
super(name, value);
|
||||
this.changeKey = changeKey;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create FolderId option
|
||||
* Create FolderId
|
||||
*
|
||||
* @param value id value
|
||||
* @param value id value
|
||||
* @param changeKey folder change key
|
||||
*/
|
||||
public FolderId(String value, String changeKey) {
|
||||
super("t:FolderId", value);
|
||||
@ -48,7 +56,7 @@ public class FolderId extends Option {
|
||||
* @param item response item
|
||||
*/
|
||||
public FolderId(EWSMethod.Item item) {
|
||||
this(item.get("FolderId"),item.get("ChangeKey"));
|
||||
this(item.get("FolderId"), item.get("ChangeKey"));
|
||||
}
|
||||
|
||||
|
||||
|
@ -18,9 +18,6 @@
|
||||
*/
|
||||
package davmail.exchange.ews;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.Writer;
|
||||
|
||||
/**
|
||||
* Folder folderQueryTraversalType search mode.
|
||||
*/
|
||||
|
@ -25,6 +25,13 @@ import java.util.Set;
|
||||
*/
|
||||
public class GetFolderMethod extends EWSMethod {
|
||||
|
||||
/**
|
||||
* Get folder method.
|
||||
*
|
||||
* @param baseShape base requested shape
|
||||
* @param folderId folder id
|
||||
* @param additionalProperties additional requested properties
|
||||
*/
|
||||
public GetFolderMethod(BaseShape baseShape, FolderId folderId, Set<FieldURI> additionalProperties) {
|
||||
super("Folder", "GetFolder");
|
||||
this.baseShape = baseShape;
|
||||
|
@ -22,6 +22,13 @@ package davmail.exchange.ews;
|
||||
* Get Item method.
|
||||
*/
|
||||
public class GetItemMethod extends EWSMethod {
|
||||
/**
|
||||
* Get item method.
|
||||
*
|
||||
* @param baseShape base requested shape
|
||||
* @param itemId item id
|
||||
* @param includeMimeContent return mime content
|
||||
*/
|
||||
public GetItemMethod(BaseShape baseShape, ItemId itemId, boolean includeMimeContent) {
|
||||
super("Item", "GetItem");
|
||||
this.baseShape = baseShape;
|
||||
|
@ -25,6 +25,11 @@ public class IndexedFieldURI implements FieldURI {
|
||||
protected String fieldURI;
|
||||
protected String fieldIndex;
|
||||
|
||||
/**
|
||||
* Create indexed field uri.
|
||||
* @param fieldURI base field uri
|
||||
* @param fieldIndex field name
|
||||
*/
|
||||
public IndexedFieldURI(String fieldURI, String fieldIndex) {
|
||||
this.fieldURI = fieldURI;
|
||||
this.fieldIndex = fieldIndex;
|
||||
|
@ -22,7 +22,12 @@ package davmail.exchange.ews;
|
||||
* Internet Message Header Field.
|
||||
*/
|
||||
public class InternetMessageHeaderFieldURI extends IndexedFieldURI {
|
||||
public InternetMessageHeaderFieldURI(String fieldIndex) {
|
||||
super("item:InternetMessageHeader", fieldIndex);
|
||||
/**
|
||||
* Create header field for field name.
|
||||
*
|
||||
* @param fieldName header field name
|
||||
*/
|
||||
public InternetMessageHeaderFieldURI(String fieldName) {
|
||||
super("item:InternetMessageHeader", fieldName);
|
||||
}
|
||||
}
|
||||
|
@ -49,20 +49,11 @@ public class ItemId {
|
||||
this.changeKey = item.get("ChangeKey");
|
||||
}
|
||||
|
||||
/**
|
||||
* Create Item id.
|
||||
*
|
||||
* @param id item id
|
||||
*/
|
||||
public ItemId(String id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
/**
|
||||
* Write item id as XML.
|
||||
*
|
||||
* @param writer
|
||||
* @throws IOException
|
||||
* @param writer request writer
|
||||
* @throws IOException on error
|
||||
*/
|
||||
public void write(Writer writer) throws IOException {
|
||||
writer.write("<t:ItemId Id=\"");
|
||||
|
@ -18,9 +18,6 @@
|
||||
*/
|
||||
package davmail.exchange.ews;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.Writer;
|
||||
|
||||
/**
|
||||
* MessageDisposition flag.
|
||||
*/
|
||||
|
@ -22,6 +22,12 @@ package davmail.exchange.ews;
|
||||
* Create Folder method.
|
||||
*/
|
||||
public class MoveFolderMethod extends EWSMethod {
|
||||
/**
|
||||
* Move folder to target folder.
|
||||
*
|
||||
* @param folderId folder id
|
||||
* @param toFolderId target folder id
|
||||
*/
|
||||
public MoveFolderMethod(FolderId folderId, FolderId toFolderId) {
|
||||
super("Folder", "MoveFolder");
|
||||
this.folderId = folderId;
|
||||
|
@ -22,6 +22,12 @@ package davmail.exchange.ews;
|
||||
* Move Item method.
|
||||
*/
|
||||
public class MoveItemMethod extends EWSMethod {
|
||||
/**
|
||||
* Move item to target folder.
|
||||
*
|
||||
* @param itemId item id
|
||||
* @param toFolderId target folder id
|
||||
*/
|
||||
public MoveItemMethod(ItemId itemId, FolderId toFolderId) {
|
||||
super("Item", "MoveItem");
|
||||
this.itemId = itemId;
|
||||
|
@ -1,49 +0,0 @@
|
||||
/*
|
||||
* DavMail POP/IMAP/SMTP/CalDav/LDAP Exchange Gateway
|
||||
* Copyright (C) 2010 Mickael Guessant
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
package davmail.exchange.ews;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.Writer;
|
||||
|
||||
/**
|
||||
* Boolean search expression
|
||||
*/
|
||||
public class MultipleOperandBooleanExpression implements SearchExpression {
|
||||
public enum Operator {
|
||||
And, Or, Not
|
||||
}
|
||||
|
||||
private SearchExpression[] searchExpressions;
|
||||
private Operator operator;
|
||||
|
||||
public MultipleOperandBooleanExpression(Operator operator, SearchExpression... searchExpressions) {
|
||||
this.searchExpressions = searchExpressions;
|
||||
this.operator = operator;
|
||||
}
|
||||
|
||||
public void appendTo(StringBuilder buffer) {
|
||||
buffer.append("<t:").append(operator.toString()).append('>');
|
||||
|
||||
for (SearchExpression searchExpression : searchExpressions) {
|
||||
searchExpression.appendTo(buffer);
|
||||
}
|
||||
|
||||
buffer.append("</t:").append(operator.toString()).append('>');
|
||||
}
|
||||
}
|
@ -22,10 +22,10 @@ package davmail.exchange.ews;
|
||||
* Item update option.
|
||||
*/
|
||||
public class SendMeetingInvitations extends AttributeOption {
|
||||
private SendMeetingInvitations(String value) {
|
||||
private SendMeetingInvitations(String value) {
|
||||
super("SendMeetingInvitations", value);
|
||||
}
|
||||
|
||||
|
||||
public static final SendMeetingInvitations SendToNone = new SendMeetingInvitations("SendToNone");
|
||||
public static final SendMeetingInvitations SendOnlyToAll = new SendMeetingInvitations("SendOnlyToAll");
|
||||
public static final SendMeetingInvitations SendToAllAndSaveCopy = new SendMeetingInvitations("SendToAllAndSaveCopy");
|
||||
|
@ -22,10 +22,10 @@ package davmail.exchange.ews;
|
||||
* Item update option.
|
||||
*/
|
||||
public class SendMeetingInvitationsOrCancellations extends AttributeOption {
|
||||
private SendMeetingInvitationsOrCancellations(String value) {
|
||||
private SendMeetingInvitationsOrCancellations(String value) {
|
||||
super("SendMeetingInvitationsOrCancellations", value);
|
||||
}
|
||||
|
||||
|
||||
public static final SendMeetingInvitationsOrCancellations SendToNone = new SendMeetingInvitationsOrCancellations("SendToNone");
|
||||
public static final SendMeetingInvitationsOrCancellations SendOnlyToAll = new SendMeetingInvitationsOrCancellations("SendOnlyToAll");
|
||||
public static final SendMeetingInvitationsOrCancellations SendToAllAndSaveCopy = new SendMeetingInvitationsOrCancellations("SendToAllAndSaveCopy");
|
||||
|
@ -20,9 +20,6 @@ package davmail.exchange.ews;
|
||||
|
||||
import davmail.util.StringUtil;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.Writer;
|
||||
|
||||
/**
|
||||
* Two operand expression.
|
||||
*/
|
||||
|
@ -25,13 +25,18 @@ public class UnindexedFieldURI implements FieldURI {
|
||||
protected final String fieldURI;
|
||||
protected final String fieldName;
|
||||
|
||||
/**
|
||||
* Create unindexed field URI.
|
||||
*
|
||||
* @param fieldURI field name
|
||||
*/
|
||||
public UnindexedFieldURI(String fieldURI) {
|
||||
this.fieldURI = fieldURI;
|
||||
int colonIndex = fieldURI.indexOf(':');
|
||||
if (colonIndex < 0) {
|
||||
fieldName = fieldURI;
|
||||
} else {
|
||||
fieldName = fieldURI.substring(colonIndex+1);
|
||||
fieldName = fieldURI.substring(colonIndex + 1);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -24,6 +24,12 @@ import java.util.Set;
|
||||
* Update Folder method.
|
||||
*/
|
||||
public class UpdateFolderMethod extends EWSMethod {
|
||||
/**
|
||||
* Update folder options.
|
||||
*
|
||||
* @param folderId folder id
|
||||
* @param updates folder properties updates
|
||||
*/
|
||||
public UpdateFolderMethod(FolderId folderId, Set<FieldUpdate> updates) {
|
||||
super("Folder", "UpdateFolder");
|
||||
this.folderId = folderId;
|
||||
|
@ -21,9 +21,19 @@ package davmail.exchange.ews;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* Uµpdate Item method.
|
||||
* Update Item method.
|
||||
*/
|
||||
public class UpdateItemMethod extends EWSMethod {
|
||||
/**
|
||||
* Update exchange item.
|
||||
*
|
||||
* @param messageDisposition save or send option
|
||||
* @param conflictResolution overwrite option
|
||||
* @param sendMeetingInvitationsOrCancellations
|
||||
* send invitations option
|
||||
* @param itemId item id with change key
|
||||
* @param updates field updates
|
||||
*/
|
||||
public UpdateItemMethod(MessageDisposition messageDisposition, ConflictResolution conflictResolution,
|
||||
SendMeetingInvitationsOrCancellations sendMeetingInvitationsOrCancellations,
|
||||
ItemId itemId, Set<FieldUpdate> updates) {
|
||||
|
Loading…
Reference in New Issue
Block a user