package call; public abstract class AbstractCallConnection extends AbstractId implements CallConnection { protected Contact contact; public AbstractCallConnection(Contact contact) { setContact(contact); } protected void setContact(Contact contact) { this.contact = contact; if (contact != null) { final Call call = getCall(); if (call != null) { call.addConnection(this); } else { throw new RuntimeException("This should never happen (AbstractConnection)."); } } } private Call getCall() { return CallFactory.getCall(contact); } @Override public boolean isCallOpen() { Call call = getCall(); if (call != null) return call.getState().equals(ConnectionState.OPEN); else return false; } @Override public void onCallClose() { System.out.println("onClose(): " + this.getId()); } @Override public void onCallOpen() { System.out.println("onOpen(): " + this.getId()); } public Contact getContact() { return contact; } }