/*
 * Copyright (c) 2010-2018 Evolveum and contributors
 *
 * This work is dual-licensed under the Apache License 2.0
 * and European Union Public License. See LICENSE file for details.
 */

//
// 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: 2012.05.20 at 05:41:15 PM CEST
//

package com.evolveum.prism.xml.ns._public.types_3;

import java.io.Serializable;
import javax.xml.bind.JAXBElement;
import javax.xml.bind.annotation.XmlElementDecl;
import javax.xml.bind.annotation.XmlRegistry;
import javax.xml.namespace.QName;

import com.evolveum.midpoint.prism.path.ItemPath;

/**
 * This object contains factory methods for each
 * Java content interface and Java element interface
 * generated in the com.evolveum.prism.xml.ns._public.types_3 package.
 * <p>An ObjectFactory allows you to programatically
 * construct new instances of the Java representation
 * for XML content. The Java representation of XML
 * content can consist of schema derived interfaces
 * and classes representing the binding of schema
 * type definitions, element declarations and model
 * groups.  Factory methods for each of these are
 * provided in this class.
 */
@XmlRegistry
public class ObjectFactory implements Serializable {

    private static final QName _ObjectDelta_QNAME = new QName("http://prism.evolveum.com/xml/ns/public/types-3", "objectDelta");
    private static final QName _PolyStringTypeNorm_QNAME = new QName("http://prism.evolveum.com/xml/ns/public/types-3", "norm");
    private static final QName _PolyStringTypeOrig_QNAME = new QName("http://prism.evolveum.com/xml/ns/public/types-3", "orig");
    private static final QName _ProtectedDataTypeEncryptedData_QNAME = new QName("http://prism.evolveum.com/xml/ns/public/types-3", "encryptedData");
    private static final QName _ProtectedDataTypeHashedData_QNAME = new QName("http://prism.evolveum.com/xml/ns/public/types-3", "hashedData");
    private static final QName _ItemPathType_QNAME = new QName("http://prism.evolveum.com/xml/ns/public/types-3", "path");
    private static final QName _Object_QNAME = new QName("http://prism.evolveum.com/xml/ns/public/types-3", "object");

    /**
     * Create a new ObjectFactory that can be used to create new instances of schema derived classes for package: com.evolveum.prism.xml.ns._public.types_3
     */
    public ObjectFactory() {
    }

    /**
     * Create an instance of {@link ObjectReferenceType }
     */
    public ObjectReferenceType createObjectReferenceType() {
        return new ObjectReferenceType();
    }

    /**
     * Create an instance of {@link ItemDeltaType }
     */
    public ItemDeltaType createItemDeltaType() {
        return new ItemDeltaType();
    }

    /**
     * Create an instance of {@link ObjectDeltaType }
     */
    public ObjectDeltaType createObjectDeltaType() {
        return new ObjectDeltaType();
    }

    /**
     * Create an instance of {@link KeyInfoType }
     */
    public KeyInfoType createKeyInfoType() {
        return new KeyInfoType();
    }

    /**
     * Create an instance of {@link ProtectedByteArrayType }
     */
    public ProtectedByteArrayType createProtectedByteArrayType() {
        return new ProtectedByteArrayType();
    }

    /**
     * Create an instance of {@link EncryptedDataType }
     */
    public EncryptedDataType createEncryptedDataType() {
        return new EncryptedDataType();
    }

    /**
     * Create an instance of {@link CipherDataType }
     */
    public CipherDataType createCipherDataType() {
        return new CipherDataType();
    }

    /**
     * Create an instance of {@link ProtectedStringType }
     */
    public ProtectedStringType createProtectedStringType() {
        return new ProtectedStringType();
    }

//    public ObjectType createObjectType() {
//        return new ObjectType();
//    }

    /**
     * Create an instance of {@link EncryptionMethodType }
     */
    public EncryptionMethodType createEncryptionMethodType() {
        return new EncryptionMethodType();
    }

    /**
     * Create an instance of {@link ItemPathType }
     */
    public ItemPathType createItemPathType() {
        return new ItemPathType();
    }

    /**
     * Create an instance of {@link Extension }
     */
    public Extension createExtension() {
        return new Extension();
    }

    /**
     * Create an instance of {@link PolyStringType }
     */
    public PolyStringType createPolyStringType() {
        return new PolyStringType();
    }

//    /**
//     * Create an instance of {@link XPathType }
//     *
//     */
//    public XPathType createXPathType() {
//        return new XPathType();
//    }

    /**
     * Create an instance of {@link ObjectReferenceType.Filter }
     */
    public ObjectReferenceType.Filter createObjectReferenceTypeFilter() {
        return new ObjectReferenceType.Filter();
    }

    /**
     * Create an instance of {@link ObjectDeltaType.ObjectToAdd }
     */
    public ObjectDeltaType.ObjectToAdd createObjectDeltaTypeObjectToAdd() {
        return new ObjectDeltaType.ObjectToAdd();
    }

    /**
     * Create an instance of {@link JAXBElement }{@code <}{@link ObjectDeltaType }{@code >}}
     */
    @XmlElementDecl(namespace = "http://prism.evolveum.com/xml/ns/public/types-3", name = "objectDelta")
    public JAXBElement<ObjectDeltaType> createObjectDelta(ObjectDeltaType value) {
        return new JAXBElement<>(_ObjectDelta_QNAME, ObjectDeltaType.class, null, value);
    }

    /**
     * Create an instance of {@link JAXBElement }{@code <}{@link String }{@code >}}
     */
    @XmlElementDecl(namespace = "http://prism.evolveum.com/xml/ns/public/types-3", name = "norm", scope = PolyStringType.class)
    public JAXBElement<String> createPolyStringTypeNorm(String value) {
        return new JAXBElement<>(_PolyStringTypeNorm_QNAME, String.class, PolyStringType.class, value);
    }

    /**
     * Create an instance of {@link JAXBElement }{@code <}{@link String }{@code >}}
     */
    @XmlElementDecl(namespace = "http://prism.evolveum.com/xml/ns/public/types-3", name = "orig", scope = PolyStringType.class)
    public JAXBElement<String> createPolyStringTypeOrig(String value) {
        return new JAXBElement<>(_PolyStringTypeOrig_QNAME, String.class, PolyStringType.class, value);
    }

    /**
     * Create an instance of {@link JAXBElement }{@code <}{@link EncryptedDataType }{@code >}}
     */
    @XmlElementDecl(namespace = "http://prism.evolveum.com/xml/ns/public/types-3", name = "encryptedData", scope = ProtectedDataType.class)
    public JAXBElement<EncryptedDataType> createProtectedDataTypeEncryptedData(EncryptedDataType value) {
        return new JAXBElement<>(_ProtectedDataTypeEncryptedData_QNAME, EncryptedDataType.class, ProtectedDataType.class, value);
    }

    @XmlElementDecl(namespace = "http://prism.evolveum.com/xml/ns/public/types-3", name = "encryptedData", scope = ProtectedStringType.class)
    public JAXBElement<EncryptedDataType> createProtectedStringTypeEncryptedData(EncryptedDataType value) {
        return new JAXBElement<>(_ProtectedDataTypeEncryptedData_QNAME, EncryptedDataType.class, ProtectedStringType.class, value);
    }

    /**
     * Create an instance of {@link JAXBElement }{@code <}{@link HashedDataType }{@code >}}
     */
    @XmlElementDecl(namespace = "http://prism.evolveum.com/xml/ns/public/types-3", name = "hashedData", scope = ProtectedDataType.class)
    public JAXBElement<HashedDataType> createProtectedDataTypeHashedData(HashedDataType value) {
        return new JAXBElement<>(_ProtectedDataTypeHashedData_QNAME, HashedDataType.class, ProtectedDataType.class, value);
    }

    @XmlElementDecl(namespace = "http://prism.evolveum.com/xml/ns/public/types-3", name = "hashedData", scope = ProtectedStringType.class)
    public JAXBElement<HashedDataType> createProtectedStringTypeHashedData(HashedDataType value) {
        return new JAXBElement<>(_ProtectedDataTypeHashedData_QNAME, HashedDataType.class, ProtectedStringType.class, value);
    }

    @XmlElementDecl(namespace = "http://prism.evolveum.com/xml/ns/public/types-3", name = "path", scope = ItemPathType.class)
    public JAXBElement<ItemPath> createItemPathType(ItemPath value) {
        return new JAXBElement<>(_ItemPathType_QNAME, ItemPath.class, ItemPathType.class, value);
    }

    /**
     * Create an instance of {@link JAXBElement }{@code <}{@link ObjectType }{@code >}}
     */
    @XmlElementDecl(namespace = "http://prism.evolveum.com/xml/ns/public/types-3a", name = "object")
    public JAXBElement<ObjectType> createObject(ObjectType value) {
        return new JAXBElement<>(_Object_QNAME, ObjectType.class, null, value);
    }

    /**
     * Create an instance of {@link SchemaDefinitionType }
     */
    public SchemaDefinitionType createSchemaDefinitionType() {
        return new SchemaDefinitionType();
    }

}
