*******************************************************************************/
package org.simantics.diagram.adapter;
-import gnu.trove.map.hash.TObjectIntHashMap;
-import gnu.trove.set.hash.THashSet;
-
import java.awt.geom.AffineTransform;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayDeque;
import org.simantics.utils.threads.ThreadUtils;
import org.simantics.utils.threads.logger.ITask;
import org.simantics.utils.threads.logger.ThreadLogger;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import gnu.trove.map.hash.TObjectIntHashMap;
+import gnu.trove.set.hash.THashSet;
/**
* This class loads a diagram contained in the graph database into the runtime
*/
public class GraphToDiagramSynchronizer extends AbstractDisposable implements IDiagramLoader, IModifiableSynchronizationContext {
+ private static final Logger LOGGER = LoggerFactory.getLogger(GraphToDiagramSynchronizer.class);
+
/**
* Controls whether the class adds hint listeners to each diagram element
* that try to perform basic sanity checks on changes happening in element
}
} catch (InterruptedException e) {
// Shouldn't happen.
- e.printStackTrace();
+ LOGGER.error("Dispose interrupted!", e);
} finally {
detachSessionListener();
g.getSession().asyncRequest(new AsyncReadRequest() {
@Override
public void run(AsyncReadGraph graph) {
- profileObserver.listen(graph, GraphToDiagramSynchronizer.this);
+ ProfileObserver po = profileObserver;
+ if (po != null)
+ po.listen(graph, GraphToDiagramSynchronizer.this);
+ else
+ LOGGER.info("profileObserver has been disposed already!");
}
});
Resource resource = ElementUtils.adapt(ec, Resource.class);
if (resource == null) {
pass = false;
- new Exception("Attempted to add an element to the diagram that is not adaptable to Resource: " + e + ", class: " + ec).printStackTrace();
+ LOGGER.error("", new Exception("Attempted to add an element to the diagram that is not adaptable to Resource: " + e + ", class: " + ec));
}
// Sanity check connection hints