in server/core/src/main/java/org/apache/vysper/xmpp/modules/roster/SubscriptionType.java [69:103]
public static SubscriptionType addState(SubscriptionType old, SubscriptionType add) {
switch (add) {
case BOTH:
throw new RuntimeException("add 'both' not valid");
case FROM:
if (!old.acceptsFrom())
throw new RuntimeException("cannot add " + add.value() + " to " + old.value());
if (old == NONE)
return FROM;
if (old == TO)
return BOTH;
throw new RuntimeException("add FROM not supported for " + old.value());
case NONE:
return add;
case REMOVE:
throw new RuntimeException("add 'remove' not valid");
case TO:
if (!old.acceptsTo())
throw new RuntimeException("cannot add " + add.value() + " to " + old.value());
if (old == NONE)
return TO;
if (old == FROM)
return BOTH;
throw new RuntimeException("add TO not supported for " + old.value());
default:
throw new RuntimeException("not implemented: adding " + add.value());
}
}