Skip to content

Commit

Permalink
store the instance manager on object creation.
Browse files Browse the repository at this point in the history
  • Loading branch information
pabender committed Mar 4, 2020
1 parent 4d5d408 commit 7d755b2
Show file tree
Hide file tree
Showing 24 changed files with 289 additions and 132 deletions.
24 changes: 16 additions & 8 deletions java/src/jmri/jmris/AbstractLightServer.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import jmri.InstanceManager;
import jmri.JmriException;
import jmri.Light;
Expand All @@ -22,8 +23,15 @@ abstract public class AbstractLightServer {
private final HashMap<String, LightListener> lights;
private final static Logger log = LoggerFactory.getLogger(AbstractLightServer.class);

public AbstractLightServer() {
private InstanceManager instanceManager;

public AbstractLightServer(){
this(InstanceManager.getDefault());
}

public AbstractLightServer(InstanceManager instanceManager) {
lights = new HashMap<String, LightListener>();
this.instanceManager = instanceManager;
}

/*
Expand All @@ -37,7 +45,7 @@ public AbstractLightServer() {

synchronized protected void addLightToList(String lightName) {
if (!lights.containsKey(lightName)) {
Light li = InstanceManager.lightManagerInstance().getLight(lightName);
Light li = instanceManager.lightManagerInstance().getLight(lightName);
if (li != null) {
lights.put(lightName, new LightListener(lightName));
li.addPropertyChangeListener(lights.get(lightName));
Expand All @@ -49,7 +57,7 @@ synchronized protected void addLightToList(String lightName) {

synchronized protected void removeLightFromList(String lightName) {
if (lights.containsKey(lightName)) {
Light li = InstanceManager.lightManagerInstance().getLight(lightName);
Light li = instanceManager.lightManagerInstance().getLight(lightName);
if (li != null) {
li.removePropertyChangeListener(lights.get(lightName));
lights.remove(lightName);
Expand All @@ -60,7 +68,7 @@ synchronized protected void removeLightFromList(String lightName) {
}

public Light initLight(String lightName) throws IllegalArgumentException {
Light light = InstanceManager.lightManagerInstance().provideLight(lightName);
Light light = instanceManager.lightManagerInstance().provideLight(lightName);
this.addLightToList(lightName);
return light;
}
Expand All @@ -71,7 +79,7 @@ public void lightOff(String lightName) {
try {

addLightToList(lightName);
light = InstanceManager.lightManagerInstance().getLight(lightName);
light = instanceManager.lightManagerInstance().getLight(lightName);
if (light == null) {
log.error("Light {} is not available", lightName);
} else {
Expand All @@ -89,7 +97,7 @@ public void lightOn(String lightName) {
// load address from switchAddrTextField
try {
addLightToList(lightName);
light = InstanceManager.lightManagerInstance().getLight(lightName);
light = instanceManager.lightManagerInstance().getLight(lightName);

if (light == null) {
log.error("Light {} is not available", lightName);
Expand All @@ -105,7 +113,7 @@ public void lightOn(String lightName) {

public void dispose() {
for (Map.Entry<String, LightListener> light : this.lights.entrySet()) {
Light li = InstanceManager.lightManagerInstance().getLight(light.getKey());
Light li = instanceManager.lightManagerInstance().getLight(light.getKey());
if (li != null) {
li.removePropertyChangeListener(light.getValue());
}
Expand All @@ -117,7 +125,7 @@ class LightListener implements PropertyChangeListener {

LightListener(String lightName) {
name = lightName;
light = InstanceManager.lightManagerInstance().getLight(lightName);
light = instanceManager.lightManagerInstance().getLight(lightName);
}

// update state as state of light changes
Expand Down
23 changes: 15 additions & 8 deletions java/src/jmri/jmris/AbstractOperationsServer.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import java.util.Map;
import javax.management.Attribute;

import jmri.InstanceManager;
import jmri.JmriException;
import jmri.jmrit.operations.locations.LocationManager;
import jmri.jmrit.operations.rollingstock.engines.Engine;
Expand All @@ -26,17 +27,23 @@
* @author Rodney Black Copyright (C) 2012
* @author Randall Wood Copyright (C) 2012, 2014
*/
abstract public class AbstractOperationsServer implements PropertyChangeListener {
public abstract class AbstractOperationsServer implements PropertyChangeListener {

protected final TrainManager tm;
protected final LocationManager lm;
protected final HashMap<String, TrainListener> trains;
private InstanceManager instanceManager;

public AbstractOperationsServer(){
this(InstanceManager.getDefault());
}

@SuppressWarnings("LeakingThisInConstructor")
public AbstractOperationsServer() {
tm = jmri.InstanceManager.getDefault(TrainManager.class);
public AbstractOperationsServer(InstanceManager instanceManager) {
this.instanceManager = instanceManager;
tm = instanceManager.getDefault(TrainManager.class);
tm.addPropertyChangeListener(this);
lm = jmri.InstanceManager.getDefault(LocationManager.class);
lm = instanceManager.getDefault(LocationManager.class);
lm.addPropertyChangeListener(this);
addPropertyChangeListeners();
trains = new HashMap<>();
Expand Down Expand Up @@ -270,13 +277,13 @@ private void removePropertyChangeListeners() {
synchronized protected void addTrainToList(String trainId) {
if (!trains.containsKey(trainId)) {
trains.put(trainId, new TrainListener(trainId));
jmri.InstanceManager.getDefault(TrainManager.class).getTrainById(trainId).addPropertyChangeListener(trains.get(trainId));
instanceManager.getDefault(TrainManager.class).getTrainById(trainId).addPropertyChangeListener(trains.get(trainId));
}
}

synchronized protected void removeTrainFromList(String trainId) {
if (trains.containsKey(trainId)) {
jmri.InstanceManager.getDefault(TrainManager.class).getTrainById(trainId).removePropertyChangeListener(trains.get(trainId));
instanceManager.getDefault(TrainManager.class).getTrainById(trainId).removePropertyChangeListener(trains.get(trainId));
trains.remove(trainId);
}
}
Expand All @@ -294,7 +301,7 @@ public void dispose() {
lm.removePropertyChangeListener(this);
}
for (Map.Entry<String, TrainListener> train : this.trains.entrySet()) {
jmri.InstanceManager.getDefault(TrainManager.class).getTrainById(train.getKey()).removePropertyChangeListener(train.getValue());
instanceManager.getDefault(TrainManager.class).getTrainById(train.getKey()).removePropertyChangeListener(train.getValue());
}
this.trains.clear();
}
Expand All @@ -318,7 +325,7 @@ protected class TrainListener implements PropertyChangeListener {
private final Train train;

protected TrainListener(String trainId) {
this.train = jmri.InstanceManager.getDefault(TrainManager.class).getTrainById(trainId);
this.train = instanceManager.getDefault(TrainManager.class).getTrainById(trainId);
}

@Override
Expand Down
31 changes: 12 additions & 19 deletions java/src/jmri/jmris/AbstractPowerServer.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,29 +13,22 @@
*
* @author Paul Bender Copyright (C) 2010
*/
abstract public class AbstractPowerServer implements PropertyChangeListener {

public AbstractPowerServer() {

// Check to see if the Power Manger has a current status
/* if(mgrOK()) {
try {
sendStatus(p.getPower());
} catch (JmriException ex) {
try {
sendErrorStatus();
} catch (IOException ie) {
} catch (java.lang.NullPointerException je) {
}
} catch(IOException ie2) {
} catch (java.lang.NullPointerException je2) {
}
}*/
public abstract class AbstractPowerServer implements PropertyChangeListener {

private InstanceManager instanceManager;

public AbstractPowerServer(){
this(InstanceManager.getDefault());
}

public AbstractPowerServer(InstanceManager instanceManager){

this.instanceManager = instanceManager;
}

protected boolean mgrOK() {
if (p == null) {
p = InstanceManager.getNullableDefault(PowerManager.class);
p = instanceManager.getNullableDefault(PowerManager.class);
if (p == null) {
log.error("No power manager instance found");
try {
Expand Down
13 changes: 10 additions & 3 deletions java/src/jmri/jmris/AbstractProgrammerServer.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,16 @@ protected Programmer getProgrammer() {

protected int lastCV = -1;

public AbstractProgrammerServer() {
if (InstanceManager.getNullableDefault(jmri.GlobalProgrammerManager.class) != null) {
p = InstanceManager.getDefault(jmri.GlobalProgrammerManager.class).getGlobalProgrammer();
private InstanceManager instanceManager;

public AbstractProgrammerServer(){
this(InstanceManager.getDefault());
}

public AbstractProgrammerServer(InstanceManager instanceManager) {
this.instanceManager = instanceManager;
if (instanceManager.getNullableDefault(jmri.GlobalProgrammerManager.class) != null) {
p = instanceManager.getDefault(jmri.GlobalProgrammerManager.class).getGlobalProgrammer();
} else {
log.warn("no Service Mode ProgrammerManager configured, network programming disabled");
}
Expand Down
21 changes: 14 additions & 7 deletions java/src/jmri/jmris/AbstractReporterServer.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,15 @@ abstract public class AbstractReporterServer {
private final HashMap<String, ReporterListener> reporters;
private static final Logger log = LoggerFactory.getLogger(AbstractReporterServer.class);

public AbstractReporterServer() {
private InstanceManager instanceManager;

public AbstractReporterServer(){
this(InstanceManager.getDefault());
}

public AbstractReporterServer(InstanceManager instanceManager) {
reporters = new HashMap<String, ReporterListener>();
this.instanceManager = instanceManager;
}

/*
Expand All @@ -38,7 +45,7 @@ public AbstractReporterServer() {
synchronized protected void addReporterToList(String reporterName) {
if (!reporters.containsKey(reporterName)) {
reporters.put(reporterName, new ReporterListener(reporterName));
Reporter reporter = InstanceManager.getDefault(jmri.ReporterManager.class).getReporter(reporterName);
Reporter reporter = instanceManager.getDefault(jmri.ReporterManager.class).getReporter(reporterName);
if(reporter!=null) {
reporter.addPropertyChangeListener(reporters.get(reporterName));
}
Expand All @@ -47,7 +54,7 @@ synchronized protected void addReporterToList(String reporterName) {

synchronized protected void removeReporterFromList(String reporterName) {
if (reporters.containsKey(reporterName)) {
Reporter reporter = InstanceManager.getDefault(jmri.ReporterManager.class).getReporter(reporterName);
Reporter reporter = instanceManager.getDefault(jmri.ReporterManager.class).getReporter(reporterName);
if(reporter!=null) {
reporter.removePropertyChangeListener(reporters.get(reporterName));
}
Expand All @@ -56,7 +63,7 @@ synchronized protected void removeReporterFromList(String reporterName) {
}

public Reporter initReporter(String reporterName) throws IllegalArgumentException {
Reporter reporter = InstanceManager.getDefault(jmri.ReporterManager.class).provideReporter(reporterName);
Reporter reporter = instanceManager.getDefault(jmri.ReporterManager.class).provideReporter(reporterName);
this.addReporterToList(reporterName);
return reporter;
}
Expand All @@ -72,7 +79,7 @@ public void setReporterReport(String reporterName, Object r) {
// load address from reporterAddrTextField
try {
addReporterToList(reporterName);
reporter = InstanceManager.getDefault(jmri.ReporterManager.class).getReporter(reporterName);
reporter = instanceManager.getDefault(jmri.ReporterManager.class).getReporter(reporterName);
if (reporter == null) {
log.error("Reporter {} is not available", reporterName);
} else {
Expand All @@ -86,7 +93,7 @@ public void setReporterReport(String reporterName, Object r) {

public void dispose() {
for (Map.Entry<String, ReporterListener> entry: this.reporters.entrySet()) {
Reporter reporter = InstanceManager.getDefault(jmri.ReporterManager.class).getReporter(entry.getKey());
Reporter reporter = instanceManager.getDefault(jmri.ReporterManager.class).getReporter(entry.getKey());
if(reporter!=null) {
reporter.removePropertyChangeListener(entry.getValue());
}
Expand All @@ -98,7 +105,7 @@ class ReporterListener implements PropertyChangeListener {

ReporterListener(String reporterName) {
name = reporterName;
reporter = InstanceManager.getDefault(jmri.ReporterManager.class).getReporter(reporterName);
reporter = instanceManager.getDefault(jmri.ReporterManager.class).getReporter(reporterName);
}

// update state as state of reporter changes
Expand Down
19 changes: 13 additions & 6 deletions java/src/jmri/jmris/AbstractRouteServer.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,14 @@ abstract public class AbstractRouteServer {
private final HashMap<String, RouteListener> routes;
private final static Logger log = LoggerFactory.getLogger(AbstractRouteServer.class);

public AbstractRouteServer() {
private static InstanceManager instanceManager;

public AbstractRouteServer(){
this(InstanceManager.getDefault());
}

public AbstractRouteServer(InstanceManager instanceManager) {
this.instanceManager = instanceManager;
routes = new HashMap<String, RouteListener>();
}

Expand All @@ -38,7 +45,7 @@ public AbstractRouteServer() {

synchronized protected void addRouteToList(String routeName) {
if (!routes.containsKey(routeName)) {
Route r = InstanceManager.getDefault(jmri.RouteManager.class).getRoute(routeName);
Route r = instanceManager.getDefault(jmri.RouteManager.class).getRoute(routeName);
if(r!=null) {
Sensor tas = r.getTurnoutsAlgdSensor();
if (tas != null) { //only add listener if there is a turnout-aligned sensor defined
Expand All @@ -52,7 +59,7 @@ synchronized protected void addRouteToList(String routeName) {

synchronized protected void removeRouteFromList(String routeName) {
if (routes.containsKey(routeName)) {
Route r = InstanceManager.getDefault(jmri.RouteManager.class).getRoute(routeName);
Route r = instanceManager.getDefault(jmri.RouteManager.class).getRoute(routeName);
if(r!=null) {
Sensor tas = r.getTurnoutsAlgdSensor();
if (tas != null) { //only remove listener if there is a turnout-aligned sensor defined
Expand All @@ -65,7 +72,7 @@ synchronized protected void removeRouteFromList(String routeName) {

public void setRoute(String routeName) throws IOException {
try {
InstanceManager.getDefault(jmri.RouteManager.class).getRoute(routeName).setRoute();
instanceManager.getDefault(jmri.RouteManager.class).getRoute(routeName).setRoute();
addRouteToList(routeName);
} catch (NullPointerException ex) {
sendErrorStatus(routeName);
Expand All @@ -74,7 +81,7 @@ public void setRoute(String routeName) throws IOException {

public void dispose() {
for (Map.Entry<String, RouteListener> route : this.routes.entrySet()) {
Route r = InstanceManager.getDefault(jmri.RouteManager.class).getRoute(route.getKey());
Route r = instanceManager.getDefault(jmri.RouteManager.class).getRoute(route.getKey());
if (r!=null) {
Sensor tas = r.getTurnoutsAlgdSensor();
if (tas != null) { //only remove listener if there is a turnout-aligned sensor defined
Expand All @@ -92,7 +99,7 @@ class RouteListener implements PropertyChangeListener {

RouteListener(String routeName) {
name = routeName;
Route r = InstanceManager.getDefault(jmri.RouteManager.class).getRoute(name);
Route r = instanceManager.getDefault(jmri.RouteManager.class).getRoute(name);
if(r!=null) {
sensor = r.getTurnoutsAlgdSensor();
}
Expand Down
Loading

0 comments on commit 7d755b2

Please sign in to comment.