/* * Decompiled with CFR 0.152. * * Could not load the following classes: * com.tridium.net.HttpUtil * javax.baja.log.Log * javax.baja.nre.util.Array * javax.baja.security.AuthenticationException * javax.baja.sys.BComponent * javax.baja.sys.BIcon * javax.baja.sys.BValue * javax.baja.sys.BajaRuntimeException * javax.baja.sys.Context * javax.baja.sys.LocalizableRuntimeException * javax.baja.sys.Property * javax.baja.sys.Sys * javax.baja.sys.Type * javax.baja.util.Lexicon * javax.baja.xml.XElem * javax.baja.xml.XParser */ package com.tridium.platform.daemon; import com.tridium.net.HttpUtil; import com.tridium.platform.daemon.BDaemonSession; import com.tridium.platform.daemon.BR2StationSurrogate; import com.tridium.platform.daemon.BSedonaSurrogate; import com.tridium.platform.daemon.BStationSurrogate; import com.tridium.platform.daemon.ConsoleInputStream; import com.tridium.platform.daemon.message.DaemonMessage; import com.tridium.platform.daemon.message.DeleteAppMessage; import com.tridium.platform.daemon.message.GetAppListMessage; import com.tridium.platform.daemon.message.UpdateAppMessage; import com.tridium.platform.daemon.message.XmlResponseMessage; import com.tridium.platform.daemon.task.CancelableDaemonSessionTask; import com.tridium.platform.daemon.task.DaemonSessionTaskListener; import java.io.ByteArrayOutputStream; import java.io.EOFException; import java.io.IOException; import java.io.InputStream; import java.io.InterruptedIOException; import java.io.PrintStream; import java.net.ConnectException; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.TreeMap; import javax.baja.log.Log; import javax.baja.nre.util.Array; import javax.baja.platform.BStationStatus; import javax.baja.platform.ICancelHint; import javax.baja.security.AuthenticationException; import javax.baja.sys.BComponent; import javax.baja.sys.BIcon; import javax.baja.sys.BValue; import javax.baja.sys.BajaRuntimeException; import javax.baja.sys.Context; import javax.baja.sys.LocalizableRuntimeException; import javax.baja.sys.Property; import javax.baja.sys.Sys; import javax.baja.sys.Type; import javax.baja.util.Lexicon; import javax.baja.xml.XElem; import javax.baja.xml.XParser; /* * Illegal identifiers - consider using --renameillegalidents true */ public abstract class BAppSurrogate extends BComponent { public static final int PORT_UNKNOWN = -1; public static final Property isAutoStart = BAppSurrogate.newProperty((int)3, (boolean)false, null); public static final Property isAutoRestart = BAppSurrogate.newProperty((int)3, (boolean)false, null); public static final Property appStatus = BAppSurrogate.newProperty((int)3, (BValue)BStationStatus.unknown, null); public static final Property appName = BAppSurrogate.newProperty((int)3, (String)"", null); public static final Property isDisabled = BAppSurrogate.newProperty((int)3, (boolean)false, null); public static final Property isDirty = BAppSurrogate.newProperty((int)3, (boolean)false, null); public static final Property isAcceptingMessages = BAppSurrogate.newProperty((int)3, (boolean)false, null); public static final Property logBufferSize = BAppSurrogate.newProperty((int)3, (int)Short.MAX_VALUE, null); public static final Property logBufferFileSize = BAppSurrogate.newProperty((int)3, (int)Short.MAX_VALUE, null); public static final Type TYPE; protected static final BIcon connectedIcon; protected static final BIcon disconnectedIcon; public static final int STREAM_TIMEOUT_MILLIS = 500; protected static final Lexicon lex; protected static final Log log; protected BDaemonSession session; static /* synthetic */ Class class$com$tridium$platform$daemon$BAppSurrogate; public boolean getIsAutoStart() { return this.getBoolean(isAutoStart); } public void setIsAutoStart(boolean bl) { this.setBoolean(isAutoStart, bl, null); } public boolean getIsAutoRestart() { return this.getBoolean(isAutoRestart); } public void setIsAutoRestart(boolean bl) { this.setBoolean(isAutoRestart, bl, null); } public BStationStatus getAppStatus() { return (BStationStatus)this.get(appStatus); } public void setAppStatus(BStationStatus bStationStatus) { this.set(appStatus, (BValue)bStationStatus, null); } public String getAppName() { return this.getString(appName); } public void setAppName(String string) { this.setString(appName, string, null); } public boolean getIsDisabled() { return this.getBoolean(isDisabled); } public void setIsDisabled(boolean bl) { this.setBoolean(isDisabled, bl, null); } public boolean getIsDirty() { return this.getBoolean(isDirty); } public void setIsDirty(boolean bl) { this.setBoolean(isDirty, bl, null); } public boolean getIsAcceptingMessages() { return this.getBoolean(isAcceptingMessages); } public void setIsAcceptingMessages(boolean bl) { this.setBoolean(isAcceptingMessages, bl, null); } public int getLogBufferSize() { return this.getInt(logBufferSize); } public void setLogBufferSize(int n) { this.setInt(logBufferSize, n, null); } public int getLogBufferFileSize() { return this.getInt(logBufferFileSize); } public void setLogBufferFileSize(int n) { this.setInt(logBufferFileSize, n, null); } public Type getType() { return TYPE; } public BDaemonSession getDaemonSession() { return this.session; } protected static Map getAppElementMap(BDaemonSession bDaemonSession) throws Exception { if (bDaemonSession.getHostProperties().supportsServlet("applist")) { XElem xElem = XParser.make((InputStream)bDaemonSession.getInputStream(new GetAppListMessage())).parse(); HashMap hashMap = new HashMap(); XElem[] xElemArray = xElem.elems("app"); int n = 0; while (n < xElemArray.length) { String string = xElemArray[n].get("type"); Type type = BAppSurrogate.getAppType(string); TreeMap treeMap = new TreeMap(); hashMap.put(type, treeMap); XElem[] xElemArray2 = xElemArray[n].elems(string); int n2 = 0; while (n2 < xElemArray2.length) { treeMap.put(xElemArray2[n2].get("name"), xElemArray2[n2]); ++n2; } ++n; } return hashMap; } XElem xElem = XParser.make((InputStream)bDaemonSession.getInputStream(new GetAppListMessage("station"))).parse(); HashMap hashMap = new HashMap(); TreeMap treeMap = new TreeMap(); hashMap.put(BStationSurrogate.TYPE, treeMap); XElem[] xElemArray = xElem.elems("station"); int n = 0; while (n < xElemArray.length) { treeMap.put(xElemArray[n].get("name"), xElemArray[n]); ++n; } return hashMap; } protected static Map getAppElementMap(Type type, BDaemonSession bDaemonSession) throws Exception { TreeMap treeMap = (TreeMap)BAppSurrogate.getAppElementMap(bDaemonSession).get(type); if (treeMap == null) { treeMap = new TreeMap(); } return treeMap; } public void poll() throws Exception { XElem xElem = (XElem)BAppSurrogate.getAppElementMap(this.getType(), this.getDaemonSession()).get(this.getAppName()); if (xElem != null) { this.updateFields(xElem); } } public boolean isRestartEnabled() { return this.getDaemonSession().getHostProperties().getAllowStationRestart(); } public void updateFields(XElem xElem) { this.setAppName(xElem.get("name")); XElem xElem2 = xElem.elem("isdisabled"); if (xElem2 != null) { this.setIsDisabled(xElem2.getb("value")); } if ((xElem2 = xElem.elem("isautostart")) != null) { this.setIsAutoStart(xElem2.getb("value")); } if ((xElem2 = xElem.elem("isautorestart")) != null) { this.setIsAutoRestart(xElem2.getb("value")); } if ((xElem2 = xElem.elem("isdirty")) != null) { this.setIsDirty(xElem2.getb("value")); } if ((xElem2 = xElem.elem("isacceptingmessages")) != null) { this.setIsAcceptingMessages(xElem2.getb("value")); } if ((xElem2 = xElem.elem("status")) != null) { this.setAppStatus(BStationStatus.make(xElem2.geti("value"))); } if ((xElem2 = xElem.elem("logbuffersize")) != null) { this.setLogBufferSize(xElem2.geti("value")); } if ((xElem2 = xElem.elem("logbufferfilesize")) != null) { this.setLogBufferFileSize(xElem2.geti("value")); } } public InputStream getAppOutput() throws ConnectException, AuthenticationException { return this.getAppOutput(true, false); } public InputStream getAppOutput(boolean bl) throws ConnectException, AuthenticationException { return this.getAppOutput(bl, false); } public InputStream getAppOutput(boolean bl, boolean bl2) throws ConnectException, AuthenticationException { return ConsoleInputStream.make(this.getDaemonSession().getInputStream((DaemonMessage)new GetAppOutputMessage(this.getAppTypeString(), this.getAppName(), bl, bl2), 500)); } public void updateLogBufferSize(int n, int n2) throws ConnectException, AuthenticationException { if (this.getDaemonSession().sendMessage(new UpdateLogBufferSizeMessage(this.getAppTypeString(), this.getAppName(), n, n2, true))) { this.setLogBufferSize(n); this.setLogBufferFileSize(n2); } } public void updateSettings(boolean bl, boolean bl2) throws ConnectException, AuthenticationException { this.getDaemonSession().sendMessage(new UpdateAppMessage(this.getAppTypeString(), this.getAppName(), this.getIsDisabled(), bl, bl2, true)); } public void checkStart() { if (!(this.isAppRunning() || this.isRestartEnabled() || this.getAppStatus() != BStationStatus.halted && this.getAppStatus() != BStationStatus.failed)) { throw new LocalizableRuntimeException("platform", "AppSurrogate.error.startHaltedApp"); } } public void startAppAsync() throws ConnectException, AuthenticationException { this.checkStart(); if (!this.isAppRunning()) { this.setAppStatus(BStationStatus.starting); this.getDaemonSession().sendMessage(new StartAppMessage(this.getAppTypeString(), this.getAppName())); } } public void startApp(ICancelHint iCancelHint, DaemonSessionTaskListener daemonSessionTaskListener) throws Exception { this.checkStart(); CancelableDaemonSessionTask cancelableDaemonSessionTask = null; OutputWatcher outputWatcher = null; if (daemonSessionTaskListener != null) { cancelableDaemonSessionTask = this.isAppRunning() ? new CancelableDaemonSessionTask(lex, "AppSurrogate.waiting.title", "AppSurrogate.waiting.message", new Object[]{this.getAppName()}, iCancelHint) : new CancelableDaemonSessionTask(lex, "AppSurrogate.starting.title", "AppSurrogate.starting.message", new Object[]{this.getAppName()}, iCancelHint); iCancelHint = cancelableDaemonSessionTask; } try { outputWatcher = new OutputWatcher(this.getAppOutput(true, true), cancelableDaemonSessionTask, daemonSessionTaskListener); outputWatcher.start(); if (daemonSessionTaskListener != null) { daemonSessionTaskListener.taskStarted(cancelableDaemonSessionTask); } this.startAppAsync(); while (true) { if (BAppSurrogate.isCanceled(cancelableDaemonSessionTask)) { throw new ICancelHint.CanceledException(); } this.poll(); if (this.getAppStatus() == BStationStatus.running) { Object var6_5 = null; if (daemonSessionTaskListener != null) { if (outputWatcher != null) { outputWatcher.stopWatcher(); } daemonSessionTaskListener.taskFinished(cancelableDaemonSessionTask); } return; } if (this.getAppStatus() == BStationStatus.failed) { throw new Exception("Application failed to start"); } Thread.sleep(1000L); } } catch (Throwable throwable) { block11: { Object var6_6 = null; if (daemonSessionTaskListener == null) break block11; if (outputWatcher != null) { outputWatcher.stopWatcher(); } daemonSessionTaskListener.taskFinished(cancelableDaemonSessionTask); } throw throwable; } } public void stopAppAsync() throws ConnectException, AuthenticationException { try { this.setAppStatus(BStationStatus.stopping); this.getDaemonSession().sendMessage(new StopAppMessage(this.getAppTypeString(), this.getAppName())); } catch (ConnectException connectException) { throw connectException; } catch (AuthenticationException authenticationException) { throw authenticationException; } catch (RuntimeException runtimeException) { throw runtimeException; } catch (Exception exception) { throw new BajaRuntimeException((Throwable)exception); } } public static BAppSurrogate[] stopAllApps(BDaemonSession bDaemonSession, Type type, ICancelHint iCancelHint, DaemonSessionTaskListener daemonSessionTaskListener) throws Exception { try { return BAppSurrogate.stopAllApps(bDaemonSession, type, BAppSurrogate.makeAll(type, bDaemonSession), iCancelHint, daemonSessionTaskListener); } catch (ConnectException connectException) { throw connectException; } catch (AuthenticationException authenticationException) { throw authenticationException; } catch (RuntimeException runtimeException) { throw runtimeException; } catch (Exception exception) { throw new BajaRuntimeException((Throwable)exception); } } public String getAppTypeString() { return BAppSurrogate.getAppTypeString(this.getType()); } public static String getAppTypeString(Type type) { if (type == BSedonaSurrogate.TYPE) { return "sedona"; } if (type == BStationSurrogate.TYPE) { return "station"; } if (type == BR2StationSurrogate.TYPE) { return "r2station"; } throw new IllegalArgumentException(); } public static Type getAppType(String string) { if (string.equals("station")) { return BStationSurrogate.TYPE; } if (string.equals("sedona")) { return BSedonaSurrogate.TYPE; } if (string.equals("r2station")) { return BR2StationSurrogate.TYPE; } throw new IllegalArgumentException("invalid element for BAppSurrogate.make"); } public static BAppSurrogate make(XElem xElem, BDaemonSession bDaemonSession) throws Exception { BAppSurrogate bAppSurrogate = null; if (xElem.name().equals("station")) { bAppSurrogate = new BStationSurrogate(bDaemonSession); } else if (xElem.name().equals("sedona")) { bAppSurrogate = new BSedonaSurrogate(bDaemonSession); } else if (xElem.name().equals("r2station")) { bAppSurrogate = new BR2StationSurrogate(bDaemonSession); } else { throw new IllegalArgumentException("invalid element for BAppSurrogate.make"); } ((BAppSurrogate)bAppSurrogate).updateFields(xElem); return bAppSurrogate; } public static BAppSurrogate[] makeAll(Type type, BDaemonSession bDaemonSession) throws Exception { if (type == null) { Class clazz = class$com$tridium$platform$daemon$BAppSurrogate; if (clazz == null) { clazz = class$com$tridium$platform$daemon$BAppSurrogate = BAppSurrogate.class("[Lcom.tridium.platform.daemon.BAppSurrogate;", false); } Array array = new Array(clazz); Map map = BAppSurrogate.getAppElementMap(bDaemonSession); Iterator iterator = map.values().iterator(); while (iterator.hasNext()) { Iterator iterator2 = ((Map)iterator.next()).values().iterator(); while (iterator2.hasNext()) { array.add((Object)BAppSurrogate.make((XElem)iterator2.next(), bDaemonSession)); } } return (BAppSurrogate[])array.trim(); } Map map = BAppSurrogate.getAppElementMap(type, bDaemonSession); if (map == null) { System.out.println("apps for " + type + " is null!"); } BAppSurrogate[] bAppSurrogateArray = (BAppSurrogate[])java.lang.reflect.Array.newInstance(type.getTypeClass(), map.size()); int n = 0; Iterator iterator = map.values().iterator(); while (iterator.hasNext()) { bAppSurrogateArray[n] = BAppSurrogate.make((XElem)iterator.next(), bDaemonSession); ++n; } return bAppSurrogateArray; } public static boolean isAnyAppRunning(Type type, BDaemonSession bDaemonSession) throws Exception { BAppSurrogate[] bAppSurrogateArray = BAppSurrogate.makeAll(type, bDaemonSession); int n = 0; while (n < bAppSurrogateArray.length) { if (bAppSurrogateArray[n].isAppRunning()) { return true; } ++n; } return false; } protected static XElem getAppElem(BDaemonSession bDaemonSession, BAppSurrogate bAppSurrogate) throws Exception { Map map = BAppSurrogate.getAppElementMap(bAppSurrogate.getType(), bDaemonSession); return (XElem)map.get(bAppSurrogate.getAppName()); } /* * Exception decompiling */ public static BAppSurrogate[] stopAllApps(BDaemonSession var0, Type var1_1, BAppSurrogate[] var2_2, ICancelHint var3_3, DaemonSessionTaskListener var4_4) throws Exception { /* * This method has failed to decompile. When submitting a bug report, please provide this stack trace, and (if you hold appropriate legal rights) the relevant class file. * * org.benf.cfr.reader.util.ConfusedCFRException: Back jump on a try block [egrp 3[TRYBLOCK] [10 : 410->413)] java.lang.Throwable * at org.benf.cfr.reader.bytecode.analysis.opgraph.Op02WithProcessedDataAndRefs.insertExceptionBlocks(Op02WithProcessedDataAndRefs.java:2283) * at org.benf.cfr.reader.bytecode.CodeAnalyser.getAnalysisInner(CodeAnalyser.java:415) * at org.benf.cfr.reader.bytecode.CodeAnalyser.getAnalysisOrWrapFail(CodeAnalyser.java:278) * at org.benf.cfr.reader.bytecode.CodeAnalyser.getAnalysis(CodeAnalyser.java:201) * at org.benf.cfr.reader.entities.attributes.AttributeCode.analyse(AttributeCode.java:94) * at org.benf.cfr.reader.entities.Method.analyse(Method.java:531) * at org.benf.cfr.reader.entities.ClassFile.analyseMid(ClassFile.java:1055) * at org.benf.cfr.reader.entities.ClassFile.analyseTop(ClassFile.java:942) * at org.benf.cfr.reader.Driver.doJarVersionTypes(Driver.java:257) * at org.benf.cfr.reader.Driver.doJar(Driver.java:139) * at org.benf.cfr.reader.CfrDriverImpl.analyse(CfrDriverImpl.java:76) * at org.benf.cfr.reader.Main.main(Main.java:54) */ throw new IllegalStateException("Decompilation failed"); } public void stopApp(ICancelHint iCancelHint) throws ConnectException, AuthenticationException { this.stopApp(iCancelHint, null); } /* * WARNING - Removed back jump from a try to a catch block - possible behaviour change. * Enabled aggressive block sorting * Enabled unnecessary exception pruning * Enabled aggressive exception aggregation */ public void stopApp(ICancelHint iCancelHint, DaemonSessionTaskListener daemonSessionTaskListener) throws ConnectException, AuthenticationException { block14: { CancelableDaemonSessionTask cancelableDaemonSessionTask; block13: { if (this.isAppStopped()) break block14; cancelableDaemonSessionTask = null; try { try { if (this.getAppStatus() != BStationStatus.stopping) { if (daemonSessionTaskListener != null) { cancelableDaemonSessionTask = new CancelableDaemonSessionTask(lex, "AppSurrogate.stopping.title", "AppSurrogate.stopping.message", new Object[]{this.getAppName()}, iCancelHint); cancelableDaemonSessionTask.setCancelLabel(lex.getText("AppSurrogate.stopping.cancel")); daemonSessionTaskListener.taskStarted(cancelableDaemonSessionTask); } this.stopAppAsync(); this.poll(); while (!this.isAppStopped() && !BAppSurrogate.isCanceled(cancelableDaemonSessionTask)) { Thread.sleep(1000L); this.poll(); } } } catch (ConnectException connectException) { throw connectException; } catch (AuthenticationException authenticationException) { throw authenticationException; } catch (RuntimeException runtimeException) { throw runtimeException; } catch (Exception exception) { throw new BajaRuntimeException((Throwable)exception); } } catch (Throwable throwable) { Object var5_9 = null; if (daemonSessionTaskListener != null && cancelableDaemonSessionTask != null) { daemonSessionTaskListener.taskFinished(cancelableDaemonSessionTask); } throw throwable; } { Object var5_10 = null; if (daemonSessionTaskListener == null || cancelableDaemonSessionTask == null) break block13; daemonSessionTaskListener.taskFinished(cancelableDaemonSessionTask); } } if (BAppSurrogate.isCanceled(cancelableDaemonSessionTask)) { throw new ICancelHint.CanceledException(); } } } public void restartAppAsync() throws ConnectException, AuthenticationException { if (!this.isRestartEnabled()) { throw new LocalizableRuntimeException("platform", "AppSurrogate.error.restartNotPermitted"); } this.restartAppAsync(false); } public void restartAppAsync(boolean bl) throws ConnectException, AuthenticationException { if (!this.isRestartEnabled()) { throw new LocalizableRuntimeException("platform", "AppSurrogate.error.restartNotPermitted"); } this.setAppStatus(BStationStatus.stopping); this.getDaemonSession().sendMessage(new RestartAppMessage(this.getAppTypeString(), this.getAppName(), bl)); } public void deleteApp(ICancelHint iCancelHint) throws ConnectException, AuthenticationException { this.deleteApp(iCancelHint, null); } public void deleteApp(ICancelHint iCancelHint, DaemonSessionTaskListener daemonSessionTaskListener) throws ConnectException, AuthenticationException { this.stopApp(iCancelHint, daemonSessionTaskListener); this.getDaemonSession().sendMessage(new DeleteAppMessage(this.getAppTypeString(), this.getAppName())); } public void killAppAsync() throws ConnectException, AuthenticationException { this.setAppStatus(BStationStatus.stopping); this.getDaemonSession().sendMessage(new KillAppMessage(this.getAppTypeString(), this.getAppName())); } /* * WARNING - Removed back jump from a try to a catch block - possible behaviour change. * Enabled aggressive block sorting * Enabled unnecessary exception pruning * Enabled aggressive exception aggregation */ public void killApp(ICancelHint iCancelHint, DaemonSessionTaskListener daemonSessionTaskListener) throws ConnectException, AuthenticationException { block13: { CancelableDaemonSessionTask cancelableDaemonSessionTask; block12: { if (this.isAppStopped()) break block13; cancelableDaemonSessionTask = null; try { try { if (daemonSessionTaskListener != null) { cancelableDaemonSessionTask = new CancelableDaemonSessionTask(lex, "AppSurrogate.killing.title", "AppSurrogate.killing.message", new Object[]{this.getAppName()}, iCancelHint); daemonSessionTaskListener.taskStarted(cancelableDaemonSessionTask); } this.killAppAsync(); this.poll(); while (!this.isAppStopped() && !BAppSurrogate.isCanceled(cancelableDaemonSessionTask)) { Thread.sleep(1000L); this.poll(); } } catch (ConnectException connectException) { throw connectException; } catch (AuthenticationException authenticationException) { throw authenticationException; } catch (RuntimeException runtimeException) { throw runtimeException; } catch (Exception exception) { throw new BajaRuntimeException((Throwable)exception); } } catch (Throwable throwable) { Object var5_9 = null; if (daemonSessionTaskListener != null && cancelableDaemonSessionTask != null) { daemonSessionTaskListener.taskFinished(cancelableDaemonSessionTask); } throw throwable; } { Object var5_10 = null; if (daemonSessionTaskListener == null || cancelableDaemonSessionTask == null) break block12; daemonSessionTaskListener.taskFinished(cancelableDaemonSessionTask); } } if (BAppSurrogate.isCanceled(cancelableDaemonSessionTask)) { throw new ICancelHint.CanceledException(); } } } public boolean isAppRunning() { boolean bl = false; if (this.getAppStatus() == BStationStatus.running || this.getAppStatus() == BStationStatus.starting) { bl = true; } return bl; } public boolean isAppStopped() { boolean bl = false; if (this.getAppStatus() == BStationStatus.idle || this.getAppStatus() == BStationStatus.halted || this.getAppStatus() == BStationStatus.failed) { bl = true; } return bl; } protected static boolean isCanceled(CancelableDaemonSessionTask cancelableDaemonSessionTask) { boolean bl = false; if (cancelableDaemonSessionTask != null) { bl = cancelableDaemonSessionTask.isCanceled(); } return bl; } public String toString(Context context) { return lex.getText("AppSurrogate." + this.getAppTypeString() + ".display", new Object[]{this.getAppName()}); } public BIcon getIcon() { return this.isAppRunning() ? connectedIcon : disconnectedIcon; } static /* synthetic */ Class class(String string, boolean bl) { try { Class clazz = Class.forName(string); if (!bl) { clazz = clazz.getComponentType(); } return clazz; } catch (ClassNotFoundException classNotFoundException) { throw new NoClassDefFoundError(classNotFoundException.getMessage()); } } public BAppSurrogate() { throw new UnsupportedOperationException(); } public BAppSurrogate(BDaemonSession bDaemonSession) { this.session = bDaemonSession; } static { Class clazz = class$com$tridium$platform$daemon$BAppSurrogate; if (clazz == null) { clazz = class$com$tridium$platform$daemon$BAppSurrogate = BAppSurrogate.class("[Lcom.tridium.platform.daemon.BAppSurrogate;", false); } TYPE = Sys.loadType((Class)clazz); connectedIcon = BIcon.std((String)"database.png"); disconnectedIcon = BIcon.std((String)"databaseDisconnected.png"); lex = Lexicon.make((String)"platform"); log = Log.getLog((String)"platform.appSurrogate"); } protected static class GetAppOutputMessage extends DaemonMessage { private StringBuffer path; public String getMessageString() { return this.path.toString(); } public GetAppOutputMessage(String string, String string2, boolean bl, boolean bl2) { this.path = new StringBuffer(string); this.path.append("?action=getoutput"); this.path.append("&").append(string).append("=").append(HttpUtil.encodeUrl((String)string2)); this.path.append("&follow=").append(String.valueOf(bl)); this.path.append("&updatesonly=").append(String.valueOf(bl2)); } } protected static class UpdateLogBufferSizeMessage extends XmlResponseMessage { private StringBuffer path; public String getMessageString() { return this.path.toString(); } public UpdateLogBufferSizeMessage(String string, String string2, int n, int n2, boolean bl) { this.path = new StringBuffer(string); this.path.append("?action=update"); this.path.append("&").append(string).append("=").append(HttpUtil.encodeUrl((String)string2)); this.path.append("&logbuffersize=").append(n); this.path.append("&logbufferfilesize=").append(n2); if (bl) { this.path.append("&save=true"); } } } protected static class StartAppMessage extends XmlResponseMessage { private StringBuffer path; public String getMessageString() { return this.path.toString(); } public StartAppMessage(String string, String string2) { this.path = new StringBuffer(string); this.path.append("?action=start"); this.path.append("&").append(string).append("=").append(HttpUtil.encodeUrl((String)string2)); } } /* * Illegal identifiers - consider using --renameillegalidents true */ protected static class OutputWatcher extends Thread { private InputStream in; private CancelableDaemonSessionTask task; private DaemonSessionTaskListener listener; private boolean stopped; private StringBuffer buf; /* * WARNING - Removed back jump from a try to a catch block - possible behaviour change. * Enabled aggressive block sorting * Enabled unnecessary exception pruning * Enabled aggressive exception aggregation */ public void run() { if (this.listener == null) { return; } this.stopped = false; byte[] byArray = new byte[1024]; int n = 0; try { try { this.checkCanceled(); while (!this.stopped) { try { n = this.in.read(byArray, 0, 1024); } catch (NullPointerException nullPointerException) { throw new IOException(); } catch (InterruptedIOException interruptedIOException) { this.checkCanceled(); continue; } this.checkCanceled(); if (this.stopped) continue; if (n >= 0) { this.append(new String(byArray, 0, n)); continue; } this.stopWatcher(false); } } catch (EOFException eOFException) { String string = "\n" + lex.getText("InputStreamPane.eof"); this.append(string.getBytes(), 0, string.length()); } catch (IOException iOException) { if (!this.stopped) { iOException.printStackTrace(System.out); } } } catch (Throwable throwable) { Object var4_9 = null; this.stopWatcher(false); throw throwable; } { Object var4_10 = null; this.stopWatcher(false); return; } } public void append(Throwable throwable) { ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); throwable.printStackTrace(new PrintStream(byteArrayOutputStream)); this.append(byteArrayOutputStream.toString()); } public void append(byte[] byArray, int n, int n2) { this.append(new String(byArray, n, n2)); } public synchronized void append(String string) { this.buf.append(string); int n = -1; while ((n = this.indexOf(this.buf, '\n')) >= 0) { this.task.setMessage(this.buf.substring(0, n)); this.listener.taskUpdated(this.task); this.buf.delete(0, n + 1); } } private final synchronized int indexOf(StringBuffer stringBuffer, char c) { int n = stringBuffer.length(); int n2 = 0; while (n2 < n) { if (stringBuffer.charAt(n2) == c) { return n2; } ++n2; } return -1; } public void stopWatcher() { this.stopWatcher(true); } public void stopWatcher(boolean bl) { if (this.stopped) { return; } this.stopped = true; try { this.in.close(); } catch (Exception exception) { exception.printStackTrace(); } if (bl) { try { this.join(); } catch (Exception exception) { exception.printStackTrace(); } } } private final void checkCanceled() { if (this.task != null && this.task.isCanceled()) { this.stopWatcher(false); } } private final /* synthetic */ void this() { this.stopped = true; this.buf = new StringBuffer(); } public OutputWatcher(InputStream inputStream, CancelableDaemonSessionTask cancelableDaemonSessionTask, DaemonSessionTaskListener daemonSessionTaskListener) { super("AppSurrogate:OutputWatcher"); this.this(); this.in = inputStream; this.task = cancelableDaemonSessionTask; this.listener = daemonSessionTaskListener; } } protected static class StopAppMessage extends XmlResponseMessage { private StringBuffer path; public String getMessageString() { return this.path.toString(); } public StopAppMessage(String string, String string2) { this.path = new StringBuffer(string); this.path.append("?action=stop"); this.path.append("&").append(string).append("=").append(HttpUtil.encodeUrl((String)string2)); this.path.append("&restartOverride=").append(2); } } protected static class RestartAppMessage extends XmlResponseMessage { private StringBuffer path; public String getMessageString() { return this.path.toString(); } public RestartAppMessage(String string, String string2, boolean bl) { this.path = new StringBuffer(string); if (bl) { this.path.append("?action=kill"); } else { this.path.append("?action=stop"); } this.path.append("&").append(string).append("=").append(HttpUtil.encodeUrl((String)string2)); this.path.append("&restartOverride=").append(1); } } protected static class KillAppMessage extends XmlResponseMessage { private StringBuffer path; public String getMessageString() { return this.path.toString(); } public KillAppMessage(String string, String string2) { this(string, string2, false); } public KillAppMessage(String string, String string2, boolean bl) { this.path = new StringBuffer(string); this.path.append("?action=kill"); this.path.append("&").append(string).append("=").append(HttpUtil.encodeUrl((String)string2)); this.path.append("&restartOverride=").append(2); this.path.append("&block=").append(String.valueOf(bl)); } } }