/******************************************************************************* * See the NOTICE file distributed with this work for additional information * regarding copyright ownership. * * 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 hr.fer.zemris.vhdllab.platform.javaws; import hr.fer.zemris.vhdllab.platform.gui.dialog.DialogManager; import javax.annotation.PostConstruct; import javax.annotation.PreDestroy; import javax.annotation.Resource; import javax.jnlp.ServiceManager; import javax.jnlp.SingleInstanceListener; import javax.jnlp.SingleInstanceService; import javax.jnlp.UnavailableServiceException; import org.apache.log4j.Logger; public final class JavawsIntegration { /** * Logger for this class */ private static final Logger LOG = Logger.getLogger(JavawsIntegration.class); @Resource(name = "alreadyOpenedDialogManager") private DialogManager dialogManager; private SingleInstanceService service; private SingleInstanceListener listener; @PostConstruct public void registerServices() { try { service = (SingleInstanceService) ServiceManager .lookup("javax.jnlp.SingleInstanceService"); } catch (UnavailableServiceException ignored) { service = null; LOG.debug("Single instance service isn't available"); /* * Simply ignore exception because Javaws is not required to run * vhdllab-client. */ } if (service != null) { listener = new EnforceSingleInstanceListener(dialogManager); service.addSingleInstanceListener(listener); LOG.debug("Successfully integated single instance service with javaws"); } } @PreDestroy public void unregisterServices() { if (service != null) { service.removeSingleInstanceListener(listener); LOG.debug("Removed single instance listener from javaws service"); } } }