Loading shared/src/main/java/com/inteligr8/alfresco/asie/rest/IndexAcsNodeWebScript.java 0 → 100644 +24 −0 Original line number Diff line number Diff line package com.inteligr8.alfresco.asie.rest; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import com.inteligr8.alfresco.asie.service.IndexService; import com.inteligr8.alfresco.asie.spi.ActionCallback; @Component(value = "webscript.com.inteligr8.alfresco.asie.indexAcsNode.post") public class IndexAcsNodeWebScript extends AbstractAcsNodeActionWebScript { @Autowired private IndexService indexSerivce; @Override protected void executeAction(long nodeDbId, ActionCallback callback, long fullQueueTimeout, TimeUnit fullQueueUnit, long execTimeout, TimeUnit execUnit) throws TimeoutException, InterruptedException { this.indexSerivce.index(nodeDbId, callback, 10L, TimeUnit.SECONDS, 30L, TimeUnit.SECONDS); } } shared/src/main/java/com/inteligr8/alfresco/asie/service/IndexService.java 0 → 100644 +43 −0 Original line number Diff line number Diff line package com.inteligr8.alfresco.asie.service; import java.util.concurrent.Future; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; import org.springframework.stereotype.Component; import com.inteligr8.alfresco.asie.api.CoreAdminApi; import com.inteligr8.alfresco.asie.model.ActionCoreResponse; import com.inteligr8.alfresco.asie.model.core.IndexRequest; import com.inteligr8.alfresco.asie.spi.ActionCallback; import com.inteligr8.solr.model.Action; @Component public class IndexService extends AbstractNodeActionService { @Override protected String getActionName() { return "index"; } @Override protected String getThreadNamePrefix() { return "solr-index"; } @Override protected ActionCoreResponse<Action> execute(CoreAdminApi api, String core, long nodeDbId) { IndexRequest apiRequest = new IndexRequest().withCore(core).withNodeId(nodeDbId); return api.index(apiRequest); } public Future<Void> index(long nodeDbId, ActionCallback callback) throws InterruptedException { return super.action(nodeDbId, callback); } public void index(long nodeDbId, ActionCallback callback, long fullQueueTimeout, TimeUnit fullQueueUnit, long execTimeout, TimeUnit execUnit) throws TimeoutException, InterruptedException { super.action(nodeDbId, callback, fullQueueTimeout, fullQueueUnit, execTimeout, execUnit); } } shared/src/main/java/com/inteligr8/alfresco/asie/spi/IndexCallback.java 0 → 100644 +12 −0 Original line number Diff line number Diff line package com.inteligr8.alfresco.asie.spi; import com.inteligr8.alfresco.asie.model.ShardInstance; public interface IndexCallback extends ActionCallback { @Override default void unknownResult(ShardInstance instance) { throw new IllegalStateException(); } } shared/src/main/resources/alfresco/extension/templates/webscripts/com/inteligr8/alfresco/asie/indexAcsNode.post.desc.xml 0 → 100644 +63 −0 Original line number Diff line number Diff line <webscript xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://bitbucket.org/!api/2.0/snippets/inteligr8/AzMgbp/80fdd26a6b3769a63cdc6b54bf1f39e378545cf7/files/snippet.txt"> <!-- Naming & Organization --> <shortname>Index ACS Node in ASIE Indexes</shortname> <family>Inteligr8 ASIE</family> <description><![CDATA[ <p>Index the specified ACS node in the ASIE indexes. This call will attempt to index the ACS node on all applicable Solr nodes. The index operation could be synchronous or asynchronous and could fail on any Solr node. If any Solr node failed synchronously in the execution, then expect a status code of 500. The response body will still be identical to the 200/202 status codes. If any Solr node is executing the index asynchronously and there are no synchronous failures, then expect a status code of 202.</p> <p>The following path parameters are supported:</p> <dl> <dt>nodeId</dt> <dd>An ACS node ID.</dd> </dl> <p>The following response body should be expected in most cases (200, 202, and 500 status codes):</p> <pre> { "nodeDbId": number, "success": [ "solrHostSync:8983/solr", ... ], "scheduled": [ "solrHostAsync:8983/solr", ... ], "error": [ "solrHostThatFailed:8983/solr": { "message": "string" }, ... ] } </pre> <p>The following status codes should be expected:</p> <dl> <dt>200</dt> <dd>OK</dd> <dt>202</dt> <dd>Accepted</dd> <dt>400</dt> <dd>The path or query parameters are invalid</dd> </dl> ]]></description> <!-- Endpoint Configuration --> <url>/inteligr8/asie/acs/node/{nodeId}/index</url> <format default="json">any</format> <!-- Security --> <authentication>user</authentication> <!-- Functionality --> <cache> <never>false</never> <public>false</public> </cache> </webscript> No newline at end of file Loading
shared/src/main/java/com/inteligr8/alfresco/asie/rest/IndexAcsNodeWebScript.java 0 → 100644 +24 −0 Original line number Diff line number Diff line package com.inteligr8.alfresco.asie.rest; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import com.inteligr8.alfresco.asie.service.IndexService; import com.inteligr8.alfresco.asie.spi.ActionCallback; @Component(value = "webscript.com.inteligr8.alfresco.asie.indexAcsNode.post") public class IndexAcsNodeWebScript extends AbstractAcsNodeActionWebScript { @Autowired private IndexService indexSerivce; @Override protected void executeAction(long nodeDbId, ActionCallback callback, long fullQueueTimeout, TimeUnit fullQueueUnit, long execTimeout, TimeUnit execUnit) throws TimeoutException, InterruptedException { this.indexSerivce.index(nodeDbId, callback, 10L, TimeUnit.SECONDS, 30L, TimeUnit.SECONDS); } }
shared/src/main/java/com/inteligr8/alfresco/asie/service/IndexService.java 0 → 100644 +43 −0 Original line number Diff line number Diff line package com.inteligr8.alfresco.asie.service; import java.util.concurrent.Future; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; import org.springframework.stereotype.Component; import com.inteligr8.alfresco.asie.api.CoreAdminApi; import com.inteligr8.alfresco.asie.model.ActionCoreResponse; import com.inteligr8.alfresco.asie.model.core.IndexRequest; import com.inteligr8.alfresco.asie.spi.ActionCallback; import com.inteligr8.solr.model.Action; @Component public class IndexService extends AbstractNodeActionService { @Override protected String getActionName() { return "index"; } @Override protected String getThreadNamePrefix() { return "solr-index"; } @Override protected ActionCoreResponse<Action> execute(CoreAdminApi api, String core, long nodeDbId) { IndexRequest apiRequest = new IndexRequest().withCore(core).withNodeId(nodeDbId); return api.index(apiRequest); } public Future<Void> index(long nodeDbId, ActionCallback callback) throws InterruptedException { return super.action(nodeDbId, callback); } public void index(long nodeDbId, ActionCallback callback, long fullQueueTimeout, TimeUnit fullQueueUnit, long execTimeout, TimeUnit execUnit) throws TimeoutException, InterruptedException { super.action(nodeDbId, callback, fullQueueTimeout, fullQueueUnit, execTimeout, execUnit); } }
shared/src/main/java/com/inteligr8/alfresco/asie/spi/IndexCallback.java 0 → 100644 +12 −0 Original line number Diff line number Diff line package com.inteligr8.alfresco.asie.spi; import com.inteligr8.alfresco.asie.model.ShardInstance; public interface IndexCallback extends ActionCallback { @Override default void unknownResult(ShardInstance instance) { throw new IllegalStateException(); } }
shared/src/main/resources/alfresco/extension/templates/webscripts/com/inteligr8/alfresco/asie/indexAcsNode.post.desc.xml 0 → 100644 +63 −0 Original line number Diff line number Diff line <webscript xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://bitbucket.org/!api/2.0/snippets/inteligr8/AzMgbp/80fdd26a6b3769a63cdc6b54bf1f39e378545cf7/files/snippet.txt"> <!-- Naming & Organization --> <shortname>Index ACS Node in ASIE Indexes</shortname> <family>Inteligr8 ASIE</family> <description><![CDATA[ <p>Index the specified ACS node in the ASIE indexes. This call will attempt to index the ACS node on all applicable Solr nodes. The index operation could be synchronous or asynchronous and could fail on any Solr node. If any Solr node failed synchronously in the execution, then expect a status code of 500. The response body will still be identical to the 200/202 status codes. If any Solr node is executing the index asynchronously and there are no synchronous failures, then expect a status code of 202.</p> <p>The following path parameters are supported:</p> <dl> <dt>nodeId</dt> <dd>An ACS node ID.</dd> </dl> <p>The following response body should be expected in most cases (200, 202, and 500 status codes):</p> <pre> { "nodeDbId": number, "success": [ "solrHostSync:8983/solr", ... ], "scheduled": [ "solrHostAsync:8983/solr", ... ], "error": [ "solrHostThatFailed:8983/solr": { "message": "string" }, ... ] } </pre> <p>The following status codes should be expected:</p> <dl> <dt>200</dt> <dd>OK</dd> <dt>202</dt> <dd>Accepted</dd> <dt>400</dt> <dd>The path or query parameters are invalid</dd> </dl> ]]></description> <!-- Endpoint Configuration --> <url>/inteligr8/asie/acs/node/{nodeId}/index</url> <format default="json">any</format> <!-- Security --> <authentication>user</authentication> <!-- Functionality --> <cache> <never>false</never> <public>false</public> </cache> </webscript> No newline at end of file