1d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/* 2d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Licensed to the Apache Software Foundation (ASF) under one or more 3d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * contributor license agreements. See the NOTICE file distributed with 4d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * this work for additional information regarding copyright ownership. 5d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * The ASF licenses this file to You under the Apache License, Version 2.0 6d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * (the "License"); you may not use this file except in compliance with 7d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * the License. You may obtain a copy of the License at 8d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 9d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * http://www.apache.org/licenses/LICENSE-2.0 10d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 11d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Unless required by applicable law or agreed to in writing, software 12d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * distributed under the License is distributed on an "AS IS" BASIS, 13d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * See the License for the specific language governing permissions and 15d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * limitations under the License. 16d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 17d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 18d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpackage org.apache.harmony.javax.security.auth.callback; 19d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 20d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenimport java.io.Serializable; 21d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 22d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 23d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 24d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic class ChoiceCallback implements Callback, Serializable { 25d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 26d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen private static final long serialVersionUID = -3975664071579892167L; 27d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 28d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen private int defaultChoice; 29d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 30d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen private String prompt; 31d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 32d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen private boolean multipleSelectionsAllowed; 33d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 34d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen private String[] choices; 35d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 36d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen private int[] selections; 37d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 38d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen private void setChoices(String[] choices) { 39d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen if (choices == null || choices.length == 0) { 40d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen throw new IllegalArgumentException("auth.1C"); //$NON-NLS-1$ 41d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 42d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen for (int i = 0; i < choices.length; i++) { 43d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen if (choices[i] == null || choices[i].length() == 0) { 44d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen throw new IllegalArgumentException("auth.1C"); //$NON-NLS-1$ 45d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 46d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 47d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen //FIXME: System.arraycopy(choices, 0 , new String[choices.length], 0, choices.length); 48d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen this.choices = choices; 49d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 50d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 51d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 52d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen private void setPrompt(String prompt) { 53d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen if (prompt == null || prompt.length() == 0) { 54d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen throw new IllegalArgumentException("auth.14"); //$NON-NLS-1$ 55d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 56d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen this.prompt = prompt; 57d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 58d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 59d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen private void setDefaultChoice(int defaultChoice) { 60d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen if (0 > defaultChoice || defaultChoice >= choices.length) { 61d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen throw new IllegalArgumentException("auth.1D"); //$NON-NLS-1$ 62d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 63d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen this.defaultChoice = defaultChoice; 64d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 65d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 66d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public ChoiceCallback(String prompt, String[] choices, int defaultChoice, 67d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen boolean multipleSelectionsAllowed) { 68d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen super(); 69d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen setPrompt(prompt); 70d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen setChoices(choices); 71d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen setDefaultChoice(defaultChoice); 72d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen this.multipleSelectionsAllowed = multipleSelectionsAllowed; 73d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 74d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 75d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public boolean allowMultipleSelections() { 76d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen return multipleSelectionsAllowed; 77d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 78d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 79d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public String[] getChoices() { 80d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen return choices; 81d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 82d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 83d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public int getDefaultChoice() { 84d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen return defaultChoice; 85d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 86d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 87d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public String getPrompt() { 88d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen return prompt; 89d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 90d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 91d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public int[] getSelectedIndexes() { 92d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen return selections; 93d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 94d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 95d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public void setSelectedIndex(int selection) { 96d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen this.selections = new int[1]; 97d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen this.selections[0] = selection; 98d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 99d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 100d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public void setSelectedIndexes(int[] selections) { 101d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen if (!multipleSelectionsAllowed) { 102d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen throw new UnsupportedOperationException(); 103d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 104d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen this.selections = selections; 105d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen //FIXME: 106d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen // this.selections = new int[selections.length] 107d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen //System.arraycopy(selections, 0, this.selections, 0, this.selections.length); 108d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 109d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen} 110