package org.jboss.resteasy.test.providers.jaxb.resource.homecontrol;

import java.util.ArrayList;
import java.util.List;

import jakarta.xml.bind.annotation.XmlAccessType;
import jakarta.xml.bind.annotation.XmlAccessorType;
import jakarta.xml.bind.annotation.XmlElement;
import jakarta.xml.bind.annotation.XmlElementWrapper;
import jakarta.xml.bind.annotation.XmlType;

/**
 * <p>
 * Java-Klasse für UserType complex type.
 *
 * <p>
 * Das folgende Schemafragment gibt den erwarteten Content an, der in dieser Klasse enthalten ist.
 *
 * <pre>
 * &lt;complexType name="UserType"&gt;
 *   &lt;complexContent&gt;
 *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
 *       &lt;sequence&gt;
 *         &lt;element name="id" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/&gt;
 *         &lt;element name="credentials"&gt;
 *           &lt;complexType&gt;
 *             &lt;complexContent&gt;
 *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
 *                 &lt;sequence&gt;
 *                   &lt;element name="loginId" type="{http://www.w3.org/2001/XMLSchema}string"/&gt;
 *                   &lt;element name="password" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/&gt;
 *                 &lt;/sequence&gt;
 *               &lt;/restriction&gt;
 *             &lt;/complexContent&gt;
 *           &lt;/complexType&gt;
 *         &lt;/element&gt;
 *         &lt;element name="roles"&gt;
 *           &lt;complexType&gt;
 *             &lt;complexContent&gt;
 *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
 *                 &lt;sequence&gt;
 *                   &lt;element name="role" type="{http://creaity.de/homecontrol/rest/types/v1}RoleType" maxOccurs="unbounded"/&gt;
 *                 &lt;/sequence&gt;
 *               &lt;/restriction&gt;
 *             &lt;/complexContent&gt;
 *           &lt;/complexType&gt;
 *         &lt;/element&gt;
 *       &lt;/sequence&gt;
 *     &lt;/restriction&gt;
 *   &lt;/complexContent&gt;
 * &lt;/complexType&gt;
 * </pre>
 *
 *
 */
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "UserType", propOrder = {
        "id",
        "credentials",
        "roles"
})
public class UserType {
    @XmlElement(namespace = "http://creaity.de/homecontrol/rest/types/v1")
    protected String id;
    @XmlElement(required = true)
    protected UserType.Credentials credentials;
    @XmlElementWrapper(required = true)
    @XmlElement(name = "role", namespace = "http://creaity.de/homecontrol/rest/types/v1")
    protected List<RoleType> roles = new ArrayList<RoleType>();

    /**
     * Ruft den Wert der id-Eigenschaft ab.
     *
     * @return
     *         possible object is
     *         {@link String }
     *
     */
    public String getId() {
        return id;
    }

    /**
     * Legt den Wert der id-Eigenschaft fest.
     *
     * @param value
     *              allowed object is
     *              {@link String }
     *
     */
    public void setId(String value) {
        this.id = value;
    }

    /**
     * Ruft den Wert der credentials-Eigenschaft ab.
     *
     * @return
     *         possible object is
     *         {@link UserType.Credentials }
     *
     */
    public UserType.Credentials getCredentials() {
        return credentials;
    }

    /**
     * Legt den Wert der credentials-Eigenschaft fest.
     *
     * @param value
     *              allowed object is
     *              {@link UserType.Credentials }
     *
     */
    public void setCredentials(UserType.Credentials value) {
        this.credentials = value;
    }

    public List<RoleType> getRoles() {
        return roles;
    }

    public void setRoles(List<RoleType> roles) {
        this.roles = roles;
    }

    /**
     * <p>
     * Java-Klasse für anonymous complex type.
     *
     * <p>
     * Das folgende Schemafragment gibt den erwarteten Content an, der in dieser Klasse enthalten ist.
     *
     * <pre>
     * &lt;complexType&gt;
     *   &lt;complexContent&gt;
     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
     *       &lt;sequence&gt;
     *         &lt;element name="loginId" type="{http://www.w3.org/2001/XMLSchema}string"/&gt;
     *         &lt;element name="password" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/&gt;
     *       &lt;/sequence&gt;
     *     &lt;/restriction&gt;
     *   &lt;/complexContent&gt;
     * &lt;/complexType&gt;
     * </pre>
     *
     *
     */
    @XmlAccessorType(XmlAccessType.FIELD)
    @XmlType(name = "", propOrder = {
            "loginId",
            "password"
    })
    public static class Credentials {

        @XmlElement(required = true)
        protected String loginId;
        protected String password;

        /**
         * Ruft den Wert der loginId-Eigenschaft ab.
         *
         * @return
         *         possible object is
         *         {@link String }
         *
         */
        public String getLoginId() {
            return loginId;
        }

        /**
         * Legt den Wert der loginId-Eigenschaft fest.
         *
         * @param value
         *              allowed object is
         *              {@link String }
         *
         */
        public void setLoginId(String value) {
            this.loginId = value;
        }

        /**
         * Ruft den Wert der password-Eigenschaft ab.
         *
         * @return
         *         possible object is
         *         {@link String }
         *
         */
        public String getPassword() {
            return password;
        }

        /**
         * Legt den Wert der password-Eigenschaft fest.
         *
         * @param value
         *              allowed object is
         *              {@link String }
         *
         */
        public void setPassword(String value) {
            this.password = value;
        }

    }

}
