> On Aug. 17, 2017, 5:35 p.m., Jared Stewart wrote: > > geode-core/src/main/java/org/apache/geode/distributed/LocatorLauncher.java > > Lines 2017 (patched) > > <https://reviews.apache.org/r/61701/diff/1/?file=1798850#file1798850line2020> > > > > I think this double-ternary might be easier to read if we split it up > > into a few separate statements. > > Ken Howe wrote: > Agree with you that the double ternary sin't the most readable construct. > However, I ended up using it because the `this()` call has to be the first > statement in the constructor. The conditionals guard against NPEs from the > possible locations where this error constructor is called. > > I'm open to other refactoring suggestions to make this easier to > understand.
I would suggest this sort of pattern: ``` public LocatorState(final LocatorLauncher launcher, final Status status, final String errorMessage) { this(status, // status errorMessage, // statusMessage System.currentTimeMillis(), // timestamp getLocatorLocation(launcher), null, // pid 0L, // uptime launcher.getWorkingDirectory(), // workingDirectory ManagementFactory.getRuntimeMXBean().getInputArguments(), // jvmArguments null, // classpath GemFireVersion.getGemFireVersion(), // gemfireVersion System.getProperty("java.version"), // javaVersion null, // logFile launcher.getBindAddressAsString(), // host launcher.getPortAsString(), // port null);// memberName } private static String getLocatorLocation(LocatorLauncher launcher) { return launcher.getPort() == null ? launcher.getId() : HostUtils.getLocatorId((launcher.getBindAddress() == null) ? HostUtils.getLocalHost() : launcher.getBindAddress().getCanonicalHostName(), launcher.getPort()); } ``` where then you can split up them implementation of `getLocatorLocation` into several separate lines. - Jared ----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviews.apache.org/r/61701/#review183145 ----------------------------------------------------------- On Aug. 16, 2017, 9:21 p.m., Ken Howe wrote: > > ----------------------------------------------------------- > This is an automatically generated e-mail. To reply, visit: > https://reviews.apache.org/r/61701/ > ----------------------------------------------------------- > > (Updated Aug. 16, 2017, 9:21 p.m.) > > > Review request for geode, Emily Yeh, Jinmei Liao, Jared Stewart, Kirk Lund, > and Patrick Rhomberg. > > > Repository: geode > > > Description > ------- > > Updated tests for changes in the error constructors for ServerState and > LocatorState. > > Minor spelling corrections. > > I've updated the fix for GEODE-3277 and rebased on top of the @klund's recent > process controller updates > > > Diffs > ----- > > > geode-assembly/src/test/java/org/apache/geode/management/internal/cli/commands/StatusLocatorRealGfshTest.java > 3a98373938e3de21da6badcf460dae3648218ac6 > geode-core/src/main/java/org/apache/geode/distributed/LocatorLauncher.java > 83c1ab533e3dea323a8a99f7002b9464a54dfc25 > geode-core/src/main/java/org/apache/geode/distributed/ServerLauncher.java > ae64691605130c9b212a3a33bb65ae37b28af02b > > geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/lifecycle/GfshStatusCommandsIntegrationTest.java > dd5841f4cffca38da07a11f381cf4174d7264349 > > geode-core/src/test/java/org/apache/geode/test/dunit/rules/GfshShellConnectionRule.java > e7f17ef208a1708f385c7c4041affb70fd309a4c > > > Diff: https://reviews.apache.org/r/61701/diff/1/ > > > Testing > ------- > > Precheckin is in progress. > > > Thanks, > > Ken Howe > >