diff options
Diffstat (limited to 'BKUApplet/src')
| -rw-r--r-- | BKUApplet/src/main/java/at/gv/egiz/bku/online/applet/AppletBKUWorker.java | 67 | ||||
| -rw-r--r-- | BKUApplet/src/test/java/at/gv/egiz/stal/client/STALServiceTest.java | 6 | 
2 files changed, 37 insertions, 36 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 9fc21df8..3903bf10 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 @@ -35,6 +35,7 @@ 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;  /** @@ -47,9 +48,10 @@ public class AppletBKUWorker extends AbstractBKUWorker implements Runnable {    protected AppletParameterProvider params;    protected String sessionId;    protected STALPortType stalPort; +  private ObjectFactory stalObjFactory = new ObjectFactory();    public AppletBKUWorker(BKUGUIFacade gui, AppletContext ctx, -      AppletParameterProvider paramProvider) { +          AppletParameterProvider paramProvider) {      super(gui);      if (ctx == null) {        throw new NullPointerException("Applet context not provided"); @@ -77,7 +79,7 @@ public class AppletBKUWorker extends AbstractBKUWorker implements Runnable {        actionCommandList.clear();        actionCommandList.add("ok");        gui.showErrorDialog(BKUGUIFacade.ERR_SERVICE_UNREACHABLE, -          new Object[] { e.getMessage() }); +              new Object[]{e.getMessage()});        try {          waitForAction();        } catch (InterruptedException e1) { @@ -89,14 +91,17 @@ public class AppletBKUWorker extends AbstractBKUWorker implements Runnable {      try {        registerSignRequestHandler(); -      ObjectFactory of = new ObjectFactory(); -        GetNextRequestResponseType nextRequestResp = stalPort.connect(sessionId);        do { -        List<RequestType> requests = nextRequestResp -            .getInfoboxReadRequestOrSignRequestOrQuitRequest(); -        List<STALRequest> stalRequests = STALTranslator -            .translateRequests(requests); +        List<JAXBElement<? extends RequestType>> requests = nextRequestResp.getInfoboxReadRequestOrSignRequestOrQuitRequest(); + +        // (rather use validator) +        if (requests.size() == 0) { +          log.error("Received empty NextRequestResponse: no STAL requests to handle. (STAL-X requests might not have gotten unmarshalled)"); +          throw new Exception("No STAL requests to handle."); +        } + +        List<STALRequest> stalRequests = STALTranslator.translateRequests(requests);          if (log.isInfoEnabled()) {            StringBuilder sb = new StringBuilder("Received "); @@ -117,13 +122,13 @@ public class AppletBKUWorker extends AbstractBKUWorker implements Runnable {              String domainId = r.getDomainIdentifier();              if ("IdentityLink".equals(infoboxId) && domainId == null) {                if (!InternalSSLSocketFactory.getInstance().isEgovAgency()) { -                handle = false; +                  handle = false;                }              }            }          } -        List<ResponseType> responses; +        List<JAXBElement<? extends ResponseType>> responses;          if (handle) {            List<STALResponse> stalResponses = handleRequest(stalRequests);            if (log.isInfoEnabled()) { @@ -137,28 +142,26 @@ public class AppletBKUWorker extends AbstractBKUWorker implements Runnable {            }            responses = STALTranslator.fromSTAL(stalResponses);          } else { -          responses = new ArrayList<ResponseType>(1); -          ErrorResponseType err = of.createErrorResponseType(); +          log.error("Insufficient rights to execute command InfoboxReadRequest for Infobox IdentityLink, return Error 6002"); +          responses = new ArrayList<JAXBElement<? extends ResponseType>>(1); +          ErrorResponseType err = stalObjFactory.createErrorResponseType();            err.setErrorCode(6002);            // err.setErrorMessage(); -          responses.add(err); +          responses.add(stalObjFactory.createGetNextRequestTypeErrorResponse(err));          }          if (!finished) { -          log.info("Not finished yet (BKUWorker: " + this -              + "), sending responses"); -          GetNextRequestType nextRequest = of.createGetNextRequestType(); +          log.info("Not finished yet (BKUWorker: " + this + "), sending responses"); +          GetNextRequestType nextRequest = stalObjFactory.createGetNextRequestType();            nextRequest.setSessionId(sessionId); -          nextRequest.getInfoboxReadResponseOrSignResponseOrErrorResponse() -              .addAll(responses); +          nextRequest.getInfoboxReadResponseOrSignResponseOrErrorResponse().addAll(responses);            nextRequestResp = stalPort.getNextRequest(nextRequest);          }        } while (!finished);        log.info("Done " + Thread.currentThread().getName());      } catch (Exception ex) {        log.error(ex.getMessage(), ex); -      gui.showErrorDialog(BKUGUIFacade.ERR_UNKNOWN, new Object[] { ex -          .getMessage() }); +      gui.showErrorDialog(BKUGUIFacade.ERR_UNKNOWN, new Object[]{ex.getMessage()});        try {          waitForAction();        } catch (InterruptedException e) { @@ -174,20 +177,18 @@ public class AppletBKUWorker extends AbstractBKUWorker implements Runnable {    protected void sendRedirect() {      try {        URL redirectURL = params.getURLParameter(BKUApplet.REDIRECT_URL, -          sessionId); -      String redirectTarget = params -          .getAppletParameter(BKUApplet.REDIRECT_TARGET); +              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 + ") ..."); +        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) +    // gui.showErrorDialog(errorMsg, okListener, actionCommand)      }    } @@ -195,26 +196,24 @@ public class AppletBKUWorker extends AbstractBKUWorker implements Runnable {      URL wsdlURL = params.getURLParameter(BKUApplet.WSDL_URL);      log.debug("STAL WSDL at " + wsdlURL);      QName endpointName = new QName(BKUApplet.STAL_WSDL_NS, -        BKUApplet.STAL_SERVICE); +            BKUApplet.STAL_SERVICE);      STALService stal = new STALService(wsdlURL, endpointName);      return stal.getSTALPort();    }    private void registerSignRequestHandler() throws MalformedURLException { -    String hashDataDisplayStyle = params -        .getAppletParameter(BKUApplet.HASHDATA_DISPLAY); +    String hashDataDisplayStyle = params.getAppletParameter(BKUApplet.HASHDATA_DISPLAY);      if (BKUApplet.HASHDATA_DISPLAY_BROWSER.equals(hashDataDisplayStyle)) {        URL hashDataURL = params.getURLParameter(BKUApplet.HASHDATA_URL, -          sessionId); +              sessionId);        log.debug("register SignRequestHandler for HashDataURL " + hashDataURL);        addRequestHandler(SignRequest.class, new BrowserHashDataDisplay(ctx, -          hashDataURL)); +              hashDataURL));      } else {        // BKUApplet.HASHDATA_DISPLAY_FRAME -      log.debug("register SignRequestHandler for STAL port " -          + BKUApplet.WSDL_URL); +      log.debug("register SignRequestHandler for STAL port " + BKUApplet.WSDL_URL);        AppletHashDataDisplay handler = new AppletHashDataDisplay(stalPort, -          sessionId); +              sessionId);        addRequestHandler(SignRequest.class, handler);      }    } diff --git a/BKUApplet/src/test/java/at/gv/egiz/stal/client/STALServiceTest.java b/BKUApplet/src/test/java/at/gv/egiz/stal/client/STALServiceTest.java index 63da8225..74017c22 100644 --- a/BKUApplet/src/test/java/at/gv/egiz/stal/client/STALServiceTest.java +++ b/BKUApplet/src/test/java/at/gv/egiz/stal/client/STALServiceTest.java @@ -41,6 +41,7 @@ import at.gv.egiz.stal.service.types.GetNextRequestResponseType;  import at.gv.egiz.stal.service.types.GetNextRequestType;  import at.gv.egiz.stal.service.types.InfoboxReadRequestType;  import at.gv.egiz.stal.service.types.RequestType; +import javax.xml.bind.JAXBElement;  /**   * @@ -51,7 +52,7 @@ public class STALServiceTest {  //    @Test      public void callSTAL() {          try { -            URL endpointURL = new URL("http://localhost:8080/bkuonline/stal?wsdl"); +            URL endpointURL = new URL("http://localhost:3495/bkuonline/stal?wsdl");              QName endpointName = new QName("http://www.egiz.gv.at/wsdl/stal", "STALService");              STALService stal = new STALService(endpointURL, endpointName);  //            stal = new STALService(); @@ -63,7 +64,8 @@ public class STALServiceTest {              GetNextRequestResponseType nrResp = port.getNextRequest(nrReq);              assertNotNull(nrResp);              System.out.println("got response: " + nrResp.getInfoboxReadRequestOrSignRequestOrQuitRequest().size()); -            for (RequestType stalReq : nrResp.getInfoboxReadRequestOrSignRequestOrQuitRequest()) { +            for (JAXBElement<? extends RequestType> stalReqElt : nrResp.getInfoboxReadRequestOrSignRequestOrQuitRequest()) { +              RequestType stalReq = stalReqElt.getValue();                  if (stalReq instanceof InfoboxReadRequestType) {                     String ibid = ((InfoboxReadRequestType) stalReq).getInfoboxIdentifier();                      String did = ((InfoboxReadRequestType) stalReq).getDomainIdentifier(); | 
