8029904: Remove com.sun.security.auth.callback.DialogCallbackHandler
Reviewed-by: mullan
--- a/jdk/make/profile-rtjar-includes.txt Mon Dec 16 15:38:31 2013 +0100
+++ b/jdk/make/profile-rtjar-includes.txt Mon Dec 16 15:05:26 2013 +0000
@@ -26,8 +26,8 @@
# Included or excluded types must take one of two forms
# - *.class to indicate all classes; or else
# - a full single type name e.g.
-# com/sun/security/auth/callback/DialogCallbackHandler$$1.class
-# You can not use arbitrary wildcards like DialogCallbackHandler*.class.
+# javax/management/remote/rmi/_RMIServer_Stub.class
+# You can not use arbitrary wildcards like _RMI*.class.
#
# Notes:
# - Nested types must use $$ in place of $ as $ is the make meta-character
@@ -149,11 +149,6 @@
PROFILE_3_RTJAR_INCLUDE_TYPES :=
PROFILE_3_RTJAR_EXCLUDE_TYPES := \
- com/sun/security/auth/callback/DialogCallbackHandler$$1.class \
- com/sun/security/auth/callback/DialogCallbackHandler$$2.class \
- com/sun/security/auth/callback/DialogCallbackHandler$$Action.class \
- com/sun/security/auth/callback/DialogCallbackHandler$$ConfirmationInfo.class \
- com/sun/security/auth/callback/DialogCallbackHandler.class \
javax/management/remote/rmi/_RMIConnectionImpl_Tie.class \
javax/management/remote/rmi/_RMIConnection_Stub.class \
javax/management/remote/rmi/_RMIServerImpl_Tie.class \
@@ -225,11 +220,6 @@
sun/tools/jar
FULL_JRE_RTJAR_INCLUDE_TYPES := \
- com/sun/security/auth/callback/DialogCallbackHandler$$1.class \
- com/sun/security/auth/callback/DialogCallbackHandler$$2.class \
- com/sun/security/auth/callback/DialogCallbackHandler$$Action.class \
- com/sun/security/auth/callback/DialogCallbackHandler$$ConfirmationInfo.class \
- com/sun/security/auth/callback/DialogCallbackHandler.class \
javax/annotation/*.class \
javax/management/remote/rmi/_RMIConnectionImpl_Tie.class \
javax/management/remote/rmi/_RMIConnection_Stub.class \
--- a/jdk/src/share/classes/com/sun/security/auth/callback/DialogCallbackHandler.java Mon Dec 16 15:38:31 2013 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,319 +0,0 @@
-/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.security.auth.callback;
-
-/* JAAS imports */
-import javax.security.auth.callback.Callback;
-import javax.security.auth.callback.CallbackHandler;
-import javax.security.auth.callback.ConfirmationCallback;
-import javax.security.auth.callback.NameCallback;
-import javax.security.auth.callback.PasswordCallback;
-import javax.security.auth.callback.TextOutputCallback;
-import javax.security.auth.callback.UnsupportedCallbackException;
-
-/* Java imports */
-import java.awt.Component;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import javax.swing.Box;
-import javax.swing.JLabel;
-import javax.swing.JOptionPane;
-import javax.swing.JPasswordField;
-import javax.swing.JTextField;
-
-/**
- * <p>
- * Uses a Swing dialog window to query the user for answers to
- * authentication questions.
- * This can be used by a JAAS application to instantiate a
- * CallbackHandler
- * @see javax.security.auth.callback
- * @deprecated This class will be removed in a future release.
- */
-@jdk.Exported(false)
-@Deprecated
-public class DialogCallbackHandler implements CallbackHandler {
-
- /* -- Fields -- */
-
- /* The parent window, or null if using the default parent */
- private Component parentComponent;
- private static final int JPasswordFieldLen = 8 ;
- private static final int JTextFieldLen = 8 ;
-
- /* -- Methods -- */
-
- /**
- * Creates a callback dialog with the default parent window.
- */
- public DialogCallbackHandler() { }
-
- /**
- * Creates a callback dialog and specify the parent window.
- *
- * @param parentComponent the parent window -- specify <code>null</code>
- * for the default parent
- */
- public DialogCallbackHandler(Component parentComponent) {
- this.parentComponent = parentComponent;
- }
-
- /*
- * An interface for recording actions to carry out if the user
- * clicks OK for the dialog.
- */
- private static interface Action {
- void perform();
- }
-
- /**
- * Handles the specified set of callbacks.
- *
- * @param callbacks the callbacks to handle
- * @throws UnsupportedCallbackException if the callback is not an
- * instance of NameCallback or PasswordCallback
- */
-
- public void handle(Callback[] callbacks)
- throws UnsupportedCallbackException
- {
- /* Collect messages to display in the dialog */
- final List<Object> messages = new ArrayList<>(3);
-
- /* Collection actions to perform if the user clicks OK */
- final List<Action> okActions = new ArrayList<>(2);
-
- ConfirmationInfo confirmation = new ConfirmationInfo();
-
- for (int i = 0; i < callbacks.length; i++) {
- if (callbacks[i] instanceof TextOutputCallback) {
- TextOutputCallback tc = (TextOutputCallback) callbacks[i];
-
- switch (tc.getMessageType()) {
- case TextOutputCallback.INFORMATION:
- confirmation.messageType = JOptionPane.INFORMATION_MESSAGE;
- break;
- case TextOutputCallback.WARNING:
- confirmation.messageType = JOptionPane.WARNING_MESSAGE;
- break;
- case TextOutputCallback.ERROR:
- confirmation.messageType = JOptionPane.ERROR_MESSAGE;
- break;
- default:
- throw new UnsupportedCallbackException(
- callbacks[i], "Unrecognized message type");
- }
-
- messages.add(tc.getMessage());
-
- } else if (callbacks[i] instanceof NameCallback) {
- final NameCallback nc = (NameCallback) callbacks[i];
-
- JLabel prompt = new JLabel(nc.getPrompt());
-
- final JTextField name = new JTextField(JTextFieldLen);
- String defaultName = nc.getDefaultName();
- if (defaultName != null) {
- name.setText(defaultName);
- }
-
- /*
- * Put the prompt and name in a horizontal box,
- * and add that to the set of messages.
- */
- Box namePanel = Box.createHorizontalBox();
- namePanel.add(prompt);
- namePanel.add(name);
- messages.add(namePanel);
-
- /* Store the name back into the callback if OK */
- okActions.add(new Action() {
- public void perform() {
- nc.setName(name.getText());
- }
- });
-
- } else if (callbacks[i] instanceof PasswordCallback) {
- final PasswordCallback pc = (PasswordCallback) callbacks[i];
-
- JLabel prompt = new JLabel(pc.getPrompt());
-
- final JPasswordField password =
- new JPasswordField(JPasswordFieldLen);
- if (!pc.isEchoOn()) {
- password.setEchoChar('*');
- }
-
- Box passwordPanel = Box.createHorizontalBox();
- passwordPanel.add(prompt);
- passwordPanel.add(password);
- messages.add(passwordPanel);
-
- okActions.add(new Action() {
- public void perform() {
- pc.setPassword(password.getPassword());
- }
- });
-
- } else if (callbacks[i] instanceof ConfirmationCallback) {
- ConfirmationCallback cc = (ConfirmationCallback)callbacks[i];
-
- confirmation.setCallback(cc);
- if (cc.getPrompt() != null) {
- messages.add(cc.getPrompt());
- }
-
- } else {
- throw new UnsupportedCallbackException(
- callbacks[i], "Unrecognized Callback");
- }
- }
-
- /* Display the dialog */
- int result = JOptionPane.showOptionDialog(
- parentComponent,
- messages.toArray(),
- "Confirmation", /* title */
- confirmation.optionType,
- confirmation.messageType,
- null, /* icon */
- confirmation.options, /* options */
- confirmation.initialValue); /* initialValue */
-
- /* Perform the OK actions */
- if (result == JOptionPane.OK_OPTION
- || result == JOptionPane.YES_OPTION)
- {
- Iterator<Action> iterator = okActions.iterator();
- while (iterator.hasNext()) {
- iterator.next().perform();
- }
- }
- confirmation.handleResult(result);
- }
-
- /*
- * Provides assistance with translating between JAAS and Swing
- * confirmation dialogs.
- */
- private static class ConfirmationInfo {
-
- private int[] translations;
-
- int optionType = JOptionPane.OK_CANCEL_OPTION;
- Object[] options = null;
- Object initialValue = null;
-
- int messageType = JOptionPane.QUESTION_MESSAGE;
-
- private ConfirmationCallback callback;
-
- /* Set the confirmation callback handler */
- void setCallback(ConfirmationCallback callback)
- throws UnsupportedCallbackException
- {
- this.callback = callback;
-
- int confirmationOptionType = callback.getOptionType();
- switch (confirmationOptionType) {
- case ConfirmationCallback.YES_NO_OPTION:
- optionType = JOptionPane.YES_NO_OPTION;
- translations = new int[] {
- JOptionPane.YES_OPTION, ConfirmationCallback.YES,
- JOptionPane.NO_OPTION, ConfirmationCallback.NO,
- JOptionPane.CLOSED_OPTION, ConfirmationCallback.NO
- };
- break;
- case ConfirmationCallback.YES_NO_CANCEL_OPTION:
- optionType = JOptionPane.YES_NO_CANCEL_OPTION;
- translations = new int[] {
- JOptionPane.YES_OPTION, ConfirmationCallback.YES,
- JOptionPane.NO_OPTION, ConfirmationCallback.NO,
- JOptionPane.CANCEL_OPTION, ConfirmationCallback.CANCEL,
- JOptionPane.CLOSED_OPTION, ConfirmationCallback.CANCEL
- };
- break;
- case ConfirmationCallback.OK_CANCEL_OPTION:
- optionType = JOptionPane.OK_CANCEL_OPTION;
- translations = new int[] {
- JOptionPane.OK_OPTION, ConfirmationCallback.OK,
- JOptionPane.CANCEL_OPTION, ConfirmationCallback.CANCEL,
- JOptionPane.CLOSED_OPTION, ConfirmationCallback.CANCEL
- };
- break;
- case ConfirmationCallback.UNSPECIFIED_OPTION:
- options = callback.getOptions();
- /*
- * There's no way to know if the default option means
- * to cancel the login, but there isn't a better way
- * to guess this.
- */
- translations = new int[] {
- JOptionPane.CLOSED_OPTION, callback.getDefaultOption()
- };
- break;
- default:
- throw new UnsupportedCallbackException(
- callback,
- "Unrecognized option type: " + confirmationOptionType);
- }
-
- int confirmationMessageType = callback.getMessageType();
- switch (confirmationMessageType) {
- case ConfirmationCallback.WARNING:
- messageType = JOptionPane.WARNING_MESSAGE;
- break;
- case ConfirmationCallback.ERROR:
- messageType = JOptionPane.ERROR_MESSAGE;
- break;
- case ConfirmationCallback.INFORMATION:
- messageType = JOptionPane.INFORMATION_MESSAGE;
- break;
- default:
- throw new UnsupportedCallbackException(
- callback,
- "Unrecognized message type: " + confirmationMessageType);
- }
- }
-
-
- /* Process the result returned by the Swing dialog */
- void handleResult(int result) {
- if (callback == null) {
- return;
- }
-
- for (int i = 0; i < translations.length; i += 2) {
- if (translations[i] == result) {
- result = translations[i + 1];
- break;
- }
- }
- callback.setSelectedIndex(result);
- }
- }
-}
--- a/jdk/test/com/sun/security/auth/callback/DialogCallbackHandler/Default.java Mon Dec 16 15:38:31 2013 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,61 +0,0 @@
-/*
- * Copyright (c) 2001, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
- * @bug 4470717
- * @summary fix default handling and other misc
- *
- * @ignore run these by hand
- */
-
-import com.sun.security.auth.callback.DialogCallbackHandler;
-import javax.security.auth.callback.*;
-
-public class Default {
- public static void main(String args[]) throws Exception {
- DialogCallbackHandler h = new DialogCallbackHandler();
- TextOutputCallback toc = new TextOutputCallback
- (TextOutputCallback.INFORMATION,
- "hello");
- TextOutputCallback toc2 = new TextOutputCallback
- (TextOutputCallback.INFORMATION,
- "world");
- ConfirmationCallback cc = new ConfirmationCallback
- ("Correct?",
- ConfirmationCallback.INFORMATION,
- ConfirmationCallback.YES_NO_OPTION,
- ConfirmationCallback.NO);
-
- Callback[] callbacks = { toc, toc2, cc };
- h.handle(callbacks);
-
- if (cc.getSelectedIndex() == ConfirmationCallback.YES) {
- System.out.println("yes");
- } else {
- System.out.println("no");
- }
-
- System.exit(0);
- }
-}
--- a/jdk/test/com/sun/security/sasl/digest/NoQuoteParams.java Mon Dec 16 15:38:31 2013 +0100
+++ b/jdk/test/com/sun/security/sasl/digest/NoQuoteParams.java Mon Dec 16 15:05:26 2013 +0000
@@ -43,8 +43,6 @@
import javax.security.sasl.SaslException;
import javax.security.sasl.SaslServer;
import javax.security.auth.callback.CallbackHandler;
-import com.sun.security.auth.callback.DialogCallbackHandler;
-import com.sun.security.auth.callback.TextCallbackHandler;
/*
* According to RFC 2831, DIGEST-MD5 servers must generate challenge strings
--- a/jdk/test/sun/security/pkcs11/Provider/Login.java Mon Dec 16 15:38:31 2013 +0100
+++ b/jdk/test/sun/security/pkcs11/Provider/Login.java Mon Dec 16 15:05:26 2013 +0000
@@ -87,8 +87,6 @@
password = new char[] { 't', 'e', 's', 't', '1', '2' };
Security.setProperty("auth.login.defaultCallbackHandler", "");
- ap.setCallbackHandler
- (new com.sun.security.auth.callback.DialogCallbackHandler());
ap.setCallbackHandler(new PasswordCallbackHandler());
ap.login(new Subject(), null);
System.out.println("test " + testnum++ + " passed");