- JanusGraph tGraph = graph.left().value();
- Vertex vertex = tGraph.addVertex();
- vertex.property(GraphPropertiesDictionary.LABEL.getProperty(), node.getLabel());
- Map<String, Object> properties = node.toGraphMap();
- if (properties != null) {
- setProperties(vertex, properties);
+ if (node instanceof GraphNodeLock) {
+ final Either<T, JanusGraphOperationStatus> nodeOriginal = getNode(GraphPropertiesDictionary.UNIQUE_ID.getProperty(),
+ node.getUniqueId(), clazz);
+ if (nodeOriginal.isLeft()) {
+ final Long lockTimeout = ConfigurationManager.getConfigurationManager().getConfiguration().getJanusGraphLockTimeout();
+ if (System.currentTimeMillis() - ((GraphNodeLock) nodeOriginal.left().value()).getTime() > lockTimeout * 1000L) {
+ deleteNode(node, clazz);
+ }
+ }
+ final JanusGraphTransaction tGraph = graph.left().value().tx().createThreadedTx();
+ final Vertex vertex = tGraph.addVertex();
+ vertex.property(GraphPropertiesDictionary.LABEL.getProperty(), node.getLabel());
+ final Map<String, Object> properties = node.toGraphMap();
+ if (properties != null) {
+ setProperties(vertex, properties);
+ }
+ final Map<String, Object> newProps = getProperties(vertex);
+ newNode = GraphElementFactory.createElement(node.getLabel(), GraphElementTypeEnum.Node, newProps, clazz);
+ log.debug("created node for props : {}", newProps);
+ log.debug("Node was created for ID [{}]", node.getKeyValueIdForLog());
+
+ tGraph.commit();
+ return Either.left(newNode);
+ } else {
+ final JanusGraph tGraph = graph.left().value();
+ final Vertex vertex = tGraph.addVertex();
+ vertex.property(GraphPropertiesDictionary.LABEL.getProperty(), node.getLabel());
+ final Map<String, Object> properties = node.toGraphMap();
+ if (properties != null) {
+ setProperties(vertex, properties);
+ }
+ final Map<String, Object> newProps = getProperties(vertex);
+ newNode = GraphElementFactory.createElement(node.getLabel(), GraphElementTypeEnum.Node, newProps, clazz);
+ log.debug("created node for props : {}", newProps);
+ log.debug("Node was created for ID [{}]", node.getKeyValueIdForLog());
+
+ return Either.left(newNode);