1/*
2 * Copyright (c) 1999, 2015, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.  Oracle designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Oracle in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25
26package javax.security.auth.callback;
27
28/**
29 * <p> Underlying security services instantiate and pass a
30 * {@code TextOutputCallback} to the {@code handle}
31 * method of a {@code CallbackHandler} to display information messages,
32 * warning messages and error messages.
33 *
34 * @since 1.4
35 * @see javax.security.auth.callback.CallbackHandler
36 */
37public class TextOutputCallback implements Callback, java.io.Serializable {
38
39    private static final long serialVersionUID = 1689502495511663102L;
40
41    /** Information message. */
42    public static final int INFORMATION         = 0;
43    /** Warning message. */
44    public static final int WARNING             = 1;
45    /** Error message. */
46    public static final int ERROR               = 2;
47
48    /**
49     * @serial
50     * @since 1.4
51     */
52    private int messageType;
53    /**
54     * @serial
55     * @since 1.4
56     */
57    private String message;
58
59    /**
60     * Construct a TextOutputCallback with a message type and message
61     * to be displayed.
62     *
63     * @param messageType the message type ({@code INFORMATION},
64     *                  {@code WARNING} or {@code ERROR}).
65     *
66     * @param message the message to be displayed.
67     *
68     * @exception IllegalArgumentException if {@code messageType}
69     *                  is not either {@code INFORMATION},
70     *                  {@code WARNING} or {@code ERROR},
71     *                  if {@code message} is null,
72     *                  or if {@code message} has a length of 0.
73     */
74    public TextOutputCallback(int messageType, String message) {
75        if ((messageType != INFORMATION &&
76                messageType != WARNING && messageType != ERROR) ||
77            message == null || message.length() == 0)
78            throw new IllegalArgumentException();
79
80        this.messageType = messageType;
81        this.message = message;
82    }
83
84    /**
85     * Get the message type.
86     *
87     * @return the message type ({@code INFORMATION},
88     *                  {@code WARNING} or {@code ERROR}).
89     */
90    public int getMessageType() {
91        return messageType;
92    }
93
94    /**
95     * Get the message to be displayed.
96     *
97     * @return the message to be displayed.
98     */
99    public String getMessage() {
100        return message;
101    }
102}
103