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
9
10
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 }