diff options
| author | tkellner <tkellner@8a26b1a7-26f0-462f-b9ef-d0e30c41f5a4> | 2012-04-02 16:38:53 +0000 | 
|---|---|---|
| committer | tkellner <tkellner@8a26b1a7-26f0-462f-b9ef-d0e30c41f5a4> | 2012-04-02 16:38:53 +0000 | 
| commit | 50f7be0c55da14e1b73c39aa18db9808949387bc (patch) | |
| tree | d43e7d3dec5f79cef7ac876f796ad7092f3d4ae6 /BKULocal | |
| parent | 5b9e4b3e9ed531689700b2e0f75907fd9281a042 (diff) | |
| download | mocca-50f7be0c55da14e1b73c39aa18db9808949387bc.tar.gz mocca-50f7be0c55da14e1b73c39aa18db9808949387bc.tar.bz2 mocca-50f7be0c55da14e1b73c39aa18db9808949387bc.zip | |
Person Identity Link Extension:
for Webstart and Applet version
git-svn-id: https://joinup.ec.europa.eu/svn/mocca/trunk@1040 8a26b1a7-26f0-462f-b9ef-d0e30c41f5a4
Diffstat (limited to 'BKULocal')
4 files changed, 285 insertions, 0 deletions
| diff --git a/BKULocal/src/main/java/at/gv/egiz/bku/local/stal/LocalBKUWorker.java b/BKULocal/src/main/java/at/gv/egiz/bku/local/stal/LocalBKUWorker.java index f9dab561..c41ac234 100644 --- a/BKULocal/src/main/java/at/gv/egiz/bku/local/stal/LocalBKUWorker.java +++ b/BKULocal/src/main/java/at/gv/egiz/bku/local/stal/LocalBKUWorker.java @@ -27,11 +27,13 @@ package at.gv.egiz.bku.local.stal;  import at.gv.egiz.bku.gui.BKUGUIFacade;  import at.gv.egiz.bku.smccstal.AbstractBKUWorker;  import at.gv.egiz.bku.smccstal.PINManagementRequestHandler; +import at.gv.egiz.bku.smccstal.PersonIdentityLinkRequestHandler;  import at.gv.egiz.stal.QuitRequest;  import at.gv.egiz.stal.STALRequest;  import at.gv.egiz.stal.STALResponse;  import at.gv.egiz.stal.SignRequest; +import at.gv.egiz.stal.ext.PersonIdentityLinkRequest;  import at.gv.egiz.stal.ext.PINManagementRequest;  import java.util.List;  import javax.swing.JFrame; @@ -50,6 +52,7 @@ public class LocalBKUWorker extends AbstractBKUWorker {      addRequestHandler(SignRequest.class,               new LocalSignRequestHandler(new LocalSecureViewer(gui)));      addRequestHandler(PINManagementRequest.class, new PINManagementRequestHandler()); +    addRequestHandler(PersonIdentityLinkRequest.class, new PersonIdentityLinkRequestHandler());    }    /** does not change container's visibility (use quit request to close) */ diff --git a/BKULocal/src/main/java/at/gv/egiz/bku/local/stal/LocalIdentityLinkSTALFactory.java b/BKULocal/src/main/java/at/gv/egiz/bku/local/stal/LocalIdentityLinkSTALFactory.java new file mode 100644 index 00000000..c64f029c --- /dev/null +++ b/BKULocal/src/main/java/at/gv/egiz/bku/local/stal/LocalIdentityLinkSTALFactory.java @@ -0,0 +1,134 @@ +/* + * Copyright 2011 by Graz University of Technology, Austria + * MOCCA has been developed by the E-Government Innovation Center EGIZ, a joint + * initiative of the Federal Chancellery Austria and Graz University of Technology. + * + * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * http://www.osor.eu/eupl/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + * + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + */ + +package at.gv.egiz.bku.local.stal; + +import java.awt.Dimension; +import java.awt.Toolkit; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.Locale; + +import javax.swing.JFrame; + +import org.apache.commons.configuration.Configuration; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import at.gv.egiz.bku.gui.BKUGUIFacade; +import at.gv.egiz.bku.gui.BKUIcons; +import at.gv.egiz.bku.gui.PersonIdentityLinkGUI; +import at.gv.egiz.bku.gui.PersonIdentityLinkGUIFacade; +import at.gv.egiz.bku.local.gui.GUIProxy; +import at.gv.egiz.bku.local.gui.LocalHelpListener; +import at.gv.egiz.bku.viewer.ResourceFontLoader; +import at.gv.egiz.stal.STAL; +import at.gv.egiz.stal.STALFactory; + +public class LocalIdentityLinkSTALFactory implements STALFactory { + +	private final Logger log = LoggerFactory +			.getLogger(LocalIdentityLinkSTALFactory.class); +	protected static final Dimension PREFERRED_SIZE = new Dimension(318, 200); +	protected URL helpURL; +	protected Locale locale; + +	protected Configuration configuration; + +	@Override +	public STAL createSTAL() { +		final LocalBKUWorker stal; +	    //http://java.sun.com/docs/books/tutorial/uiswing/misc/focus.html +	    // use undecorated JFrame instead of JWindow, +	    // which creates an invisible owning frame and therefore cannot getFocusInWindow() +	    JFrame dialog = new JFrame("Bürgerkarte"); +	    log.debug("AlwaysOnTop supported: {}.", dialog.isAlwaysOnTopSupported()); +	    // [#439] make mocca dialog alwaysOnTop +	    dialog.setAlwaysOnTop(true); +	    dialog.setIconImages(BKUIcons.icons); +//	    dialog.setUndecorated(true); +//	    dialog.getRootPane().setWindowDecorationStyle(JRootPane.NONE); + +	    if (locale != null) { +	      dialog.setLocale(locale); +	    } +	    LocalHelpListener helpListener = null; +	    if (helpURL != null) { +	      helpListener = new LocalHelpListener(helpURL, locale); +	    } else { +	      log.warn("No HELP URL configured, help system disabled."); +	    } +	    PersonIdentityLinkGUIFacade gui = new PersonIdentityLinkGUI(dialog.getContentPane(), +	            dialog.getLocale(), +	            null, +	            new ResourceFontLoader(), +	            helpListener, +	            null); +	    BKUGUIFacade proxy = (BKUGUIFacade) GUIProxy.newInstance(gui, dialog, new Class[] { PersonIdentityLinkGUIFacade.class} ); +	    stal = new LocalBKUWorker(proxy, dialog); +	    dialog.setPreferredSize(PREFERRED_SIZE); +	    dialog.pack(); +	    Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); +	    Dimension frameSize = dialog.getSize(); +	    if (frameSize.height > screenSize.height) { +	      frameSize.height = screenSize.height; +	    } +	    if (frameSize.width > screenSize.width) { +	      frameSize.width = screenSize.width; +	    } +	    dialog.setLocation((screenSize.width - frameSize.width) / 2, +	            (screenSize.height - frameSize.height) / 2); +	    return stal; +	} + +	@Override +	public void setLocale(Locale locale) { +		this.locale = locale; +	} + +	/** +	 * spring injects helpURL +	 *  +	 * @param helpURL +	 * @throws MalformedURLException +	 *             if helpURL is not a valid URL +	 */ +	public void setHelpURL(String helpURL) throws MalformedURLException { +		this.helpURL = new URL(helpURL); +	} + +	/** +	 * @return the configuration +	 */ +	public Configuration getConfiguration() { +		return configuration; +	} + +	/** +	 * @param configuration +	 *            the configuration to set +	 */ +	public void setConfiguration(Configuration configuration) { +		this.configuration = configuration; +	} +} diff --git a/BKULocal/src/main/java/at/gv/egiz/bku/local/webapp/IdentityLinkServlet.java b/BKULocal/src/main/java/at/gv/egiz/bku/local/webapp/IdentityLinkServlet.java new file mode 100644 index 00000000..31c78cb0 --- /dev/null +++ b/BKULocal/src/main/java/at/gv/egiz/bku/local/webapp/IdentityLinkServlet.java @@ -0,0 +1,140 @@ +/* + * Copyright 2011 by Graz University of Technology, Austria + * MOCCA has been developed by the E-Government Innovation Center EGIZ, a joint + * initiative of the Federal Chancellery Austria and Graz University of Technology. + * + * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * http://www.osor.eu/eupl/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + * + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + */ + +package at.gv.egiz.bku.local.webapp; + +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.Collections; +import java.util.List; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import at.gv.egiz.bku.local.stal.LocalIdentityLinkSTALFactory; +import at.gv.egiz.stal.QuitRequest; +import at.gv.egiz.stal.STAL; +import at.gv.egiz.stal.STALResponse; +import at.gv.egiz.stal.ext.PersonIdentityLinkRequest; + +/** + * IdentityLink BKU Worker for non-applet version + *  + * @author Andreas Fitzek <andreas.fitzek@iaik.tugraz.at> + */ +public class IdentityLinkServlet extends HttpServlet { + +	/** +	 *  +	 */ +	private static final long serialVersionUID = 1L; + +	private final Logger log = LoggerFactory +			.getLogger(IdentityLinkServlet.class); + +	LocalIdentityLinkSTALFactory stalFactory; + +	public IdentityLinkServlet() { +		stalFactory = new LocalIdentityLinkSTALFactory(); +		try { +			stalFactory.setHelpURL("http://localhost:3495/help/"); +		} catch (MalformedURLException e) { +			log.info("Failed to set help URL.", e); +		} +	} + +	/** +	 * Processes requests for both HTTP <code>GET</code> and <code>POST</code> +	 * methods. +	 *  +	 * @param request +	 *            servlet request +	 * @param response +	 *            servlet response +	 * @throws ServletException +	 *             if a servlet-specific error occurs +	 * @throws IOException +	 *             if an I/O error occurs +	 */ +	protected void processRequest(HttpServletRequest request, +			HttpServletResponse response) throws ServletException, IOException { +		log.info("processRequest: IdentityLinkServlet"); +		STAL pinMgmtSTAL = stalFactory.createSTAL(); +	    List<STALResponse> stalResps = pinMgmtSTAL.handleRequest(Collections.singletonList(new PersonIdentityLinkRequest())); +	    log.debug("Received STAL reponse {}.", stalResps.get(0).getClass()); +	    pinMgmtSTAL.handleRequest(Collections.singletonList(new QuitRequest())); + +	    String redirect = request.getParameter("redirect"); +	    if (redirect != null) { +	      String referer = request.getHeader("Referer"); +	      if (referer != null) { +	        redirect = new URL(new URL(referer), redirect).toExternalForm(); +	      } +	      response.sendRedirect(redirect); +	    } else { +	      response.setStatus(HttpServletResponse.SC_OK); +	    } +	} + +	/** +	 * Handles the HTTP <code>GET</code> method. +	 *  +	 * @param request +	 *            servlet request +	 * @param response +	 *            servlet response +	 * @throws ServletException +	 *             if a servlet-specific error occurs +	 * @throws IOException +	 *             if an I/O error occurs +	 */ +	@Override +	protected void doGet(HttpServletRequest request, +			HttpServletResponse response) throws ServletException, IOException { +		processRequest(request, response); +	} + +	/** +	 * Handles the HTTP <code>POST</code> method. +	 *  +	 * @param request +	 *            servlet request +	 * @param response +	 *            servlet response +	 * @throws ServletException +	 *             if a servlet-specific error occurs +	 * @throws IOException +	 *             if an I/O error occurs +	 */ +	@Override +	protected void doPost(HttpServletRequest request, +			HttpServletResponse response) throws ServletException, IOException { +		processRequest(request, response); +	} +} diff --git a/BKULocal/src/main/webapp/WEB-INF/web.xml b/BKULocal/src/main/webapp/WEB-INF/web.xml index 5704e687..628bb044 100644 --- a/BKULocal/src/main/webapp/WEB-INF/web.xml +++ b/BKULocal/src/main/webapp/WEB-INF/web.xml @@ -47,6 +47,10 @@          <servlet-name>PINManagementServlet</servlet-name>          <servlet-class>at.gv.egiz.bku.local.webapp.PINManagementServlet</servlet-class>      </servlet> +    <servlet> +        <servlet-name>IdentityLinkServlet</servlet-name> +        <servlet-class>at.gv.egiz.bku.local.webapp.IdentityLinkServlet</servlet-class> +    </servlet>      <servlet-mapping>      <servlet-name>BKUServlet</servlet-name>      <url-pattern>/http-security-layer-request</url-pattern> @@ -61,6 +65,10 @@          <servlet-name>PINManagementServlet</servlet-name>          <url-pattern>/PINManagement</url-pattern>      </servlet-mapping> +    <servlet-mapping> +        <servlet-name>IdentityLinkServlet</servlet-name> +        <url-pattern>/IdentityLink</url-pattern> +    </servlet-mapping>      <welcome-file-list>      <welcome-file>index.html</welcome-file>      <welcome-file>index.htm</welcome-file> | 
