001/*
002 * The MIT License
003 * Copyright (c) 2012 Microsoft Corporation
004 *
005 * Permission is hereby granted, free of charge, to any person obtaining a copy
006 * of this software and associated documentation files (the "Software"), to deal
007 * in the Software without restriction, including without limitation the rights
008 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
009 * copies of the Software, and to permit persons to whom the Software is
010 * furnished to do so, subject to the following conditions:
011 *
012 * The above copyright notice and this permission notice shall be included in
013 * all copies or substantial portions of the Software.
014 *
015 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
016 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
017 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
018 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
019 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
020 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
021 * THE SOFTWARE.
022 */
023
024package microsoft.exchange.webservices.data.autodiscover;
025
026import microsoft.exchange.webservices.data.core.EwsXmlReader;
027import microsoft.exchange.webservices.data.core.XmlElementNames;
028import microsoft.exchange.webservices.data.core.enumeration.misc.XmlNamespace;
029import microsoft.exchange.webservices.data.security.XmlNodeType;
030
031/**
032 * Represents the email Protocol connection settings for pop/imap/smtp
033 * protocols.
034 */
035public final class ProtocolConnection {
036
037  /**
038   * The encryption method.
039   */
040  private String encryptionMethod;
041
042  /**
043   * The hostname.
044   */
045  private String hostname;
046
047  /**
048   * The port.
049   */
050  private int port;
051
052  /**
053   * Initializes a new instance of the {@link ProtocolConnection} class.
054   */
055
056  protected ProtocolConnection() {
057  }
058
059  /**
060   * Read user setting with ProtocolConnection value.
061   *
062   * @param reader EwsServiceXmlReader
063   * @return the protocol connection
064   * @throws Exception the exception
065   */
066  protected static ProtocolConnection loadFromXml(EwsXmlReader reader)
067      throws Exception {
068    ProtocolConnection connection = new ProtocolConnection();
069
070    do {
071      reader.read();
072
073      if (reader.getNodeType().getNodeType() == XmlNodeType.START_ELEMENT) {
074        if (reader.getLocalName().equals(
075            XmlElementNames.EncryptionMethod)) {
076          connection.setEncryptionMethod(reader
077              .readElementValue(String.class));
078        } else if (reader.getLocalName().equals(
079            XmlElementNames.Hostname)) {
080          connection.setHostname(reader
081              .readElementValue(String.class));
082        } else if (reader.getLocalName().equals(XmlElementNames.Port)) {
083          connection.setPort(reader.readElementValue(int.class));
084        }
085      }
086    } while (!reader.isEndElement(XmlNamespace.Autodiscover,
087        XmlElementNames.ProtocolConnection));
088
089    return connection;
090  }
091
092  /**
093   * Initializes a new instance of the ProtocolConnection class.
094   *
095   * @param encryptionMethod The encryption method.
096   * @param hostname         The hostname.
097   * @param port             The port number to use for the portocol.
098   */
099  protected ProtocolConnection(String encryptionMethod, String hostname,
100      int port) {
101    this.encryptionMethod = encryptionMethod;
102    this.hostname = hostname;
103    this.port = port;
104  }
105
106  /**
107   * Gets the encryption method.
108   *
109   * @return The encryption method.
110   */
111  public String getEncryptionMethod() {
112    return this.encryptionMethod;
113  }
114
115  /**
116   * Sets the encryption method.
117   *
118   * @param value the new encryption method
119   */
120  public void setEncryptionMethod(String value) {
121    this.encryptionMethod = value;
122  }
123
124  /**
125   * Gets the hostname.
126   *
127   * @return The hostname.
128   */
129  public String getHostname() {
130    return this.hostname;
131
132  }
133
134  /**
135   * Sets the hostname.
136   *
137   * @param value the new hostname
138   */
139  public void setHostname(String value) {
140    this.hostname = value;
141  }
142
143  /**
144   * Gets the port number.
145   *
146   * @return The port number.
147   */
148  public int getPort() {
149    return this.port;
150  }
151
152  /**
153   * Sets the port.
154   *
155   * @param value the new port
156   */
157  public void setPort(int value) {
158    this.port = value;
159  }
160}