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

fix node shard unload

parent 493f1f81
Loading
Loading
Loading
Loading
+14 −2
Original line number Diff line number Diff line
package com.inteligr8.alfresco.asie.enterprise.rest;

import org.alfresco.repo.index.shard.ShardState;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.extensions.webscripts.WebScriptException;
import org.springframework.extensions.webscripts.WebScriptRequest;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Component;

import com.inteligr8.alfresco.asie.model.ShardSet;
import com.inteligr8.alfresco.asie.rest.model.NodeShardParameterSet;
import com.inteligr8.alfresco.asie.spi.ShardDiscoveryService;

@Component(value = "webscript.com.inteligr8.alfresco.asie.nodeShard.delete")
public class UnloadNodeShardWebScript extends AbstractUnregisterNodeWebScript<NodeShardParameterSet> {
    
    @Autowired
    private ShardDiscoveryService sds;
	
	@Override
	protected NodeShardParameterSet createParameters(WebScriptRequest req, String nodeHostname, int nodePort) {
		ShardSet shardSet = this.getRequiredPathParameter(req, "shardSet", ShardSet.class);
		String coreName = this.getRequiredPathParameter(req, "shardCore");
		int shardId = this.getRequiredPathParameter(req, "shardId", Integer.class);
		
		try {
			ShardSet shardSet = this.sds.findSetByCore(coreName);
			return new NodeShardParameterSet(nodeHostname, nodePort, shardSet, shardId);
		} catch (IllegalArgumentException iae) {
    		throw new WebScriptException(HttpStatus.BAD_REQUEST.value(), iae.getMessage());
		}
	}
	
	@Override
+3 −5
Original line number Diff line number Diff line
@@ -7,8 +7,6 @@ import org.slf4j.LoggerFactory;
import org.springframework.extensions.webscripts.WebScriptRequest;
import org.springframework.extensions.webscripts.WebScriptResponse;

import com.inteligr8.alfresco.asie.model.ShardSet;

public abstract class AbstractAsieNodeShardWebScript extends AbstractAsieShardableWebScript {
    
    private final Logger logger = LoggerFactory.getLogger(this.getClass());
@@ -22,14 +20,14 @@ public abstract class AbstractAsieNodeShardWebScript extends AbstractAsieShardab
		String nodeHostname = colon < 0 ? nodeEndpoint : nodeEndpoint.substring(0, colon);
		int nodePort = colon < 0 ? this.getApiService().getDefaultSolrPort() : Integer.parseInt(nodeEndpoint.substring(colon+1));

		ShardSet shardSet = this.getRequiredPathParameter(req, "shardSet", ShardSet.class);
		String shardCore = this.getRequiredPathParameter(req, "shardCore", String.class);
		int shardId = this.getRequiredPathParameter(req, "shardId", Integer.class);
		
		this.execute(req, res, nodeHostname, nodePort, shardSet, shardId);
		this.execute(req, res, nodeHostname, nodePort, shardCore, shardId);
    }
    
    protected abstract void execute(WebScriptRequest req, WebScriptResponse res,
    		String nodeHostname, int nodePort, ShardSet shardSet, int shardId)
    		String nodeHostname, int nodePort, String shardCore, int shardId)
    				throws IOException;
    
}