Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance. Project price only 1 $
You can buy this project and download/modify it how often you want.
/*
* 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 microsoft.exchange.webservices.data.attribute.EditorBrowsable;
import microsoft.exchange.webservices.data.core.EwsUtilities;
import microsoft.exchange.webservices.data.core.ILazyMember;
import microsoft.exchange.webservices.data.core.LazyMember;
import microsoft.exchange.webservices.data.core.XmlElementNames;
import microsoft.exchange.webservices.data.core.enumeration.attribute.EditorBrowsableState;
import microsoft.exchange.webservices.data.core.enumeration.misc.ExchangeVersion;
import microsoft.exchange.webservices.data.core.enumeration.property.PropertyDefinitionFlags;
import microsoft.exchange.webservices.data.misc.OutParam;
import microsoft.exchange.webservices.data.property.complex.ExtendedPropertyCollection;
import microsoft.exchange.webservices.data.property.complex.ICreateComplexPropertyDelegate;
import microsoft.exchange.webservices.data.property.definition.ComplexPropertyDefinition;
import microsoft.exchange.webservices.data.property.definition.IndexedPropertyDefinition;
import microsoft.exchange.webservices.data.property.definition.PropertyDefinition;
import microsoft.exchange.webservices.data.property.definition.PropertyDefinitionBase;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.util.ArrayList;
import java.util.EnumSet;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
/**
* Represents the base class for all item and folder schema.
*/
@EditorBrowsable(state = EditorBrowsableState.Never)
public abstract class ServiceObjectSchema implements
Iterable {
private static final Log LOG = LogFactory.getLog(ServiceObjectSchema.class);
/**
* The lock object.
*/
private static final Object lockObject = new Object();
/**
* List of all schema types. If you add a new ServiceObject subclass that
* has an associated schema, add the schema type to the list below.
*/
private static LazyMember>> allSchemaTypes = new
LazyMember>>(new
ILazyMember>>() {
public List> createInstance() {
List> typeList = new ArrayList>();
// typeList.add()
/*
* typeList.add(AppointmentSchema.class);
* typeList.add(CalendarResponseObjectSchema.class);
* typeList.add(CancelMeetingMessageSchema.class);
* typeList.add(ContactGroupSchema.class);
* typeList.add(ContactSchema.class);
* typeList.add(EmailMessageSchema.class);
* typeList.add(FolderSchema.class);
* typeList.add(ItemSchema.class);
* typeList.add(MeetingMessageSchema.class);
* typeList.add(MeetingRequestSchema.class);
* typeList.add(PostItemSchema.class);
* typeList.add(PostReplySchema.class);
* typeList.add(ResponseMessageSchema.class);
* typeList.add(ResponseObjectSchema.class);
* typeList.add(ServiceObjectSchema.class);
* typeList.add(SearchFolderSchema.class);
* typeList.add(TaskSchema.class);
*/
// Verify that all Schema types in the Managed API assembly
// have been included.
/*
* var missingTypes = from type in
* Assembly.GetExecutingAssembly().GetTypes() where
* type.IsSubclassOf(typeof(ServiceObjectSchema)) &&
* !typeList.Contains(type) select type; if
* (missingTypes.Count() > 0) { throw new
* ServiceLocalException
* ("SchemaTypeList does not include all
* defined schema types."
* ); }
*/
return typeList;
}
});
/**
* Dictionary of all property definitions.
*/
private static LazyMember