Commit 75354755 authored by Brian Long's avatar Brian Long
Browse files

refactored PersistedNode for serialization

parent 14887ca1
Loading
Loading
Loading
Loading
+36 −0
Original line number Diff line number Diff line
package com.inteligr8.alfresco.asie.model;

import java.io.Serializable;

public class PersistedNode implements Serializable {
		
    private static final long serialVersionUID = 4105196543023419818L;
    
    private final SolrHost node;
    private final long persistMillis;
    private long expireTimeMillis;
    
    public PersistedNode(SolrHost node, int persistMinutes) {
        this.node = node;
        this.persistMillis = persistMinutes * 60L * 1000L;
        this.reset();
    }
    
    public void reset() {
        this.expireTimeMillis = System.currentTimeMillis() + this.persistMillis;
    }
    
    public boolean isExpired() {
        return this.expireTimeMillis < System.currentTimeMillis();
    }
    
    public SolrHost getNode() {
        return this.node;
    }
    
    @Override
    public String toString() {
        return "node: " + this.node + "; expires in: " + (System.currentTimeMillis() - this.expireTimeMillis) + " ms";
    }
    
}
+2 −34
Original line number Diff line number Diff line
@@ -11,6 +11,7 @@ import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import com.inteligr8.alfresco.asie.Constants;
import com.inteligr8.alfresco.asie.model.PersistedNode;
import com.inteligr8.alfresco.asie.model.ShardSet;
import com.inteligr8.alfresco.asie.model.SolrHost;

@@ -34,7 +35,7 @@ public class ShardBackupService implements com.inteligr8.alfresco.asie.spi.Shard
		this.logger.debug("Found backup node: {}", backupNode);
		
		if (backupNode == null || backupNode.isExpired()) {
			backupNode = new PersistedNode(node);
			backupNode = new PersistedNode(node, this.persistTimeMinutes);
			this.attributeService.setAttribute(backupNode, Constants.ATTR_ASIE, ATTR_BACKUP_NODE, shardKey);
		}
		
@@ -50,37 +51,4 @@ public class ShardBackupService implements com.inteligr8.alfresco.asie.spi.Shard
		this.attributeService.removeAttribute(Constants.ATTR_ASIE, ATTR_BACKUP_NODE, shardKey);
	}

	
    
    private class PersistedNode implements Serializable {
		
		private static final long serialVersionUID = 4105196543023419818L;
		
		private final SolrHost node;
		private long expireTimeMillis;
		
		PersistedNode(SolrHost node) {
			this.node = node;
			this.reset();
		}
		
		void reset() {
			this.expireTimeMillis = System.currentTimeMillis() + persistTimeMinutes * 60L * 1000L;
		}
		
		boolean isExpired() {
			return this.expireTimeMillis < System.currentTimeMillis();
		}
		
		SolrHost getNode() {
			return this.node;
		}
		
		@Override
		public String toString() {
			return "node: " + this.node + "; expires in: " + (System.currentTimeMillis() - this.expireTimeMillis) + " ms";
		}
    	
    }

}