/* * Copyright (c) 2010-2013 Evolveum * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> // Any modifications to this file will be lost upon recompilation of the source schema. // Generated on: 2013.01.25 at 04:55:44 PM CET // package com.evolveum.prism.xml.ns._public.types_3; import java.io.Serializable; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.ArrayList; import java.util.List; import javax.xml.bind.JAXBElement; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlAnyElement; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlType; import javax.xml.namespace.QName; import com.evolveum.midpoint.prism.PrismConstants; import com.evolveum.midpoint.util.exception.SystemException; import org.w3c.dom.Element; /** * * Describes a change of a specific object. * * * <p>Java class for ObjectDeltaType complex type. * * <p>The following schema fragment specifies the expected content contained within this class. * * <pre> * <complexType name="ObjectDeltaType"> * <complexContent> * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType"> * <sequence> * <element name="changeType" type="{http://prism.evolveum.com/xml/ns/public/types-3}ChangeTypeType"/> * <element name="objectType" type="{http://www.w3.org/2001/XMLSchema}QName"/> * <element name="objectToAdd" minOccurs="0"> * <complexType> * <complexContent> * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType"> * <sequence> * <any processContents='lax'/> * </sequence> * </restriction> * </complexContent> * </complexType> * </element> * <element name="oid" type="{http://www.w3.org/2001/XMLSchema}string"/> * <element name="modification" type="{http://prism.evolveum.com/xml/ns/public/types-3}ItemDeltaType" maxOccurs="unbounded" minOccurs="0"/> * </sequence> * </restriction> * </complexContent> * </complexType> * </pre> * * */ @XmlAccessorType(XmlAccessType.FIELD) @XmlType(name = "ObjectDeltaType", propOrder = { "changeType", "objectType", "objectToAdd", "oid", "itemDelta" }) public class ObjectDeltaType implements Serializable { @XmlElement(required = true) protected ChangeTypeType changeType; @XmlElement(required = true) protected QName objectType; protected ObjectType objectToAdd; @XmlElement(required = true) protected String oid; protected final List<ItemDeltaType> itemDelta = new ArrayList<>(); public final static QName COMPLEX_TYPE = new QName(PrismConstants.NS_TYPES, "ObjectDeltaType"); public final static QName F_CHANGE_TYPE = new QName(PrismConstants.NS_TYPES, "changeType"); public final static QName F_OBJECT_TYPE = new QName(PrismConstants.NS_TYPES, "objectType"); public final static QName F_OBJECT_TO_ADD = new QName(PrismConstants.NS_TYPES, "objectToAdd"); public final static QName F_ITEM_DETLA = new QName(PrismConstants.NS_TYPES, "itemDelta"); /** * Gets the value of the changeType property. * * @return * possible object is * {@link ChangeTypeType } * */ public ChangeTypeType getChangeType() { return changeType; } /** * Sets the value of the changeType property. * * @param value * allowed object is * {@link ChangeTypeType } * */ public void setChangeType(ChangeTypeType value) { this.changeType = value; } /** * Gets the value of the objectType property. * * @return * possible object is * {@link QName } * */ public QName getObjectType() { return objectType; } /** * Sets the value of the objectType property. * * @param value * allowed object is * {@link QName } * */ public void setObjectType(QName value) { this.objectType = value; } /** * Gets the value of the objectToAdd property. * * @return * possible object is * {@link ObjectDeltaType.ObjectToAdd } * */ public ObjectType getObjectToAdd() { return objectToAdd; } /** * Sets the value of the objectToAdd property. * * @param value * allowed object is * {@link ObjectDeltaType.ObjectToAdd } * */ public <T extends ObjectType> void setObjectToAdd(T value) { this.objectToAdd = value; } /** * Gets the value of the oid property. * * @return * possible object is * {@link String } * */ public String getOid() { return oid; } /** * Sets the value of the oid property. * * @param value * allowed object is * {@link String } * */ public void setOid(String value) { this.oid = value; } /** * Gets the value of the modification property. * * <p> * This accessor method returns a reference to the live list, * not a snapshot. Therefore any modification you make to the * returned list will be present inside the JAXB object. * This is why there is not a <CODE>set</CODE> method for the modification property. * * <p> * For example, to add a new item, do as follows: * <pre> * getModification().add(newItem); * </pre> * * * <p> * Objects of the following type(s) are allowed in the list * {@link ItemDeltaType } * * */ public List<ItemDeltaType> getItemDelta() { return this.itemDelta; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((changeType == null) ? 0 : changeType.hashCode()); result = prime * result + ((itemDelta == null) ? 0 : itemDelta.hashCode()); result = prime * result + ((objectToAdd == null) ? 0 : objectToAdd.hashCode()); result = prime * result + ((objectType == null) ? 0 : objectType.hashCode()); result = prime * result + ((oid == null) ? 0 : oid.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; ObjectDeltaType other = (ObjectDeltaType) obj; if (changeType != other.changeType) return false; if (itemDelta == null) { if (other.itemDelta != null) return false; } else if (!itemDelta.equals(other.itemDelta)) return false; if (objectToAdd == null) { if (other.objectToAdd != null) return false; } else if (!objectToAdd.equals(other.objectToAdd)) return false; if (objectType == null) { if (other.objectType != null) return false; } else if (!objectType.equals(other.objectType)) return false; if (oid == null) { if (other.oid != null) return false; } else if (!oid.equals(other.oid)) return false; return true; } @Override public String toString() { return "ObjectDeltaType(changeType=" + changeType + ", objectType=" + objectType + ", objectToAdd=" + objectToAdd + ", oid=" + oid + ", modification=" + itemDelta + ")"; } /** * <p>Java class for anonymous complex type. * * <p>The following schema fragment specifies the expected content contained within this class. * * <pre> * <complexType> * <complexContent> * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType"> * <sequence> * <any processContents='lax'/> * </sequence> * </restriction> * </complexContent> * </complexType> * </pre> * * */ @XmlAccessorType(XmlAccessType.FIELD) @XmlType(name = "", propOrder = { "any" }) public static class ObjectToAdd implements Serializable { @XmlAnyElement(lax = true) protected JAXBElement<?> any; /** * Gets the value of the any property. * * @return * possible object is * {@link Object } * {@link Element } * */ public JAXBElement<?> getAny() { return any; } /** * Sets the value of the any property. * * @param value * allowed object is * {@link Object } * {@link Element } * */ public void setAny(JAXBElement<?> value) { this.any = value; } // todo this method is UNTESTED for now; however, as "any" will usually be ObjectType or its subclass, it should work public ObjectToAdd clone() { ObjectToAdd retval = new ObjectToAdd(); if (any != null) { try { Method clone = any.getClass().getMethod("clone"); clone.setAccessible(true); retval.any = (JAXBElement<?>) clone.invoke(any); } catch (NoSuchMethodException e) { throw new SystemException("Cannot clone objectToAdd: " + any, e); } catch (InvocationTargetException e) { throw new SystemException("Cannot clone objectToAdd: " + any, e); } catch (IllegalAccessException e) { throw new SystemException("Cannot clone objectToAdd: " + any, e); } } return retval; } } /** * Clones the object (objectToAdd is cloned using reflection, assuming it is a subclass of ObjectType, that has public clone() method) * * @return copy of the object */ public ObjectDeltaType clone() { ObjectDeltaType clone = new ObjectDeltaType(); clone.setOid(getOid()); clone.setChangeType(getChangeType()); clone.setObjectType(getObjectType()); if (getObjectToAdd() != null) { clone.setObjectToAdd(getObjectToAdd()); } for (ItemDeltaType mod : getItemDelta()) { clone.getItemDelta().add(mod.clone()); } return clone; } }