diff options
Diffstat (limited to 'BKUApplet/src/main/java/at')
3 files changed, 85 insertions, 152 deletions
| diff --git a/BKUApplet/src/main/java/at/gv/egiz/bku/online/applet/AppletBKUWorker.java b/BKUApplet/src/main/java/at/gv/egiz/bku/online/applet/AppletBKUWorker.java index 6ac892ec..388f045f 100644 --- a/BKUApplet/src/main/java/at/gv/egiz/bku/online/applet/AppletBKUWorker.java +++ b/BKUApplet/src/main/java/at/gv/egiz/bku/online/applet/AppletBKUWorker.java @@ -22,7 +22,6 @@ import at.gv.egiz.stal.STALRequest;  import at.gv.egiz.stal.STALResponse;  import at.gv.egiz.stal.SignRequest;  import at.gv.egiz.stal.service.STALPortType; -import at.gv.egiz.stal.service.STALService;  import at.gv.egiz.stal.service.translator.STALTranslator;  import at.gv.egiz.stal.service.translator.TranslationException;  import at.gv.egiz.stal.service.types.ErrorResponseType; @@ -31,13 +30,10 @@ import at.gv.egiz.stal.service.types.GetNextRequestType;  import at.gv.egiz.stal.service.types.ObjectFactory;  import at.gv.egiz.stal.service.types.RequestType;  import at.gv.egiz.stal.service.types.ResponseType; -import java.applet.AppletContext;  import java.net.MalformedURLException; -import java.net.URL;  import java.util.ArrayList;  import java.util.List;  import javax.xml.bind.JAXBElement; -import javax.xml.namespace.QName;  import javax.xml.ws.WebServiceException;  /** @@ -46,29 +42,19 @@ import javax.xml.ws.WebServiceException;   */  public class AppletBKUWorker extends AbstractBKUWorker implements Runnable { -  protected AppletContext ctx; -  protected AppletParameterProvider params; +  protected BKUApplet applet;    protected String sessionId; -  protected STALPortType stalPort; +    private ObjectFactory stalObjFactory = new ObjectFactory(); -  private STALTranslator translator = new STALTranslator(); -  public AppletBKUWorker(BKUGUIFacade gui, AppletContext ctx, -          AppletParameterProvider paramProvider) { +  public AppletBKUWorker(BKUApplet applet, BKUGUIFacade gui) {      super(gui); -    if (ctx == null) { -      throw new NullPointerException("Applet context not provided"); -    } -    if (paramProvider == null) { -      throw new NullPointerException("No applet parameters provided"); -    } -    this.ctx = ctx; -    this.params = paramProvider; - -    sessionId = params.getAppletParameter(BKUApplet.SESSION_ID); +    this.applet = applet; +     +    sessionId = applet.getParameter(BKUApplet.SESSION_ID);      if (sessionId == null) {        sessionId = "TestSession"; -      log.info("using dummy sessionId " + sessionId); +      log.warn("using dummy sessionId " + sessionId);      }    } @@ -77,9 +63,11 @@ public class AppletBKUWorker extends AbstractBKUWorker implements Runnable {      gui.showWelcomeDialog();      try { -      stalPort = getSTALPort(); +      STALPortType stalPort = applet.getSTALPort(); +      STALTranslator stalTranslator = applet.getSTALTranslator(); -      registerSignRequestHandler(stalPort, sessionId); +      addRequestHandler(SignRequest.class, +              new AppletHashDataDisplay(stalPort, sessionId));        GetNextRequestResponseType nextRequestResp = stalPort.connect(sessionId); @@ -111,7 +99,7 @@ public class AppletBKUWorker extends AbstractBKUWorker implements Runnable {            List<STALRequest> stalRequests = new ArrayList<STALRequest>();            for (JAXBElement<? extends RequestType> req : requests) {              try { -              stalRequests.add(translator.translate(req)); +              stalRequests.add(stalTranslator.translate(req));              } catch (TranslationException ex) {                log.error("Received unknown request from server STAL: " + ex.getMessage());                throw new RuntimeException(ex); @@ -123,7 +111,7 @@ public class AppletBKUWorker extends AbstractBKUWorker implements Runnable {            List<STALResponse> stalResponses = handleRequest(stalRequests);            for (STALResponse stalResponse : stalResponses) {              try { -              responses.add(translator.translate(stalResponse)); +              responses.add(stalTranslator.translate(stalResponse));              } catch (TranslationException ex) {                log.error("Received unknown response from STAL: " + ex.getMessage());                throw new RuntimeException(ex); @@ -184,7 +172,7 @@ public class AppletBKUWorker extends AbstractBKUWorker implements Runnable {        }      } -    sendRedirect(); +    applet.sendRedirect(sessionId);    }    /** @@ -218,38 +206,4 @@ public class AppletBKUWorker extends AbstractBKUWorker implements Runnable {        log.error(e);      }    } - -  protected void sendRedirect() { -    try { -      URL redirectURL = params.getURLParameter(BKUApplet.REDIRECT_URL, -              sessionId); -      String redirectTarget = params.getAppletParameter(BKUApplet.REDIRECT_TARGET); -      if (redirectTarget == null) { -        log.info("Done. Redirecting to " + redirectURL + " ..."); -        ctx.showDocument(redirectURL); -      } else { -        log.info("Done. Redirecting to " + redirectURL + " (target=" + redirectTarget + ") ..."); -        ctx.showDocument(redirectURL, redirectTarget); -      } -    } catch (MalformedURLException ex) { -      log.warn("Failed to redirect: " + ex.getMessage(), ex); -    // gui.showErrorDialog(errorMsg, okListener, actionCommand) -    } -  } - -  private STALPortType getSTALPort() throws MalformedURLException { -    URL wsdlURL = params.getURLParameter(BKUApplet.WSDL_URL); -    log.debug("STAL WSDL at " + wsdlURL); -    QName endpointName = new QName(BKUApplet.STAL_WSDL_NS, -            BKUApplet.STAL_SERVICE); -    STALService stal = new STALService(wsdlURL, endpointName); -    return stal.getSTALPort(); -  } - -  private void registerSignRequestHandler(STALPortType stalPort, String sessionId) { -    log.debug("register SignRequestHandler (resolve hashdata via STAL Webservice)"); -    AppletHashDataDisplay handler = new AppletHashDataDisplay(stalPort, -            sessionId); -    addRequestHandler(SignRequest.class, handler); -  }  } diff --git a/BKUApplet/src/main/java/at/gv/egiz/bku/online/applet/AppletParameterProvider.java b/BKUApplet/src/main/java/at/gv/egiz/bku/online/applet/AppletParameterProvider.java deleted file mode 100644 index 42e2d6ff..00000000 --- a/BKUApplet/src/main/java/at/gv/egiz/bku/online/applet/AppletParameterProvider.java +++ /dev/null @@ -1,57 +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.bku.online.applet; - -import java.net.MalformedURLException; -import java.net.URL; - -/** - * - * @author Clemens Orthacker <clemens.orthacker@iaik.tugraz.at> - */ -public interface AppletParameterProvider { - -  /** -   * Applet configuration parameters -   *  -   * @param paramKey -   * @return null if no parameter is provided for the given key -   */ -  String getAppletParameter(String paramKey); - -  /** -   * Get applet configuration parameter as (absolute) URL -   *  -   * @param paramKey -   * @return a URL -   * @throws MalformedURLException if configured URL is invalid  -   * or no parameter is provided for the given key -   */ -  URL getURLParameter(String paramKey) throws MalformedURLException; -   -  /** -   * Get applet configuration parameter as (absolute) URL -   *  -   * @param paramKey -   * @param sessionId adds the jsessionid to the URL -   * @return a URL -   * @throws MalformedURLException if configured URL is invalid  -   * or no parameter is provided for the given key -   */ -  URL getURLParameter(String paramKey, String sessionId) throws MalformedURLException; -} diff --git a/BKUApplet/src/main/java/at/gv/egiz/bku/online/applet/BKUApplet.java b/BKUApplet/src/main/java/at/gv/egiz/bku/online/applet/BKUApplet.java index 5e60ed3e..d4b2018d 100644 --- a/BKUApplet/src/main/java/at/gv/egiz/bku/online/applet/BKUApplet.java +++ b/BKUApplet/src/main/java/at/gv/egiz/bku/online/applet/BKUApplet.java @@ -16,8 +16,10 @@   */  package at.gv.egiz.bku.online.applet; +import at.gv.egiz.bku.gui.BKUGUIFacade.Style;  import at.gv.egiz.bku.gui.DefaultHelpListener;  import at.gv.egiz.bku.gui.AbstractHelpListener; +import at.gv.egiz.stal.service.translator.STALTranslator;  import java.net.MalformedURLException;  import java.net.URL;  import java.util.Locale; @@ -30,15 +32,18 @@ import org.apache.commons.logging.LogFactory;  import at.gv.egiz.bku.gui.BKUGUIFacade;  import at.gv.egiz.bku.gui.BKUGUIFactory; +import at.gv.egiz.stal.service.STALPortType; +import at.gv.egiz.stal.service.STALService; +import java.awt.Container; +import javax.xml.namespace.QName;  /**   * Note: all swing code is executed by the event dispatch thread (see   * BKUGUIFacade)   */ -public class BKUApplet extends JApplet implements AppletParameterProvider { +public class BKUApplet extends JApplet {    private static Log log = LogFactory.getLog(BKUApplet.class); -      /**     * Applet parameter keys     */ @@ -55,18 +60,15 @@ public class BKUApplet extends JApplet implements AppletParameterProvider {  //  public static final String HASHDATA_DISPLAY_INTERNAL = "internal";  //  public static final String HASHDATA_DISPLAY_BROWSER = "browser";    public static final String HASHDATA_DISPLAY_FRAME = "frame"; -      /**     * STAL WSDL namespace and service name     */    public static final String STAL_WSDL_NS = "http://www.egiz.gv.at/wsdl/stal";    public static final String STAL_SERVICE = "STALService"; -      /**     * Dummy session id, used if no sessionId parameter is provided     */    protected static final String TEST_SESSION_ID = "TestSession"; -      /**     * STAL     */ @@ -81,17 +83,17 @@ public class BKUApplet extends JApplet implements AppletParameterProvider {    public void init() {      log.info("Welcome to MOCCA");      log.debug("Called init()"); -     +      HttpsURLConnection.setDefaultSSLSocketFactory(InternalSSLSocketFactory.getInstance()); -    String locale = getAppletParameter(LOCALE); +    String locale = getParameter(LOCALE);      if (locale != null) {        this.setLocale(new Locale(locale));      } -    log.debug("setting locale to " + getLocale()); +    log.debug("setting locale: " + getLocale());      BKUGUIFacade.Style guiStyle; -    String guiStyleParam = getAppletParameter(GUI_STYLE); +    String guiStyleParam = getParameter(GUI_STYLE);      if ("advanced".equals(guiStyleParam)) {        guiStyle = BKUGUIFacade.Style.advanced;      } else if ("tiny".equals(guiStyleParam)) { @@ -99,30 +101,33 @@ public class BKUApplet extends JApplet implements AppletParameterProvider {      } else {        guiStyle = BKUGUIFacade.Style.simple;      } -     +    log.debug("setting gui-style: " + guiStyle); +      URL backgroundImgURL = null;      try { -      backgroundImgURL = getURLParameter(BACKGROUND_IMG); +      backgroundImgURL = getURLParameter(BACKGROUND_IMG, null); +      log.debug("setting background: " + backgroundImgURL);      } catch (MalformedURLException ex) {        log.warn("failed to load applet background image: " + ex.getMessage() + ", using default");      } -     +      AbstractHelpListener helpListener = null;      try { -      URL helpURL = getURLParameter(HELP_URL);  -//      helpListener = new BrowserHelpListener(getAppletContext(), helpURL, getLocale()); -      helpListener = new DefaultHelpListener(getAppletContext(), helpURL, getLocale()); +      helpListener = new DefaultHelpListener(getAppletContext(),  +              getURLParameter(HELP_URL, null), getLocale()); +      if (log.isDebugEnabled()) { +        log.debug("setting helpURL: " + getURLParameter(HELP_URL, null)); +      }      } catch (MalformedURLException ex) {        log.warn("failed to load help URL: " + ex.getMessage() + ", disabling help");      } -     -    BKUGUIFacade gui = BKUGUIFactory.createGUI(getContentPane(),  -            getLocale(),  -            guiStyle,  -            backgroundImgURL,  + +    BKUGUIFacade gui = createGUI(getContentPane(), getLocale(), +            guiStyle, +            backgroundImgURL,              helpListener); -    worker = new AppletBKUWorker(gui, getAppletContext(), this); +    worker = new AppletBKUWorker(this, gui);    }    @Override @@ -145,15 +150,7 @@ public class BKUApplet extends JApplet implements AppletParameterProvider {      log.debug("Called destroy()");    } -  @Override -  public String getAppletParameter(String paramKey) { -    String param = getParameter(paramKey); -    log.info("applet parameter: " + paramKey + ": " + param); -    return param; -  } - -  @Override -  public URL getURLParameter(String paramKey, String sessionId) throws MalformedURLException { +  protected URL getURLParameter(String paramKey, String sessionId) throws MalformedURLException {      String urlParam = getParameter(paramKey);      if (urlParam != null) {        URL codebase = getCodeBase(); @@ -173,15 +170,54 @@ public class BKUApplet extends JApplet implements AppletParameterProvider {        } catch (MalformedURLException ex) {          log.error("applet paremeter " + urlParam + " is not a valid URL: " + ex.getMessage());          throw ex; -      }       +      }      } else {        log.error("applet paremeter " + urlParam + " not set");        throw new MalformedURLException(urlParam + " not set");      }    } -   -  @Override -  public URL getURLParameter(String paramKey) throws MalformedURLException { -    return getURLParameter(paramKey, null); + +  /** +   * provides a means to for subclasses to inject a different GUI +   */ +  protected BKUGUIFacade createGUI(Container contentPane, +          Locale locale, +          Style guiStyle, +          URL backgroundImgURL, +          AbstractHelpListener helpListener) { +    return BKUGUIFactory.createGUI(contentPane, +            locale, +            guiStyle, +            backgroundImgURL, +            helpListener); +  } + +  protected STALPortType getSTALPort() throws MalformedURLException { +    URL wsdlURL = getURLParameter(WSDL_URL, null); +    log.debug("setting STAL WSDL: " + wsdlURL); +    QName endpointName = new QName(STAL_WSDL_NS, STAL_SERVICE); +    STALService stal = new STALService(wsdlURL, endpointName); +    return stal.getSTALPort(); +  } + +  protected STALTranslator getSTALTranslator() { +    return new STALTranslator(); +  } + +  protected void sendRedirect(String sessionId) { +    try { +      URL redirectURL = getURLParameter(REDIRECT_URL, sessionId); +      String redirectTarget = getParameter(REDIRECT_TARGET); +      if (redirectTarget == null) { +        log.info("Done. Redirecting to " + redirectURL + " ..."); +        getAppletContext().showDocument(redirectURL); +      } else { +        log.info("Done. Redirecting to " + redirectURL + " (target=" + redirectTarget + ") ..."); +        getAppletContext().showDocument(redirectURL, redirectTarget); +      } +    } catch (MalformedURLException ex) { +      log.warn("Failed to redirect: " + ex.getMessage(), ex); +    // gui.showErrorDialog(errorMsg, okListener, actionCommand) +    }    }  } | 
