Skip to content

Commit b079aec

Browse files
authored
Merge pull request iluwatar#794 from iluwatar/Issue781
iluwatar#781 Resolved ClasscastException from Acyclic Visitor
2 parents 9e56e5c + 709405d commit b079aec

File tree

4 files changed

+12
-10
lines changed

4 files changed

+12
-10
lines changed

acyclic-visitor/src/main/java/com/iluwatar/acyclicvisitor/AllModemVisitor.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,9 @@
2323
package com.iluwatar.acyclicvisitor;
2424

2525
/**
26-
* All ModemVisitor interface extends all visitor interfaces
26+
* All ModemVisitor interface extends all visitor interfaces. This interface
27+
* provides ease of use when a visitor needs to visit all modem types.
2728
*/
28-
public interface AllModemVisitor extends ModemVisitor, ZoomVisitor, HayesVisitor{
29+
public interface AllModemVisitor extends ZoomVisitor, HayesVisitor{
2930

3031
}

acyclic-visitor/src/main/java/com/iluwatar/acyclicvisitor/ConfigureForUnixVisitor.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,10 @@
2727

2828
/**
2929
* ConfigureForUnixVisitor class implements zoom's visit method for Unix
30-
* manufacturer
30+
* manufacturer, unlike traditional visitor pattern, this class may selectively implement
31+
* visit for other modems.
3132
*/
32-
public class ConfigureForUnixVisitor implements ModemVisitor, ZoomVisitor {
33+
public class ConfigureForUnixVisitor implements ZoomVisitor {
3334

3435
private static final Logger LOGGER = LoggerFactory.getLogger(ConfigureForUnixVisitor.class);
3536

acyclic-visitor/src/main/java/com/iluwatar/acyclicvisitor/Hayes.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,10 @@ public class Hayes extends Modem {
3737
*/
3838
@Override
3939
public void accept(ModemVisitor modemVisitor) {
40-
try {
40+
if (modemVisitor instanceof HayesVisitor) {
4141
((HayesVisitor) modemVisitor).visit(this);
42-
} catch (ClassCastException e) {
43-
LOGGER.error("Unable to cast to HayesVisitor");
42+
} else {
43+
LOGGER.info("Only HayesVisitor is allowed to visit Hayes modem");
4444
}
4545

4646
}

acyclic-visitor/src/main/java/com/iluwatar/acyclicvisitor/Zoom.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,10 @@ public class Zoom extends Modem {
3737
*/
3838
@Override
3939
public void accept(ModemVisitor modemVisitor) {
40-
try {
40+
if (modemVisitor instanceof ZoomVisitor) {
4141
((ZoomVisitor) modemVisitor).visit(this);
42-
} catch (ClassCastException e) {
43-
LOGGER.error("Unable to cast to ZoomVisitor");
42+
} else {
43+
LOGGER.info("Only ZoomVisitor is allowed to visit Zoom modem");
4444
}
4545
}
4646

0 commit comments

Comments
 (0)