@Override @SuppressWarnings("unchecked") public void onReceive(final Object message) throws Exception { if (message instanceof MoreWorkMessage) { if (stateTracker.getCurrent() != null && stateTracker.getCurrent().getClass().isAssignableFrom(UpdateableImpl.class)) { BaseMultiLayerNetwork current = (BaseMultiLayerNetwork) stateTracker.getCurrent().get(); if (current.getLayers() == null || current.getSigmoidLayers() == null) throw new IllegalStateException("Invalid model found when prompted to save.."); current.clearInput(); stateTracker.setCurrent(new UpdateableImpl(current)); if (stateTracker.hasBegun()) modelSaver.save(current); } else if (stateTracker .getCurrent() .get() .getClass() .isAssignableFrom(DeepAutoEncoder.class)) { DeepAutoEncoder current = (DeepAutoEncoder) stateTracker.getCurrent().get(); stateTracker.setCurrent(new UpdateableEncoderImpl(current)); if (stateTracker.hasBegun()) modelSaver.save(current); } } else if (message instanceof DistributedPubSubMediator.UnsubscribeAck || message instanceof DistributedPubSubMediator.SubscribeAck) { // reply mediator.tell( new DistributedPubSubMediator.Publish(ClusterListener.TOPICS, message), getSelf()); log.info("Sending sub/unsub over"); } else unhandled(message); }