summaryrefslogtreecommitdiff
path: root/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/ExclSignatureCardProxy.java
diff options
context:
space:
mode:
Diffstat (limited to 'mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/ExclSignatureCardProxy.java')
-rw-r--r--mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/ExclSignatureCardProxy.java110
1 files changed, 0 insertions, 110 deletions
diff --git a/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/ExclSignatureCardProxy.java b/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/ExclSignatureCardProxy.java
deleted file mode 100644
index bfbd0063..00000000
--- a/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/ExclSignatureCardProxy.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
-* Copyright 2008 Federal Chancellery Austria and
-* Graz University of Technology
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-package at.gv.egiz.smcc;
-
-import java.lang.reflect.InvocationHandler;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.lang.reflect.Proxy;
-import java.util.ArrayList;
-
-import javax.smartcardio.Card;
-import javax.smartcardio.CardException;
-import javax.smartcardio.CardTerminal;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-public class ExclSignatureCardProxy implements InvocationHandler {
-
- private static Log log = LogFactory.getLog(ExclSignatureCardProxy.class);
-
- private static final Method init;
-
- static {
- try {
- init = SignatureCard.class.getMethod("init", new Class<?>[] { Card.class,
- CardTerminal.class });
- } catch (SecurityException e) {
- throw new RuntimeException(e);
- } catch (NoSuchMethodException e) {
- throw new RuntimeException(e);
- }
- }
-
- private SignatureCard signatureCard;
-
- public ExclSignatureCardProxy(SignatureCard signatureCard) {
- this.signatureCard = signatureCard;
- }
-
- public static SignatureCard newInstance(SignatureCard signatureCard) {
- ArrayList<Class<?>> proxyInterfaces = new ArrayList<Class<?>>();
- proxyInterfaces.add(SignatureCard.class);
- if (PINMgmtSignatureCard.class.isAssignableFrom(signatureCard.getClass())) {
- proxyInterfaces.add(PINMgmtSignatureCard.class);
- }
- ClassLoader loader = signatureCard.getClass().getClassLoader();
- return (SignatureCard) Proxy.newProxyInstance(loader, proxyInterfaces
- .toArray(new Class[proxyInterfaces.size()]),
- new ExclSignatureCardProxy(signatureCard));
- }
-
- public static PINMgmtSignatureCard newInstance(PINMgmtSignatureCard signatureCard) {
- return null;
- }
-
- @Override
- public Object invoke(Object proxy, Method method, Object[] args)
- throws Throwable {
-
- Card card = null;
-
- Method target = signatureCard.getClass().getMethod(method.getName(),
- method.getParameterTypes());
-
- if (target.isAnnotationPresent(Exclusive.class)) {
- card = (Card) ((method.equals(init))
- ? args[0]
- : signatureCard.getCard());
- }
-
- if (card != null) {
- try {
- log.trace("Invoking method " + method.getName() + "() with exclusive access.");
- card.beginExclusive();
- } catch (CardException e) {
- log.info("Failed to get exclusive access to signature card "
- + signatureCard.toString() + ".");
- throw new SignatureCardException(e);
- }
- }
-
- try {
- return method.invoke(signatureCard, args);
- } catch (InvocationTargetException e) {
- throw e.getTargetException();
- } finally {
- if (card != null) {
- card.endExclusive();
- }
- }
-
-
- }
-
-}