blob: f6ab5d8d492f818c1dc29c7903f1c68f4c995a66 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2014 Remain BV All rights reserved.
*
* This program and the accompanying materials are made available under the terms
* of the Eclipse Public License v1.0 which accompanies this distribution, and is
* available at http://www.eclipse.org/legal/epl-v10.html
*
* Contributors: Wim Jongman - initial API and implementation
******************************************************************************/
package com.mycorp.examples.githubservice.impl;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import java.util.concurrent.FutureTask;
import com.mycorp.examples.githubservice.IGitHubServiceAsync;
/**
* Example OSGi service for retrieving some data from GitHub.
*
* @since 1.0
*/
public class GitHubServiceAsync implements IGitHubServiceAsync {
/**
* Stand alone service test. To get an access token see see
* https://help.github.com/articles/creating-an-access-token-
* for-command-line-use/
*
* @throws ExecutionException
* @throws InterruptedException
*/
public static void main(String[] args) throws InterruptedException,
ExecutionException {
String token = "your token here";
GitHubServiceAsync service = new GitHubServiceAsync();
Future<String[]> future = service.getRepositoriesAsync(token);
System.out.print("Z");
while (!future.isDone()) {
Thread.sleep(200);
System.out.print("z");
}
System.out.println();
System.out.println();
for (String repository : future.get()) {
System.out.println(repository);
}
}
public Future<String[]> getRepositoriesAsync(final String pAccessToken) {
FutureTask<String[]> future = new FutureTask<String[]>(
new Callable<String[]>() {
public String[] call() throws Exception {
Thread.sleep(5000);
GitHubService service = new GitHubService();
return service.getRepositories(pAccessToken);
}
});
ExecutorService executor = Executors.newFixedThreadPool(5);
executor.execute(future);
executor.shutdown();
return future;
}
}