Skip to content

Commit

Permalink
Proxy*Mangers Nonnull
Browse files Browse the repository at this point in the history
  • Loading branch information
silverailscolo committed Dec 22, 2019
1 parent 9cd1bdd commit 75106b5
Show file tree
Hide file tree
Showing 12 changed files with 213 additions and 182 deletions.
2 changes: 1 addition & 1 deletion java/src/jmri/TurnoutManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -217,7 +217,7 @@ public interface TurnoutManager extends ProvidingManager<Turnout> {
public boolean isControlTypeSupported(@Nonnull String systemName);

/**
* A method that determines if it is possible to add a range of turnouts in
* Determines if it is possible to add a range of turnouts in
* numerical order.
*
* @param systemName the starting turnout system name; ignored in all known
Expand Down
11 changes: 7 additions & 4 deletions java/src/jmri/jmrix/internal/InternalTurnoutManager.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package jmri.jmrix.internal;

import javax.annotation.Nonnull;
import jmri.NamedBean;
import jmri.Turnout;
import jmri.managers.AbstractTurnoutManager;
Expand All @@ -21,6 +22,7 @@ public InternalTurnoutManager(InternalSystemConnectionMemo memo) {
* {@inheritDoc}
*/
@Override
@Nonnull
public InternalSystemConnectionMemo getMemo() {
return (InternalSystemConnectionMemo) memo;
}
Expand All @@ -29,7 +31,7 @@ public InternalSystemConnectionMemo getMemo() {
* Create and return an internal (no layout connection) turnout
*/
@Override
protected Turnout createNewTurnout(String systemName, String userName) {
protected Turnout createNewTurnout(@Nonnull String systemName, String userName) {
return new AbstractTurnout(systemName, userName) {

@Override
Expand All @@ -43,19 +45,19 @@ protected void turnoutPushbuttonLockout(boolean b) {
}

@Override
public int compareSystemNameSuffix(String suffix1, String suffix2, NamedBean n) {
public int compareSystemNameSuffix(@Nonnull String suffix1, @Nonnull String suffix2, NamedBean n) {
return (new PreferNumericComparator()).compare(suffix1, suffix2);
}
};
}

@Override
public boolean allowMultipleAdditions(String systemName) {
public boolean allowMultipleAdditions(@Nonnull String systemName) {
return true;
}

@Override
public String createSystemName(String curAddress, String prefix) throws jmri.JmriException {
public String createSystemName(@Nonnull String curAddress, @Nonnull String prefix) throws jmri.JmriException {
return prefix + typeLetter() + curAddress;
}

Expand All @@ -71,6 +73,7 @@ public String getEntryToolTip() {
* Turnout operation support. Internal turnouts don't need retries.
*/
@Override
@Nonnull
public String[] getValidOperationTypes() {
return new String[]{"NoFeedback"};
}
Expand Down
8 changes: 5 additions & 3 deletions java/src/jmri/jmrix/powerline/SerialTurnoutManager.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package jmri.jmrix.powerline;

import java.util.Locale;
import javax.annotation.Nonnull;
import jmri.Turnout;
import jmri.managers.AbstractTurnoutManager;
import org.slf4j.Logger;
Expand All @@ -18,7 +19,7 @@
*/
public class SerialTurnoutManager extends AbstractTurnoutManager {

SerialTrafficController tc = null;
private SerialTrafficController tc = null;

public SerialTurnoutManager(SerialTrafficController tc) {
super(tc.getAdapterMemo());
Expand All @@ -29,17 +30,18 @@ public SerialTurnoutManager(SerialTrafficController tc) {
* {@inheritDoc}
*/
@Override
@Nonnull
public SerialSystemConnectionMemo getMemo() {
return (SerialSystemConnectionMemo) memo;
}

@Override
public boolean allowMultipleAdditions(String systemName) {
public boolean allowMultipleAdditions(@Nonnull String systemName) {
return false;
}

@Override
public String getNextValidAddress(String curAddress, String prefix) {
public String getNextValidAddress(@Nonnull String curAddress, @Nonnull String prefix) {

//If the hardware address passed does not already exist then this can
//be considered the next valid address.
Expand Down
61 changes: 52 additions & 9 deletions java/src/jmri/managers/AbstractProxyManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,22 +4,14 @@
import java.beans.PropertyVetoException;
import java.beans.VetoableChangeListener;
import java.util.*;

import javax.annotation.CheckReturnValue;
import javax.annotation.Nonnull;
import javax.annotation.OverridingMethodsMustInvokeSuper;

import jmri.InstanceManager;
import jmri.Manager;
import jmri.NamedBean;
import jmri.NamedBeanPropertyDescriptor;
import jmri.ProvidingManager;
import jmri.ProxyManager;
import jmri.*;
import jmri.jmrix.SystemConnectionMemo;
import jmri.jmrix.internal.InternalSystemConnectionMemo;
import jmri.util.NamedBeanComparator;
import jmri.util.com.dictiography.collections.IndexedTreeSet;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

Expand Down Expand Up @@ -371,6 +363,57 @@ protected int match(String systemName) {
return index;
}

/**
* Shared method to create a systemName based on the address base, the prefix and manager class.
*
* @param curAddress base address to use
* @param prefix system prefix to use
* @param managerType BeanType manager (method is used for Turnout and Sensor Managers)
* @return a valid system name for this connection
* @throws JmriException if systemName cannot be created
*/
String createSystemName(String curAddress, String prefix, Class managerType) throws JmriException {
for (Manager<E> m : mgrs) {
if (prefix.equals(m.getSystemPrefix()) && managerType.equals(m.getClass())) {
try {
if (managerType == TurnoutManager.class) {
return ((TurnoutManager) m).createSystemName(curAddress, prefix);
} else if (managerType == SensorManager.class) {
return ((SensorManager) m).createSystemName(curAddress, prefix);
} else {
log.warn("createSystemName requested for incompatible Manager");
}
} catch (jmri.JmriException ex) {
throw ex;
}
}
}
throw new jmri.JmriException("Manager could not be found for System Prefix " + prefix);
}

public String getNextValidAddress(@Nonnull String curAddress, @Nonnull String prefix, char typeLetter) throws jmri.JmriException {
for (Manager<E> m : mgrs) {
log.debug("NextValidAddress requested for {}", curAddress);
if (prefix.equals(m.getSystemPrefix()) && typeLetter == m.typeLetter()) {
try {
switch (typeLetter) { // use #getDefaultManager() instead?
case 'T':
return ((TurnoutManager) m).getNextValidAddress(curAddress, prefix);
case 'S':
return ((SensorManager) m).getNextValidAddress(curAddress, prefix);
case 'R':
return ((ReporterManager) m).getNextValidAddress(curAddress, prefix);
default:
return null;
}
} catch (jmri.JmriException ex) {
throw ex;
}
}
}
return null;
}

/** {@inheritDoc} */
@Override
public void deleteBean(@Nonnull E s, @Nonnull String property) throws PropertyVetoException {
Expand Down
12 changes: 9 additions & 3 deletions java/src/jmri/managers/AbstractTurnoutManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ public char typeLetter() {

/** {@inheritDoc} */
@Override
@Nonnull
public Turnout provideTurnout(@Nonnull String name) {
Turnout result = getTurnout(name);
if (result == null) {
Expand Down Expand Up @@ -69,12 +70,13 @@ public Turnout getBySystemName(@Nonnull String name) {

/** {@inheritDoc} */
@Override
public Turnout getByUserName(String key) {
public Turnout getByUserName(@Nonnull String key) {
return _tuser.get(key);
}

/** {@inheritDoc} */
@Override
@Nonnull
public Turnout newTurnout(@Nonnull String systemName, @CheckForNull String userName) {
Objects.requireNonNull(systemName, "SystemName cannot be null. UserName was " + ((userName == null) ? "null" : userName)); // NOI18N

Expand Down Expand Up @@ -140,6 +142,7 @@ public Turnout newTurnout(@Nonnull String systemName, @CheckForNull String userN

/** {@inheritDoc} */
@Override
@Nonnull
public String getBeanTypeHandled(boolean plural) {
return Bundle.getMessage(plural ? "BeanNameTurnouts" : "BeanNameTurnout");
}
Expand All @@ -154,12 +157,14 @@ public Class<Turnout> getNamedBeanClass() {

/** {@inheritDoc} */
@Override
@Nonnull
public String getClosedText() {
return Bundle.getMessage("TurnoutStateClosed");
}

/** {@inheritDoc} */
@Override
@Nonnull
public String getThrownText() {
return Bundle.getMessage("TurnoutStateThrown");
}
Expand Down Expand Up @@ -217,6 +222,7 @@ public boolean isControlTypeSupported(@Nonnull String systemName) {

/** {@inheritDoc} */
@Override
@Nonnull
public String[] getValidOperationTypes() {
if (jmri.InstanceManager.getNullableDefault(jmri.CommandStation.class) != null) {
return new String[]{"Sensor", "Raw", "NoFeedback"};
Expand Down Expand Up @@ -301,8 +307,8 @@ public String getNextValidAddress(@Nonnull String curAddress, @Nonnull String pr
}
}

String defaultClosedSpeed = "Normal";
String defaultThrownSpeed = "Restricted";
private String defaultClosedSpeed = "Normal";
private String defaultThrownSpeed = "Restricted";

/** {@inheritDoc} */
@Override
Expand Down
40 changes: 21 additions & 19 deletions java/src/jmri/managers/ProxyIdTagManager.java
Original file line number Diff line number Diff line change
@@ -1,16 +1,14 @@
package jmri.managers;

import java.util.List;
import java.util.ArrayList;
import java.util.SortedSet;
import javax.annotation.Nonnull;

import jmri.IdTag;
import jmri.IdTagManager;
import jmri.Manager;
import jmri.Reporter;
import jmri.SignalHead;

import java.util.List;
import java.util.ArrayList;
import java.util.SortedSet;
import jmri.InstanceManager;
import jmri.jmrix.internal.InternalSystemConnectionMemo;

Expand Down Expand Up @@ -51,8 +49,9 @@ public boolean isInitialised() {
* {@inheritDoc}
*/
@Override
@Nonnull
public Manager<IdTag> getDefaultManager() {
if(defaultManager!=getInternalManager()){
if(defaultManager != getInternalManager()){
defaultManager = getInternalManager();
}
return defaultManager;
Expand All @@ -73,7 +72,7 @@ protected AbstractManager<IdTag> makeInternalManager() {
* @return Null if nothing by that name exists
*/
@Override
public IdTag getIdTag(String name) {
public IdTag getIdTag(@Nonnull String name) {
init();
return super.getNamedBean(name);
}
Expand All @@ -92,10 +91,11 @@ protected IdTag makeBean(int i, String systemName, String userName) {
return ((IdTagManager) getMgr(i)).newIdTag(systemName, userName);
}

@Override
/**
* {@inheritDoc}
*/
@Override
@Nonnull
public IdTag provide(@Nonnull String name) throws IllegalArgumentException {
return provideIdTag(name);
}
Expand All @@ -109,37 +109,36 @@ public IdTag provide(@Nonnull String name) throws IllegalArgumentException {
* @return Never null under normal circumstances
*/
@Override
public IdTag provideIdTag(String name) throws IllegalArgumentException {
@Nonnull
public IdTag provideIdTag(@Nonnull String name) throws IllegalArgumentException {
init();
return super.provideNamedBean(name);
}

/**
* Locate an instance based on a system name. Returns null if no instance
* already exists.
* Locate an instance based on a system name.
*
* @return requested IdTag object or null if none exists
*/
@Override
public IdTag getBySystemName(String systemName) {
public IdTag getBySystemName(@Nonnull String systemName) {
init();
return super.getBeanBySystemName(systemName);
}

/**
* Locate an instance based on a user name. Returns null if no instance
* already exists.
* Locate an instance based on a user name.
*
* @return requested Turnout object or null if none exists
*/
@Override
public IdTag getByUserName(String userName) {
public IdTag getByUserName(@Nonnull String userName) {
init();
return super.getBeanByUserName(userName);
}

/**
* Return an instance with the specified system and user names. Note that
* Get an instance with the specified system and user names. Note that
* two calls with the same arguments will get the same instance; there is
* only one IdTag object representing a given physical light and therefore
* only one with a specific system or user name.
Expand Down Expand Up @@ -167,13 +166,14 @@ public IdTag getByUserName(String userName) {
* @return requested IdTag object (never null)
*/
@Override
public IdTag newIdTag(String systemName, String userName) {
@Nonnull
public IdTag newIdTag(@Nonnull String systemName, String userName) {
init();
return newNamedBean(systemName, userName);
}

@Override
public IdTag getByTagID(String tagID) {
public IdTag getByTagID(@Nonnull String tagID) {
init();
return getBySystemName(makeSystemName(tagID));
}
Expand All @@ -187,6 +187,7 @@ public String getEntryToolTip() {
}

@Override
@Nonnull
public String getBeanTypeHandled(boolean plural) {
return Bundle.getMessage(plural ? "BeanNameIdTags" : "BeanNameIdTag");
}
Expand Down Expand Up @@ -244,7 +245,8 @@ public boolean isFastClockUsed() {
}

@Override
public List<IdTag> getTagsForReporter(Reporter reporter, long threshold) {
@Nonnull
public List<IdTag> getTagsForReporter(@Nonnull Reporter reporter, long threshold) {
init();
return new ArrayList<>();
}
Expand Down
Loading

0 comments on commit 75106b5

Please sign in to comment.