summaryrefslogtreecommitdiff
path: root/smcc/src/main/java/org/openecard/scio/osx/PCSCException.java
diff options
context:
space:
mode:
Diffstat (limited to 'smcc/src/main/java/org/openecard/scio/osx/PCSCException.java')
-rw-r--r--smcc/src/main/java/org/openecard/scio/osx/PCSCException.java178
1 files changed, 178 insertions, 0 deletions
diff --git a/smcc/src/main/java/org/openecard/scio/osx/PCSCException.java b/smcc/src/main/java/org/openecard/scio/osx/PCSCException.java
new file mode 100644
index 00000000..fc25be1d
--- /dev/null
+++ b/smcc/src/main/java/org/openecard/scio/osx/PCSCException.java
@@ -0,0 +1,178 @@
+/*
+ * Copyright (c) 2005, 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 org.openecard.scio.osx;
+
+import static org.openecard.scio.osx.PCSC.SCARD_E_CANCELLED;
+import static org.openecard.scio.osx.PCSC.SCARD_E_CANT_DISPOSE;
+import static org.openecard.scio.osx.PCSC.SCARD_E_CARD_UNSUPPORTED;
+import static org.openecard.scio.osx.PCSC.SCARD_E_DUPLICATE_READER;
+import static org.openecard.scio.osx.PCSC.SCARD_E_INSUFFICIENT_BUFFER;
+import static org.openecard.scio.osx.PCSC.SCARD_E_INVALID_ATR;
+import static org.openecard.scio.osx.PCSC.SCARD_E_INVALID_HANDLE;
+import static org.openecard.scio.osx.PCSC.SCARD_E_INVALID_PARAMETER;
+import static org.openecard.scio.osx.PCSC.SCARD_E_INVALID_TARGET;
+import static org.openecard.scio.osx.PCSC.SCARD_E_INVALID_VALUE;
+import static org.openecard.scio.osx.PCSC.SCARD_E_NOT_READY;
+import static org.openecard.scio.osx.PCSC.SCARD_E_NOT_TRANSACTED;
+import static org.openecard.scio.osx.PCSC.SCARD_E_NO_MEMORY;
+import static org.openecard.scio.osx.PCSC.SCARD_E_NO_READERS_AVAILABLE;
+import static org.openecard.scio.osx.PCSC.SCARD_E_NO_SERVICE;
+import static org.openecard.scio.osx.PCSC.SCARD_E_NO_SMARTCARD;
+import static org.openecard.scio.osx.PCSC.SCARD_E_PCI_TOO_SMALL;
+import static org.openecard.scio.osx.PCSC.SCARD_E_PROTO_MISMATCH;
+import static org.openecard.scio.osx.PCSC.SCARD_E_READER_UNAVAILABLE;
+import static org.openecard.scio.osx.PCSC.SCARD_E_READER_UNSUPPORTED;
+import static org.openecard.scio.osx.PCSC.SCARD_E_SERVICE_STOPPED;
+import static org.openecard.scio.osx.PCSC.SCARD_E_SHARING_VIOLATION;
+import static org.openecard.scio.osx.PCSC.SCARD_E_SYSTEM_CANCELLED;
+import static org.openecard.scio.osx.PCSC.SCARD_E_TIMEOUT;
+import static org.openecard.scio.osx.PCSC.SCARD_E_UNKNOWN_CARD;
+import static org.openecard.scio.osx.PCSC.SCARD_E_UNKNOWN_READER;
+import static org.openecard.scio.osx.PCSC.SCARD_E_UNSUPPORTED_FEATURE;
+import static org.openecard.scio.osx.PCSC.SCARD_F_COMM_ERROR;
+import static org.openecard.scio.osx.PCSC.SCARD_F_INTERNAL_ERROR;
+import static org.openecard.scio.osx.PCSC.SCARD_F_UNKNOWN_ERROR;
+import static org.openecard.scio.osx.PCSC.SCARD_F_WAITED_TOO_LONG;
+import static org.openecard.scio.osx.PCSC.SCARD_S_SUCCESS;
+import static org.openecard.scio.osx.PCSC.SCARD_W_INSERTED_CARD;
+import static org.openecard.scio.osx.PCSC.SCARD_W_REMOVED_CARD;
+import static org.openecard.scio.osx.PCSC.SCARD_W_RESET_CARD;
+import static org.openecard.scio.osx.PCSC.SCARD_W_UNPOWERED_CARD;
+import static org.openecard.scio.osx.PCSC.SCARD_W_UNRESPONSIVE_CARD;
+import static org.openecard.scio.osx.PCSC.SCARD_W_UNSUPPORTED_CARD;
+import static org.openecard.scio.osx.PCSC.WINDOWS_ERROR_INVALID_HANDLE;
+import static org.openecard.scio.osx.PCSC.WINDOWS_ERROR_INVALID_PARAMETER;
+
+/**
+ * Exception for PC/SC errors. The native code portion checks the return value
+ * of the SCard* functions. If it indicates an error, the native code constructs
+ * an instance of this exception, throws it, and returns to Java.
+ *
+ * @since 1.6
+ * @author Andreas Sterbenz
+ */
+final class PCSCException extends Exception {
+
+ private static final long serialVersionUID = -3703197031255879618L;
+
+ final int code;
+
+ PCSCException(int code) {
+ super(toErrorString(code));
+ this.code = code;
+ }
+
+ private static String toErrorString(int code) {
+ switch (code) {
+ case SCARD_S_SUCCESS:
+ return "SCARD_S_SUCCESS";
+ case SCARD_E_CANCELLED:
+ return "SCARD_E_CANCELLED";
+ case SCARD_E_CANT_DISPOSE:
+ return "SCARD_E_CANT_DISPOSE";
+ case SCARD_E_INSUFFICIENT_BUFFER:
+ return "SCARD_E_INSUFFICIENT_BUFFER";
+ case SCARD_E_INVALID_ATR:
+ return "SCARD_E_INVALID_ATR";
+ case SCARD_E_INVALID_HANDLE:
+ return "SCARD_E_INVALID_HANDLE";
+ case SCARD_E_INVALID_PARAMETER:
+ return "SCARD_E_INVALID_PARAMETER";
+ case SCARD_E_INVALID_TARGET:
+ return "SCARD_E_INVALID_TARGET";
+ case SCARD_E_INVALID_VALUE:
+ return "SCARD_E_INVALID_VALUE";
+ case SCARD_E_NO_MEMORY:
+ return "SCARD_E_NO_MEMORY";
+ case SCARD_F_COMM_ERROR:
+ return "SCARD_F_COMM_ERROR";
+ case SCARD_F_INTERNAL_ERROR:
+ return "SCARD_F_INTERNAL_ERROR";
+ case SCARD_F_UNKNOWN_ERROR:
+ return "SCARD_F_UNKNOWN_ERROR";
+ case SCARD_F_WAITED_TOO_LONG:
+ return "SCARD_F_WAITED_TOO_LONG";
+ case SCARD_E_UNKNOWN_READER:
+ return "SCARD_E_UNKNOWN_READER";
+ case SCARD_E_TIMEOUT:
+ return "SCARD_E_TIMEOUT";
+ case SCARD_E_SHARING_VIOLATION:
+ return "SCARD_E_SHARING_VIOLATION";
+ case SCARD_E_NO_SMARTCARD:
+ return "SCARD_E_NO_SMARTCARD";
+ case SCARD_E_UNKNOWN_CARD:
+ return "SCARD_E_UNKNOWN_CARD";
+ case SCARD_E_PROTO_MISMATCH:
+ return "SCARD_E_PROTO_MISMATCH";
+ case SCARD_E_NOT_READY:
+ return "SCARD_E_NOT_READY";
+ case SCARD_E_SYSTEM_CANCELLED:
+ return "SCARD_E_SYSTEM_CANCELLED";
+ case SCARD_E_NOT_TRANSACTED:
+ return "SCARD_E_NOT_TRANSACTED";
+ case SCARD_E_READER_UNAVAILABLE:
+ return "SCARD_E_READER_UNAVAILABLE";
+
+ case SCARD_W_UNSUPPORTED_CARD:
+ return "SCARD_W_UNSUPPORTED_CARD";
+ case SCARD_W_UNRESPONSIVE_CARD:
+ return "SCARD_W_UNRESPONSIVE_CARD";
+ case SCARD_W_UNPOWERED_CARD:
+ return "SCARD_W_UNPOWERED_CARD";
+ case SCARD_W_RESET_CARD:
+ return "SCARD_W_RESET_CARD";
+ case SCARD_W_REMOVED_CARD:
+ return "SCARD_W_REMOVED_CARD";
+ case SCARD_W_INSERTED_CARD:
+ return "SCARD_W_INSERTED_CARD";
+
+ case SCARD_E_UNSUPPORTED_FEATURE:
+ return "SCARD_E_UNSUPPORTED_FEATURE";
+ case SCARD_E_PCI_TOO_SMALL:
+ return "SCARD_E_PCI_TOO_SMALL";
+ case SCARD_E_READER_UNSUPPORTED:
+ return "SCARD_E_READER_UNSUPPORTED";
+ case SCARD_E_DUPLICATE_READER:
+ return "SCARD_E_DUPLICATE_READER";
+ case SCARD_E_CARD_UNSUPPORTED:
+ return "SCARD_E_CARD_UNSUPPORTED";
+ case SCARD_E_NO_SERVICE:
+ return "SCARD_E_NO_SERVICE";
+ case SCARD_E_SERVICE_STOPPED:
+ return "SCARD_E_SERVICE_STOPPED";
+
+ case SCARD_E_NO_READERS_AVAILABLE:
+ return "SCARD_E_NO_READERS_AVAILABLE";
+ case WINDOWS_ERROR_INVALID_HANDLE:
+ return "WINDOWS_ERROR_INVALID_HANDLE";
+ case WINDOWS_ERROR_INVALID_PARAMETER:
+ return "WINDOWS_ERROR_INVALID_PARAMETER";
+
+ default:
+ return "Unknown error 0x" + Integer.toHexString(code);
+ }
+ }
+}