View Javadoc

1   package org.lsst.ccs.plugin.jas3.jms;
2   
3   import java.util.Properties;
4   import org.freehep.application.PropertyUtilities;
5   import org.freehep.application.studio.Studio;
6   
7   /**
8    * Encapsulates a user's JMS preferences
9    *
10   * @author turri
11   */
12  class JmsPreferences {
13  
14      public static final String JMS_SERVER_PROPERTY = "org.lsst.jms.server";
15      private static final String JMS_PORT_PROPERTY = "org.lsst.jms.port";
16      private static final String JMS_USE_PROPERTY = "org.lsst.jms.use";
17      private String server;
18      private int port;
19      private final Properties user;
20      private boolean useTransport;
21  
22      JmsPreferences(Studio studio) {
23          user = studio.getUserProperties();
24          server = user.getProperty(JMS_SERVER_PROPERTY, "localhost");
25          port = PropertyUtilities.getInteger(user, JMS_PORT_PROPERTY, 3700);
26          useTransport = PropertyUtilities.getBoolean(user, JMS_USE_PROPERTY, false);
27          if (useTransport && canUseTransport()) {
28              activate();
29          }
30      }
31  
32      int getJmsPort() {
33          return port;
34      }
35  
36      String getJmsServer() {
37          return server;
38      }
39  
40      public boolean isUseTransport() {
41          return useTransport;
42      }
43  
44      void setJmsPort(int port) {
45          this.port = port;
46          PropertyUtilities.setInteger(user, JMS_PORT_PROPERTY, port);
47      }
48  
49      public void setJmsServer(String server) {
50          this.server = server;
51          user.setProperty(JMS_SERVER_PROPERTY, server);
52      }
53  
54      void setUseTransport(boolean selected) {
55          this.useTransport = selected;
56          PropertyUtilities.setBoolean(user, JMS_USE_PROPERTY, selected);
57      }
58  
59      final boolean canUseTransport() {
60          try {
61              Class.forName("org.lsst.ccs.bus.jms.JMSMessagingFactory");
62              return true;
63          } catch (Throwable t) {
64              return false;
65          }
66      }
67  
68      final void activate() {
69          System.setProperty("java.naming.factory.initial", "com.sun.enterprise.naming.SerialInitContextFactory");
70          System.setProperty("java.naming.factory.url.pkgs", "com.sun.enterprise.naming");
71          System.setProperty("java.naming.factory.state", "com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl");
72          System.setProperty("org.omg.CORBA.ORBInitialHost", getJmsServer());
73          System.setProperty("org.omg.CORBA.ORBInitialPort", String.valueOf(getJmsPort()));
74          System.setProperty("lsst.messaging.factory", "org.lsst.ccs.bus.jms.JMSMessagingFactory");
75      }
76  }